Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование контроллеров для АСУ и мехатронных систем. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Глава 5

РАЗРАБОТКА ПРОГРАММ В CODESYS НА ЯЗЫКЕ ST

Язык уровня, входящий в стандарт сложные алгоритмы обработки данных
ST (Structured text) –
IEC61131-3.
это
структурный текстовый язык высокого
Он позволяет программировать
–
последовательности команд с исполь зованием переменных, вызовов функций и функциональных блоков (ФБ) и т.д а также для описания действий внутри шагов и условий языка
SFC. В
основном используется в тех случаях, когда алгоритм трудно описать с помощью графи ческих языков. По структуре и синтаксису ближе всего к языку программиро вания Паскаль
Основой жения присваивается переменной с помощью оператора присваивания Каждое выражение обязательно заканчивается точкой с запятой состоит из операций и операндов (переменных, констант, функций
.
ST-
программы служат выражения. Результат вычисления выра
«;».
realVar2 := 10.0 + realVar1 * SIN(realVar3);
«:=».
Выражение
),
например
:
В выражении могут быть использованы скобки. Скобки используются для того, чтобы отделить части выражения и явно определить приоритетность опера-
-
.,
-
-
-
ций. Когда в сложном выражении нет скобок, приоритетность ST-операторов за­дана неявно.
Основные операции языка ST
Операции языка и операции сравнения
Арифметические операции
ножение
, «/» –
деление
Логические операции
XOR –
логическое исключающее ИЛИ
Операции сравнения
больше
, «>=» –
больше или равно
ST
традиционны: арифметические, логические операции
.
: «+» –
сложение
, «-» –
вычитание
, «*» – ум-
.
:
AND –
:
«<» –
, «=» –
логическое И
, NOT –
меньше
, «<=» –
равно
, OR –
логическое ИЛИ
булевское отрицание
меньше или равно
, «< >» – не
равно
.
.
, «>» –
Основные операторы языка ST:
•
оператор присвоения
•
операторы выбора
;
(IF-THEN-ELSE, CASE);
,
•
операторы цикла
•
управляющие операторы
(FOR, WHILE, REPEAT);
(RETURN, EXIT).
51
Оператор присваивания
Синтаксис оператора присваивания традиционен для языков программи рования высокого уровня
:
<переменная> := <любое_выражение> ;
Переменная должна быть выходной или внутренней. Переменная и вы ражение должны иметь один и тот же тип
Операторы выбора
Оператор
IF
предназначен для организации ветвлений. Выбор осуществ
.
(
ветвления
)
ляется в соответствии со значением булевского выражения. Синтаксис опера тора
IF
имеет вид
:
IF < булевское_условие > THEN
< <
оператор оператор
> ; > ;
...
ELSIF < булевское_условие > THEN
<
оператор
> ;
-
-
-
-
< ...
ELSE
< < ...
END_IF;
Операторы
вие равно
FALSE, то
Пример. Провести вычисление выражения в соответствии со следующими
условиями
:
Пример кода программы на
IF x1<0 THEN y:=x2*x3; ELSIF x1>0 THEN y:=x2*x3; ELSE y:=x2+x3; END_IF;
оператор
оператор оператор
ELSE и ELSIF –
> ;
> ; > ;
дополнительные. Если
никаких инструкций не выполняется
 
=
y
 
