Ответ: Мой вариант PID-регулятора
В продолжение темы:
1. Удалось избавиться от мелких шероховатостей. Теперь суммарное время открытия/закрытия клапана четко кратно Мин импульс,% в тиках. Точность позиционирования (расчетная) +/- Мин импульс,%.
2. Получился в принципе универсальный регулятор - и аналоговый и импульсный. Отличие от стандартного аналогового регулятора только в режиме насыщения. У стандартного отключается только накопление интегральной составляющей, в моем отключается полностью накопление. Можно замутить и полностью универсальный регулятор, но это лишено смысла.
3. Есть ограничения на Мин импульс,%: должно быть больше чем 2 тика.
4. Есть ограничения на точность позиционирования со стороны арифметики чисел с плавающей запятой. При отсутствии шума в сигнале датчика ошибки накапливаются и точность позиционирования снижается. Наличие небольшого шума в сигнале датчика устраняет эту проблему.
5. Сигнал на выходе регулятора учитывает конечную скорость перемещения привода. Сравнивать показания надо при нулевом рассогласовании.
6. Библиотечный макрос регулятора не то что бы совсем не рабочий, но в ряде ситуаций ведет себя неадекватно. Возьмем к примеру такую ситуацию:
- Датчик=Уставка. выход регулятора 0, клапан стоит.
- Датчик<Уставка. Регулятор начинает открывать клапан.
- Датчик=Уставка. Регулятор продолжает открывать клапан. Причем до бесконечности, пока не настанет ситуация когда Датчик>Уставка. Это ошибка.
В принципе допилить библиотечный макрос до рабочего состояния возможно, но макрос защищен от редактирования. Надо то всего лишь:
- зафиксировать значение на выходе аналогового ПИД в конце периода ШИМ.
- сбросить ПИД.
Причем именно в такой последовательности. Только имеет ли это смысл?
Так что смотрите, сравнивайте, пишите отзывы.
__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
|