Помогите пожалуйста реализовать в С++ или блоках
Помогите пожалуйста реализовать в С++ или блоках
Доброго времени суток.
Уважаемые знатоки, пожалуйста, помогите решить задачку, на словах я её понимаю, как должна работать,
а вот с реализацией - не совсем.
Итак: Бойлерное отопление частного дома.
Условие: Имеем 6 тэнов, уставку температуры в доме - Tset., датчик температуры - Tdch, дифференциал температуры (он же лямбда, кому как удобнее) включения-отключения тэнов - diff. С понижением температуры ниже уставки должен добовляться в работу 1 тэн.
Tset=24°C
diff=2°C
Tset-diff=Tmin
Tmin=22°C
Это можно решить 2-мя способами (как решил я)
1.
diff/5=a (переменная)
если Tset<Tdch, то все тэны выключены
если Tset>=Tdch и Tdch>Tset-a, то включен 1 тэн
если Tset-a>=Tdch и Tdch>Tset-a*2, то включено 2 тэна
если Tset-a*2>=Tdch и Tdch>Tset-a*3, то включено 3 тэна
если Tset-a*3>=Tdch и Tdch>Tset-a*4, то включено 4 тэна
если Tset-a*4>=Tdch и Tdch>Tmin, то включено 5 тэнов
если Tmin>=Tdch, то включено 6 тэнов.
Каждому тэну выделяем по выходу с ардуино и в принципе всё работает, НО.
Я понимаю, что есть на много проще способ решить эту задачку с приминением массива, а здесь до меня чуть
не доходит, как это работает.
Так ещё и вдобавок меня жаба гложет на выделение каждому тэну по выходу (роскошь), поэтому тэны объединенны 4 ступени.
1 ст.= 1 тэн, соответственно выход №1
2 ст.= 2 тэна, соответственно выход №2
3 ст.= 1 тэн, соответственно выход №3
4 ст.= 2 тэна, соответственно выход №4
И получается на каждом условии нужно прописывать какие ступени включены, а какие выключены.
Это и есть 2 вариант решения этой задачи с моей стороны.
Так вот и заключается вопрос как реализовать данную задачу, данное решение реализованно в таймере экрана nextion, если нужно могу скинуть выложить код программы.
Заранее спасибо.
Уважаемые знатоки, пожалуйста, помогите решить задачку, на словах я её понимаю, как должна работать,
а вот с реализацией - не совсем.
Итак: Бойлерное отопление частного дома.
Условие: Имеем 6 тэнов, уставку температуры в доме - Tset., датчик температуры - Tdch, дифференциал температуры (он же лямбда, кому как удобнее) включения-отключения тэнов - diff. С понижением температуры ниже уставки должен добовляться в работу 1 тэн.
Tset=24°C
diff=2°C
Tset-diff=Tmin
Tmin=22°C
Это можно решить 2-мя способами (как решил я)
1.
diff/5=a (переменная)
если Tset<Tdch, то все тэны выключены
если Tset>=Tdch и Tdch>Tset-a, то включен 1 тэн
если Tset-a>=Tdch и Tdch>Tset-a*2, то включено 2 тэна
если Tset-a*2>=Tdch и Tdch>Tset-a*3, то включено 3 тэна
если Tset-a*3>=Tdch и Tdch>Tset-a*4, то включено 4 тэна
если Tset-a*4>=Tdch и Tdch>Tmin, то включено 5 тэнов
если Tmin>=Tdch, то включено 6 тэнов.
Каждому тэну выделяем по выходу с ардуино и в принципе всё работает, НО.
Я понимаю, что есть на много проще способ решить эту задачку с приминением массива, а здесь до меня чуть
не доходит, как это работает.
Так ещё и вдобавок меня жаба гложет на выделение каждому тэну по выходу (роскошь), поэтому тэны объединенны 4 ступени.
1 ст.= 1 тэн, соответственно выход №1
2 ст.= 2 тэна, соответственно выход №2
3 ст.= 1 тэн, соответственно выход №3
4 ст.= 2 тэна, соответственно выход №4
И получается на каждом условии нужно прописывать какие ступени включены, а какие выключены.
Это и есть 2 вариант решения этой задачи с моей стороны.
Так вот и заключается вопрос как реализовать данную задачу, данное решение реализованно в таймере экрана nextion, если нужно могу скинуть выложить код программы.
Заранее спасибо.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Помогите пожалуйста реализовать в С++ или блоках
Задача интересная и перспективная (в том числе и как бизнес-проект).AlexGrash писал(а): 04 май 2024, 11:41 Так вот и заключается вопрос как реализовать данную задачу, данное решение реализованно в таймере экрана nextion, если нужно могу скинуть выложить код программы.
Известно, что некоторые форумчане достаточно успешно решают задачи по автоматизации отоплением и управлением собственных частных домов.
Задача полезная и в общем затратная - требуется проектирование и создания опытных решений, электронных узлов, программных блоков и функций.
Если кто-то выступил бы инициатором создания команды проекта под условным названием "Умный частный дом", мы бы с интересом присоединились к такой команде.
С уважением, ecoins.
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
[ref]AlexGrash[/ref], Ардуинка по отношению средств управлению ТЭНами почти ни чего не стоит или цена меньше ТЭНа.
ТЭНы можно включать параллельно и последовательно. При последовательном соединении мощность меньше, но есть вероятность что дольше прослужат. При параллельном мощность складывается. Хватит ли вам суммарной мощности всех тэнов? Подключаются тэны на 220 вольт или 380 вольт? Я бы рекомендовал равномерно по 1-2 тэна на фазу в том случае если у вас по всем трем фазам одинаковое напряжение. Но такое редко бывает.
Есть такой параметр - теплопотери дома. Как правило от него нужно отталкиваться.
Забыл написать , вернее спросить , про суммарную мощность установленных батарей. Может получиться так, что в доме будет холодно а из бойлера выходить вода под 100 °С. Вам нужно подумать и о управлении циркуляционным насосом.
ТЭНы можно включать параллельно и последовательно. При последовательном соединении мощность меньше, но есть вероятность что дольше прослужат. При параллельном мощность складывается. Хватит ли вам суммарной мощности всех тэнов? Подключаются тэны на 220 вольт или 380 вольт? Я бы рекомендовал равномерно по 1-2 тэна на фазу в том случае если у вас по всем трем фазам одинаковое напряжение. Но такое редко бывает.
Есть такой параметр - теплопотери дома. Как правило от него нужно отталкиваться.
Забыл написать , вернее спросить , про суммарную мощность установленных батарей. Может получиться так, что в доме будет холодно а из бойлера выходить вода под 100 °С. Вам нужно подумать и о управлении циркуляционным насосом.
Последний раз редактировалось montirovka 04 май 2024, 14:14, всего редактировалось 1 раз.
- SergeyShikal
- Лейтенант
- Сообщения: 593
- Зарегистрирован: 30 авг 2018, 17:15
- Откуда: Иркутская область
- Имя: Сергей
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Помогите пожалуйста реализовать в С++ или блоках
Посмотрите этот проект , от датчика на улице отказался- не нужен, температура регулруется по температуре в доме, температура носителя от 50 до 65 градусов 3 тена по 2 квт дом 100 кв. Другого отопления нет(котел потек). Включение тенов через твердотельные реле. Зимой температуры до -55.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
На ночь можно или вовсе выключать отопление или снижать температуру теплоносителя, а перед утром включать. Это лишь в процессе эксплуатации будет понятно. Если бойлер большой и электроэнергия двухтарифная - то немного можно будет экономить. Бойлер каким объемом?
Подключение к ардуино тэнов сделать примерно вот так:
Подключение к ардуино тэнов сделать примерно вот так:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 508
- Зарегистрирован: 31 окт 2023, 12:50
- Имя: Андрей
- Благодарил (а): 21 раз
- Поблагодарили: 94 раза
Помогите пожалуйста реализовать в С++ или блоках
Еще интересное решение
-1. поставить бйпас между обраткой и подачей, При нагреве домашней температуры до нужной, бойпас открывается и тены греют только бойлер, стало холодно, бойпас перекрывается и теплоноситель циркулирует по всему дому.
2- установить в комнатах клапаны на батареях, тогда можно регулировать каждую комнату отдельно.
-1. поставить бйпас между обраткой и подачей, При нагреве домашней температуры до нужной, бойпас открывается и тены греют только бойлер, стало холодно, бойпас перекрывается и теплоноситель циркулирует по всему дому.
2- установить в комнатах клапаны на батареях, тогда можно регулировать каждую комнату отдельно.
-
- Лейтенант
- Сообщения: 556
- Зарегистрирован: 04 июн 2022, 04:14
- Имя: Михаил
- Благодарил (а): 4 раза
- Поблагодарили: 9 раз
Помогите пожалуйста реализовать в С++ или блоках
Задача в принципе простая. Решается на компараторах. Но в указанном варианте я вижу минусы:
И в вашем решении отсутствует гистерезис переключения ступеней, поэтому при граничных показаниях датчика температуры и при колебании этих показаний соседние ступени будут постоянно переключаться. Чем коммутируете ТЭНы и какова их мощность?
Ваша логика и требования к поддержанию температуры претендует на прецизионный регулятор, но не сможет это обеспечить.
Эту проблему можно решить чуть иначе.
- Сделать всего две ступени (по 3 ТЭНа).
- первая ступень включается напрямую, вторая - через твердотельное реле управляется ШИМ сигналом посредством ПИД регулятора (период ШИМ достаточен 30…60с).
Логика работы:
Сигнал с ПИД регулятора делится на два участка по 50%.
Если сигнал меньше 50%, то работает первая ступень (плавная), вторая выключена.
Если сигнал ПИД > 50+дельта, то первая ступень отключается, включается вторая.
При дальнейшем росте сигнала ПИД регулятора вторая ступень работает постоянно, а первая догоняет температуру включением ШИМ.
Такая логика работы исключает резкие провалы температуры и позволяет плавно регулировать и поддерживать температуру.
Отправлено спустя 7 минут 48 секунд:
Замечание по включению ТТР:
Последовательно с ТТР нужно включить силовое реле (контактор). Контактор управляется отдельно, если есть потребность в управлении.
Это необходимо для безопасности, чтоб в случае пробоя ТТР не было неконтролируемой работы ТЭНов.
А дальше можно логику накручивать, контролируя напряжение на выходе ТТР, и если есть напряжение тогда, когда ТТР выключен, выдавать сигнал о неисправности.
При смене работающего ТЭНа будет просадка температуры. «Новый» ТЭН еще холодный и требуется время для его прогрева. Учитывая очень небольшую дельту включения (diff=2, min diff=2/5=0,4 градуса), будут постоянные колебания температуры и постоянное же переключение ТЭНов.AlexGrash писал(а): 04 май 2024, 11:41 1 ст.= 1 тэн, соответственно выход №1
2 ст.= 2 тэна, соответственно выход №2
3 ст.= 1 тэн, соответственно выход №3
4 ст.= 2 тэна, соответственно выход №4
И в вашем решении отсутствует гистерезис переключения ступеней, поэтому при граничных показаниях датчика температуры и при колебании этих показаний соседние ступени будут постоянно переключаться. Чем коммутируете ТЭНы и какова их мощность?
Ваша логика и требования к поддержанию температуры претендует на прецизионный регулятор, но не сможет это обеспечить.
Эту проблему можно решить чуть иначе.
- Сделать всего две ступени (по 3 ТЭНа).
- первая ступень включается напрямую, вторая - через твердотельное реле управляется ШИМ сигналом посредством ПИД регулятора (период ШИМ достаточен 30…60с).
Логика работы:
Сигнал с ПИД регулятора делится на два участка по 50%.
Если сигнал меньше 50%, то работает первая ступень (плавная), вторая выключена.
Если сигнал ПИД > 50+дельта, то первая ступень отключается, включается вторая.
При дальнейшем росте сигнала ПИД регулятора вторая ступень работает постоянно, а первая догоняет температуру включением ШИМ.
Такая логика работы исключает резкие провалы температуры и позволяет плавно регулировать и поддерживать температуру.
Отправлено спустя 7 минут 48 секунд:
Замечание по включению ТТР:
Последовательно с ТТР нужно включить силовое реле (контактор). Контактор управляется отдельно, если есть потребность в управлении.
Это необходимо для безопасности, чтоб в случае пробоя ТТР не было неконтролируемой работы ТЭНов.
А дальше можно логику накручивать, контролируя напряжение на выходе ТТР, и если есть напряжение тогда, когда ТТР выключен, выдавать сигнал о неисправности.
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
[ref]WildCat[/ref], байпас поддерживаю.Его сделать с трехходового клапана с терморегулятором.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Помогите пожалуйста реализовать в С++ или блоках
Я бы позаботился о защите от зависания , есть схема работы выходных реле при зависании мк они отключаются если надо могу схему скинуть .
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
Правильный монтаж, правильное питание, ферритовые "бусинки" по питанию, опторазвязка, короткие провода (особенно I2C шина), экранировка - вот самая хорошая защита от подвисания.
P.S.
Забыл написать для данного случая. Параллельно симисторам снабберная цепь.
Последний раз редактировалось montirovka 04 май 2024, 18:38, всего редактировалось 1 раз.
Помогите пожалуйста реализовать в С++ или блоках
[scroll]#define NUM_TENS 6
#define T_SET 24
#define DIFF 2
#define T_MIN (T_SET - DIFF)
int tens[NUM_TENS] = {2, 3, 4, 5, 6, 7}; // Пины, к которым подключены тэны
void setup() {
for (int i = 0; i < NUM_TENS; i++) {
pinMode(tens, OUTPUT);
}
}
void loop() {
float Tdch = readTemperature(); // Функция для чтения температуры с датчика
int numActiveTens = (T_SET - Tdch) / DIFF;
if (numActiveTens < 0) numActiveTens = 0;
if (numActiveTens > NUM_TENS) numActiveTens = NUM_TENS;
for (int i = 0; i < NUM_TENS; i++) {
if (i < numActiveTens) {
digitalWrite(tens, HIGH); // Включить тэн
} else {
digitalWrite(tens, LOW); // Выключить тэн
}
}
}
float readTemperature() {
// Здесь должен быть код для чтения температуры с датчика
// Возвращаемое значение должно быть в градусах Цельсия
}
[/scroll]
Я думаю проще некуда
#define T_SET 24
#define DIFF 2
#define T_MIN (T_SET - DIFF)
int tens[NUM_TENS] = {2, 3, 4, 5, 6, 7}; // Пины, к которым подключены тэны
void setup() {
for (int i = 0; i < NUM_TENS; i++) {
pinMode(tens, OUTPUT);
}
}
void loop() {
float Tdch = readTemperature(); // Функция для чтения температуры с датчика
int numActiveTens = (T_SET - Tdch) / DIFF;
if (numActiveTens < 0) numActiveTens = 0;
if (numActiveTens > NUM_TENS) numActiveTens = NUM_TENS;
for (int i = 0; i < NUM_TENS; i++) {
if (i < numActiveTens) {
digitalWrite(tens, HIGH); // Включить тэн
} else {
digitalWrite(tens, LOW); // Выключить тэн
}
}
}
float readTemperature() {
// Здесь должен быть код для чтения температуры с датчика
// Возвращаемое значение должно быть в градусах Цельсия
}
[/scroll]
Я думаю проще некуда
Помогите пожалуйста реализовать в С++ или блоках
Я с Вами полностью согласен, вот мой рабочий проект, отработал в таком виде 3-и года. Раньше использовал Blink, пока он не рухнул.ecoins писал(а): 04 май 2024, 13:46Задача интересная и перспективная (в том числе и как бизнес-проект).AlexGrash писал(а): 04 май 2024, 11:41 Так вот и заключается вопрос как реализовать данную задачу, данное решение реализованно в таймере экрана nextion, если нужно могу скинуть выложить код программы.
Известно, что некоторые форумчане достаточно успешно решают задачи по автоматизации отоплением и управлением собственных частных домов.
Задача полезная и в общем затратная - требуется проектирование и создания опытных решений, электронных узлов, программных блоков и функций.
Если кто-то выступил бы инициатором создания команды проекта под условным названием "Умный частный дом", мы бы с интересом присоединились к такой команде.
С уважением, ecoins.
Отправлено спустя 37 минут 29 секунд:
Кстати забыл уточнить что с Blink-ом использовал сначала ecp8266, а затем ecp32, а затем уже в проекте появилась Мега, всем управляли эти процессоры, а NEXTION использовал как монитор и память EEPROM.
Сейчас же переделал логику на экран NEXTION, теперь управляет всем процессом экран, а мега теперь не актуальна, т.к. использование для периферии тянет и Nano.
Отправлено спустя 41 минуту 54 секунды:
Конечно спасибо, за столь развёрнутый совет, но как уже было написано в дополнение хочу ещё пару строк для пояснения:montirovka писал(а): 04 май 2024, 14:06 [ref]AlexGrash[/ref], Ардуинка по отношению средств управлению ТЭНами почти ни чего не стоит или цена меньше ТЭНа.
ТЭНы можно включать параллельно и последовательно. При последовательном соединении мощность меньше, но есть вероятность что дольше прослужат. При параллельном мощность складывается. Хватит ли вам суммарной мощности всех тэнов? Подключаются тэны на 220 вольт или 380 вольт? Я бы рекомендовал равномерно по 1-2 тэна на фазу в том случае если у вас по всем трем фазам одинаковое напряжение. Но такое редко бывает.
Есть такой параметр - теплопотери дома. Как правило от него нужно отталкиваться.
Забыл написать , вернее спросить , про суммарную мощность установленных батарей. Может получиться так, что в доме будет холодно а из бойлера выходить вода под 100 °С. Вам нужно подумать и о управлении циркуляционным насосом.
Используется 2 бойлера по 6 кВт каждый.
В каждом бойлере блок тэнов из 3, по 2 кВт каждый.
Включение выключение тэнов-ступеней осуществлено с помощью однополюсных контакторов через симмисторное управление, сделанное как раз по Вашей приложенной схеме (про ампераж думаю смысла писать нет - сам электрик).
И ещё думаю управление шим сигналом 6 кВт (30А для однофазной сети) это как то крутовато для подающей линии.
Чуть позже приложу видео с экрана NEXTION, доберусь только до него.
Отправлено спустя 53 минуты 49 секунд:
https://www.youtube.com/watch?v=GuyTj8gH6Z8 - это сам экран
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Помогите пожалуйста реализовать в С++ или блоках
[scroll]// Растягиваем величину дифференциала на одинаковые участки для включения ступеней отопления
Tmin.val=Tset.val-diff.val
a.val=diff.val/5
f4.val=Tset.val-a.val //
f3.val=f4.val-a.val //
f2.val=f3.val-a.val //
f1.val=f2.val-a.val //
//
// 1- Тэны выключены; 0- Тэны включены
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Тэны выключены
if(Tdch.val>Tset.val)// Если температура в доме не превышает уставку заданной температуры
{
Klbst1.val=1 // 1 ступень выключена
Klbst2.val=1 // 2 ступень выключена
Klbst3.val=1 // 3 ступень выключена
Klbst4.val=1 // 4 ступень выключена
}
// Включен 1 тэн
if(Tset.val>=Tdch.val&&Tdch.val>f4.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=1
Klbst4.val=1
}
// Включено 2 тэна
if(f4.val>=Tdch.val&&Tdch.val>f3.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=0
Klbst4.val=1
}
// Включено 3 тэна
if(f3.val>=Tdch.val&&Tdch.val>f2.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=1
Klbst4.val=0
}
// Включено 4 тэна
if(f2.val>=Tdch.val&&Tdch.val>f1.val)
{
Klbst1.val=1
Klbst2.val=0
Klbst3.val=1
Klbst4.val=0
}
// Включено 5 тэнов
if(f1.val>=Tdch.val&&Tdch.val>Tmin.val)
{
Klbst1.val=1
Klbst2.val=0
Klbst3.val=0
Klbst4.val=0
}
// Включено 6 тэнов
if(Tmin.val>=Tdch.val)
{
Klbst1.val=0
Klbst2.val=0
Klbst3.val=0
Klbst4.val=0
}
//
[/scroll]
Отправлено спустя 11 минут 37 секунд:
Событие в таймере экрана, вот его и хотелось бы привести в нормальный вид с помощью массивов.

