Главная страница

Руководство пользователя по программированию плк в CoDeSys 3


Скачать 5.57 Mb.
НазваниеРуководство пользователя по программированию плк в CoDeSys 3
Дата25.10.2022
Размер5.57 Mb.
Формат файлаpdf
Имя файлаCODESYS_manual.pdf
ТипРуководство пользователя
#754593
страница4 из 50
1   2   3   4   5   6   7   8   9   ...   50
Visu-
alizations
))
2.2
Языки программирования
CoDeSys поддерживает следующие текстовые:

Что есть, что в CoDeSys
CoDeSys V2.3 2-9

Instruction List (IL) - Список инструкций

Structured Text (ST) – Структурированный текст и графические МЭК языки:

Sequential Function Chart (SFC) – Последовательные Функциональные Схемы

Function Block Diagram (FBD) – Функциональные Блоковые Диаграммы

Ladder Diagram (LD) – Релейно-Контактные Схемы
Кроме того, CoDeSys включает поддержку основанного на Функциональных Блоковых Диаграм- мах, редактора Continuous Function Chart (CFC) – Непрерывные Функциональные Схемы.
Список инструкций (IL)
В IL (Instruction list) каждая инструкция начинается с новой строки и содержит оператор и, в зави- симости от типа операции, один и более операндов, разделенных запятыми.
Перед операндом может находиться метка, заканчивающаяся двоеточием (:). Комментарий должен быть последним элементом в строке. Между инструкциями могут находиться пустые строки.
Пример:
LD
17
ST lint (* комментарий*)
GE
5
JMPC next
LD idword
EQ istruct.sdword
STN test next:
Модификаторы и операторы IL
В IL можно использовать следующие операторы и модификаторы:
Модификаторы:
С
с JMP, CAL, RET: инструкция выполняется только тогда, когда результат аккумуля- тора ИСТИНА.
N
с JMPC,CALC, RETC: инструкция выполняется тогда, когда результат аккумулятора
ЛОЖЬ.
N
в других случаях: отрицание операнда.
Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами:
Оператор
Модифи-
катор
Значение
LD
N
Присвоение аккумулятору значения оператора
ST
N
Присвоение значения аккумулятора операнду
S
Присвоить логическому операнду значение ИСТИНА, если зна- чение аккумулятора ИСТИНА
R
Присвоить логическому операнду значение ЛОЖЬ
AND
N, (
Побитное И
OR
N, (
Побитное ИЛИ
XOR
N, (
Побитное исключающее ИЛИ
ADD
(
Сложение
SUB
(
Вычитание
MUL
(
Умножение

Что есть, что в CoDeSys
CoDeSys V2.3 2-10
DTV
(
Деление
GT
(
>
GE
(
>=
QE
(
=
NE
(
< >
LE
(
<=
LT
(
<
JMP
CN
Переход к метке
CAL
CN
Вызов функционального блока
RET
CN
Выход из POU и возврат в вызывающую программу.
)
Вычисление задержанной операции
Список всех операторов МЭК приведен в приложении.
Пример IL программы с использованием некоторых модификаторов:
LD TRUE
(*загрузить значение ИСТИНА в аккумулятор*)
AND
BOOL1 (*выполнить И с инверсным значением переменной BOOL1*)
JMPC mark
(*если значение аккумулятора ИСТИНА, то перейти к метке " mark"*)
LDN
BOOL2 (*сохранить инверсное значение BOOL2 в аккумуляторе*)
ST ERG
(*сохранить значение аккумулятора в ERG*)
После оператора можно поставить скобки, тогда значение выражения внутри скобок рассматрива- ется как операнд.
Например:
LD
2
MUL
2
ADD
3
ST
ERG
Здесь значение ERG равно 7. Если поставить скобки, то порядок вычислений изменится:
LD
2
MUL
( 2
ADD
3
)
ST
ERG
Теперь значение переменной ERG равно 10.
Операция MUL выполняется только тогда, когда программа доходит до ")". В качестве операнда
MUL использует значение 5.
Структурированный текст (ST)
ST представляет собой набор инструкций высокого уровня, которые могут использоваться в услов- ных операторах ("IF…THEN…ELSE") и в циклах (WHILE…DO).
Пример:
IF value < 7 THEN
WHILE value < 8 DO value:=value+1;
END_WHILE;
END
_
IF
;

Что есть, что в CoDeSys
CoDeSys V2.3 2-11
Выражения
Выражение – это конструкция, возвращающая определенное значение после его вычисления.
Выражение состоит из операторов и операндов. Операндом может быть константа, переменная, функциональный блок или другое выражение.
Вычисление выражений
Вычисление выражений выполняется согласно правилам приоритета. Оператор с самым высоким приоритетом выполняется первым, оператор с более низким приоритетом – вторым и т.д., пока не будут выполнены все операторы.
Операторы с одинаковым приоритетом выполняются слева направо.
В следующей таблице приведен список ST операторов, расположенных в порядке приоритета.
Операция
Обозначение
Приоритет
Выражение в скобках
(Выражение)
Самый высокий.
Вызов функции
Имя функции
(список параметров)
Возведение в степень
EXPT
Замена знака
-
Числовое дополнение
NOT
Умножение
*
Деление
/
Остаток от деления
MOD
Сложение
+
Вычитание
-
Сравнение
< , > ,<=, >=
Неравенство
< >
Равенство
=
Логическое И
AND
Логическое исключающее
ИЛИ.
XOR
Логическое ИЛИ
OR
Самый низкий
Ниже приведены примеры использования инструкций ST:
Тип инструкции
Пример
Присваивание
A := B; CV := CV+1; C := SIN (X);
Вызов функционального блока и использование FB выхода
A := CMD_TMR.Q
RETURN
RETURN;

Что есть, что в CoDeSys
CoDeSys V2.3 2-12
IF
D := B*B;
IF D<0.0 THEN
C := A;
ELSIF D = 0.0 THEN
C := B;
ELSE
C := D;
END_IF
CASE
CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2
END_CASE
FOR
J := 101;
FOR I :=1 TO 100 BY 2 DO
IF ARR [I] = 70 THEN
J := I;
EXIT;
END_IF
END_FOR
WHILE
J: =1;
WHILE J<= 100 AND ARR [J] <> 70
DO
J: = J+2;
END_WHILE
REPEART
J := -1;
REPEAT
J := J+2;
UNTIL J = 101 OR ARR [J] = 70
END_REPEAT
EXIT
EXIT;
Пустая инструкция
;
Оператор присваивания
Перед оператором присваивания находится операнд (переменная или адрес), которому присваива- ется значение выражения, стоящего после оператора присваивания.
Пример:
Var1 := Var2 * 10;
После выполнения этой операции Var1 принимает значение в десять раз большее, чем Var2.
Вызов функционального блока в ST
Функциональный блок вызывается с помощью имени экземпляра функционального блока и списка входных параметров с присваиванием данных в круглых скобках. В следующем примере вызывает- ся таймер с параметрами IN и PT. Значение выходной переменной Q присваивается переменной А.
К выходной переменной, как и в IL, можно обратиться с помощью имени экземпляра функциональ- ного блока, точки, следующей за ним и имени выходной переменной:
CMD_TMR (IN := %IX5, PT := 300);
A := CMD_TMR.Q

Что есть, что в CoDeSys
CoDeSys V2.3 2-13
Инструкция RETURN
Инструкция RETURN позволяет выйти из POU, например, в зависимости от условия.
Инструкция IF
Используя инструкцию IF, можно проверить условие, и в зависимости от этого условия выполнить какие-либо действия.
Синтаксис:
IF THEN

{ELSIF THEN

.ELSIF THEN

ELSE
}
END_IF;
Часть конструкции фигурных скобках не обязательна.
Если < возвращает истину, тогда выполняется.
В противном случае будут выполняться остальные логические выражения одно за другим, пока од- но из них не возвратит истину. Тогда выполняются инструкции, стоящие после этого логического выражения до следующего ELSIF или ELSE.
Если все логические выражения ложны, то выполняются инструкции, стоящие после ELSE.
Пример:
IF temp < 17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF
В этом примере нагревание (heating) включается, когда температура опустится ниже 17 º градусов, иначе оно останется выключенным.

Что есть, что в CoDeSys
CoDeSys V2.3 2-14
Инструкция CASE
C помощью инструкции CASE можно нескольким различным значениям целочисленной перемен- ной сопоставить различные инструкции.
Синтаксис:
CASE OF
:

:

:

:

:

ELSE

END_CASE;
Инструкция CASE выполняется согласно следующим правилам:

Если переменная имеет значение , то выполняется инструкция

Если не принимает ни одного из указанных значений, то выполняется Instruction>.

Чтобы одна и та же инструкция выполнялась при различных значениях переменной , необходимо перечислить эти значения через запятую.

Чтобы одна и та же инструкция выполнялась для целого диапазона значений, необходимо ука- зать начальное и конечное значения, разделенные двумя точками.
Пример:
CASE INT1 OF
1, 5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: ВОOL2 := FALSE;
BOOL3 := TRUE;
10. 20: BOOL1:= TRUE;
BOOL3 := TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE
Цикл FOR
С помощью FOR можно программировать повторяющиеся процессы.
Синтаксис:
INT_Var :INT;
FOR := TO {BY } DO

END_FOR
Часть конструкции, заключенная в фигурные скобки, не обязательна.
выполняются, пока счетчик не больше . Это условие про- веряется перед выполнением , поэтому раздел не выполняется, если
больше .

Что есть, что в CoDeSys
CoDeSys V2.3 2-15
Всякий раз, когда выполняются , значение
,
увеличивается на size>.

может принимать любое целое значение. По умолчанию шаг устанавливается равным
1
Пример:
FOR Counter: =1 TO 5 BY 1 DO
Var1 := Var1*2;
END_FOR;
Erg:=Var1;
В этом примере предполагается, что начальное значение Var1 равно 1. После выполнения цикла эта переменная будет равна 32.
Замечание: : не должно быть равно предельному значению счетчика . Например, если счетчик является переменной типа SINT и равно 127, то цикл становится бесконечным.
Цикл WHILE
Цикл WHILE может использоваться, как и цикл FOR, с тем лишь различием, что условие выхода определяется логическим выражением. Это означает, цикл выполняется, пока верно заданное усло- вие.
Синтаксис:
WHILE

END_WHILE
Раздел выполняется циклически до тех пор, пока дает TRUE.
Если равно FALSE уже при первой итерации, то раздел не бу- дет выполнен ни разу. Если никогда не примет значение FALSE, то раздел
будет выполняться бесконечно.
Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значе- ние входящей в условие переменной обязательно должно изменяться. Например, путем инкремен- та или декремента счетчика.
Пример:
WHILE counter<>0 DO
Var1 := Var1*2; сounter := сounter-1;
END_WHILE
Цикл REPEAT
Цикл REPEAT отличается от цикла WHILE тем, что первая проверка условия выхода из цикла осу- ществляется, когда цикл уже выполнился 1 раз. Это означает, что независимо от условия выхода цикл выполняется хотя бы один раз.
Синтаксис:
REPEAT

UNTIL
END_REPEAT
Раздел выполняется циклически до тех пор, пока даст TRUE.
Если равно TRUE еще до первой итерации, то раздел не будет

Что есть, что в CoDeSys
CoDeSys V2.3 2-16 выполнен один раз. Если никогда не примет значение TRUE, то раздел
будет выполняться бесконечно.
Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значе- ние входящей в условие переменной обязательно должно изменяться. Например, путем инкремен- та или декремента счетчика.
Инструкция EXIT
Если EXIT встречается в циклах FOR, WHILE, REPEAT, то цикл заканчивает свою работу незави- симо от значения условия выхода.

Что есть, что в CoDeSys
CoDeSys V2.3 2-17
Язык последовательных функциональных схем (SFC)
SFC – это графический язык, который позволяет описать хронологическую последовательность различных действий в программе. Для этого действия связываются с шагами (этапами), а последо- вательность работы определяется условиями переходов между шагами.
Пример SFC диаграммы:
Шаг
SFC POU состоит из набора шагов, связанных переходами. Существуют 2 вида шагов:

Шаг простого типа (упрощенный SFC) может включать единственное действие. Графический флажок (небольшой треугольник в верхнем углу шага) показывает, пустой шаг или нет.

МЭК шаг (стандартный SFC) связан с произвольным числом действий или логических пере- менных. Связанные действия располагаются с правой стороны от шага.
Действие
Действие может содержать список инструкций на IL или ST, схемы на FBD или LD, или снова схе- мы на SFC.
При использовании простых шагов действие всегда связывается с этим шагом. Для того чтобы ре- дактировать действие, необходимо дважды щелкнуть левой клавишей мышки на шаге. Или выде- лить шаг и выбрать команду меню ‘
Дополнения
’ ‘
Открыть действие/Переход
’ (‘
Extras
‘ ‘
Zoom
Action/Transition’)
. Помимо основного действия, шаг может включать одно входное и одно выход- ное действие.
Действия МЭК шагов показаны в Организаторе Объектов, непосредственно под вызывающей их
POU. Редактирование действия запускается двойным щелчком мыши или клавишей . Новые действия добавляются командой главного меню ‘
Проект
’ ‘
Добавить действие
’ (‘
Project’

Add Ac-
tion’
). Вы можете сопоставить одному шагу до 9 действий.

Что есть, что в CoDeSys
CoDeSys V2.3 2-18
Входное или выходное действие
В шаг можно добавить входное и выходное действие.
Входное действие выполняется один раз при активизации шага, выходное – при деактивизации.
Шаг, который имеет входное действие, обозначается буквой "Е" в левом нижнем углу, шаг с вы- ходными действиями – буквой "Х" в правом нижнем углу.
Входные и выходные действия могут описываться на любом языке. Для того чтобы отредактиро- вать входное или выходное действие, надо дважды щелкнуть мышкой в соответствующем углу ша- га.
Пример простого шага с входным и выходным действиями:
Переход/условие перехода
Между шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом язы- ке. Условие может включать несколько инструкций, образующих логический результат, в виде ST выражения (т.е. (i<= 100) AND b) либо на любом другом языке. Но условие не должно содержать присваивания, вызов программ и экземпляров функциональных блоков!
В редакторе SFC условие перехода можно записать непосредственно около символа перехода либо в отдельном окне редактора для ввода условия (См. раздел 0, ’
Дополнения
’ ‘
Открыть дейст-
вие/Переход
’ (‘
Extras
‘ ‘
Zoom Action/Transition’
)). Условие, заданное в окне редактора предпочти- тельнее!
Замечание: помимо условий переходов, можно использовать тактируемый режим переходов; См. SFCtip и
SFCtipmode.
Активный шаг
После вызова SFC POU начальный шаг (шаг, выделенный двойной рамкой) выполняется первым.
Шаг, выполняемый в данный момент, называется активным. Действия, связанные с активным ша- гом, выполняются один раз в каждом управляющем цикле. В режиме онлайн активные шаги выде- ляются синим цветом. Следующий за активным шагом шаг станет активным, только когда условие перехода к этому шагу примет значение TRUE.
В каждом управляющем цикле будут выполнены действия, содержащиеся в активных шагах. Далее проверяются условия перехода, и, возможно, уже другие шаги становятся активными, но выпол- няться они будут уже в следующем цикле.
Замечание: выходное действие выполняется однократно в следующем цикле, после того, как условие перехо- да станет истинным.
Шаг МЭК
В отличие от упрощенного SFC МЭК шаги могут включать несколько действий (до девяти). Дейст- вия МЭК шагов описываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чего их надо связать с шагом с помощью команды главного меню ‘
Дополнения


Связать действие
’ (‘
Extras
’ ‘
Associate action
’).
Кроме действий, с шагом можно связывать логические переменные.
С помощью так называемых классификаторов, действия и логические переменные могут активиро- ваться и деактивироваться, возможно, с задержкой времени. Например: действие может продол-

Что есть, что в CoDeSys
CoDeSys V2.3 2-19 жать работу, даже если запустивший его шаг утратил активность; с помощью классификатора S (ус- тановка) можно программировать параллельные процессы и т.д.
Логическая переменная
1   2   3   4   5   6   7   8   9   ...   50


написать администратору сайта