Программы для овен плк-150 и плк-154

Программы написаны в среде CoDeSys 2.3 для контроллера ОВЕН ПЛК-150, 154.

При создании проекта используется язык непрерывных функциональных схем CFC, реализующий структуры, подобные языку FBD.

После запуска CoDeSys 2.3 новый проект открывается из главного меню: FileàNew. В открывшемся окне выбирается тип контроллера (Configuration) подтверждается нажатием клавиши ОК.

После выбора проекта выводится экранная форма, задающая тип, имя и язык программирования первичного компонента New POU, главной программы контроллера.

После подтверждения выбора нажатием клавиши ОК откроется окно нового проекта с именем по умолчанию Untitled. В нем присутствует одна вкладка POUs. Весь проект хранится в одном файле, имя которого отображается в заголовке окна.

При отсутствие реального подключенного контроллера в CoDeSys 2.3 предусмотрен режим симуляции работы контроллера. Для его включения устанавливается флаг во вкладке главного меню OnlineàSimulation mode.

Программное соединение с контроллером, в том числе и ассимиляционное, включается из главного меню CoDeSys командой OnlineàLogin.

При работе с реальным контроллером флаг перед строкой меню Simulation Mode должен быть снят.

В обоих режимах работы контроллера, запуск работы программы осуществляется выбором команды OnlineàRun.

Программа защиты от обрыва, выброса или провала сигнала для контроллера фирмы Овен представлена на рис.129 Эта программа, аналогична программе приведённой на рис.11.

При отсутствии возможности непосредственного аппаратного имитирования аналоговых сигналов, как например на рис.121, возможно их имитировать средствами среды разработки. Ситуации выброса, провала, обрыва, как следствие, также имитируются программно. Для этого допустимо использовать один из вариантов программного функционального блока аналогового входа analog_in, приведенного на рис. 123.

Примечание: Для создания в проекте среды CoDeSys 2.3 функционального блока, не входящего в стандартную библиотеку доступных алгоритмов, необходимо в основном меню сверху последовательно выбрать ProjectàObjectàAdd. В появившейся форме выбирается тип Function Block (функциональный блок), его имя и желаемый язык программирования.

Для блока analog_in использовался язык CFC, язык непрерывных функциональных схем, аналогичный языку функциональных блоков[26].

FUNCTION_BLOCK analog_in

VAR_INPUT (*входа функционального блока*)

x: REAL; (*переменная - входной аналоговый сигнал*)

D_vybr: BOOL; D_obr: BOOL; D_prov: BOOL; (*дискретные переменные имитирования выброса, обрыва, провала*)

END_VAR

VAR_OUTPUT (*выходы функционального блока*)

x_out: REAL; (*переменная основного аналогового выхода*)

END_VAR

VAR (*внутренние переменные функционального блока*)

tp1: TP; tp2: TP; (*переменные типа «таймер»*)

END_VAR

программы для овен плк-150 и плк-154 - student2.ru

Рис. 124 – Функциональный блок для имитации обрыва, выброса и провала сигнала

Суть работы алгоритма в том, что при имитации кратковременного выброса или провала сигнала к входному аналогового сигналу прибавляется (в блоке суммирования ADD) значение 35 или -35 (допустимо как меньшее так и большее значение) в зависимости от команд в течение 1,5 секунд, определяемых при помощи двух таймеров. При отсутствии выбросов и провалов входное значение аналогового сигнала суммируется с величиной 0, то есть остается неизменной. Значения 0 и -35, 35, согласно рисунку 124, подаются на входа блоков переключения SEL Обрыв имитируется переключением на значение ноль.

В библиотеке алгоритмов CoDeSys 2.3 нет блока запоминания, советующего алгоритму для контроллера Ремиконт Р-130. Ниже приведена одна из возможных реализаций алгоритма на языке ST- структурированный текст, полностью соответствующий работе аналогичного блока для контроллера Ремиконт Р-130.

Описание переменных:

FUNCTION_BLOCK Zapom

VAR_INPUT

c: BOOL; (*команда к запоминанию*)

x: REAL; (*входной аналоговый сигнал*)

END_VAR

VAR_OUTPUT

d1: BOOL;

y: REAL; (*выходной аналоговый сигнал*)

END_VAR

VAR

Rtr: R_TRIG; (*тип переменной R-триггер, необходим для использования в коде. R_TRIG является алгоритмом выделения переднего фронта*)

tp_time:TP; (*тип переменной «таймер», В алгоритм введен для формирования кратковременного выходного сигнала d1 о моменте запоминания*)

d: BOOL;

END_VAR

Текст программы на языке ST.

tp_time(IN:=c, PT:=T#0.3s);

d1:=tp_time.Q;

Rtr(CLK:=c);

d:=Rtr.Q;

IF d=TRUE THEN y:=x;

END_IF;

Ниже приведено описание стандартных для среды CoDeSys функциональных блоков.

TP - Функциональный блок «таймер».

TP(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени (в миллисекундах) на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по переднему фронту сигнала на входе IN.

Примечание: Задание времени импульса в секундах осуществляется присвоением входу PT постоянной вида T#1.5s, где Т – определяет временной тип, а #1.5s соответствующее время в секундах. Для задания времени в миллисекундах используется T#100ms. Аналогично задается любая временная постоянная.

По сути своей работы функциональный блок «таймер» схож с алгоритмом одновибратор из библиотеки алгоритмов для контроллера Ремиконт Р-130.

программы для овен плк-150 и плк-154 - student2.ru

Рис. 125 Диаграмма работы функционального блока «таймер»

BLINK - Функциональный блок «генератор прямоугольных импульсов» .

программы для овен плк-150 и плк-154 - student2.ru

Рис. 126 Функциональный блок «генератор прямоугольных импульсов» с заданием времени импульса 2 секунды и паузы 3 секунды

Входы: ENABLE типа BOOL, TIMELOW и TIMEHIGH типа TIME. Выход OUT типа BOOL. Генератор запускается по входу ENABLE = TRUE. Длительность импульса задается TIMEHIGH, длительность паузы TIMELOW.

Генератор прямоугольных импульсов тоже что и мультивибратор библиотеки алгоритмов Ремиконта Р-130, только без функции сброса.

TON - Функциональный блок «таймер с задержкой включения».

TON(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. Как только IN становится TRUE, начинается отсчет времени (в миллисекундах) на выходе ET до значения, равного PT. Далее счетчик не увеличивается. Q равен TRUE, когда IN равен TRUE и ET равен PT, иначе FALSE. Таким образом, выход Q устанавливается с задержкой PT от фронта входа IN.

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

программы для овен плк-150 и плк-154 - student2.ru

Рис. 127 Диаграмма работы «таймера с задержкой включения»

Прочие стандартные функциональные блоки программы на рис.129:

- RS - переключатель с доминантой выключения (RS-триггер);

- OR – логический элемент ИЛИ;

- AND – логический элемент И;

- SUB - вычитание из первого входа второй;

- ABS – модуль значения;

- MUL – перемножение значений;

- GT – больше, возвращает TRUE, если первое значение больше второго;

Программа мажоритарного выбора 2 из 3-х приведена на рис.130.

Для соответствия с программой на рис. 18 был необходим нестандартный для CoDeSys алгоритм переключателя. Его работа полностью соответствует работе одноименного алгоритма библиотеки алгоритмов для контроллера Ремиконт Р-130 в случае трех каналов.

Описание переменных:

FUNCTION_BLOCK PER

VAR_INPUT

c1, c2, c3: BOOL; (*Команды подключения соответствующих входов x1, x2, x3*)

x1, x2, x3:REAL;

END_VAR

VAR_OUTPUT

y:REAL; (*Выход переключателя*)

END_VAR

VAR

END_VAR

Текст программы на языку ST:

IF c3=TRUE THEN y:=x3; END_IF;

IF c2=TRUE THEN y:=x2; END_IF;

IF c1=TRUE THEN y:=x1; END_IF;

IF c1=FALSE AND c2=FALSE AND c3=FALSE THEN y:=x1; END_IF;

Прочие стандартные функциональные блоки программы на рис.130:

- AND – логический элемент И;

- SUB - вычитание из первого входа второй;

- ABS – модуль значения;

- DIV – деление первого значения на второе;

- GT – больше, возвращает TRUE, если первое значение больше второго.

На рис. 131 приведена программа циклограммы. Эта циклограмма реализована по циклограмме, изображённой на рис.23 и соответствует программе (рис.28).

В наборе алгоритмов CoDeSys не имеется идентичного алгоритма таймеру для контроллера Ремиконт Р-130, то есть нет такого алгоритма отсчета времени, в котором предусмотрена и остановка и сброс. Необходимо реализовать приведенный ниже функциональный блок таймера с остановкой и сбросом.

Описание переменных:

FUNCTION_BLOCK Timer_mit_Stop

VAR_INPUT

Csb: BOOL;

Cstop: BOOL;

END_VAR

VAR_OUTPUT

T:TIME;

END_VAR

VAR

ton1:TON;

pam: TIME;

C: BOOL:=TRUE;

Time_ton: TIME;

pt:TIME:=T#10000s;

END_VAR

Текст программы:

ton1(IN:=C , PT:=PT, ET=>Time_ton);

IF Csb=TRUE THEN

C:=FALSE;

pam:=T#0s;

T:=T#0s;

END_IF;

IF Cstop=TRUE THEN

pam:=T;

T:=pam;

C:=FALSE;

END_IF;

IF Csb=FALSE AND Cstop=FALSE THEN

C:=TRUE;

T:=pam+Time_ton;

END_IF;

К стандартному функциональному блоку, используемому в программе относится CTU - функциональный блок «инкрементный счетчик». Входы CU, RESET и выход Q типа BOOL, вход PV и выход CV типа WORD. По каждому фронту на входе CU (переход из FALSE в TRUE) выход CV увеличивается на 1. Выход Q устанавливается в TRUE, когда счетчик достигнет значения, заданного PV. Счетчик CV сбрасывается в 0 по входу RESET = TRUE.

Прочие стандартные функциональные блоки программы на рис. 131:

- AND – логический элемент И;

- OR - логический элемент ИЛИ;

- GT – больше, возвращает TRUE, если первое значение больше второго. Используется в качестве порогового элемента таймера на рис 18.

На рис.132 приведена программа циклограммы, соответствующая рис.32.

Для генерации периодического треугольного сигнала в библиотеке алгоритмов CoDeSys имеется специальный блок генератор GEN.

Входы блока: перечисление MODE предопределенного типа GEN_MODE, BASE типа BOOL, PERIOD типа TIME, CYCLES и AMPLITUDE типа INT и RESET типа BOOL. Выход OUT типа INT.

Вход MODE задает вид генерируемой функции. Перечисление включает следующие значения: TRIANGLE и TRIANGLE_POS - треугольники, SAWTOOTH_RISE и SAWTOOTH_FALL – пила, RECTANGLE – прямоугольники, SINE и COSINE – синусоиды:

программы для овен плк-150 и плк-154 - student2.ru

Рис. 128 Пример работы алгоритма генератор в зависимости от входа MODE и Amplitude

BASE определяет представление единиц периода по времени (BASE=TRUE) или по числу циклов, т.е. по количеству вызовов функционального блока (BASE=FALSE).

Входы PERIOD или CYCLES определяют период выходного сигнала. Вход AMPLITUDE задает амплитуду сигнала. Сброс генератора происходит при установке RESET=TRUE.

На рис.133 фактически реализована та же программа дискретного автомата, что и на рис.40.

Алгоритм проверки на достоверность дискретного сигнала (рис.10) также был реализован в виде функционального блока.

Описание переменных:

FUNCTION_BLOCK Diskr_Zshita

VAR_INPUT

D: BOOL;

END_VAR

VAR_OUTPUT

D1: BOOL;

END_VAR

VAR

ton1: TON; ton2: TON; rs1: RS;

END_VAR

программы для овен плк-150 и плк-154 - student2.ru

Рис. 129 Программа проверки на достоверность дискретного сигнала в CoDeSys.

Описание работы таймера задержки по времени TON и RS-триггера приводилось выше.

На рис. 134 представлен дискретный автомат с памятью, соответствующий программе на рис. 43. Все функциональные блоки, составляющие программу, были рассмотрены выше.

программы для овен плк-150 и плк-154 - student2.ru

Рис. 130 - Программа защиты от обрыва, выброса или провала сигнала

программы для овен плк-150 и плк-154 - student2.ru

Рис. 131 Алгоритм мажоритарного выбора два из трёх

программы для овен плк-150 и плк-154 - student2.ru

Рис. 132 Программа реализации циклограммы

программы для овен плк-150 и плк-154 - student2.ru

Рис. 133

программы для овен плк-150 и плк-154 - student2.ru

Рис. 134

программы для овен плк-150 и плк-154 - student2.ru

Рис. 135

Учебное издание

Борис Георгиевич Севастьянов

Наши рекомендации