Понял, тогда и с уровнем модуляции вам разбираться надо. Мой котёл по ОТ этот ID Msg "RelModLevel" не отдаёт, потому сам вычисляю, а не читаю его из котла.
Теперь по порядку, т.к. котлы у нас разные, но протокол ОТ един, хотя Бакси его полноценно не использует. Принты:
Текуший уровень модуляции горелки = 0 % и ADC = 10 и всё, что к этому относится, можете смело закомментировать, это мой частный случай.
Тип и версия термостата: тип 0, версия 0
Тип и версия котла: тип 0, версия 0
Могу предположить, что а-ля термостат только мониторит шину ОТ.
Нужно, что бы котёл выдал код с MsgID=3 (R) и этот код записать в MsgID=2(W).
// Записать ID-2; мастер-код MemberID
unsigned int data = 0x0004;
unsigned long request = ot.buildRequest(OpenThermRequestType::WRITE, OpenThermMessageID::MConfigMMemberIDcode, data);
ot.sendRequest(request);
Тут я записываю уже ранее прочитанный 0х0004 (мой Бакси выдал)
А мой не хочет. Я бы с установкой температуры ГВС особо и не парисля бы. Её редко менять надо. Я бы мог с котла настроить с кнопок. Но вот не задача кнопки настройки ГВС блокируются.
Только ни понял как дать инфу котлу что мой термостат мастер
Повторюсь, нужно, что бы котёл выдал термостату код с MsgID=3 (R) и этот код уже термостатом записать в MsgID=2(W). В моём случае я сначала прочитал MsgID=3 (ввобще и по хорошему нужно бы вам сначала промониторить все MsgID и вычислить доступные для вашего котла и уже с ними работать в дальнейшем по необходимости), потом этот код обратно в котёл отправить, но уже в MsgID=2 (в моем последнем коде это стр. 449-451.
Если делать универсальный термостат для любых ОТ котлов то MsgID=3 и MsgID=2 должны работать в паре, для себя я такой цели не ставил.
Вот так сделал
// Записать ID-2; мастер-код MemberID
unsigned int data = 0x0000;
unsigned long request = ot.buildRequest(OpenThermRequestType::WRITE, OpenThermMessageID::MConfigMMemberIDcode, data);
ot.sendRequest(request);
И еще
unsigned int data126 = 0x0000; // тип и версия термостата (HEX)
А попробуйте поиграться 57-м, выставьте максимально допустимую уставку воды ГВС в 65°C (сейчас у вас там 45°C).
57 параметр настраевается для отопления. у меня просто минимум в коде настроен 45 градусов.
float pid(float sp, float pv, float pv_last, float& ierr, float dt) {
float Kc = 10.0; // K / %Heater
float tauI = 50.0; // sec
float tauD = 1.0; // sec
// ПИД коэффициенты
float KP = Kc;
float KI = Kc / tauI;
float KD = Kc * tauD;
// верхняя и нижняя границы уровня нагрева
float ophi = 85;
float oplo = 45;
// вычислить ошибку
float error = sp - pv;
// calculate the integral error
ierr = ierr + KI * error * dt;
// вычислить производную измерения
float dpv = (pv - pv_last) / dt;
// рассчитать выход ПИД регулятора
float P = KP * error; // пропорциональная составляющая
float I = ierr; // интегральная составляющая
float D = -KD * dpv; // дифференциальная составляющая
float op = P + I + D;
// защита от сброса
if ((op < oplo) || (op > ophi)) {
I = I - KI * error * dt;
// выход регулятора, он же уставка для ID-1 (температура теплоносителя контура СО котла)
op = max(oplo, min(ophi, op));
У меня котел минимум понимаем 30 градусов команду. максимум 85. Если как у вас в коде
float ophi = 100;
float oplo = 0;
0 он не записывает. И если например уставка была ГВС 55 градусов. А потом резко уставка ноль, то у котла остается 55. 30 градусов не эфективно, поставил 45.
Из протокола ОТ: Id-1 TSet "Контрольное заданное значение колеблется от минимума 0 до максимума 100. Он представляет собой непосредственно заданное значение температуры подачи от котла. Ведомому устройству не нужно знать, как ведущий вычисляет уставку управления..."
Котёл должен работать в заданном диапазоне ограничительных уставок мин./макс. для СО и ГВС. Этот термостат использует ПИД регулятор для СО. ГВС работает дискретно, т.е. вкл/выкл., только понять нужно с каким гистерезисом. В моём котле подогрев ГВС начинается, если температура упадёт больше чем на 10°C от уставки.
Если, к примеру, у СО выставить диапазон регулировок 30-65, то это не значит что Id-1 TSet должен будет работать в этом же диапазоне, он всё равно должен работать 0-100 и без всяких поправок, чисто ПИД.
Возможно имеет смысл, у меня в котле дипами задаётся минимальпое время между включениям либо 10 сек. либо 3 мин., да и сам котёл на Tset не сразу реагирует, пока там ПИД вычислит уставку...
Есть, ещё, задумка реализовать регулировку с помощью температурных кривых, ну и выбирать или ПИД, или кривые. Раскопал соответствующий проект, да ни как не соберусь реализовать https://mxjournal.ru/blog/1154 В коде много лишнего, заслуживает внимания лишь расчёт температуры, как в ручном режиме, так и с учётом температуры за бортом, для того же ID-1, по сути термостат становится вполне себе ничего девайсом, а нужный режим должен иметь возможность выбора/переключения.
2. Эквитермические кривые без учёта влияния температуры в помещении;
3. Эквитермические кривые с учётом влияния температуры в помещении;
или режимы 1, 2, 3. на выбор. Во 2 и 3 режиме наличие внешнего датчика температуры обязательно.
А сохранять в память уставки и калибровачные константы удобно, после рестарта, по разным причинам, всё слетает по умолчанию. Можно, конечно, не заморачиваться, всё проверить, подогнать и прошить уже с нужными уставками, будут по умолчанию. С EEPROM, же ни когда дела не имел, да и с SPIFFS то же, только на уровне примеров.
Колхоз то же был. Плату сам проектировал, но конструктивная идея автора библиотеки ОТ. Про регулировку ГВС, найдите рекомендованные к вашему котлу описания теростатов ОТ, может там какие особенноаости всплывут...
Вообщем вскрыл я вчера котел. Стоит плата от котла Ferroli Divatech (Котел и есть Ferroli. Только шильдик другой) PR01335 v1.2.
вот эти два разъема не подключены. Черный вроде сервесный для прошивки думаю. Белый может там и датчик подключается ул. температуры. Схему не нашел си я чуда.
С уставками ГВС, полагаю, что нужно соблюсти ряд условий. Положение дипов на плате управления котла какое? Пробежался по описанию рекомендованного термостата «SIRIUS 1Р» есть кое какие мысли.
По поводу разъема CN1. Нашел фото на мониторе платы PR08205. Там на фоте расписанно три пина из пяти. 12 вольт, 5 вольт, 2 пропуска, и земля. Блин может оставшие пины термодатчик. Тестр возьму посмотрю есть ли на них какие либо напряжения и куда идут дорожки. Если без напряга и на микруху, у меня есть термодатчик на 10 Ом. попробую подключить.
Посмотрел по фото (на сколько можно утверждать по фото ;))) ) проследил эти два пина уходят на микруху. Какую хз названия не видно. Вообщем выходные плату снимать буду смотреть.
Нет на этой плате внешнего термодатчика. Но есть на плате ABM01A, ставится в тот же Ferroli но DIVAteck DC. Номер термистора (10k) на схеме 138. Что касается дипов, должен котёл управляться ОТ термостатом в диапазоне 35-55 гр.
Теперь по порядку, т.к. котлы у нас разные, но протокол ОТ един, хотя Бакси его полноценно не использует. Принты:
Текуший уровень модуляции горелки = 0 % и ADC = 10 и всё, что к этому относится, можете смело закомментировать, это мой частный случай.
Нужно, что бы котёл выдал код с MsgID=3 (R) и этот код записать в MsgID=2(W).
Тут я записываю уже ранее прочитанный 0х0004 (мой Бакси выдал)
Понял, тогда и с уровнем модуляции вам разбираться надо. Мой котёл по ОТ этот ID Msg "RelModLevel" не отдаёт, потому сам вычисляю, а не читаю его из котла.
Отдает мой котел уровень горелки. Написал код
Теперь по порядку, т.к. котлы у нас разные, но протокол ОТ един, хотя Бакси его полноценно не использует. Принты:
Текуший уровень модуляции горелки = 0 % и ADC = 10 и всё, что к этому относится, можете смело закомментировать, это мой частный случай.
Нужно, что бы котёл выдал код с MsgID=3 (R) и этот код записать в MsgID=2(W).
Тут я записываю уже ранее прочитанный 0х0004 (мой Бакси выдал)
А мой не хочет. Я бы с установкой температуры ГВС особо и не парисля бы. Её редко менять надо. Я бы мог с котла настроить с кнопок. Но вот не задача кнопки настройки ГВС блокируются.
Вообщем почитал в инете. нашел вот это. Про мастер слейв.
https://forum.flprog.ru/viewtopic.php?f=71&t=4842
Только ни понял как дать инфу котлу что мой термостат мастер
Вот еще проэкт по OT. Правда это вентиляция
https://github.com/apdlv72/VitoWifi
Только ни понял как дать инфу котлу что мой термостат мастер
Повторюсь, нужно, что бы котёл выдал термостату код с MsgID=3 (R) и этот код уже термостатом записать в MsgID=2(W). В моём случае я сначала прочитал MsgID=3 (ввобще и по хорошему нужно бы вам сначала промониторить все MsgID и вычислить доступные для вашего котла и уже с ними работать в дальнейшем по необходимости), потом этот код обратно в котёл отправить, но уже в MsgID=2 (в моем последнем коде это стр. 449-451.
Если делать универсальный термостат для любых ОТ котлов то MsgID=3 и MsgID=2 должны работать в паре, для себя я такой цели не ставил.
Посмотрите, что вам выдаст MsgID=3.
Вообщем почитал в инете. нашел вот это. Про мастер слейв.
https://forum.flprog.ru/viewtopic.php?f=71&t=4842
Вот еще проэкт по OT. Правда это вентиляция
https://github.com/apdlv72/VitoWifi
Та же Маня, только в другом сарафане. :-)
С этим запросом получаю 1
Получается что 0х0000 ну и отправьте эти нули.
И еще
В ответ тишина....
ID-126 вам зачем? Если хотите получить тип и версию котла нужно мониторить 127.
Посмотрите, ещё, что в 57 лежит и нулевом, интересно глянуть. Чтобы не мудрить в HEX.
Посмотрите, ещё, что в 57 лежит и нулевом, интересно глянуть. Чтобы не мудрить в HEX.
Извените меня. Я вас не понял. Что и где смотреть. Туплю
И, в вашем случае, заслуживает интереса 6.
Используйте мой пример с чтением ID-3 для мониторинга остальных, заслуживающих внимания ID. Посмотрите, что лежит в 0; 6; 57 ну и 127. В HEX виде.
Используйте мой пример с чтением ID-3 для мониторинга остальных, заслуживающих внимания ID. Посмотрите, что лежит в 0; 6; 57 ну и 127. В HEX виде.
0 ID-3 = c0000000
6 ID-3 = c0060303
127 (такого DATA-ID нет)
57 (лежит 45 гр. -Maximum allowable CH water setpoint °C)
6 (тут всё нормально, котёл должен дистанционно управляться)
0 (говорит, что всё clear/0)
Вывод, копать дальше...
Понял. Спасибо боольшое.
Кстати, если в итоге будете использовать мой код, закомментируйте функцию антилигионелла, ни к чему она вашему типу котла.
Кстати, если в итоге будете использовать мой код, закомментируйте функцию антилигионелла, ни к чему она вашему типу котла.
Добрый день. Да сделал уже с самого начала. И я буду использовать ваш код. Он хороший и меня полностью устаревает.
Почитал я про представлению котлу термостата. Вроде он должен только прочитать параметр 127 (SlaveVersion).
Вобщем пока не нашел решение данной проблемы регулировки ГВС.
А посмотрите ещё ID-48 и 49, что там лежит.
А посмотрите ещё ID-48 и 49, что там лежит.
48- это верхняя и нижняя границы для регулировки ГВС 65-35°C соответственно.
49- это верхняя и нижняя границы для регулировки СО 40-35°C соответственно.
Относительно 127, а равно 126 и 2 с 3 полагаю не используются в вашим котлом.
А попробуйте поиграться 57-м, выставьте максимально допустимую уставку воды ГВС в 65°C (сейчас у вас там 45°C).
А попробуйте поиграться 57-м, выставьте максимально допустимую уставку воды ГВС в 65°C (сейчас у вас там 45°C).
57 параметр настраевается для отопления. у меня просто минимум в коде настроен 45 градусов.
У меня котел минимум понимаем 30 градусов команду. максимум 85. Если как у вас в коде
0 он не записывает. И если например уставка была ГВС 55 градусов. А потом резко уставка ноль, то у котла остается 55. 30 градусов не эфективно, поставил 45.
Из протокола ОТ: Id-1 TSet "Контрольное заданное значение колеблется от минимума 0 до максимума 100. Он представляет собой непосредственно заданное значение температуры подачи от котла. Ведомому устройству не нужно знать, как ведущий вычисляет уставку управления..."
Котёл должен работать в заданном диапазоне ограничительных уставок мин./макс. для СО и ГВС. Этот термостат использует ПИД регулятор для СО. ГВС работает дискретно, т.е. вкл/выкл., только понять нужно с каким гистерезисом. В моём котле подогрев ГВС начинается, если температура упадёт больше чем на 10°C от уставки.
Если, к примеру, у СО выставить диапазон регулировок 30-65, то это не значит что Id-1 TSet должен будет работать в этом же диапазоне, он всё равно должен работать 0-100 и без всяких поправок, чисто ПИД.
Добавил "Гистерезис" для отключение отопление.
Это отсечет скачки температуры +- от за данной. И котел не будет то включаться, то отключаться при малых изменениях температуры
Возможно имеет смысл, у меня в котле дипами задаётся минимальпое время между включениям либо 10 сек. либо 3 мин., да и сам котёл на Tset не сразу реагирует, пока там ПИД вычислит уставку...
Есть, ещё, задумка реализовать регулировку с помощью температурных кривых, ну и выбирать или ПИД, или кривые. Раскопал соответствующий проект, да ни как не соберусь реализовать https://mxjournal.ru/blog/1154 В коде много лишнего, заслуживает внимания лишь расчёт температуры, как в ручном режиме, так и с учётом температуры за бортом, для того же ID-1, по сути термостат становится вполне себе ничего девайсом, а нужный режим должен иметь возможность выбора/переключения.
Надо ещё подумать, как сохранить изменённые уставки в памяти.
Может MQTT.
Плате читать после перезагрузки какой режим был.
типа
1 по кривым темп.
2 по темп. помещения
3 ручной режим
Вроде получилось с выбором типов регуляторов:
1. ПИД;
2. Эквитермические кривые без учёта влияния температуры в помещении;
3. Эквитермические кривые с учётом влияния температуры в помещении;
или режимы 1, 2, 3. на выбор. Во 2 и 3 режиме наличие внешнего датчика температуры обязательно.
А сохранять в память уставки и калибровачные константы удобно, после рестарта, по разным причинам, всё слетает по умолчанию. Можно, конечно, не заморачиваться, всё проверить, подогнать и прошить уже с нужными уставками, будут по умолчанию. С EEPROM, же ни когда дела не имел, да и с SPIFFS то же, только на уровне примеров.
Может создать режим номер 4. Настроичный. Забиваешь все настройки они записываются в MQTT. А другие режимы эти параметры могут только читать.
И да у меня вопрос у вас датчик уличный в котёл заведен? У меня нет уличного термодатчика в котле.
Может создать...
Идея понятна.
И да у меня вопрос у вас датчик уличный в котёл заведен?
Да, в котёл.
У меня нет уличного термодатчика в котле.
И не предусмотрен как опция?
И не предусмотрен как опция?
В инструкции про него ни чего не сказано. Может разобрать плату и посмотреть. Может пин и есть. Вот только вопрос какой датчик. Аналог или цифровой.
Для меня проще к ESP второй датчик подключить и выкинуть его наружу.
Да, по факту, в вашей модели уличный датчик и не предусмотрен.
Вот, что получилось, в итоге. Коды с расчётами кривых добавлю чуть позже, проверить надо в работе.
Вот, что получилось, в итоге. Коды с расчётами кривых добавлю чуть позже, проверить надо в работе.
Круто получилось!!! Плату сами делали для OT???
У меня колхоз тестовый на макетной плате в кембрике. а ESP пока просто весит. Хочу все таки победить регулировку ГВС.
Колхоз то же был. Плату сам проектировал, но конструктивная идея автора библиотеки ОТ. Про регулировку ГВС, найдите рекомендованные к вашему котлу описания теростатов ОТ, может там какие особенноаости всплывут...
Вообщем вскрыл я вчера котел. Стоит плата от котла Ferroli Divatech (Котел и есть Ferroli. Только шильдик другой) PR01335 v1.2.
вот эти два разъема не подключены. Черный вроде сервесный для прошивки думаю. Белый может там и датчик подключается ул. температуры. Схему не нашел си я чуда.
По поводу ГВС. https://zont-online.ru/internet-magazin/termostaty/adapter-opentherm-704
Эта фигня Ferroli полностью подерживает.
Профессионалы, ремонтники газовых котлов, подтвердили, что такой возможности нет, увы без внешнего датчика.
С уставками ГВС, полагаю, что нужно соблюсти ряд условий. Положение дипов на плате управления котла какое? Пробежался по описанию рекомендованного термостата «SIRIUS 1Р» есть кое какие мысли.
Добрый вечер. Положение дипов как на фото.
По поводу разъема CN1. Нашел фото на мониторе платы PR08205. Там на фоте расписанно три пина из пяти. 12 вольт, 5 вольт, 2 пропуска, и земля. Блин может оставшие пины термодатчик. Тестр возьму посмотрю есть ли на них какие либо напряжения и куда идут дорожки. Если без напряга и на микруху, у меня есть термодатчик на 10 Ом. попробую подключить.
Посмотрел по фото (на сколько можно утверждать по фото ;))) ) проследил эти два пина уходят на микруху. Какую хз названия не видно. Вообщем выходные плату снимать буду смотреть.
Нет на этой плате внешнего термодатчика. Но есть на плате ABM01A, ставится в тот же Ferroli но DIVAteck DC. Номер термистора (10k) на схеме 138. Что касается дипов, должен котёл управляться ОТ термостатом в диапазоне 35-55 гр.
ГВС не управляется. Только читается...
Значит, что-то не учли...
Решение должно быть, попробуйте подобрать период, по протоколу "Period between mid-bit transitions : 900μs .. 1150μs (nominal 1ms)"
У себя убрал из кода все принты, ГВС то же перестала приниматься котлом, вернул всё наместо. На досуге буду искать причину...