По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.
plc4good.org.ua/view_post.php?id=52
Скопировать функциональный блок можно из примеров в Step7 – zEn01_13_STEP7__PID-Temp
Краткое описание:
Функциональный блок PROC_C моделирует последовательное соединение, состоящее из трех звеньев с задержкой первого порядка.
Переменная помехи или переменная внешнего воздействия DISV может накладываться на выходной сигнал оконечного элемента управления.
Коэффициент усиления GAIN может использоваться для определения статического усиления процесса.
PROC_C поможет понять, как можно использовать и конфигурировать регуляторы с аналоговыми сигналами управления.
Рис. 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
Рис. 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 <, 1.000000e-003 THEN IF rTmLag1>,=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>,=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>,=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 <, 1.000000e-003
THEN
Это получается чтобы условие выполнялось rCycle должен быть меньше 0,001.
Добавлен: 15498th Дата: 2020-11-25
Эта строка неправильная. Там должно быть что-то вроде этого:
IF rCycle <, 1.000000e-003
THEN
rCycle:=1.000000e-003
END_IF
Время цикла принудительно устанавливается в 1мс, если оно меньше. Возможно проверка на случай, если на входе будет задано нулевое значение, чтобы на ноль не делить.
Оцените статью!