Язык Instruction List (IL)
Язык Список команд (Instruction List) – это унификация интерфейса языка программирования низкого уровня, неориентированного на какую-либо микропроцессорную архитектуру. Происхождение базовых конструкций языка – STEP 5 (Siemens). У языка IL есть очень важное качество: на его основе можно создавать оптимальные по быстродействию программные единицы.
Программа, написанная на языке IL, состоит из набора инструкций, выполняемых ПЛК последовательно (рис 4.3). Каждая инструкция состоит из кода инструкций и операнда.
Например: LD %I 1.0, где LD – код инструкции, I 1.0 – операнд.
Инструкции активизируют:
- Входы/выходы ПЛК.
- Стандартные системные управляющие функции (таймеры, счетчики).
- Арифметические и логические операции и операции пересылки.
- Внутренние переменные ПЛК.
Существуют два типа инструкций:
- Проверочные инструкции, которые содержат условия, необходимые для того, чтобы выполнилось действие, например, LD, AND, OR.
- Инструкции действия, которые активизируют действие, следующее за проверочной последовательностью, например, ST, STN, R.
Рис. 4.3. Фрагмент программы на языке IL
Список базовых инструкций языка IL приведен в таблице 4.6.
Таблица 4.6. Базовые инструкции языка IL
Наименование | Инструкции | Описание |
Проверочные инструкции | LD, LDN, LDR, LDF | Инструкции загрузки |
AND, ANDN, ANDR, ANDF | Инструкции логического И | |
OR, ORN, ORR, ORF | Инструкции логического ИЛИ | |
AND, OR | (8 уровней вложения) | |
XOR, XORN, XORR, XORF | исключающее ИЛИ | |
MPS MRD МРР | ||
N | отрицание | |
Инструкции действия | ST, STN, S, R | –( )– –( / )– –( S )– –( R )– |
JMP, JMPC, JMPCN | Используется для перехода (безусловного, условного при булевском результате равном 1, или условного при булевском результате равном 0) на помеченную инструкцию, которая может быть расположена в списке инструкций как перед текущей инструкцией, так и после нее. | |
SRn | Используется для перехода к началу подпрограммы. | |
RET, RETC, RETCN | Возврат из подпрограммы (безусловный, условный при булевском результате, равном 1, условный при булевском результате, равном 0). | |
END, ENDC, ENDCN | Конец программы (безусловный, условный при булевском результате, равном 1, условный при булевском результате, равном 0). | |
HALT | Выполнение программы останавливается. | |
Проверочные элементы | Блоки: таймер; счетчик; одновибратор; регистр; контроллер барабана | Существуют инструкции для управления каждым из стандартных функциональных блоков. Для активизации вводов/выводов функциональных блоков используется специальная структурная форма. |
LD[.....] AND[.....] OR[.....] Пример: LD[%MW10<1000] | Используются для сравнения двух операндов. Выход становится равным 1, если при выполнении проверочной операции получаем истинный результат. Результат равен 1, если содержимое ячейки памяти для переменной MW10 меньше 1000. | |
Элементы действия | [.......] | Элементы выполняют логические, арифметические и другие операции. Используется синтаксис языка ST. |
Пример: [%MW10:=%MW0+100] | К содержимому ячейки памяти для переменной MW0 прибавляется 100; полученная сумма размещена в ячейке памяти внутренней переменной MW10. |
Программой является последовательность инструкций. Каждая последовательность должна содержать одну или несколько проверочных инструкций. Результаты проверочных инструкций используются в одной или нескольких инструкциях действия. Каждая инструкция занимает одну строку. Последовательность инструкций начинается с восклицательного знака (он формируется автоматически). Восклицательный знак может включать комментарий и может быть идентифицирован меткой.
Пример:
! | (*Waiting for drying*) |
%L2: | |
LD % I0.1 | |
AND %М10 | |
ST %Q2.5 |
Комментарий может быть расположен в начале последовательности инструкций. Он может занимать до 3-х строк (т.е. 222 алфавитно-цифровых символов) и должен быть обрамлен символами (*и*). На мониторе воспроизводится только первая строка комментария. Если последовательность удаляется, то удаляется также связанный с ней комментарий.
Метка может быть назначена один раз для единственной последовательности инструкций в данном программном объекте. Для обеспечения соответствующих связей при программном переходе последовательность должна быть помечена.
Система сканирует последовательность инструкций в том порядке, как они были введены независимо от значений чисел, используемых при формировании меток.
Круглые скобки могут быть использованы в инструкциях AND и OR. Действие скобок наглядно демонстрируется при сопоставлении с соответствующими Лестничными Диаграммами. Открывающаяся круглая скобка связана с соответствующей инструкцией AND или OR. Закрывающаяся круглая скобка является инструкцией и обязательна для каждой открытой скобки.
Пример: AND(
LD | % I1.0 | |
AND | %I1.1 | |
OR | %I1.2 | |
ST | % Q2.0 | |
LD | %I1.0 | |
AND( | %I1.1 | |
OR | %I1.2 | |
) | ||
ST | %Q2.0 |
Для круглых скобок допускается до восьми уровней вложения. При их применении следует соблюдать следующие правила:
- За каждой открывающей круглой скобкой должна последовать закрывающая скобка.
- Метки не должны располагаться в выражении между круглыми скобками. Это правило справедливо также для инструкций перехода и вызова подпрограмм.
- Инструкции обозначенные – ST, STN, S и R не могут быть запрограммированы между круглыми скобками.
Существуют три типа инструкций, которые используются для обработки содержимого ячеек в особом порядке. Они используют буфер в виде стека, который способен запоминать вплоть до трех битов булевских данных.
- Инструкция MPS (Memory PuSh) запоминает на вершине стека последний результат проверочной инструкции и сдвигает другие данные в направлении дна стека.
- Инструкция MRD (Memory ReaD) считывает содержимое вершины стека.
- Инструкция МРР (Memory PoP) считывает вершину стека и сдвигает другие данные в нем в направлении вершины стека.
Эти инструкции не используются в выражениях между круглыми скобками.
Программы списка команд выполняются последовательно – инструкция за инструкцией.
Первой инструкцией обязательно должна быть либо LD, либо инструкция безусловного перехода (JMP). Все инструкции (за исключением LD и JMP) используют булевский результат предыдущей инструкции.
Пример:
LD | %I1.1 | Булевский результат = состоянию бита %.I1.1. |
AND | %М0 | Булевский результат = AND предыдущего булевского результата и состояния бита %М0. |
OR | %М10 | Булевский результат = OR предыдущего булевского результата и состояния бита %М10. |
ST | %Q2.0 | Бит %Q2.0 принимает состояние предыдущего булевского результата. |
Последовательность инструкций может быть изменена инструкциями JMP и вызова подпрограмм. Пример:
! | LD | %М0 | Если %М0=1, то переход на метку %L10 | |
JMPC | %L10 | |||
! | LD | %I1.1 | ||
AND | %М10 | |||
ST | %Q2.0 | |||
! | %L10: | |||
LD | %I1.3 | |||
AND | %М20 | |||
………………….. |
Дата добавления: 2015-01-15; просмотров: 5899;