Comments 21
Не понимаю, для чего нужна внешняя температура, ветер, влажность,...., когда есть ПИД?
расскажите, пожалуйста, как использовать пид в связки с газовым котлом управляемым по opentherm
по сути я котлу могу выставить только температуру теплоносителя (сейчас)
использую https://github.com/ScratMan/HASmartThermostat у него по сути только из выходов on/off обогрева и control_output который % воздействия регулятора, который вроде как положения заслонки нужен, но к газовому котлу не прикрутить...
HASmartThermostat реализует логику обычного комнатного термостата. Считай это один из вариантов ПИД - релейное управление по ON/OFF. В длительные периоды OFF, от окон будет веять холодом. Если жилье теплоемкое, то такие периоды точно будут, т.к. понижение на 0.5 градуса может длиться 1-2 часа. Это все субъективно, кому-то пофиг и на разницу в 3-4 градуса, а кто-то уже и 0.5 чувствует.
Ну так PID, на выходе которого - нормированная по диапазону котла температура теплоносителя. Дальше крутим коэффициенты, и получается картинка вроде такой:

Код для ПИДа написан лет 15 назад, поэтому из стыда ссылку на репу не даю, но ПИД - и в Африке ПИД.
Update: забыл написать. Котёл - Logamax u072, OpenTherm сделан на Ардуине и паре транзисторов, в Ардуину я шлю одну команду - выставить температуру теплоносителя, от неё получаю JSON с текущими параметрами котла (температуры, модуляция, аварии). На входе ПИДа - температура "в бойлерной".
у меня точно такое же котёл
подскажите, как правильно выход пид нормировать к темпетаруте?
у меня котёл всё что ниже 40 градусов по теплоносителю - по сути ничего не делает кроме как циркулирует воду, горелка не включается никогда, а вот с 41 - уже включает горелку
а т.к. максимальная температура теплоносителя 75, то получается диапазон 41-75 градусов...
и есть ли какой то выигрыш от столько точного измерения температуры теплоносителя?
40 градусов - порог включения горелки, если в котёл заслать 39С, он просто выключится.
Рабочий диапазон в моей системе отопления, получается - 40-75С.
Выигрыша от точности нет, просто глаз понежить стабильностью температуры воздуха. Плюс чем точнее будет отрабатывать ПИД, тем чаще котёл будет "тактовать", т.е. часто включаться и отключаться.
Что касается настройки.
Мой замысел такой: какое отклонение от уставки неприемлимо? Допустим, 2 градуса. То есть, когда ошибка у нас 2 градуса, на выходе ПИДа должна быть максимальная температура, таким образом Kp = 75/2 = 37.5
Дальше я уменьшаю Kp пока не уйдет тактование (в большинстве случаев, при некоторых граничных погодных условиях это неизбежно), и начинаю крутить Ki чтобы убрать статическую ошибку.
Мои текущие значения такие:# Constants
Kp = 20.6
Ti = 105.2
Td = 0
MAX_I = 90.0
MIN_I = -5.0
Только ногами не бейте, я знаю, что написано плохо
https://github.com/Kitsok/boiler/blob/master/new_boiler_control.py
При таком диапазоне 40-75С, при положительных температурах за бортом, котёл не сильно тактует? Как часто меняешь температуру теплоносителя? Я как понял в случае с решением на ардуино все работает через ОЗУ, ограничений нет и можно менять очень часто.

Примерно так это работает. "Забор", когда котёл только и делает, что тактует - работа защиты от холодного теплоносителя. У меня есть течь, которая особенно хорошо течёт когда теплоноситель холоднее 20С. Наверное, можно было бы сделать изящнее и с меньшим тактованием, но в этом режиме котёл (тьфу-тьфу) работает без сбоев уже лет 10, так что не чиню что не сломано ;)
Температура теплоносителя считается раз в минуту, в пределе котёл может включаться-выключаться раз в минуту, но такое не часто случается.
C ПЗА у меня вот так получается. Из-за того, что адаптер ectoControl, который управляет котлом, работает через запись значения в ПЗУ, я меняю температуру теплоносителя не чаще 1 раз в час.

