
- •Содержание
- •5. Элементы языка программирования 66
- •6. Библиотека стандартных функциональных блоков 77
- •Введение
- •Общие сведения
- •Программистская модель плк с300
- •Внешний вид контроллера
- •Модули ввода/вывода
- •Распределение памяти контроллера
- •Программистская модель контроллера.
- •Регистры и флаги
- •Области операндов контроллера
- •Отображение входов и выходов
- •Область данных
- •Область меток
- •Область таймеров
- •Область счётчиков
- •Область периферии
- •Область расширенной периферии
- •Структура и обработка технологических программ
- •Система команд лмк
- •Логические команды
- •Команды присвоения битных операндов
- •Команды опроса битных переменных
- •Команды переходов
- •Команды пересылки
- •Арифметические команды
- •Команды сравнения
- •Логические байтовые и словные команды
- •Байтовые и словные команды сдвига
- •Индексная адресация.
- •Счетчики
- •Команды обработки счётчиков
- •Последовательность программирования счётчика
- •Примеры программирования счётчика
- •U е 5.0 ;Если сработал фотоэлемент на входе e5.0
- •Формат слова уставки счётчика
- •Таймеры
- •Команды обработки таймеров
- •Последовательность программирования таймера
- •Примеры программирования таймера
- •Формат слова уставки таймера
- •Организационные команды
- •Команды вызова, активизации и завершения блоков
- •Команды блокировки, деблокировки, задания допустимой длительности скана
- •Команды структурирования текста
- •Команды обработки канала связи
- •Элементы языка программирования
- •Организационные блоки
- •Особенности прерывания циклической обработки блоками ob2...Ob18
- •Программные блоки
- •Функциональные блоки
- •Формат функциональных блоков
- •Особенности использования формальных параметров
- •Блоки данных
- •Формат и использование блока назначений nb0
- •Комментарии к программе
- •Комментарий к строке
- •Комментарий к операнду
- •Комментарий к элементу цепи ркс и к цепи ркс
- •Библиотека стандартных функциональных блоков
- •Блоки организации связи по каналу “эвм”
- •Блоки обработки системы реального времени
- •Арифметические блоки
- •Блоки обработки модулей расширенной периферии
- •Системные блоки
- •Блоки регулирования
Команды опроса битных переменных
Команды опроса осуществляют операцию между LA и битным операндом. Действие команд логического умножения (U, UN) и сложения (O, ON) различается в зависимости от того, где стоит эта команда. Если она стоит в начале логического уравнения, то значение битного операнда загружается в LA; иначе выполняется соответствующая операция (U, UN, O, ON) между LA и битным операндом, и результат помещается в LA.
Командой, стоящей в начале уравнения, считается логическая команда, стоящая первой после команды, приводящей к концу уравнения. Командами, приводящими к концу уравнения, являются все команды, описанные как команды “заканчивающие опрос”.
После команды, открывающей скобку U(, O(, O, начинается новое уравнение, как бы вложенное в текущее, заканчивающееся после закрытия скобки к командам U(, O( или псевдоскобки к команде O. Далее продолжается текущее уравнение. Вложение уравнения не приводит к концу уравнения, и последующие логические команды не будут считаться стоящими в начале уравнения.
Команды анализа бита (P, PN) производят установку логического аккумулятора LA в определенное состояние, поэтому они могут стоять только в начале уравнения. Команды сравнения RW1 и RW2 также производят установку LA и могут стоять в начале уравнения (см. п. 5.3.3).
1) U - логическая операция И с опросом на 1.
Формат команды:
UEx.y - для отображения входов;
U Ax.y - для отображения выходов;
U Mx.y - для области меток;
U Тx - для логических выходов таймеров;
U Zx - для логических выходов счётчиков;
U =fo - логическая операция И с формальным параметром.
где x - номер байта для входов, выходов и меток, для счётчиков и таймеров - номер таймера или счётчика; y - номер бита в байте; fo - формальный параметр (Ex.y, Ax.y, Mx.y, Tx, Zx).
Если команда стоит в начале блока или после команды, “заканчивающей опрос”, логическое значение операнда загружается в LA. В противном случае выполняется логическая операция И между LA и битным операндом, и результат помещается в LA. Операция И между двумя логическими переменными дает в результате 1, если обе этих переменных равны 1. В остальных случаях результат равен 0. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF и PF. Флаги CF и OF устанавливаются в 0.
ПРИМЕР:
U Е 1.1
U М 0.1
= A 2.0
Логическое отображение входа Е 1.1 загружается в LA. Выполняется логическая операция И между LA и состоянием метки М 0.1. Результат заносится в логическое отображение выхода A 2.0. Выход A 2.0 устанавливается в 1, если логическое отображение Е 1.1 равно 1, и состояние метки М 0.1 равно 1.
Формат индексной команды U:
B DWx(MWx) +U Ex.y |
B DWx(MWx) +U Ax.y |
B DWx(MWx) +U Mx.y |
B DWx(MWx) +U Tx |
B DWx(MWx) +U Zx |
где DWx(MWx) - номер слова данных или меток, содержащего индекс; х - номер байта для входов, выходов и меток (E, A, M), а для счётчиков и таймеров (Т, Z) - номер таймера или счётчика; y - номер бита в байте.
Во всех рассмотренных выше случаях применения команда U не является командой, “заканчивающей опрос”.
2)O
- логическая операция ИЛИ с опросом на
1.
Формат команды:
O Ex.y - для отображения входов:
O Ax.y - для отображения выходов;
O Mx.y - для области меток;
O Tх - для логических выходов таймеров;
O Zх - для логических выходов счётчиков;
O =fo - логическая операция ИЛИ с формальным параметром.
где х - номер байта для входов, выходов и меток, для счётчиков и таймеров - номер таймера или счётчика; y - номер бита в байте; fo - формальный параметр (Ex.y, Ax.y, Mx.y, Tx, Zx).
Если команда стоит в начале блока или после команды, “заканчивающей опрос”, логическое значение операнда загружается в LA. В противном случае выполняется логическая операция ИЛИ между LA и битным операндом, и результат помещается в LA. Операция ИЛИ между двумя логическими переменными дает в результате 0, если обе эти переменные равны 0. В остальных случаях результат равен 1. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF и PF. Флаги CF, OF устанавливаются в 0.
ПРИМЕР:
O Е 1.4
O Т 1
= М 2.1
Логическое отображение входа E 1.4 загружается в LA. Выполняется логическая операция ИЛИ между LA и логическим выходом Т1. Результат заносится в метку М2.1. Метка М2.1 устанавливается в 1, если значение хотя бы одного из операндов Е1.4 или Т1 равно 1.
Формат индексной команды O:
B DWx(MWx) +O Ex.у |
B DWx(MWx) +O Ax.у |
B DWx(MWx) +O Мх.у |
B DWx(MWx) +O Tx |
B DWx(MWx) +O Zx |
где DWx(MWx) - номер слова данных или меток, содержащего индекс; х - номер байта для входов, выходов и меток (E, A, М), а для счётчиков и таймеров (Т, Z) - номер таймера или счётчика; y - номер бита в байте.
Во всех рассмотренных выше случаях применения команда O не является командой, заканчивающей опрос.
3) UN - логическая операция И с опросом на 0.
Формат команды:
UN Ех.у - для отображения входов;
UN
Aх.у - для отображения выходов;
UN Mх.у - для области меток;
UN Тх - для логических выходов таймеров;
UN Zх - для логических выходов счётчиков;
UN =fo - логическая операция И с инвертированным формальным параметром.
где х - номер байта для входов, выходов и меток; для счётчиков и таймеров - номер таймера или счётчика; у - номер бита в байте; fo - формальный параметр (Ex.y, Ax.y, Mx.y, Tx, Zx).
Если команда стоит в начале блока или после команды, “заканчивающей опрос”, инвертированное логическое значение операнда загружается в LA. В противном случае выполняется логическая операция И между LA и инвертированным битным операндом, и результат помещается в LA. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF и PF. Флаги CF и OF устанавливаются в 0.
ПРИМЕР:
UN M 2.1
UN A 3.0
= M 3.1
Инвертированное состояние метки M 2.1 загружается в LA. Выполняется логическая операция И между LA и инвертированным отображением выхода A 3.0. Результат заносится в метку М 3.1. Метка М 3.1 устанавливается в 1, если метка М 2.1 и логическое отображение выхода A 3.0 одновременно равны 0.
Формат индексной команды UN:
B DWx(MWx) +UN Ex.у |
B DWx(MWx) +UN Ax.y |
B DWx(MWx) +UN Mх.y |
B DWx(MWx) +UN Тх |
B DWx(MWx) +UN Zx |
где DWx(MWx) - номер слова данных или меток, содержащего индекс; х - номер байта для входов, выходов и меток (Е, A, М), а для счётчиков и таймеров (Т, Z) - номер таймера или счётчика; y - номер бита в байте.
Во всех рассмотренных выше случаях применения команда UN не является командой, “заканчивающей опрос”.
4) ON - логическая операция ИЛИ с опросом на 0.
Формат
команды:
ON Ех.у - для отображения входов;
ON Aх.у - для отображения выходов;
ON Мх.у - для области меток;
ON Тх - для логических выходов таймеров;
ON Zх - для логических выходов счётчиков;
ON =fo - логическая операция ИЛИ с инвертированным формальным параметром.
где х - номер байта для входов, выходов и меток, для счётчиков и таймеров - номер таймера или счётчика; y - номер бита в байте. fo - формальный параметр (Ex.y, Ax.y, Mx.y, Tx, Zx).
Если команда стоит в начале блока или после команды, “заканчивающей опрос”, инвертированное логическое значение операнда загружается в LA. В противном случае выполняется логическая операция ИЛИ между LA и инвертированным битным операндом, и результат помещается в LA. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF, PF. Флаги CF, OF устанавливаются в 0.
ПРИМЕР:
ON Е 10.2
ON Z 3
= A 4.2
Инвертированное логическое отображение входа Е 10.2 загружается в LA. Выполняется логическая операция ИЛИ между LA и инвертированным логическим выходом счётчика Z3. Результат заносится в отображение выхода A 4.2. Выход A 4.2 устанавливается в 1, если значение хотя бы одного из операндов Е 10.2 или Z3 равно 0.
Формат индексной команды ON:
B DWx(MWx) +ON Ex.у |
B DWx(MWx) +ON Aх.у |
B DWx(MWx) +ON Mх.у |
B DWx(MWx) +ON Тх |
B DWx(MWx) +ON Zx, |
где DWx(MWx) - номер слова данных, содержащего индекс; х - номер байта для входов, выходов и меток (Е, A, М), а для счётчиков и таймеров (Т, Z) - номер таймера или счётчика; y - номер бита в байте.
Во всех рассмотренных выше случаях применения команда ON не является командой, “заканчивающей опрос”.
5) P - анализ бита байта, слова данных или расширенной периферии на 1.
Формат команды:
P QBx.y - анализ бита из байта расширенной периферии на 1;
P QWx.y - анализ бита слова расширенной периферии на 1;
P DWx.y - анализ бита слова данных на 1;
P =fo.y - анализ бита формального оператора на 1.
где х - номер слова/байта данных или расширенной периферии; y - номер бита в слове; fo - формальный оператор (QBx, DWx). Если бит с номером y байта расширенной периферии QB (слова расширенной периферии QW, слова данных DW) с номером х равен 1, то LA присваивается 1, иначе LA присваивается 0. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF, PF. Флаги CF, OF устанавливаются в 0.
ПРИМЕР:
P DW 2.3
U Е 4.2
= A 3.5
Если бит с номером 3 слова данных DW 2 равен 1, LA присваивается 1, иначе LA присваивается 0. Выполняется операция И между LA и отображением входа Е 4,2. Результат заносится в логическое отображение выхода A 3.5. Выход A 3.5 устанавливается в 1. если, например, DW 2 содержит число 8 и логическое отображение Е 4.2 равно 1.
Формат индексной команды Р:
B DWx(MWx) +Р QBх.у |
B DWx(MWx) +Р QWх.у |
B DWx(MWx) +Р DWх.у |
где DWx(MWx) - номер байта, слова расширенной периферии или слова данных, содержащего индекс; х - номер слова данных; у - номер бита.
Во всех рассмотренных выше случаях применения команда P не является командой, “заканчивающей опрос”.
6) PN - анализ бита байта, слова данных или расширенной периферии на 0.
Формат команды:
PN QBx.y - анализ бита из байта расширенной периферии на 0;
PN QWx.y - анализ бита слова расширенной периферии на 0;
PN DWx.y - анализ бита слова данных на 0;
PN =fo.y - анализ бита формального оператора на 0.
где х - номер слова/байта данных или расширенной периферии; y - номер бита в слове; fo - формальный оператор (QBx, DWx).
Если бит с номером у байта расширенной периферии QB (слова расширенной периферии QW, слова данных DW) с номером х равен 0, то LA присваивается 1, иначе LA присваивается 0. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF, PF. Флаги CF, OF устанавливаются в 0.
ПРИМЕР:
PN DW 9.1
U Е 4.3
= A 6.2
Если бит с номером 1 слова данных DW 9 равен 0, LA присваивается 1, иначе LA присваивается 0. Выполняется операция И между LA и отображением входа Е 4.3. Результат заносится в логическое отображение выхода A 6.2. Выход A 6.2 устанавливается в 1, если, например, DW 9 содержит число 4 и логическое отображение Е 4.3 равно 1.
Формат индексной команды PN:
B DWx(MWx) +РN QBх.у |
B DWx(MWx) +РN QWх.у |
B DWx(MWx) +РN DWх.у |
где DWx(MWx) - номер байта, слова расширенной периферии или слова данных, содержащего индекс; х - номер слова данных; у - номер бита.
Во всех рассмотренных выше случаях применений команда PN не является командой, “заканчивающей опрос”.
7) U( - логическая операция И с выражением в скобках.
Формат команды: U(.
При выполнении команды U( текущее значение LA запоминается, и со следующей команды начинается новый опрос. При выполнении команды ), соответствующей команде U(, будет выполнена логическая операция И между LA и запомненным LA. Если U( стоит в начале блока или после команды, “заканчивающей опрос”, то при выполнении команды ), соответствующей U(, LA не изменяется. Команда не меняет аккумуляторы и флаги. Команда U( “заканчивает опрос”.
ПРИМЕР:
O Е 1.7
O Е 2.5
U(
O Е 3.6
O Е 7.7
)
= A 6.4
На выходе A 6.4 устанавливается состояние логической 1, если состояние одного из входов E 1.7 и Е 2.5 равно 1, и результатом выражения в скобках является логическая 1.
8) O( - логическая операция ИЛИ с выражением в скобках.
Формат команды: O(.
При выполнении команды O( текущее значение LA запоминается, и со следующей команды начинается новый опрос. При выполнении команды ), соответствующей команде O(, будет выполнена логическая операция ИЛИ между LA и запомненным LA. Если O( стоит в начале блока или после команды, “заканчивающей опрос”, то при выполнении команды ), соответствующей O(, LA не изменяется. Команда не меняет аккумуляторы и флаги. Команда O( “заканчивает опрос”.
ПРИМЕР:
O М 2.5
O(
U E 1.5
U E 2.3
)
= A 2.7
Выходной бит A 2.7 устанавливается в 1, если метка М 2.5 равна 1, или выражение в скобках равно 1.
9) O - логическая операция ИЛИ для функций И: команд U, UN, U(.
Формат команды: O.
Выполняется операция ИЛИ следующих подряд команд U, UN, U( и логического аккумулятора LA. Результат запоминается в LA. Команда O не может начинать опрос. Команда не меняет аккумуляторы и флаги.
Команда O “заканчивает опрос”.
ПРИМЕР:
U Е 10.0 1-я группа
U Е 2.0
O
U E 4.5
U E 10.1 2-я группа
U E 3.4
= A 6.3
На выходе A 6.3 устанавливается состояние логической 1, если результатом выполнения хотя бы одной из двух групп операций И является логическая 1. На выходе A 6.3 устанавливается состояние логического 0, если хотя бы один из входов первой группы операций и один из входов второй группы имеют состояние логический 0.
10) ) - закрывающая скобка.
Формат команды: ).
Закрывает скобку, открытую командой U( или O(. Наличие этой команды обеспечивает выполнение операции, заданной командами U( или O(. При выполнении команды изменяются аккумуляторы LA, RB1 и флаги ZF, SF, PF. Флаги CF, OF устанавливаются в 0.
ПРИМЕР ПРОГРАММИРОВАНИЯ ТРИГГЕРА
U Е 20.6
S A 15.3
U Е 3.7
R A 15.3
Состояние логической 1 на входе Е 20.6 устанавливает выход A 15.3 в состояние логической 1. Если сигнал на входе Е 20.6 изменяется на логический 0, то сохраняется состояние выхода A 15.3, т.е. сигнал запоминается. Состояние логической 1 на входе Е 3.7 устанавливает выход A 15.3 в 0. Если сигнал на входе Е 3.7 изменяется на логический 0, то состояние элемента памяти сохраняется. При одновременном поступлении логической 1 на вход установки (Е 20.6) и на вход сброса (Е 3.7) состояние выхода определяется последней обработанной командой. В случае, когда команда установки S стоит последней, имеет место приоритет установки в 1.