Показать сообщение отдельно
Старый 21.12.2015, 01:00   #22
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Мой вариант PID-регулятора

Цитата:
Сообщение от tvf Посмотреть сообщение
6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно. Возьмем к примеру такую ситуацию:
- Датчик=Уставка. выход регулятора 0, клапан стоит.
- Датчик<Уставка. Регулятор начинает открывать клапан.
- Датчик=Уставка. Регулятор продолжает открывать клапан. Причем до бесконечности, пока не настанет ситуация когда Датчик>Уставка. Это ошибка.
В принципе допилить библиотечный макрос до рабочего состояния возможно, но макрос защищен от редактирования. Надо то всего лишь:
- зафиксировать значение на выходе аналогового ПИД в конце периода ШИМ.
- сбросить ПИД.
Причем именно в такой последовательности. Только имеет ли это смысл?
Так что смотрите, сравнивайте, пишите отзывы.
Библиотечный макрос не имеет этой проблемы. Точнее имеет, но только в идеализированных матмоделях, не до конца учитывающих поведение живого объекта.


PS. Кстати, iReset - тот самый сброс, который вы предлагаете ввести в регулятор. Просто он работает чуть хитрее, чем банальный сброс в конце каждого цикла.

PPS. Попробуйте I=0, библиотечный регулятор станет работать понятнее для вас.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием