Мне кажется, ПИД можно накрутить чтобы тактования не было (ну или было, но по минимуму), просто мне лень было до такой степени его вылизывать. ПЗА работает плавнее, но менее точно, и ПИД точно можно сделать значительно плавнее, просто прибрав Kp. Но тогда вопросики - за какое время должен прогреваться дом, потому что это время точно увеличится. В общем, как обычно, решения имеют как свои плюсы, так и свои минусы.
Примерно так это работает. "Забор", когда котёл только и делает, что тактует - работа защиты от холодного теплоносителя. У меня есть течь, которая особенно хорошо течёт когда теплоноситель холоднее 20С. Наверное, можно было бы сделать изящнее и с меньшим тактованием, но в этом режиме котёл (тьфу-тьфу) работает без сбоев уже лет 10, так что не чиню что не сломано ;)
Температура теплоносителя считается раз в минуту, в пределе котёл может включаться-выключаться раз в минуту, но такое не часто случается.
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
Ну так PID, на выходе которого - нормированная по диапазону котла температура теплоносителя. Дальше крутим коэффициенты, и получается картинка вроде такой:
Код для ПИДа написан лет 15 назад, поэтому из стыда ссылку на репу не даю, но ПИД - и в Африке ПИД.
Update: забыл написать. Котёл - Logamax u072, OpenTherm сделан на Ардуине и паре транзисторов, в Ардуину я шлю одну команду - выставить температуру теплоносителя, от неё получаю JSON с текущими параметрами котла (температуры, модуляция, аварии). На входе ПИДа - температура "в бойлерной".
Все так. Я разраб электроники не настоящий, потому предпочитаю сначала решение на макете проработать, а потом уже схемоту рисовать. Коллеги-электронные инженеры действуют не так - они делают платы кастомизируемыми, нулевые резисторы, do-not-populate компоненты, всякое такое.
Я все понимаю, со знанием I2C не рождаются, поэтому и про мультиплексор можно не знать. То, что команда обрела это знание - безо всякой иронии, очень хорошо, правда же молодцы.
Но почему автор называет себя "инженером встраиваемых систем", и что означает слово "старший" в профиле?
Ну, допустим, 30дБм точка доступа накроет в чистом поле метров 500. С знаниями и умениями можно хоть 10км линк точка-точка построить (привет, айФлет). Но откуда возьмётся аплинк?
Или возвращаемся во времена пионерских домовых сетей и eMule?
Мне кажется, ПИД можно накрутить чтобы тактования не было (ну или было, но по минимуму), просто мне лень было до такой степени его вылизывать. ПЗА работает плавнее, но менее точно, и ПИД точно можно сделать значительно плавнее, просто прибрав Kp. Но тогда вопросики - за какое время должен прогреваться дом, потому что это время точно увеличится.
В общем, как обычно, решения имеют как свои плюсы, так и свои минусы.
Примерно так это работает. "Забор", когда котёл только и делает, что тактует - работа защиты от холодного теплоносителя. У меня есть течь, которая особенно хорошо течёт когда теплоноситель холоднее 20С. Наверное, можно было бы сделать изящнее и с меньшим тактованием, но в этом режиме котёл (тьфу-тьфу) работает без сбоев уже лет 10, так что не чиню что не сломано ;)
Температура теплоносителя считается раз в минуту, в пределе котёл может включаться-выключаться раз в минуту, но такое не часто случается.
Только ногами не бейте, я знаю, что написано плохо
https://github.com/Kitsok/boiler/blob/master/new_boiler_control.py
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Ну так PID, на выходе которого - нормированная по диапазону котла температура теплоносителя. Дальше крутим коэффициенты, и получается картинка вроде такой:
Код для ПИДа написан лет 15 назад, поэтому из стыда ссылку на репу не даю, но ПИД - и в Африке ПИД.
Update: забыл написать. Котёл - Logamax u072, OpenTherm сделан на Ардуине и паре транзисторов, в Ардуину я шлю одну команду - выставить температуру теплоносителя, от неё получаю JSON с текущими параметрами котла (температуры, модуляция, аварии). На входе ПИДа - температура "в бойлерной".
Точно. Поэтому как только т.н. "родина" решила, что будет распоряжаться жизнью моих детей, тут-то я и свалил.
Образно говоря, если кто-то нормально относится к тем, кто ссыт в лифте, велика вероятность, что такой человек тоже однажды так сделает.
Тем, кому неприятны зассаные лифты, обычно неприятны и люди, которые это делают.
Не понимаю, для чего нужна внешняя температура, ветер, влажность,...., когда есть ПИД?
То есть, надо подпаяться к дорогам между GPU и его памятью? Которые во внутренних слоях? На GPU сервере за n сотен тысяч денег? Незаметно? В ДЦ?
Пожалуй, эта новость мой сон не нарушит.
Все так. Я разраб электроники не настоящий, потому предпочитаю сначала решение на макете проработать, а потом уже схемоту рисовать. Коллеги-электронные инженеры действуют не так - они делают платы кастомизируемыми, нулевые резисторы, do-not-populate компоненты, всякое такое.
Но матчасть всё-таки надо изучать.
Хорошее решение, но можно ещё лучше: двигатель поставить, редуктор там, ну и галетный переключатель. Отдельную ардуину на управление двигателем.
В зависимости от целевой необычности решения, двигатель можно использовать паровой.
Я все понимаю, со знанием I2C не рождаются, поэтому и про мультиплексор можно не знать. То, что команда обрела это знание - безо всякой иронии, очень хорошо, правда же молодцы.
Но почему автор называет себя "инженером встраиваемых систем", и что означает слово "старший" в профиле?
Может, есть какой-то способ сделать так, чтобы дроны не прилетали? Прямо аж вообще не вылетали даже.
А вы в какой стране?
Дальше не смог.
Мой последний прием...
У вас в рассуждениях доступ в интернет - что-то само собой разумеющееся. Это не так. Или я не понимаю назначения разработки?
Ну, допустим, 30дБм точка доступа накроет в чистом поле метров 500. С знаниями и умениями можно хоть 10км линк точка-точка построить (привет, айФлет). Но откуда возьмётся аплинк?
Или возвращаемся во времена пионерских домовых сетей и eMule?
И как, удалось разобраться?
Не понял, как у вас получилось увидеть, что модем подключен к другому модему без линии.