Даже при плюсовых температурах и минимальной температуре теплоносителя, получается не более 2х тактов в час.
При сильно плюсовых температурах выше +10 как вижу ни ПИД ни ПЗА корректно работать не будут при диапазоне котла 40-75С (в моем случае 40-80С). При ПИД - котел будет тактовать, при ПЗА - будет перегревать помещение (если не отключать). Выше +10 нужно просто добавлять сценарий по ON/OFF, но это тоже считай тактование. Как я понял у тебя OFF реализован уставкой температуры котлу ниже пороговой.
P.S.: в моем случае частокол это включение ГВС, т.е. переключение на второй контур.
Мне кажется, ПИД можно накрутить чтобы тактования не было (ну или было, но по минимуму), просто мне лень было до такой степени его вылизывать. ПЗА работает плавнее, но менее точно, и ПИД точно можно сделать значительно плавнее, просто прибрав Kp. Но тогда вопросики - за какое время должен прогреваться дом, потому что это время точно увеличится.
В общем, как обычно, решения имеют как свои плюсы, так и свои минусы.
Всё так. Только я не вижу решения ни для ПИД ни для ПЗА при диапазоне теплоносителя от 40. Если бы диапазон по теплоносителю был хотя бы от 20 при широком диапазоне модуляции горелки, тогда да, получится в любом из вариантов не тактовать вообще.
А так, что при ПЗА можно учитывать внутреннюю температуру как косвенный фактор (что я и делаю), что при ПИД можно учитывать наружную тоже косвенно.
Надо переходить на китайца )) у них там основной газовый клапан один, и еще несколько на горелки, которые подключаются ступенчато. Получается по диапазону модуляции как конденсационный, а по конструкции как обычный котёл.
Регулировать можно только температуру теплоносителя. У обычных котлов диапазон модуляции горелки не сильно большой. Если бы можно было напрямую управлять модуляцией газовой горелки в широком диапазоне, как у конденсационных котлов, то ПИД был бы очень эффективным.
С ectoControl Adapter можно использовать и ПИД для котлов с OpenTherm, которые поддерживают управление модуляцией горелки, но нужно учитывать следующий факт:

Часто изменять модуляцию, это убить ПЗУ адаптера! Редко изменять, ухудшить качество регулирования. Было бы удобно иметь 2 параметра, один с записью в ПЗУ, другой без, но это вопрос к производителю. Пока у них так.
Для умного термостата туя подойдёт сценарий? Заказал один на радиатор взамен обычному механическому
Доброго дня!
Интеграция просто огонь! Все работает, лучше швейцарских часов. НО! Сегодня похолодало до -30 и сенсор "Целевая температура" стал недоступен. (ошибка: Failed to update Целевая Т. теплоносителя: '<' not supported between instances of 'complex' and 'int'; Регистратор: custom_components.wda_sensor.sensorИсточник: custom_components/wda_sensor/sensor.py:106). Когда разобрался, оказывается, что расчет ведется корректно если температура наружного воздуха не опускается ниже -25!. А у нас -30! Как только потеплело с -30 до -25 - все пришло в норму. Отсюда вопрос, что нужно изменить, что бы была возможность получать адекватные расчеты целевой температуры при температурах ниже -25 гр? Изменение значения GRAPH_MIN_OUTSIDE_TEMP в файле /homeassistant/custom_components/wda_sensor/const.py на -35 не решает проблему
Заранее спасибо!
Спасибо, что написали. Сегодня посмотрю и выпущу фикс.
Вышла версия v1.1.1, данный баг там исправлен. Но нужно скорректировать мнимальную и максимальную экспоненту (или подберите свои значения), чтобы в ключевых точках 0 и -25 были близкие к старым значения. Для старта поставьте мнимальная=2.2, максимальная=3.8.
Добрый день! Обновленная версия работает, спасибо! С экспонентами пока не экспериментировал, оставил рекомендованные. Пока все устраивает.
Я тут наказал сам себя. Расчетные теплопотери у меня менее 15 кВт. Я взял и ограничил мощность котла до 15 кВт... Ну и попался! При такой максимальной мощности котла его динамически не хватает для компенсации тепловых потерь в сильные холода
В результате поимел неравномерный прогрев помещений и даже остывание. До котла доберусь только на выходных, сейчас мониторю дистанционно. К счастью потеплело значительно, всего -12, это с -30-то!
Экспоненту лучше все таки выставить в 2.2 - 3.8 (это сейчас умолчание). Т.к. при стандартных для предыдущей версии 1.2 - 2.2, кривая с тем же номером находилась выше. Диапазон расширен, теперь он от -50 до 20C.
Экспериментировать с кривой удобно, когда график выведен на панель. Выставить 1-1, посмотреть, далее 1-10, посмотреть, далее 10-20, далее 15-20. И всё станет понятно.
Интеграция WDA Sensor для HomeAssistant: для чего она нужна и как ей пользоваться