Tmin.val=Tset.val-diff.val
a.val=diff.val/5
f4.val=Tset.val-a.val //
f3.val=f4.val-a.val //
f2.val=f3.val-a.val //
f1.val=f2.val-a.val //
//
// 1- Тэны выключены; 0- Тэны включены
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Тэны выключены
if(Tdch.val>Tset.val)// Если температура в доме не превышает уставку заданной температуры
{
Klbst1.val=1 // 1 ступень выключена
Klbst2.val=1 // 2 ступень выключена
Klbst3.val=1 // 3 ступень выключена
Klbst4.val=1 // 4 ступень выключена
}
// Включен 1 тэн
if(Tset.val>=Tdch.val&&Tdch.val>f4.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=1
Klbst4.val=1
}
// Включено 2 тэна
if(f4.val>=Tdch.val&&Tdch.val>f3.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=0
Klbst4.val=1
}
// Включено 3 тэна
if(f3.val>=Tdch.val&&Tdch.val>f2.val)
{
Klbst1.val=0
Klbst2.val=1
Klbst3.val=1
Klbst4.val=0
}
// Включено 4 тэна
if(f2.val>=Tdch.val&&Tdch.val>f1.val)
{
Klbst1.val=1
Klbst2.val=0
Klbst3.val=1
Klbst4.val=0
}
// Включено 5 тэнов
if(f1.val>=Tdch.val&&Tdch.val>Tmin.val)
{
Klbst1.val=1
Klbst2.val=0
Klbst3.val=0
Klbst4.val=0
}
// Включено 6 тэнов
if(Tmin.val>=Tdch.val)
{
Klbst1.val=0
Klbst2.val=0
Klbst3.val=0
Klbst4.val=0
}
//
[/scroll]
Отправлено спустя 11 минут 37 секунд:
Событие в таймере экрана, вот его и хотелось бы привести в нормальный вид с помощью массивов.


