При управлении клапанами "Больше/меньше" использую простой блок PID
Его выход 0 -100% завожу на свой блок разделения по импульсам.
Если вам нужно, вышлю ЛС
При управлении клапанами "Больше/меньше" использую простой блок PID
Его выход 0 -100% завожу на свой блок разделения по импульсам.
Если вам нужно, вышлю ЛС
+79104444236
С уважением,
Лапшин Вячеслав
Пожалуйста, буду весьма признателен. И Желательно, если выход -100 +100.
Последний раз редактировалось Игорь Владиславович; 23.03.2024 в 12:30.
Выслал. На что будет ругаться - закомментируйте, это отладочная информация
+79104444236
С уважением,
Лапшин Вячеслав
Пока ругаться не на что. Менял уставку, параметр, Setpoint. Никакой реакции на выходах. Непонятно, как использовать этот ФБ. Это не ПИД регулятор, и не ШИМ. Если бы был один единственный вход разбаланса от ПИД регулятора, и два выхода (больше, меньше), тогда было бы понятно. Если на входе меньше нуля, нужно ОТК, если больше нуля нужно ЗАКР. И чтобы скважность и длительность импульсов была пропорциональна величине разбаланса. Пример: на входе -1.0 значит импульс 0.2 сек скважность 10 сек. на выходе ОТКР. Если на входе -10.0, тогда импульс 2 сек, скважность 8 сек. Если на входе -50, тогда импульс выход ОТКР вообще не гаснет. И тоже самое для +1...+50 только для сигнала ЗАКР.
Вы конечно мне можете посоветовать самому написать алгоритм. Но я только три недели в теме, потому что на больничном. и когда выйду на работу, мне нужно будет сделать главному инженеру техническое решение на реконструкцию автоматики одному из шести котлоагрегатов. Там 14 регуляторов. Хорошие регуляторы у ЗЭИМ на ПЛК, но они дорогие, и с закрытым доступом к программированию.
Если я эту проблему не решу в оставшиеся две недели, то ухожу с этой темы.
Снимок экрана (3).png
Делал на основе ФБ PID из Util.lib.
Но он получился костыль на костыле (как внутри самого ФБ, так и в программе, использующей этот ФБ), хотя и работал.
Сам ФБ:
Использование:
Если есть время, попробуйте самостоятельно сделать и отладить ПИ регулятор по простым формулам и их физическому представлению.
Как только у меня появилось время - сам и сделал собственный. Это несложно.
Идея своего ПИД простая.
Физическая аналогия следующая:
1) по формуле ПИД производится периодическая "зарядка конденсатора"
2) если привод перемещается, то с периодом 100 мс (или 50 мс - не важно) производится "разрядка" конденсатора на величину, пропорциональную времени полного хода, которая прекращается при "полном разряде конденсатора"
Имеется формула ПИД в конечных разностях, т.е. по которой периодически пересчитывается выходное воздействие регулятора ("заряд конденсатора").
Т.е. запускаете таймер BLINK с заданным периодом и по приходу фронта импульса выполняете пересчёт.
Параллельно с этим, действует открытие или закрытие регулирующего органа, которое работает по собственному таймеру BLINK. По фронту (спаду) этого таймера производится "разряд конденсатора" на величину, пропорциональную времени полного хода.
Также, нужно учесть возможное "взвинчивание интегральной составляющей" и ограничить "заряд конденсатора" величиной 105-120%.
Можно поместить вызов ФБ в периодические задачи, нужно только, чтобы период вызова совпадал с пересчётом "разряда" при перемещении регулирующего органа.
Тут подробнее описал такой ФБ для OwenLogic
https://owen.ru/forum/showthread.php...l=1#post430251
Свободного времени сейчас у меня мало, поэтому в CDS ничего переносить и отлаживать не буду.
Последний раз редактировалось FPavel; 23.03.2024 в 15:13.
Павел, Спасибо. Буду пробовать.
Снимок экрана (1).png
Не хочет моргать. На F_TRIG приходит , на выходе нуль.