Мдаа, где нить за столом поди уже лица бы били
Мдаа, где нить за столом поди уже лица бы били
Во, нашел по теме
http://www.duskyrobin.com/tpu/2004-06-00031.pdf
Осталось воплотить
Верно написано, что ИМ типа КЗР являются интегрирующими звеньями. Поэтому для них нужен блок ПДД^2 + ШИМ. ПДД^2 можно получить взяв производную от выхода ПИД.
В VALVE_REG_NO_POS так скорее всего и есть дифференциатор+ШИМ. С ПЛК ОВЕН проще всего использовать его + любой ПИД (из util.lib, например). Работает всё отлично, кроме тех мест где банальный ПИД неприменим (например, в процессах с большим запаздыванием).
Там где ПЛК не ОВЕН (соответственно VALVE_REG_NO_POS не работает) - используйте обычный ПИД (util или oscat) после него ставьте блок дифферинцирования и после блок ШИМ. Ещё нужно внести ограничение на минимальную длительность импульса с суммированием мелких импульсов отсекаемых по этому ограничению. Работает также хорошо.
Или используйте блок из oscat для 3-хходовых механизмов, но тогда потребуется лишний дискретный вход и свободные концевики на клапанах для периодической калибровки (этот блок моделирует клапан, вычисляя его положение по временам импульсов). Этот вариант не проверял.
Проверил, получается не совсем хорошо, а точнее плохо. Я не знаю как в других ШИМ, у меня периодически накапливается сумма ошибки (из неучтенных импульсов), что вносит дополнительную помеху. ПИД конечно справляется, но клапан начинает "дергается" чаще. При моем полном ходе механизма 15 сек. уже "чувствуется" даже если сумма накопленных неучтенных импульсом составляет 50 msec. Если нужно "сверх точность" при регулировке нужно увеличить "время реверса" (время измерения изменений с выхода ПИД). Я говорю про свой алгоритм и не утверждаю, что это справедливо для иных систем ПИД регулирования.
Последний раз редактировалось Ворона; 10.12.2014 в 02:54.
Для ПИД- регулятора упертость в максимум или минимум означает, что Вы поставили слишком маленькое Ти (и возможно коэф. пропорциональности завышен)
Осмелюсь Вас поправить- банальный ПИД применим для любого объекта регулирования, даже "в процессах с большим запаздыванием" т.е. инерционностью, надо только правильно определить значения Кр, Ти и Тд.Сообщение от ga-nozry
Там где после ПИД стоит дифференциатор - максимум и минимум выхода ПИД я делал предельными для данного типа (например, REAL), а при достижении - сбрасывал ПИД. Даже при использовании VALVE_REG_NO_POS ПИД необходимо сбрасывать (с блокировкой сигналов больше-меньше на время сброса) при достижении максимума или минимума (в блоге про это забываю написать и выложить полноценный ФБ). Ведь в этом случае от ПИДа нам нужна только скорость изменения его выхода, а само значение выхода не имеет физического смысла и ограничений. А вот выход дифа ограничить - имеет смысл.
Ну для меня этот мир немного сложнее, чем тот, в котором всё можно зарегулировать штукой, определяемой тремя числами. ПИД безусловно великая вещь, и порой хочется поверить в его всеобъемлемость, но границы его применения существуют, и они не так широки, как иногда хотелось бы. (Олссон, Пиани. "Цифровые системы автоматизации и управления", стр 255)