PDA

Просмотр полной версии : Функциональные блоки на языке ST



Страницы : 1 2 3 [4]

IVM
11.06.2026, 11:25
Добрый день всем.
А PID регуляторы на ST не пробегали? мне все равно, для ПР или для CodeSys. все равно переделывать под C#. С поиском на форуме не очень дружу :(

Берешь формулу PID-регулятора и пишешь код. Там нет ничего сложного, никакой высшей математике, а только 4 арифметических действия.

melky
11.06.2026, 11:41
да видел, что вроде пробегали, а поиск по PID или ПИД ничего не хочет выдавать :)
просто еще есть нюанс, выход ПИД должен управлять через больше/меньше (если потребуется)

IVM
11.06.2026, 13:41
да видел, что вроде пробегали, а поиск по PID или ПИД ничего не хочет выдавать :)
просто еще есть нюанс, выход ПИД должен управлять через больше/меньше (если потребуется)

Зачем тебе поиск, если сам собираешься код писать. Если знаешь что такое численное интегрирование и дифференцирование, то нет проблем. PID для чего тебе нужен, задвижками управлять ?

kondor3000
11.06.2026, 15:32
да видел, что вроде пробегали, а поиск по PID или ПИД ничего не хочет выдавать :)
просто еще есть нюанс, выход ПИД должен управлять через больше/меньше (если потребуется)

ПИД обычный, ПИД для задвижек и эмулятор задвижек, выложил FPavel
https://owen.ru/forum/showthread.php?t=25068&p=447749&viewfull=1#post447749
https://owen.ru/forum/showthread.php?t=25068&page=74&p=430251&viewfull=1#post430251

melky
11.06.2026, 16:56
IVM чтобы с нуля писать, надо понимать математику :), я пока не в зуб ногой про работу PID внутри :)

kondor3000 спасибо, пошел изучать... его то я и искал :)

Еще на oscat кто-то обзывался, тоже там поищу, вроде были доки и бибки. В общем есть с чего начать...

FPavel
11.06.2026, 19:13
В библиотеке Utils (Codesys 2.3) есть аналоговый ПИД. Библиотеку можно открыть в редакторе - для этого в диалоговом окне открытия изменить тип файлов с prj на lib.
Там, правда, своеобразная реализация.
При вычислении I и D составляющей учитывайте период пересчёта, иначе это будут необъяснимые коэффициенты.

По поводу регулятора для задвижек больше/меньше - думаю, что в сообщении подробно объяснил алгоритм и привёл формулы. В самом ФБ тоже достаточно комментариев. Но, если возникнут вопросы - спрашивайте.
Если на лабораторках у Б.Н. Шелешпанского довелось разбирать работу регулятора Р25 - должны помнить, что после внесения рассогласования формируется первый большой импульс (П и И составляющие), а потом только короткие импульсы (И составляющей), длительность которых равна минимальной длительности (задаваемой с лицевой панели). Это должно помочь с пониманием алгоритма.

melky
11.06.2026, 19:26
FPavel мне больше нужно это в код превратить :), тестировать и давать мне по ушам, что не так запрограммировал будут другие специально обученные люди.

Просто, чтобы программировать не абы что, немного изучить вопрос нужно. С PID раньше не сталкивался, хватало гистерезиса.

FPavel
11.06.2026, 20:25
В ВУЗе нам головы иссверлили этим ПИД в разных ипостасях. Уже настолько пропитался им, что даже объяснить формулы не могу.
Как понимаю, все формулы сведутся к вычислению в конечных разностях и тогда придётся учитывать время между пересчётами, т.е. довольно точно отмерять время. В ПЛК это просто, а на C# - затрудняюсь сказать, т.к. Windows не является ОСРВ (операционной системой реального времени). Но, в принципе, должно получиться удовлетворительно.

Аналоговый ПИД - это обычное вычисление по формуле с ограничениями выхода диапазоном от 0 до 1 (или от 0% до 100%).
Особенностью только является использование D - нужно сильно сглаживать или весь входной сигнал переменной процесса (PV) или только ту его часть, что поступает на вычисление этой D составляющей.

Формулу предлагаю взять с зависимыми коэффициентами, т.е. с вынесенным за скобки Kp. Это приведёт к тому, что параметр Ti станет измеряться только в единицах времени и будет осознаваем.

Содержимое сообщения с алгоритмом ПИД для КЗР чуть более развёрнуто приводил в своём блоге - его движок позволяет записывать формулы в LaTeX и лучше показывать, чем скрины.
https://www.cyberforum.ru/blogs/534277/8438.html

Повторюсь, будут вопросы - задавайте. По вечерам я дома и могу ответить. Через неделю начнётся ПНР - тогда длительно буду доступен по субботам.