- •ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ОБРАБОТКИ ДАННЫХ В TRACE MODE 6
- •Языки программирования стандарта IEC(МЭК) 61131-3
- •Вид окна программы «Редактор программ»
- •Аргументы
- •Основные типы данных
- •Техно FBD
- •Функциональные блоки
- •Пример
- •Создание привязки
- •Порядок обработки в первую
- •FBD-программа
- •Техно IL
- •Техно IL
- •Одно и двухадресный режим
- •Конструкция программы на языке Техно IL
- •Значения по умолчанию
- •Операторы обмена с аккумулятором
- •Пример программы
- •Логические операторы Техно IL
- •Логические операторы Техно IL
- •Арифметические операторы Техно IL
- •Операторы сравнения
- •Операторы перехода и вызова функции Техно IL
- •Операторы перехода и вызова функции Техно IL
- •Техно ST
- •Инициализа
- •Конструкц ии языка
- •Арифметические операции
- •Логические операции
- •Операц
- •Конструкция IF – ELSEIF –
- •Конструк
- •Цикл FOR
- •Цикл For
- •Цикл WHILE
- •Цикл REPEAT UNTIL
- •Конструкция CASE
- •Язык SFC
- •LD (Ladder
- •Язык LD позволяет:
- •Контакт
- •Катушка
- •Катушки
- •Катушки
- •Катушка
- •Размещение
- •Размещение блоков
- •Пример
Логические операторы Техно IL
В качестве операндов могут использоваться булевы переменные. Вторым операндом может быть число (но не численная переменная), которое интерпретируется следующим образом: не равно 0 – TRUE; равно 0 – FALSE.
Выполнение операторов R и S не изменяет значения аккумулятора.
|
VAR VAR_001 : BOOL := TRUE; END_VAR |
||
|
VAR VAR_002 : BOOL; END_VAR |
||
|
VAR VAR_004 : INT := 0; END_VAR |
||
|
LD 1 |
//result:=1 |
|
|
S VAR_002 |
|
//VAR_002:=TRUE |
Пример |
R VAR_002 |
|
//VAR_002:=FALSE |
AND VAR_001 VAR_002 |
|||
програм |
//result:=VAR_001:=FALSE |
||
LD 1 |
//result:=1 |
||
мы |
S VAR_001 |
|
//VAR_001:=TRUE |
OR VAR_002 VAR_001 |
|||
|
//result:=VAR_002:=TRUE |
||
|
XOR VAR_002 VAR_001 |
||
|
//result:=VAR_002:=FALSE |
||
|
OR VAR_002 10 |
//result:=VAR_002:=TRUE |
|
Арифметические операторы Техно IL
|
|
|
|
Синтаксис |
Действие |
|
ADD operand1 |
result := operand1 := operand1 + |
|
operand2 |
operand2 |
|
SUB operand1 |
result := operand1 := operand1 – |
|
operand2 |
operand2 |
|
MUL operand1 |
result := operand1 := operand1 * |
|
operand2 |
operand2 |
Арифметические операторы не допускают |
использования модификаторов |
|
|
DIV operand1 operand2 |
result := operand1 := operand1 : |
|
|
operand2 |
|
VAR VAR_000 |
: REAL := 20; END_VAR |
||
|
VAR VAR_001 |
: LREAL := 30; END_VAR |
||
|
ADD VAR_000 10 |
//result := |
||
Пример |
VAR_000 |
:= 30 |
|
|
MUL VAR_001 9 |
//result := |
|||
програм |
VAR_001 |
:= 270 |
|
|
SUB VAR_001 VAR_000 //result := |
||||
мы |
VAR_001 |
:= 240 |
|
|
|
DIV VAR_001 VAR_000 //result := |
|||
|
VAR_001 |
:= 8 |
|
|
Операторы сравнения
|
|
|
|
|
Синтаксис |
Действие |
|
|
GT operand1 |
result := TRUE, если operand1 > |
|
|
operand2 |
operand2 |
|
|
GE operand1 |
result := TRUE, если operand1 >= |
|
|
operand2 |
operand2 |
|
|
EQ operand1 |
result := TRUE, если operand1 == |
|
|
operand2 |
operand2 |
|
|
NE operand1 |
result := TRUE, если operand1 <> |
|
|
operand2 |
operand2 |
|
|
LE operand1 |
result := TRUE, если operand1 <= |
|
|
operand2 |
operand2 |
|
|
LT operand1 |
result := TRUE, если operand1 < |
|
|
operand2 |
operand2 |
|
Операторы перехода и вызова функции Техно IL
|
|
|
|
|
|
Синтаксис |
Допустим |
Действие |
|
|
|
ый |
|
|
|
|
модифика |
|
|
|
|
тор |
|
|
|
JMP имя_метки |
C, X |
переход к строке с |
|
|
|
|
указанной меткой |
|
|
CAL |
C, X |
вызов функции или |
|
|
имя_функции(val1, ... |
|
функции-блока |
|
|
valN) |
|
|
|
|
RET |
C, X |
выход из программы, |
|
|
|
|
функции или функции- |
|
|
|
|
блока |
|
Операторы перехода и вызова функции Техно IL
Определены следующие модификации данных операторов:
•JMP, CAL, RET – соответственно оператор безусловного перехода, безусловного вызова и безусловного выхода.
•JMPX, CALX, RETX – соответственно оператор условного перехода, условного вызова и условного выхода. Инструкция, содержащая любой их этих операторов, выполняется только тогда, когда result=TRUE, в противном случае игнорируется.
•JMPC, CALC, RETC – соответственно оператор условного перехода, условного вызова и условного выхода. Эти операторы следуют непосредственно за оператором сравнения. Инструкция, содержащая любой из этих операторов, выполняется только тогда, когда результат предыдущей операции сравнения истинен (см. выше Операторы сравнения Техно IL), в противном случае игнорируется.
|
VAR VAR_000 : INT := 20; END_VAR |
|||
|
VAR VAR_001 : INT := 30; END_VAR |
|||
VAR_000 > VAR_001 |
VAR VAR_002 : BOOL; END_VAR |
|||
LD 1 |
//result := TRUE |
|||
|
||||
|
GT VAR_000 VAR_001 //результат сравнения |
|||
Загрузили в аккумулятор |
ложен, |
|
|
|
значение переменной |
//т.к. (20<30), |
Так как результат |
||
VAR_002, так как она не |
//значение |
|
||
|
ложен |
|||
инициализирована, то по |
|
|||
RETC |
|
|
||
умолчанию ее значение false |
|
|
||
мы |
LD VAR_002 |
//result := FALSE |
||
LT VAR_000 VAR_001 //результат сравнения |
||||
VAR_000 < VAR_001 |
истинен |
|
|
|
//result := TRUE |
|
|||
|
|
|||
|
CALC fff(VAR_000) |
//вызов функции |
||
|
произойдет |
|
|
|
Техно ST
Язык программирования ST (Structured text) является высокоуровневым текстовым языком.
Он используется как для написания самостоятельных программ, так и для программирования FBD-блоков
Выражения в ST выглядят точно также, как и в языке Pascal:
[variable] := [value];
Инициализа
ция
•По умолчанию, все переменные инициализируются нулем. Иное значение переменной можно указать явно при ее объявлении.
•Например:
•str1: STRING := ‘Hello world’;
