Просмотр полной версии : Управление 8 ступенями электрического нагревателя
anton_first
30.10.2023, 12:40
Добрый день!!! Подскажите пожалуйста алгоритм управления 8 ступенями электрического нагревателя. Исходные данные:
Есть 8 ступеней нагревателя, каждый последующий должен включаться через 3 минуты. Проблема в алгоритме в случае если 1 или несколько ступеней выходят из строя. Например если неисправны с1 по 7 то 8 ступень далжна включиться через минуты.
Добрый день!!! Подскажите пожалуйста алгоритм управления 8 ступенями электрического нагревателя. Исходные данные:
Есть 8 ступеней нагревателя, каждый последующий должен включаться через 3 минуты. Проблема в алгоритме в случае если 1 или несколько ступеней выходят из строя. Например если неисправны с1 по 7 то 8 ступень далжна включиться через минуты.
А у алгоритма есть данные по неисправным ступеням?
Сергей0308
30.10.2023, 13:58
Добрый день!!! Подскажите пожалуйста алгоритм управления 8 ступенями электрического нагревателя. Исходные данные:
Есть 8 ступеней нагревателя, каждый последующий должен включаться через 3 минуты. Проблема в алгоритме в случае если 1 или несколько ступеней выходят из строя. Например если неисправны с1 по 7 то 8 ступень далжна включиться через минуты.
Я примерно так это вижу, здесь в 35 посте выложил:
https://owen.ru/forum/showthread.php?t=38597&page=4
kondor3000
30.10.2023, 15:19
Добрый день!!! Подскажите пожалуйста алгоритм управления 8 ступенями электрического нагревателя. Исходные данные:
Есть 8 ступеней нагревателя, каждый последующий должен включаться через 3 минуты. Проблема в алгоритме в случае если 1 или несколько ступеней выходят из строя. Например если неисправны с1 по 7 то 8 ступень далжна включиться через минуты.
Вот алгоритм на 8 ступеней, интеграл отключён , работают только таймеры 71233
Входы аварий отключают насосы. Переменная Delay задаёт время 180 сек (3 мин),
если Т1 меньше уставки Tsp насосы включаются по порядку, если больше Tsp, выключаются
https://owen.ru/forum/showthread.php?t=38453&page=10#93
kondor3000
30.10.2023, 20:04
Немного доработал алгоритм, более правильный отсчёт времени ЕТ
Немного доработал алгоритм, более правильный отсчёт времени ЕТ
Для чего в этом алгоритме блок T_zikl1?
kondor3000
22.11.2024, 17:15
Для чего в этом алгоритме блок T_zikl1?
T_zikl (время цикла), был нужен, когда в ST ещё не было времени и таймеров, время считалось по количеству циклов 80265
умноженное на время цикла.
Сейчас всё проще, есть таймеры и функции времени
Спасибо большое за разъяснение и обновленный блок!
В новой версии нет возможности регулировать delay. На практике выяснилось, что эта возможность не нужна?
kondor3000
25.11.2024, 08:56
Спасибо большое за разъяснение и обновленный блок!
В новой версии нет возможности регулировать delay. На практике выяснилось, что эта возможность не нужна?
Переменная delay, задержка после включения или отключения котла, в ФБ осталась, ей присвоена константа 10 сек, если вам она нужна, можете вывести её как вход и регулировать. Не забывайте что интегральная составляющая добавляет время.
Скачайте проект ещё раз, перезалил файл, там ошибочка была.
Да, я её на всякий случай вывел, чтобы при наладке котла иметь возможность быстро регулировать.
Переменная ET для подсчета времени работы в текущем составе котлов, для чего это можно использовать?
Мне понравился этот блок, планирую использовать, только добавлю ещё ротацию номеров котлов раз в сутки, чтобы наработка равномерно распределялась.
Был бы признателен, если бы вы мне объяснили как работает FUNCTION_BLOCK INTEGRATE.
kondor3000
25.11.2024, 11:10
Да, я её на всякий случай вывел, чтобы при наладке котла иметь возможность быстро регулировать.
Переменная ET для подсчета времени работы в текущем составе котлов, для чего это можно использовать?
Мне понравился этот блок, планирую использовать, только добавлю ещё ротацию номеров котлов раз в сутки, чтобы наработка равномерно распределялась.
Был бы признателен, если бы вы мне объяснили как работает FUNCTION_BLOCK INTEGRATE.
Переменная ЕТ, отсчитывает время до включения следующего бойлера, Например delay=10, а включение произойдёт только через 21 секунду, при разнице температуры с уставкой 50 градусов. ФБ INTEGRATE как раз и высчитывает интеграл от разницы температуры с уставкой и добавляет время до срабатывания следующей ступени, при маленькой разнице время увеличиться до нескольких минут, чтобы ступени не включались слишком часто.
Спасибо! Я понял, что при наладке можно будет поиграть параметрами delay и РТ чтобы добиться нужного времени переключения.
kondor3000
25.11.2024, 19:13
Спасибо! Я понял, что при наладке можно будет поиграть параметрами delay и РТ чтобы добиться нужного времени переключения.
Если вам нужно переключение только по времени, то можно сделать как тут, интеграл удалён, работает чисто переключение по времени, в примере 3 минуты (180 секунд), по 2 насоса, время задано блоком Opr_Min, а так же есть включение по уровню, если нужно.
https://owen.ru/forum/showthread.php?t=38891#6
Мне нужен переключатель по разнице уставки и текущих показаний, так что рассмотренный в этой теме подходит. Только я взял старую версию, где время цикла рассчитывалось отдельно. Почему-то обновленный блок у меня на стенде вызывал зацикленность программы и порт не отвечал. Я встроил автоматическую ротацию котлов по времени. Посмотрим, что пусконаладка покажет.
kondor3000
26.11.2024, 16:07
Мне нужен переключатель по разнице уставки и текущих показаний, так что рассмотренный в этой теме подходит. Только я взял старую версию, где время цикла рассчитывалось отдельно. Почему-то обновленный блок у меня на стенде вызывал зацикленность программы и порт не отвечал. Я встроил автоматическую ротацию котлов по времени. Посмотрим, что пусконаладка покажет.
А вы программу скачали по новой? Писал, что последний проект перезалил, там была ошибка в последовательности действий, что приводило к исключению.
А вы программу скачали по новой? Писал, что последний проект перезалил, там была ошибка в последовательности действий, что приводило к исключению.
Я сейчас работаю с версией "1 Каскадное управл 8 котлами_5_ET.owle" выложенной в посте от 30.10.2023, 20:04. Там комментарий "Немного доработал алгоритм, более правильный отсчёт времени ЕТ" Вроде не сбоит.
kondor3000
28.11.2024, 13:23
Я сейчас работаю с версией "1 Каскадное управл 8 котлами_5_ET.owle" выложенной в посте от 30.10.2023, 20:04. Там комментарий "Немного доработал алгоритм, более правильный отсчёт времени ЕТ" Вроде не сбоит.
Там та же ошибочка присутствует. Включите все аварии и получите исключение. 80401
Упаковку всех аварий в массив надо перенести до цикла FOR.
Спасибо! Я тоже это заметил, но подумал что со следующим циклом контроллер это прожует. Да и пробовал я со всеми авариями когда ротацию проверял, всё работало. Однако, изменю, как вы советуете, тем более, что и на мой взгляд это правильнее.
Переменная ЕТ, отсчитывает время до включения следующего бойлера, Например delay=10, а включение произойдёт только через 21 секунду, при разнице температуры с уставкой 50 градусов. ФБ INTEGRATE как раз и высчитывает интеграл от разницы температуры с уставкой и добавляет время до срабатывания следующей ступени, при маленькой разнице время увеличиться до нескольких минут, чтобы ступени не включались слишком часто.
kondor, подскажите,
1) как переделать ФБ чтобы он работал по типу ОХЛАДИТЕЛЬ, а не нагреватель
2) как переделать ФБ чтобы время на переключение котлов было меньше, делал Delay=0, не помогло.
kondor3000
07.05.2025, 13:51
kondor, подскажите,
1) как переделать ФБ чтобы он работал по типу ОХЛАДИТЕЛЬ, а не нагреватель
2) как переделать ФБ чтобы время на переключение котлов было меньше, делал Delay=0, не помогло.
У вас каскад холодильников?
Если да, то поменяйте местами Уставку и Измеренную температуру.83670
Переменная Delay -это задержка между циклами в сек.
Чтобы уменьшить время переключений, уменьшайте переменные
iON=10; (*величина интеграла вкл*)
iOFF=30; (*величина интеграла откл*)
и коэффициент 60 в ФБ CASCADE K:=1.0/60, (* /60 - привязка к минутам*), только не до нуля)
У вас каскад холодильников?
Если да, то поменяйте местами Уставку и Измеренную температуру.83670
Переменная Delay -это задержка между циклами в сек.
Чтобы уменьшить время переключений, уменьшайте переменные
iON=10; (*величина интеграла вкл*)
iOFF=30; (*величина интеграла откл*)
и коэффициент 60 в ФБ CASCADE K:=1.0/60, (* /60 - привязка к минутам*), только не до нуля)
у меня каскад вакуумных насосов
У вас каскад холодильников?
Если да, то поменяйте местами Уставку и Измеренную температуру.83670
Переменная Delay -это задержка между циклами в сек.
Чтобы уменьшить время переключений, уменьшайте переменные
iON=10; (*величина интеграла вкл*)
iOFF=30; (*величина интеграла откл*)
и коэффициент 60 в ФБ CASCADE K:=1.0/60, (* /60 - привязка к минутам*), только не до нуля)
iON и iOFF были равны 1 из вашего же макроса(значения 10 и 30 написаны в комментариях)
kondor3000
07.05.2025, 14:39
iON и iOFF были равны 1 из вашего же макроса(значения 10 и 30 написаны в комментариях)
В последней версии, всё как написано, скачал и проверил.
1 Каскадное управл 8 котлами_7_ET.owle
https://owen.ru/forum/showthread.php?t=38608&p=451532&viewfull=1#post451532
и еще нужен вход Enable,чтобы отключать регулирование
kondor3000
07.05.2025, 14:44
и еще нужен вход Enable,чтобы отключать регулирование
Это проще всего, вначале IF Enable и в конце END_IF
В последней версии, всё как написано, скачал и проверил.
1 Каскадное управл 8 котлами_7_ET.owle
https://owen.ru/forum/showthread.php?t=38608&p=451532&viewfull=1#post451532
у меня был старый макрос 1 Каскад_4 котла_Нараб_по Миним
в нем стояли 1 в iON и в iOFF
мне нужно чтобы система еще быстрее реагировала
kondor3000
07.05.2025, 15:05
у меня был старый макрос 1 Каскад_4 котла_Нараб_по Миним
в нем стояли 1 в iON и в iOFF
мне нужно чтобы система еще быстрее реагировала
Коэффициент 60 уменьшите до 1.
Коэффициент 60 уменьшите до 1.
подскажите, а данный алгоритм для насосов подойдет без пид-регулирования?
kondor3000
13.05.2025, 15:23
подскажите, а данный алгоритм для насосов подойдет без пид-регулирования?
Откуда мне знать, что вам нужно, вы взяли пример просто так, не зная что хотите сделать?
Откуда мне знать, что вам нужно, вы взяли пример просто так, не зная что хотите сделать?
хочу каскадное управление с 3 насосами и чередованием
просто была задумка чтобы данный алгоритм просто включал ПЧ в режиме внутреннего ПИДа, а каскад добавлялся из контроллера, но думаю может быть здесь можно просто включать насосы без ПИДа и без ПЧ только через УПП,чтобы работал в режиме гистерезиса
kondor3000
13.05.2025, 15:49
просто была задумка чтобы данный алгоритм просто включал ПЧ в режиме внутреннего ПИДа, а каскад добавлялся из контроллера, но думаю может быть здесь можно просто включать насосы без ПИДа и без ПЧ только через УПП,чтобы работал в режиме гистерезиса
Если так будет работать как надо, то можно и так.
Это проще всего, вначале IF Enable и в конце END_IF
сделал как вы писали, в начале IF Enable THEN...и в конце END_IF. Когда Enable FALSE то макрос не выполняется-все хорошо, но когда насос включился и я убираю сигнал c Enable, то насос не выключается.
kondor3000
19.05.2025, 08:09
сделал как вы писали, в начале IF Enable THEN...и в конце END_IF. Когда Enable FALSE то макрос не выполняется-все хорошо, но когда насос включился и я убираю сигнал c Enable, то насос не выключается.
Кроме сброса Enable, надо сбросить таймер и выход, посмотрите как сделан сброс ( Res) 83844
Сам таймер и формирование маски должны быть вне конструкции IF.....THEN
Соответственно дописать
ELSE
// Сброс таймера и выхода;
END_IF
Кроме сброса Enable, надо сбросить таймер и выход, посмотрите как сделан сброс ( Res) 83844
Сам таймер и формирование маски должны быть вне конструкции IF.....THEN
Соответственно дописать
ELSE
// Сброс таймера и выхода;
END_IF
И еще обнаружилась неприятная вещь, это когда давление набралось,все насосы выключились и система долгое время ничего не потребляла, а потом когда пошел спад давления то система не выходит из спячки,приходится сбрасывать питание на ПР,чтоб вновь все заработало. Если не делать долгую паузу, то система нормально реагирует и сразу начинает включать насосы при падении давлении ниже гистерезиса.При этом выход run не равен нулю.
kondor3000
22.05.2025, 08:58
И еще обнаружилась неприятная вещь, это когда давление набралось,все насосы выключились и система долгое время ничего не потребляла, а потом когда пошел спад давления то система не выходит из спячки,приходится сбрасывать питание на ПР,чтоб вновь все заработало. Если не делать долгую паузу, то система нормально реагирует и сразу начинает включать насосы при падении давлении ниже гистерезиса.При этом выход run не равен нулю.
Надо онлайн смотреть, что с интергалом, возможно лучше не делать сброс по Enable, а просто включать паузу отсчёта со сбросом выхода.
Или у вас main сбрасывается в 0, надо при включении main=1
То есть при перезагрузке, не то же самое что при долгой остановке, найдёте причину, будет работать норм.
Надо онлайн смотреть, что с интергалом, возможно лучше не делать сброс по Enable, а просто включать паузу отсчёта со сбросом выхода.
Или у вас main сбрасывается в 0, надо при включении main=1
То есть при перезагрузке, не то же самое что при остановке на время, найдёте причину, будет работать норм.
не стал я заморачиваться с Enable, добавил внешний Enable через NOT и OR на входа alarm. Единственное что меня смущает, это то что это старый ваш макрос где T_z рассчитывается отдельно,массив alarm перенес ниже nonorm:=0 и run:=0, так как до этого если на все alarm посылать единицу, то ПР уходила в останов ПО.
Может вы мне скинете новый макрос без T_z c внутренним Enable и вариантами где есть интеграл и просто по гистерезису, был бы очень благодарен.
kondor3000
22.05.2025, 10:28
не стал я заморачиваться с Enable, добавил внешний Enable через NOT и OR на входа alarm. Единственное что меня смущает, это то что это старый ваш макрос где T_z рассчитывается отдельно,массив alarm перенес ниже nonorm:=0 и run:=0, так как до этого если на все alarm посылать единицу, то ПР уходила в останов ПО.
Может вы мне скинете новый макрос без T_z c внутренним Enable и вариантами где есть интеграл и просто по гистерезису, был бы очень благодарен.
Проверил сейчас, по Enable каскад нельзя останавливать, он же сам при достижении уставки выключает насосы. Если надо, проще обнулить все выходы (маска выходов =0).
Короче не понятно что вы хотите.
Ссылку без T_z уже выкладывал https://owen.ru/forum/showthread.php?t=38608&p=451532&viewfull=1#post451532
Если вам надо переключение по времени, то каскад вам не нужен, третий пример с Enable
https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
Проверил сейчас, по Enable каскад нельзя останавливать, он же сам при достижении уставки выключает насосы. Если надо, проще обнулить все выходы (маска выходов =0).
Короче не понятно что вы хотите.
Ссылку без T_z уже выкладывал https://owen.ru/forum/showthread.php?t=38608&p=451532&viewfull=1#post451532
Если вам надо переключение по времени, то каскад вам не нужен, третий пример с Enable
https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
нужен каскад с чередованием мастера по времени, но без интеграла, а по уставкам, число уставок= числу насосов,и так же оставить Delay на вкл/выкл доп насоса при достижении своей уставки.
например ставлю уставку 6бар для Мастера, 4бара для второго и 2 бара для третьего, если давление упадет ниже заданной уставки,включаются доп насосы и чтоб выключались они по уставке "верхнего" насоса, например третий насос выключится когда будет 4 бара, а второй когда нагонит 6бар
kondor3000
22.05.2025, 13:50
нужен каскад с чередованием мастера по времени, но без интеграла, а по уставкам, число уставок= числу насосов,и так же оставить Delay на вкл/выкл доп насоса при достижении своей уставки.
например ставлю уставку 6бар для Мастера, 4бара для второго и 2 бара для третьего, если давление упадет ниже заданной уставки,включаются доп насосы и чтоб выключались они по уставке "верхнего" насоса, например третий насос выключится когда будет 4 бара, а второй когда нагонит 6бар
Это как раз 3 пример, только вместо уровня, сделайте сравнение по давлению,
amount -кол-во насосов, main -номер тек. насоса, можно переключать
третий пример с Enable
https://owen.ru/forum/showthread.php?t=38920&p=426052&viewfull=1#post426052
T_zikl (время цикла), был нужен, когда в ST ещё не было времени и таймеров, время считалось по количеству циклов 80265
умноженное на время цикла.
Сейчас всё проще, есть таймеры и функции времени
Доброго дня! столкнулся с интересной штукой и не понимаю в чем дело...
Если я этот проект запускаю в симуляции то все работает, а вот если я его заливаю в пр200 то ничего не работает...
ЕТ считает, лефт тайм стоит на месте и не меняется... в чем может быть дело?
kondor3000
06.10.2025, 07:52
Доброго дня! столкнулся с интересной штукой и не понимаю в чем дело...
Если я этот проект запускаю в симуляции то все работает, а вот если я его заливаю в пр200 то ничего не работает...
ЕТ считает, лефт тайм стоит на месте и не меняется... в чем может быть дело?
В симуляции разница между Уставкой и Т входа огромная и переключение быстрое, в живой ПР смотрите сколько Т на входе и в Уставке. Чем меньше разница, тем переключение дольше. Время интеграла зависит от уставок задержки и разницы и подобраны для бойлеров с водой и тенов.
Для других вариантов надо подбирать.
Немного доработал алгоритм, более правильный отсчёт времени ЕТ
а эта версия работает корректно...
но, если указываю количество тэнов 3 то тен №3 не включается, ставлю 4 тогда работают 3 а 4ый не включается)
kondor3000
06.10.2025, 09:22
но, если указываю количество тэнов 3 то тен №3 не включается, ставлю 4 тогда работают 3 а 4ый не включается)
В 5 версии было так, на 1 больше.
В 7 версии, там ставите num=3; (*общее число котлов*) и работают 3
Какую версию Лоджика вы используете?
В 368 есть баги.
как раз 368) понял, обновлюсь.
обновление не помогло версия проекта 7 также не работает на пр200, только в симуляции, откатился на версию 5....
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot