Команды опроса битных переменных

Команды опроса осуществляют операцию между 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.

Формат команды:

U Ex.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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: