
- •Предисловие
- •Введение
- •1. Основные особенности языков программирования
- •2. Язык функциональных блок-схем - fbd
- •2.1. Основные понятия
- •1.2. Функции и функциональные блоки
- •Группа «Arithmetic»
- •2.3. Пример программы на языке fbd
- •3. Язык лестничных схем – ld
- •3.1. Контакты
- •3.2. Катушки
- •3.4. Функции и функциональные блоки
- •3.5. Пример программы на языке ld
- •4. Язык последовательных функциональных схем – sfc
- •4.1. Описание элементов sfc
- •4.2 Задание свойств шага
- •4.3 Задание действий
- •4.4. Переход
- •4.5. Пример программы на языке sfc
- •5. Язык структурированного текста – st
- •5.1. Операторы
- •Описание операторов
- •5.2. Примеры использования операторов в простых инструкциях
- •5.3. Сложные инструкции
- •5.4. Использование функций и функциональных блоков
- •5.5. Примеры программ на языке st
- •5.6. Пример программы на языках sfc и st
- •6. Язык списка инструкций – il
- •6.1. Операторы и модификаторы
- •Описание операторов
- •Описание модификаторов
- •6.2. Примеры выполнения инструкций
- •6.3. Использование функций и функциональных блоков
- •6.4. Пример программы на языке il
- •Заключение
- •Библиографический список
- •Оглавление
- •Языки программирования в среде Concept
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус 8
5.5. Примеры программ на языке st
Ниже приведен текст возможного варианта программы управления установкой для смешивания жидкостей, алгоритм работы которой, подключение датчиков и выходных устройств, объявление переменных приведены в п. 2.3.
(*Declaration EFB*)
VAR
RS_Tr1, RS_Tr2: RS;
Timer: TON;
END_VAR
(*Invocation EFB*)
RS_Tr1 (S:=Start, R1:=RS_Tr2.Q1);
RS_Tr2 (S:=TUpp, R1:=NOT DU1);
Timer (IN:=RS_Tr2.Q1 AND Stop, PT:=t#10s);
(*Transformation of a code temperature*)
TUpp:= (UINT_TO_REAL(DTemp) - 6400.0)/256.0 > 70.0;
(*Control*)
IF RS_Tr1.Q1=1 THEN
K1:=NOT DU2 AND Stop;
K2:=DU2 AND NOT DU3 AND Stop;
Nagr:=DU3 AND NOT TUpp AND Stop;
KM:=DU2 AND Stop;
ELSE KM:=0;
END_IF;
K3:= RS_Tr2.Q1 AND Stop AND Timer.Q;
Ниже приведен текст другого возможного варианта программы управления установкой для смешивания жидкостей. В программе дополнительно введена переменная SA типа UDINT, которая используется (вместо триггеров) для реализации трех состояний (State) конечного автомата (вместо триггеров).
(*Declaration EFB*)
VAR
Timer: TON;
END_VAR
(*Invocation EFB*)
Timer (IN:=SA=2 AND DU1, PT:=t#10s);
(*Transformation of a code temperature*)
TUpp:= (UINT_TO_REAL(DTemp) - 6400.0)/256.0 > 70.0;
(*Control*)
(*State 0*)
IF SA=0 AND Start THEN
SA:=1;
END_IF;
(*State 1*)
IF SA=1 THEN
K1:=NOT DU2 AND Stop;
K2:=DU2 AND NOT DU3 AND Stop;
Nagr:=DU3 AND NOT TUpp AND Stop;
KM:=DU2 AND Stop;
IF TUpp THEN
SA:=2;
END_IF;
END_IF;
(*State 2*)
IF SA=2 THEN
KM:=DU3 AND Stop;
K3:=Stop AND DU1 AND Timer.Q;
IF NOT DU1 THEN
SA:=0;
END_IF;
END_IF;
5.6. Пример программы на языках sfc и st
Здесь рассматривается возможный вариант программы управления установкой для смешивания жидкостей, алгоритм работы которой описан в п. 2.3. В отличие от ранее рассмотренных программ на ST в данном варианте программа реализована в двух программных секциях – в первой на языке SFC, во второй – на языке ST. На языке SFC реализованы переключения состояний (SA1 и SA2) конечного автомата и временная задержка 10 с. На языке ST реализовано управление выходными устройствами ПЛК. Такое построение программы позволяет сделать ее более понятной и устраняет некоторые недостатки языка SFC.
|
Таблица 5.2 |
||||
Свойства шагов |
|||||
Step |
Qualifier |
Time |
Variable |
Delay |
|
S_1_1 |
R |
|
SA2 |
|
|
R |
|
D_K3 |
|
||
S_1_2 |
S |
|
SA1 |
|
|
S_1_3 |
R |
|
SA1 |
t#10s |
|
S |
|
SA2 |
|||
DS |
t#10s |
D_K3 |
Текст программы в секции ST:
(*Transformation of a code temperature*)
TUpp:= (UINT_TO_REAL(DTemp) - 6400.0)/256.0 > 70.0;
(*Control*)
IF S1=1 THEN
K1:=NOT DU2 AND Stop;
K2:=DU2 AND NOT DU3 AND Stop;
Nagr:=DU3 AND NOT TUpp AND Stop;
END_IF;
KM:=(S1 AND DU2 OR S2 AND DU3) AND Stop;
K3:= S2 AND Stop AND D_K3;
Вопросы для самоконтроля
1. Перечислите особенности языка ST.
2. Что такое операнды, операторы и выражения?
3. Опишите порядок выполнения инструкций выбора IF ... THEN ... ELSEIF ... ELSE … END _IF и CASE ... OF ... ELSE ... END_CASE.
4. Опишите порядок выполнения инструкций цикла с известным количеством повторений, с предусловием и с постусловием.
5. Как в языке ST осуществляется использование функций и функциональных блоков?
Задания для самостоятельной работы
1.
Приведите пример реализации функции:
переменная Aalarm=1,
если выполняется неравенство
и равна 0, если неравенство не выполняется.
Здесь переменная Aalarm
типа BOOL.
Остальные переменные типа REAL.
2.
Приведите пример реализации логической
функции
для переменных типа BOOL.
3. Приведите программу реализации функции:
если FLAG=0, то MOTOR_1=0, MOTOR_2=0, FAN=0;
если FLAG=1, то MOTOR_1=1, MOTOR_2=0, FAN=1;
если FLAG=2, то MOTOR_1=0, MOTOR_2=0, FAN=1;
если FLAG=3, то MOTOR_1=0, MOTOR_2=1, FAN=0;
5. Приведите программу управления установкой по п. 2.3 при измененном алгоритме – при нажатии кнопки «Авария» установка должна вернуться в исходное состояние.