-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Помогите пожалуйста реализовать в С++ или блоках
Посмотрел на сколько это возможно внимательно.AlexGrash писал(а): 05 май 2024, 01:55 Я с Вами полностью согласен, вот мой рабочий проект, отработал в таком виде 3-и года.
Очень большая и интересная работа, и главное что привлекает - реальный проект на реальном объекте.
На сколько я понял, для Nextion Вы написали много, много скриптов и через это реализовали основной алгоритм управления.AlexGrash писал(а): 05 май 2024, 01:55 а затем уже в проекте появилась Мега, всем управляли эти процессоры, а NEXTION использовал как монитор и память EEPROM.
Сейчас же переделал логику на экран NEXTION, теперь управляет всем процессом экран, а мега теперь не актуальна, т.к. использование для периферии тянет и Nano.
Смелый подход - писать скрипты для Nextion не простая работа.
Не смотрели проект Kascada - там инструмент для реализации управления непосредственно с панели достаточно хорошо развит.
--------
Из проекта не совсем понял, как Вы отправляете команды в Nextion на страницы, которые в текущий момент не активны - просто игнорируете обратные посылки об ошибках?
-------
Из видео мне кажется что время реакции на команды с панели не очень высокая - панель "притормаживает".
Видимо это связано с использованием в проекте стандартных блоков FLProg для работы с Nextion.
Возможным решением работы с Nextion является подход (и блоки) ecoins.
Это конечно дело вкуса, в Вашем случае еще и переход от уже освоенного не простого стандартного подхода работы с Nextion.
------
Интересно, как реализован пункт "Видео" на панели Nextion - что там отображается?AlexGrash писал(а): 05 май 2024, 01:55 Чуть позже приложу видео с экрана NEXTION, доберусь только до него.
-------
Спасибо.
Желаю успехов.
С уважением, ecoins.
Помогите пожалуйста реализовать в С++ или блоках
Да, всего получилось 6 страниц, но страница управления - стартовая. В ней и находится весь алгоритм автоматического и ручного управления, остальные страницы используются, в основном, в качестве визуального EEPROMecoins писал(а): 05 май 2024, 04:32 На сколько я понял, для Nextion Вы написали много, много скриптов и через это реализовали основной алгоритм управления.
Смотрел, много смотрел, но подключение по сети и среда разработки почему-то мне не зашли, не знаю почему. С NEXTION мне оказалось разобраться попроще.ecoins писал(а): 05 май 2024, 04:32 Не смотрели проект Kascada - там инструмент для реализации управления непосредственно с панели достаточно хорошо развит.
Нет, ошибок нет. В проекте, который на видео, с ардуиной общается только одна стартовая страница, остальные страницы поправляют глобальные данные на этой странице, т.е. кнопки включения выключения, а параметры уставок являются глобальными на своих страницах и стартовая страница обращается сразу к этим уставкам.ecoins писал(а): 05 май 2024, 04:32 Из проекта не совсем понял, как Вы отправляете команды в Nextion на страницы, которые в текущий момент не активны - просто игнорируете обратные посылки об ошибках?
Это тормозит сам экран, потому что приобрёл вместо резистивного - емкостной, надо было выбрать наоборот, у резистивного скорость на нажатия на много выше, да ещё и плёнка транспортировочная не много мешает.ecoins писал(а): 05 май 2024, 04:32 Из видео мне кажется что время реакции на команды с панели не очень высокая - панель "притормаживает".
Видимо это связано с использованием в проекте стандартных блоков FLProg для работы с Nextion.
Страница видео полностью локальная. Бывают случаи, когда та или иная камера схватила глюк и видео пропало, и помогает только перезагрузка отдельной камеры или же всей системы в куче. Заходим на страницу видео и выключаем отдельный девайс или всё в куче, по прошествии определённого времени (отдельно для каждой камеры время составляет 3-и мин., а для всей системы 10 мин.) всё включается обратно, причём пока идёт перезагрузка уйти со страницы не получится (дабы избежать лишние глюки в процессоре, а точнее сказать не знаю почему так сделал).ecoins писал(а): 05 май 2024, 04:32 Интересно, как реализован пункт "Видео" на панели Nextion - что там отображается?
Отправлено спустя 23 минуты 12 секунд:
Да, спасибо огромное, проще не куда. Но это решение с 6-ю выходами, а можно это же решение для 6-и тэнов, но с 4-мя выходами реализовать?
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
Я вообще то спрашивал за объем бойлера.
А какие теплопотери дома? Сколько киловатт в день "сжигаете"?
Помогите пожалуйста реализовать в С++ или блоках
Просто не понимаю, как это может помочь?montirovka писал(а): 05 май 2024, 06:57 Я вообще то спрашивал за объем бойлера.
А какие теплопотери дома? Сколько киловатт в день "сжигаете"?
Если честно сказать, то обычный бойлер для отопления (литраж не замерял).
Про потери точно ни чего не скажу, а вот про киловатты - можно посчитать, грубовато но всё же 12*24=288кВт/сутки.
Отправлено спустя 1 минуту 4 секунды:
Опять же хочу подчеркнуть расчёты примерные и очень грубые.
Помогите пожалуйста реализовать в С++ или блоках
нужно 2 строки в коде изменить #define NUM_TENS 4 и int tens[NUM_TENS] = {2, 3, 4, 5}; // Пины, к которым подключены тэныAlexGrash писал(а): 05 май 2024, 06:22 Да, спасибо огромное, проще не куда. Но это решение с 6-ю выходами, а можно это же решение для 6-и тэнов, но с 4-мя выходами реализовать?
- montirovka
- Капитан
- Сообщения: 730
- Зарегистрирован: 15 фев 2021, 16:16
- Откуда: Геленджик
- Имя: Сергей
- Благодарил (а): 42 раза
- Поблагодарили: 173 раза
Помогите пожалуйста реализовать в С++ или блоках
А датчик температуры теплоносителя где стоит? На входе или на выходе бойлеров (общего трубопровода)?
Делайте сразу там и там. Потом проще будет отслеживать отопительный процесс.
Делайте сразу там и там. Потом проще будет отслеживать отопительный процесс.
Помогите пожалуйста реализовать в С++ или блоках
Вот здесь я не совсем понял, тэнов у меня 6, а выходов 4. Тэны должны включаться по одному, по мере понижения температуры в пределах дифференциала.hallozin1 писал(а): 05 май 2024, 07:51 нужно 2 строки в коде изменить #define NUM_TENS 4 и int tens[NUM_TENS] = {2, 3, 4, 5}; // Пины, к которым подключены тэны
Кто сейчас на конференции
Сейчас этот форум просматривают: vladimir38 и 0 гостей