
- •Предисловие
- •Введение
- •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
Описание модификаторов
Модификатор |
Возможные типы данных |
Описание |
N |
BOOL, BYTE, WORD, DWORD |
Используется для поразрядного инвертирования операнда |
С |
BOOL |
Используется для выполнения связанной инструкции, когда значение в аккумуляторе = 1 |
CN |
BOOL |
Используется для выполнения связанной инструкции, когда значение в аккумуляторе = 0 |
( |
Все |
Используется для откладывания вычисления операнда до появления закрывающей скобки. |
6.2. Примеры выполнения инструкций
Модификатор N
Используется для побитного инвертирования значение операнда. Может применяться только к операндам типа данных ANY_BIT.
Пример:
LD A (*загрузка в аккумулятор значения А*)
ANDN
B (*в
аккумуляторе
*)
ST C (*сохранение значения аккумулятора в С*)
В примере C =1 (TRUE), если А=1(TRUE) и B=0 (FALSE).
Модификатор C
Используется, чтобы выполнить соответствующую команду, если содержимое аккумулятора «1» (TRUE). Модификатор может применяться только к операндам типа данных BOOL.
Пример:
LD A
AND B
JMPC START
В примере выполняется переход к метке START, только если A =1 (TRUE) и B=1 (TRUE).
Если модификатор C объединен с модификатором N, соответствующая команда выполняется, только если значение аккумулятора булев ”0” (FALSE).
Пример:
LD A
AND B
JMPCN START
В примере прыжок к метке START выполняется, только если A=0 (FALSE) и/или B=0 (FALSE).
Модификатор левая круглая скобка ”(”
Используется, чтобы задержать оценку операнда до появления оператора правая круглая скобка ”)”. Круглые скобки могут быть вложены, при этом количество операций правой круглой скобки должно быть равным количеству модификаторов левой круглой скобки.
Пример:
LD A
AND B
AND( C
OR D
)
ST E
В примере E=1 если: А=1 и В=1 и (C=1 и/или D=1).
Ниже приведен вариант решения предыдущей задачи:
LD A
AND B
AND (
LD C
OR D
)
ST E
Оператор S
Оператор S (Set - установка) используется для установки операнда в «1», если значение аккумулятора равно «1».
Пример:
LD A
S OUT (* OUT=1, если А=1 *)
Обычно этот оператор используется вместе с оператором R для программной организации триггера.
Оператор R
Оператор R (Reset - сброс) используется для установки операнда в «0», если значение аккумулятора равно «1».
Пример:
LD A
R OUT (* OUT=0, если А=1 *)
Обычно оператор S используется вместе с оператором R для программной организации триггера.
Пример:
LD A (* Реализация RS-триггера *)
(* с доминирующим сбросом *)
S OUT (* OUT=1, если А=1 и С=0 *)
LD C
R OUT (*OUT=0, если С=1, а А равно 0 или 1 *)
Пример:
LD A (* Реализация RS-триггера *)
(* с доминирующей установкой *)
R OUT (* OUT=0, если А=1 *)
LD C
S OUT (* OUT=1, если С=1, а А равно 0 или 1 *)
Оператор AND
Оператор AND используется для реализации логической операции «И».
Пример:
LD A (* Реализация логической функции *)
AND
B (*
*)
ANDN C
ST D
Оператор OR
Оператор OR используется для реализации логической операции «ИЛИ».
Пример:
LD A (*Реализация логической функции*)
OR
B (*
*)
ORN C
ST D
Пример:
LD A (*Реализация логической функции*)
ANDN
( (*
*)
LD B
ORN C
)
ST D
Оператор XOR
Оператор XOR используется для реализации логической операции «Исключающее ИЛИ».
Пример:
LD A
XOR B
ST C
Операторы ADD, SUB, MUL и DIV
Операторы ADD, SUB, MUL и DIV используются для выполнения арифметических операций сложения, вычитания, умножения и деления.
Пример:
LD A (* Реализация функции *)
ADD B (* G=A+B×(C-D)/(E+F) *)
MUL (
LD C
SUB D
)
DIV (
LD E
ADD F
)
ST G
Оператор GT
Оператор GT используется для выполнения операции сравнения «больше чем». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А>B *)
GT B
ST C
Оператор LT
Оператор LT используется для выполнения операции сравнения «меньше чем». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А<B *)
LT B
ST C
Оператор EQ
Оператор EQ используется для выполнения операции сравнения «равенство». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А=B *)
EQ B
ST C
Оператор GE
Оператор GE используется для выполнения операции сравнения «больше чем или равно». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А≥B *)
GE B
ST C
Оператор LE
Оператор LE используется для выполнения операции сравнения «меньше чем или равно». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А≤B *)
LE B
ST C
Оператор NE
Оператор NE используется для выполнения операции сравнения «не равно». Результат операции «FALSE» или «TRUE» присваивается переменной типа «BOOL».
Пример:
LD A (* C=1, если А≠B *)
NE B
ST C
Оператор JMP
Оператор JMP служит для выполнения операции безусловного перехода к метке. Метка используется как адрес, к которому осуществляется переход. Метка может содержать до 32 символов и может находиться только вначале инструкции, чтобы не исказить содержимое аккумулятора.
Переходы не могут быть сделаны в другие секции.
Пример:
LD A
ADD B
ST C
LD D
LT E
JMP START
…
…
START: LD F
В примере переход к метке START (к команде LD F) осуществляется независимо от результата предыдущих операций.
Оператор JMP может использоваться для реализации условного перехода с модификатором C (если содержимое аккумулятора равно лог. 1) и CN (если содержимое аккумулятора равно лог. 0). При этом операнд должен иметь тип ANY_BIT.
Пример:
LD A
ADD B
LT C
JMPС START
LD B
…
…
START: LD F
В примере переход к метке START (к команде LD F) осуществляется при условии (А+В) < C. Если это условие не выполняется, то будет выполняться команда, которая следует за JMPС START (команда LD B).
Пример:
LD A
ADD B
LT С
JMPСN START
LD B
…
…
START: LD F
В примере переход к метке START (к команде LD F) осуществляется при условии (А+В) > С. Если это условие не выполняется, то будет выполняться команда, которая следует за JMPС START (команда LD B).