PDA

Просмотр полной версии : Помогите с выбором ПИД регулятора



werg
08.08.2015, 16:54
Здравствуйте!
Хочу подобрать 2 ПИД регулятора для своих задач.
В наличии ПЛК 110 - 32 + блоки аналоговых входов и выходов.

1) Клапан с электроприводом (аналоговое управление 4-20) регулирует расход охлаждающей воды, по заданной температуре.
обратная связь по датчику температуры.
Вроде подходит блок PID_FUNCTION из библиотеки PID_Regulators.lib? но смущает описание, а именно :
OUT: REAL - Выходной сигнал регулятора в диапазоне от -100 до 100
Почему от минус 100 ? вроде должно быть от 0 до 100?
Может посоветуете регулятор для этой задачи?

2) Аппаратная часть точно такая же как и в первом случае, только эл. подключение движка клапана 3х проводное (больше, меньше, общий провод)
Соответственно на выходе регулятора должны быть 2 дискретных сигнала вместо аналогового, как в первом случае.
Какой пид регулятор подойдет для этого клапана?

P.S. инерционность большая у системы. Сигнал обратной связи приходит с существенным запаздыванием.
На трм 148 задача решается, но вот начальство сказало, что нужно на ПЛК реализовать.
Кроме того: уставку пид регулятора предполагается изменять(наращивать или уменьшать) в процессе регулирования, при этом хотелось бы максимально уменьшить отклонение регулируемой величины от заданной (из за накопленной интегральной составляющей) в момент изменения уставки.
Помогите советом. Спасибо.

werg
10.08.2015, 15:41
В общем проштудировал литературку и вот что:

Для второго случая скрещиваем блок ПИД и Valve_reg_no_pos (еще не пробовал, но должно получиться)

А вот для первого пункта не совсем понятно...
Вроде нужно использовать только блок ПИД(без всяких скрещиваний), но можно ли выходное значение блока ПИД записывать в аналоговый выход?
И как задать зону нечувствительности?

petera
10.08.2015, 15:49
В общем проштудировал литературку и вот что:

Для второго случая скрещиваем блок ПИД и Valve_reg_no_pos (еще не пробовал, но должно получиться)

А вот для первого пункта не совсем понятно...
Вроде нужно использовать только блок ПИД(без всяких скрещиваний), но можно ли выходное значение блока ПИД записывать в аналоговый выход?
И как задать зону нечувствительности?
С выхода блока ПИД подать сигнал на ФБ LIN_TRAFO (IN_MIN=-100, IN_MAX=100, OUT_MIN=4, OUT_MAX=20). На выходе LIN_TRAFO получите сигнал для токового выхода ПЛК 4..20 мА.
Блок ПИД с зоной нечувствительности http://www.owen.ru/forum/showthread.php?t=11443&p=158489&viewfull=1#post158489

Гарчев Евгений
10.08.2015, 16:10
Здравствуйте!

OUT: REAL - Выходной сигнал регулятора в диапазоне от -100 до 100
Почему от минус 100 ? вроде должно быть от 0 до 100?
Может посоветуете регулятор для этой задачи?

2) Аппаратная часть точно такая же как и в первом случае, только эл. подключение движка клапана 3х проводное (больше, меньше, общий провод)
Соответственно на выходе регулятора должны быть 2 дискретных сигнала вместо аналогового, как в первом случае.
Какой пид регулятор подойдет для этого клапана?

Спасибо.

Здравствуйте!
выход -100...+100 для систем нагреватель-холодильник, где диапазон -100...0 для управления холодильником, а 0...+100 для управления нагревателем.
Для первого случая используйте только положительную часть (функция Max: out:=Max(0,in);). Т.к. управление приводом будет через модуль вывода, то выходной сигнал регулятора необходимо привести к диапазону 0...1000 (в случае связи с модулем по протоколу ModBus), для этого достаточно умножить на 10 выход регулятора.
Для организации зоны нечувствительности можете воспользоваться ф.б. Dig_fltr из той же библиотеки.

werg
10.08.2015, 16:27
(функция Max: out:=Max(0,in)
Вот это не совсем понятно.
Спасибо!

Гарчев Евгений
10.08.2015, 16:42
выход регулятора подаете на вход функции Max, сравниваете с нулем, все что ниже 0 на выходе регулятора, будет равно 0 на выходе функции Max.

Гарчев Евгений
10.08.2015, 18:16
Про ф.б. Dig_fltr это я погорячился, к зоне нечувствительности он не имеет никакого отношения.

werg
10.08.2015, 19:05
Поясните про PV_time.
У меня обратная связь не из прибора овен.
Туда можно время цикла записать или все таки нужно создавать переменную типа word и прибавлять в неё что то там?
В описании библиотеки не очень понятно написано.

Гарчев Евгений
11.08.2015, 12:55
PV_time - время измерения сигнала. В модулях аналогового ввода есть отдельный регистр "метка времени", вот его и необходимо подать на вход PV_time.

werg
11.08.2015, 16:44
В модулях аналогового ввода есть отдельный регистр "метка времени"
У меня в данной конфигурации нет модуля аналогового ввода.
Значение температуры приходит от стороннего прибора(не овеновского)