Спасибо за ответ!
Первоначально всё получилось. Регулятор работает. Параметры более менее подобрать удалось (на столе и без масла).
Возникли дополнительные вопросы:
Это зависит от того, какое поведение выхода ПИД (u(t)) вы ожидаете при его отключении - моментальное отключение или сведение к нулю в соответствии с заданными вами параметрами регулирования
Для начала вот клапан:
Bosch (Rexroth) 0 811 404 020
Есть клапан с одной катушкой с обратной связью и есть клапан с двумя катушками с обратной связью (прямое и обратное вращение гидромотора)
Алгоритм, который я хочу реализовать:
Базовая уставка передаётся по RS485.
При получении команды на дискретный вход происходит плавное открытие до базовой уставки. Для этого будет реализовано на Canny вычисление Уставки ПИД регулятора от времени. Рост уставки ПИД регулятора до базовой уставки с шагом времени (вычислять буду через время цикла) на определённый шаг уставки (например 5% открытия каждые 10мс).
При получении на дискретный вход сигнала о начале торможения Canny должен понижать уставку от базовой до нуля с таким же шагом по времени.
Отсюда вопрос: Мне нужно держать "1" на регистре изменения настроек во время вычисления уставки для плавного разгона и торможения?
Работа гидромоторов предполагается цикличная и поочерёдная. Необходимо будет выполнить около 200 циклов старт-стоп в минуту, поэтому есть необходимость как можно быстрее закрывать клапан. В таком случае думаю, что можно плавно замедлять до некоторого уровня, а потом отключать ПИД и присваивать 0% заполнения ШИМ (насколько это будет быстрее чем просто присвоение уставки 0 в ПИД регулятор мне не понятно).
Следующий вопрос: Быстрее ли закроется клапан (прямой ход) если я буду воздействовать на катушку обратного хода с некоторым заполнением ШИМ (или по ПИД-регулятору)? Вроде как логично, что шток в этот момент будет тянуть в обратную сторону, но как оно будет на практике пока не понятно.
Еще ситуация:
При подборе коэффициентов регулятора я заметил такую штуку:
Если по какой-то причине регулятор не может достигнуть уставки (например: уставка - 100% открытия клапана, а регулятор выдал только 99%), а потом дать ему команду с уставкой 0%, то время закрытия увеличивается поскольку у нас достаточно большая накопленная интегральная составляющая.
Вопрос: Можно ли каким-либо образом обнулить накопленную интегральную составляющую?
Будет работать если я в момент получения команды на торможение на один цикл запишу "0" В регистр установки MAX интергал АПИД?