xxx
132
xxx
132
xxx
132
ST:
ELSE
опущен и усло
-
.
<
;0 если,*
>
;0 если,/
=+
.0 если ,
Оператор
CASE
выполняет один или несколько списков
ST-
операторов выбор осуществляется в соответствии с целым выражением. Синтаксис опера тора
CASE
52
имеет вид
,
-
CASE <целое_выражение> OF
< <
значение значение
>: < > , <
...
ELSE
<
оператор
END_CASE;
Пример. Произвести вычисление выражения в соответствии со следую
щими условиями
:
Пример кода программы на
CASE x1 OF 1: y:=x2*x3; 2: y:=x2/x3; ELSE y:=x2+x3; END_CASE;
оператор
значение
> ;
=
y
 
 
ST:
> ;
>: <
оператор
> ;
-
=
;1 если,*
xxx
132
=
;2 если,/
xxx
132
+
xx
32
.иначе ,
FOR.
В языке
Цикл
ST
WHILE
WHILE <булевское_условие> DO
< <
Операторы цикла
существует три вида оператора цикла
имеет синтаксис
оператор оператор
> ; > ;
:
:
WHILE, REPEAT,
...
END_WHILE;
Вначале вычисляется условие выполнения цикла
и если оно истинно
(TRUE), то
выполняются операторы, составляющие тело
цикла. То есть сначала проверяется условие, а затем выполняется цикл
У цикла
REPEAT
,
наоборот, сначала выполняются операторы, состав
(
<булевское_условие>
.
ляющие тело цикла, а затем проверяется условие окончания цикла. Синтаксис цикла
REPEAT следующий
REPEAT
:
),
-
< <
оператор оператор
...
UNTIL (<булевское_условие >);
END_REPEAT;
> ; > ;
53
Цикл
FOR –
цикл с параметром (индексом
).
Этот цикл имеет целую ана
-
логовую переменную от величины
<нач_значение>
значению <шаг>
<индекс>
до
.
Синтаксис цикла
,
которая увеличивается на каждом шаге цикла
величины
FOR
следующий
FOR <индекс>:= <нач_значение> TO <кон_значение> BY <шаг> DO
< <
оператор оператор
> ; > ;
...
END_FOR;
Параметр
BY <шаг> является
необязательным. Если он отсутствует, то
приращение переменной цикла будет равным
Пример. Вычислить сумму числе от
видов циклов
С циклом
Summa:=0; Index:=1; WHILE Index<=50 DO Summa:= Summa+ Index; END_WHILE;
:
WHILE:
1 до 50 с
Summa:=0; Index:=1; REPEAT Summa:= Summa+ Index; UNTIL (Index>=50); END_REPEAT;
<кон_значение> с
:
1.
использованием различных
С циклом
REPEAT:
шагом, равным
FOR Index:= 1 TO 50 DO
END_FOR;
Оператор операций блока
.
Оператор
С циклом
Summa:= Summa+ Index;
SFC
FOR:
RETURN
оператор
EXIT
WHILE, REPEAT и из
Синтаксис этих операторов имеет вид
RETURN; EXIT;
Вызов функций в
Операторы
завершает выполнение текущей программы. В блоке
RETURN
осуществляет выход из итерационных операторов
оператора ветвления
RETURN и EXIT
определяет конец выполнения только этого
IF.
Вызов функций и функциональных блоков
ST
осуществляется в соответствии со следующим син
FOR,
-
таксисом
54
:
<переменная>:=<функция>(<парам_1>, <парам_2>,…);
где
<переменная>
–
имя переменной, которой присваивается результат выпол
-
нения функции
рам_2>,…
Использование в вии со следующим синтаксисом
; <
функция>
–
список операндов. Например
ST
–
имя вызываемой функции
y := sin(x1);
z := real(100*x2);
функциональных блоков производится в соответст
:
;
<парам_1>, < па-
:
<функ_блок> ( <вх_перем_1> := <пар_1>, <вх_перем_2> := <пар_2> ... );
<переменная_1> := < функ_блок>.<возвр_пар_1>;
...
<переменная_N> := <функ_блок>.<возвр_пар_N>;
где
<функ_блок>
(
перед использованием экземпляр функционального блока должен быть опреде
лён в словаре
функционального блока, <переменная_1>, … <переменная_N>
ные, которым присваиваются результаты выполнения блока
<пар_2>,…
–
–
имя экземпляра вызываемого функционального блока
);
<вх_перем_1>, <вх_перем_2>,…
список операндов
;
<возвр_пар_1>,…,<возвр_пар_N>
–
входные переменные
–
;
<пар_1>,
–
перемен
выход
-
-
-
-
ные поля функционального блока. Например
ton_1(in:=run, pt:=t#10s); y := ton_1.q;
Здесь
ton; in, pt
ton_1 – экземпляр
–
входные переменные блока
функционального блока
ton
:
ton; q – выходное
(
наименование входных и выход
ных полей следует смотреть в описании функционального блока
Контрольные вопросы
1.
К
какой группе языков относится язык
2.
Как
3.
Приведите
4.
Перечислите
5.
Перечислите
6.
Приведите
7.
Приведите
расшифровывается аббревиатура
пример выражения на языке
основные операции языка
основные операторы в языке синтаксис оператора выбора (ветвления синтаксис оператора
CASE.
ST?
ST?
ST.
ST.
ST.
).
поле блока
).
-
8.
Приведите
9.
Какие
10.
Какие
11.
Какими Как
12.
13.
осуществляется вызов функций
Как
осуществляется вызов и использование функциональных блоков
синтаксис операторов цикла
виды контактов присутствуют в виды катушек присутствуют в
способами можно добавить в цепь новый контакт
.
LD?
LD?
?
?
?
55
Контрольные задания
1.
Разработать функциональный блок, реализующий функции счётчика им
-
пульсов. Описание входных и выходных переменных представлено в табл
. 5.1.
Таблица 5.1
Имя переменной Тип Описание переменной
In_ Reset_ En_res_ Out_
Вход
Вход
Вход
BOOL BOOL BOOL
Выход
INT
Счётный вход
Сброс счётчика
Разрешение на сброс счётчика импульсов
Выход счётчика импульсов
2.
Разработать функциональный блок, реализующий функции реверсив ного счётчика импульсов. Описание входных и выходных переменных пред ставлено в табл
. 5.2.
Таблица 5.2
Имя переменной Тип Описание переменной
-
-
In_ Direct_
Reset_ En_res_ Out_
Вход
Вход
Вход
Вход
BOOL BOOL
BOOL BOOL
Выход
INT
Счётный вход
Направление счёта
FALSE – на
Сброс счётчика
: TRUE – на
уменьшение
увеличение
Разрешение на сброс счётчика импульсов
Выход счётчика импульсов
3.
Разработать функциональный блок, реализующий функции счётчика
жидкости. Описание входных и выходных переменных представлено в табл
Таблица 5.3
Имя переменной Тип Описание переменной
In_ Reset_
Вход
Вход
BOOL BOOL
Счётный вход
Сброс счётчика
,
. 5.3.
Ves_ En_res_ Out_
56
Вход
Вход
REAL BOOL
Выход
REAL
Вес импульса счётчика жидкости
Разрешение на сброс счётчика жидкости
Выход счётчика жидкости
4.
Разработать функциональный блок для управления пневматическим исполнительным механизмом (ИМ) одностороннего действия. Описание вход ных и выходных переменных блока представлено в табл
. 5.4.
Функциональный блок должен обеспечивать: управление в автоматическом и ручном режиме контроль состояний открытия/закрытия ИМ ла «Авария заданного времени
» (Alarm) в
(Tau).
случае недостижения требуемого положения в течение
(SQL/SQH) и
формирование сигна
Таблица 5.4
Имя переменной Тип Описание переменной
Mode_
Man_
Auto_
SQL_
Вход
Вход
Вход
Вход
BOOL
BOOL
BOOL
BOOL
Режим управления ИМ
FALSE –
ручной
: TRUE –
автоматический
Команда управления ИМ в ручном режиме
TRUE –
открыть
, FALSE –
закрыть
Команда управления ИМ в автоматическом режиме
Сигнал от датчика положения ИМ: закрыто
: TRUE –
открыть
, FALSE –
закрыть
-
;
-
,
:
SQH_ Tau_ Out_ Alarm_
Вход
BOOL
Вход
INT
Выход
Выход
REAL BOOL
Сигнал от датчика положения ИМ: открыто
Время перемещения ИМ, количество секунд
Сигнал управления ИМ
Сигнал «Авария» ИМ
5.
Разработать функциональный блок для управления электрическим ис полнительным механизмом (ИМ) постоянной скорости вращения вала (МЭО Описание входных и выходных переменных блока представлено в табл
).
. 5.5.
Функциональный блок должен обеспечивать: управление в автоматическом и ручном режиме; контроль состояний открытия/закрытия ИМ формирование сигнала положения в течение заданного времени
«
Авария
» (Alarm) в
(Tau).
случае недостижения требуемого
(SQL/SQH) и
Таблица 5.5
Имя переменной Тип Описание переменной
-
Mode_
Man_
Auto_
Вход
Вход
Вход
BOOL
BOOL
BOOL
Режим управления ИМ
FALSE –
ручной
: TRUE –
автоматический
Команда управления ИМ в ручном режиме
TRUE –
открыть
, FALSE –
закрыть
Команда управления ИМ в автоматическом режиме
: TRUE –
открыть
, FALSE –
закрыть
,
:
57
Продолжение табл
Имя переменной Тип Описание переменной
. 5.5
SQL_ SQH_ Tau_ B_ M_ Alarm_
Вход
BOOL
Вход
BOOL
Вход
INT
Выход
Выход
Выход
REAL REAL BOOL
Сигнал от датчика положения ИМ: закрыто
Сигнал от датчика положения ИМ: открыто
Время перемещения ИМ, количество секунд
Сигнал управления ИМ «Больше
Сигнал управления ИМ «Меньше
Сигнал «Авария» ИМ
»
»
6.
Разработать функциональный блок, реализующий функции стандарт ного ПИ-регулятора для работы с аналоговым исполнительным механизмом Описание входных и выходных переменных блока представлено в табл
. 5.6.
Таблица 5.6
Имя переменной Тип Описание переменной
Mode_
Вход
BOOL
Режим управления контуром регулирования
TRUE –
автоматический
, FALSE –
ручной
­.
:
SP_ Pv_ Kp_ Ti_ X0_
Xmin_ Xmax_ Cicle_ Out_
где
K
Вход
REAL
Вход
REAL
Вход
REAL
Вход
REAL
Вход
REAL
Вход
REAL
Вход
REAL
Вход
INT
Выход
REAL
Уставка регулятора
Регулируемая переменная
(Set Point)
(Process Value)
Коэффициент пропорциональности регулятора
Постоянная времени регулирования
Выходной сигнал регулятора в режиме
«
Ручной
»
Ограничение выходного сигнала по минимуму
Ограничение выходного сигнала по максимуму
Цикл контроллера в милисекундах
Выходной сигнал регулятора
Динамика работы регулятора описывается передаточной функцией
1
,
i
;
T
–
постоянная
i
–
p
 
+=pTKpW
1)(
p
 
коэффициент пропорциональности регулятора
времени регулирования
58
.
Глава 6
ЯЗЫК ПОСЛЕДОВАТЕЛЬНЫХ ФУНКЦИОНАЛЬНЫХ
СХЕМ SFC
Характер многих технических объектов и технологических процессов предполагает выполнение отдельных операций последовательно. В этих случа ях разработчику программного обеспечения очень важно иметь средство про граммирования, которое позволяло бы наглядно воспроизводить структуру объекта или процесса
Язык
SFC (Sequential Function Chart)
.
–
это графический язык, который используется для описания последовательных операций. Процесс представля ется в виде набора определённых шагов, связанных переходами. К каждому пе реходу прикреплено логическое условие. Действия внутри шагов описаны бо лее детально с помощью других языков (как правило
SFC-
программа
–
это графический набор шагов и переходов, соединён
– ST).
ных вместе направленными связями. Для обозначения схождений и расхожде ний используются множественные связи. Некоторые части программы могут быть отделены и представлены в основной схеме одним символом гом. Вот основные графические правила для
−
шаги
не
могут следовать подряд
SFC:
;
–
макроша
-
-
-
-
-
-
-
-
−
переходы
Программирование на
1)
показывает
не
могут следовать подряд
SFC
графически блок-схемы: шаги и переходы, ссылки на ша
обычно разделяется на два различных уровня
.
ги; описание шагов и переходов даётся внутри прямоугольников, присоединён ных к символам шага и перехода
2)
программирование
ных к переходу (как правило, на языке
Основные компоненты
шаг (безусловные переходы
;
действий внутри шага или условий, присоединён
ST).
SFC:
),
действия и макросы
шаги, начальные шаги, переходы, прыжки на
.
В системе программирования
CoDeSys
шаг представляется одиночным
:
-
-
-
прямоугольником (рис
. 6.1, а).
Каждому шагу присваивается имя, которое вно
-
59
а
)
Рис. 6.1. Виды шагов в CoDeSys:
а – обычный шаг; б – начальный шаг
б
)
сится внутри прямоугольника. Во время работы активный шаг помечается мар кером (выделяется
Начальная ситуация программы чальный шаг (рис кой и имеет имя ливается на начальный шаг
Переходы представлены горизонтальными полосками
).
. 6.1, б)
Init.
После запуска программы маркер автоматически устанав
SFC
описывается начальным шагом. На
обозначается графическим символом с двойной рам
.
(+),
которые пере секают линии связи. Каждому переходу может быть поставлена в соответствие некоторая булевская переменная или булевское выражение (условие
).
Текущий шаг будет активным до тех пор, пока не выполнится условие перехода, сле дующее непосредственно после этого шага
Например, при запуске некоторой программы на новится активным начальный шаг пор, пока переменная ния этой переменной на шага
Step0.
start
TRUE
будет иметь значение
Init
программа перейдёт на выполнение следующего
. Он
.
SFC (
рис
. 6.2)
сразу ста
будет в активном состоянии до тех
FALSE.
При изменении значе
-
-
-
-
-
-
-
-
Операции, которые выполняются внутри шагов, описываются с помощью действий. Действия
(
рис
. 6.3)
могут быть описаны как входные, выходные
активные (главные) и действия с классификаторами
Входные действия мент активации шага
.
–
действия, которые выполняются однократно в мо
а
)
Рис. 6.2. Пример
простейшей программы
на SFC
Рис. 6.3. Действия внутри шагов:
а – входные; б – выходные; в – активные;
г – действия с классификаторами
,
.
-
б
)
г
)
в
)
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]