да видел, что вроде пробегали, а поиск по PID или ПИД ничего не хочет выдавать
просто еще есть нюанс, выход ПИД должен управлять через больше/меньше (если потребуется)
ПИД обычный, ПИД для задвижек и эмулятор задвижек, выложил FPavel
https://owen.ru/forum/showthread.php...l=1#post447749
https://owen.ru/forum/showthread.php...l=1#post430251
Последний раз редактировалось kondor3000; 11.06.2026 в 15:39.
IVM чтобы с нуля писать, надо понимать математику, я пока не в зуб ногой про работу PID внутри
kondor3000 спасибо, пошел изучать... его то я и искал
Еще на oscat кто-то обзывался, тоже там поищу, вроде были доки и бибки. В общем есть с чего начать...
Последний раз редактировалось melky; 11.06.2026 в 16:58.
В библиотеке Utils (Codesys 2.3) есть аналоговый ПИД. Библиотеку можно открыть в редакторе - для этого в диалоговом окне открытия изменить тип файлов с prj на lib.
Там, правда, своеобразная реализация.
При вычислении I и D составляющей учитывайте период пересчёта, иначе это будут необъяснимые коэффициенты.
По поводу регулятора для задвижек больше/меньше - думаю, что в сообщении подробно объяснил алгоритм и привёл формулы. В самом ФБ тоже достаточно комментариев. Но, если возникнут вопросы - спрашивайте.
Если на лабораторках у Б.Н. Шелешпанского довелось разбирать работу регулятора Р25 - должны помнить, что после внесения рассогласования формируется первый большой импульс (П и И составляющие), а потом только короткие импульсы (И составляющей), длительность которых равна минимальной длительности (задаваемой с лицевой панели). Это должно помочь с пониманием алгоритма.
FPavel мне больше нужно это в код превратить, тестировать и давать мне по ушам, что не так запрограммировал будут другие специально обученные люди.
Просто, чтобы программировать не абы что, немного изучить вопрос нужно. С PID раньше не сталкивался, хватало гистерезиса.
В ВУЗе нам головы иссверлили этим ПИД в разных ипостасях. Уже настолько пропитался им, что даже объяснить формулы не могу.
Как понимаю, все формулы сведутся к вычислению в конечных разностях и тогда придётся учитывать время между пересчётами, т.е. довольно точно отмерять время. В ПЛК это просто, а на C# - затрудняюсь сказать, т.к. Windows не является ОСРВ (операционной системой реального времени). Но, в принципе, должно получиться удовлетворительно.
Аналоговый ПИД - это обычное вычисление по формуле с ограничениями выхода диапазоном от 0 до 1 (или от 0% до 100%).
Особенностью только является использование D - нужно сильно сглаживать или весь входной сигнал переменной процесса (PV) или только ту его часть, что поступает на вычисление этой D составляющей.
Формулу предлагаю взять с зависимыми коэффициентами, т.е. с вынесенным за скобки Kp. Это приведёт к тому, что параметр Ti станет измеряться только в единицах времени и будет осознаваем.
Содержимое сообщения с алгоритмом ПИД для КЗР чуть более развёрнуто приводил в своём блоге - его движок позволяет записывать формулы в LaTeX и лучше показывать, чем скрины.
https://www.cyberforum.ru/blogs/534277/8438.html
Повторюсь, будут вопросы - задавайте. По вечерам я дома и могу ответить. Через неделю начнётся ПНР - тогда длительно буду доступен по субботам.