Функция модель процеса – PROC_C

По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.

plc4good.org.ua/view_post.php?id=52

Скопировать функциональный блок можно из примеров в Step7 – zEn01_13_STEP7__PID-Temp

Краткое описание:
Функциональный блок PROC_C моделирует последовательное соединение, состоящее из трех звеньев с задержкой первого порядка.
Переменная помехи или переменная внешнего воздействия DISV может накладываться на выходной сигнал оконечного элемента управления.
Коэффициент усиления GAIN может использоваться для определения статического усиления процесса.

PROC_C поможет понять, как можно использовать и конфигурировать регуляторы с аналоговыми сигналами управления.

process_PID
Рис. 1.

Выбирая параметры, пользователь может так изменять модель, чтобы аппроксимировать реальный процесс.
Установка одного из параметров временной задержки:TM_LAGх = 0 секунд снижает порядок динамической характеристики процесса с третьего порядка до второго порядка.

Пример работы:
Параметры регулятора CONT_C – GAIN=3, Ti=10s, Td=5s, TM_LAG=3s
Параметры PROC_C – GAIN=1, TM_LAG1=5s, TM_LAG2=5s,TM_LAG3=5s

process
Рис. 2.

Исходный текст функционального блока:

FUNCTION_BLOCK FB100 TITLE ='process for continuous control' AUTHOR : SIMATIC FAMILY : PROCESS NAME : PROC_C VERSION : '2.0' //reversed by komatic VAR_INPUT INV : REAL , //входная переменная DISV : REAL , //переменная возмущения AMB_TEM : REAL := 2.000000e+001, //температура окружающей среды GAIN : REAL := 1.500000e+000, //кфт пропорциональности TM_LAG1 : REAL := 6.000000e+001, //время задержки 1 [s] TM_LAG2 : REAL := 1.000000e+001, //время задержки 2 [s] TM_LAG3 : REAL , //время задержки 3 [s] CYCLE : REAL := 1.000000e-001, //время выполнения блока [s] END_VAR VAR_OUTPUT OUTV : REAL , //выходная переменная END_VAR VAR_IN_OUT COM_RST : BOOL, //полный рестарт END_VAR VAR sRueck1 : REAL, //Rьckkopplungswert 1 sRueck2 : REAL, //Rьckkopplungswert 2 sRueck3 : REAL, //Rьckkopplungswert 3 END_VAR VAR_TEMP Hvar : REAL , //вспомогательная переменная rCycle : REAL, //время цикла вreal rTmLag1 : REAL, //время задержки 1 in real rTmLag2 : REAL, //время задержки 2 in real rTmLag3 : REAL, //время задержки 3 in real OutvNew : REAL, //новое значение выхода END_VAR BEGIN OutvNew:=(INV+DISV)*GAIN, IF COM_RST THEN OUTV:=OutvNew+AMB_TEM, sRueck1:=OutvNew, sRueck2:=OutvNew, sRueck3:=OutvNew, COM_RST:=0, ELSE rCycle:=CYCLE, rTmLag1:=TM_LAG1, rTmLag2:=TM_LAG2, rTmLag3:=TM_LAG3, IF rCycle &lt, 1.000000e-003 THEN IF rTmLag1&gt,=rCycle*5.000000e-001 THEN Hvar:= rCycle/(rTmLag1 * 2.0 +rCycle), Hvar:=(OutvNew-sRueck1)*Hvar, OutvNew:=Hvar+sRueck1, sRueck1:=2.0 *Hvar+sRueck1, ELSE Hvar:=rCycle/(rTmLag1+rCycle), sRueck1:=(OutvNew-sRueck1)*Hvar+sRueck1, OutvNew:=sRueck1, END_IF, IF rTmLag2&gt,=rCycle*5.000000e-001 THEN Hvar:=rCycle / (rTmLag2*2.0 +rCycle), Hvar:=(OutvNew - sRueck2)*Hvar, OutvNew:=Hvar+sRueck2, sRueck2:=2.0 *Hvar+sRueck2, ELSE sRueck2:=OutvNew, END_IF, IF rTmLag3&gt,=rCycle*5.000000e-001 THEN Hvar:=rCycle/ (rTmLag3*2.0 +rCycle), Hvar:=(OutvNew - sRueck3)*Hvar, OutvNew:=Hvar+sRueck3, sRueck3:=2.0 *Hvar+sRueck3, ELSE sRueck3:=OutvNew, END_IF, OUTV:=OutvNew+AMB_TEM, END_IF, END_IF, END_FUNCTION_BLOCK

Комментарии к материалу

Добавлен: Pie-Man Дата: 2011-02-28

А какой тулзой графики нарисовались?

Добавлен: komatic Дата: 2011-02-28

PLCANALYZER ver5_11

Добавлен: Pie_Man Дата: 2011-02-28

Спасибо

Добавлен: Pie-Man Дата: 2011-03-01

вас не затруднит кинуть линк на скачку на night124 собака rambler.ru спасибо

Добавлен: komatic Дата: 2011-03-01

выслал что мог 🙂

Добавлен: Andrey Дата: 2011-12-04

А где можно скачать эту прогу? Сейчас на наладке нахожусь, очень нада

Добавлен: komatic Дата: 2011-12-04

напишите мыло, вышлю ссылку

Добавлен: Andrey Дата: 2011-12-04

andrey-vic собака rambler.ru

Добавлен: Andrey Дата: 2011-12-04

komatic, если получится отправить сегодня буду очень благодарен. Завтра на объекте и попробую. Заранее спасибо!!!

Добавлен: komatic Дата: 2011-12-04

проверьте почту

Добавлен: Andrey Дата: 2011-12-19

Для komatic.
Сразу не ответил, прошу извинения. Огромное спасибо за присланный софт! Пока сервер с WinCC 7.0 настраивали, очень помогло налаживать регуляторы!!!!

Добавлен: Владимир Дата: 2012-02-28

Прошу прощения, но кто нибудь сталкивался с ситуацией, когда после снятия защиты FB не открывается? Compiler information:fatal error код ошибки 34:38

Добавлен: komatic Дата: 2012-02-28

небыло вроде такого раньше

Добавлен: Владимир Дата: 2012-03-02

А нет ли (случайно 🙂 ) исходного текста блока MEAS_MON (именно он, зараза, ругается после снятия защиты) очень надо!

Добавлен: Владимир Дата: 2012-03-24

По поводу не открытия FB после снятия защиты Все нормально. Просто, видимо, пытался снять защиту с уже кривого FB.Взяв его из чистой библиотеки все стало открываться.

Добавлен: Евгений Дата: 2015-05-28

Вы упомянули что в данном блоки 3 звена.
Обычно объект управления состоит из статической характеристики, инерционного звена и звена запаздывания.
Какой параметр к чему относится ?
Поясните пожалуйста.

Добавлен: Евгений Дата: 2015-05-28

имитирование перемещение исполнительного механизма например в блоки PROC_C реализована?

Добавлен: Vadim Дата: 2019-12-17

Эта строка точно правильная?
IF rCycle &lt, 1.000000e-003
THEN
Это получается чтобы условие выполнялось rCycle должен быть меньше 0,001.

Добавлен: 15498th Дата: 2020-11-25

Эта строка неправильная. Там должно быть что-то вроде этого:
IF rCycle &lt, 1.000000e-003
THEN
rCycle:=1.000000e-003
END_IF
Время цикла принудительно устанавливается в 1мс, если оно меньше. Возможно проверка на случай, если на входе будет задано нулевое значение, чтобы на ноль не делить.

0 0 голоса

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии