Присвоение, установка, сброс Присвоение. Операция “=” (присвоение) передает ре-
зультат логической операции (RLO) по указанному в операнде адресу (Q, M, D). Если RLO изменяется, то изменяется и состояние сигнала по этому адресу (рис. 6.3).
Рис. 6.3. Присвоение, установка, сброс
Установка (Set). Если RLO=1, операнд с указанным адресом устанавливается в "1" и сохраняет свое значение до тех пор, пока не будет сброшен другой командой.
Сброс (Reset). Если RLO=1, операнд с указанным адресом устанавливается в "0" и сохраняет свое значение до тех пор, пока не будет установлен в "1" другой командой.
Другими словами, Set и Reset воздействуют на операнд, только если RLO=1, а оператор присвоения действует всегда.
Установка / Сброс триггера
Комбинации операторов Set и Reset в программах LAD и FBD могут быть представлены в виде единого блока – RS или SR-триггера (рис. 6.4).
70
Триггер имеет вход S (установка) и вход R (сброс). Бит памяти устанавливается или сбрасывается в зависимости от того, на каком входе RLO = 1.
Рис. 6.4. Установка / Сброс триггера
Если RLO = 1 одновременно на обоих входах, то имеет значение приоритет (порядок расположения) входов. В LAD и FBD имеются различные элементы для функций триггера с приоритетом установки и приоритетом сброса. В STL имеет приоритет та команда, которая была запрограммирована последней.
Если выход (Q) устанавливается командой Set, то он сбрасывается при полном рестарте CPU. Если M 0.0 в примере, указанном выше, является сохраняемым (указывается при конфигурировании CPU), он останется установленным после полного сброса CPU, а сброшенный выход Q 9.3 будет установлен снова.
Коннектор (Connector) – промежуточное присвоение, элемент, который сохраняет текущий RLO по указанному адресу (рис. 6.5).
Установленный командой Connector операнд, вставляется в цепь также как контакт и соединяет несколько сегментов.
71
Рис. 6.5. Коннектор
В данном примере, в последующих цепях программы нет необходимости повторно опрашивать входы I0.0 и I1.1, достаточно опросить флаг M0.0
Вы можете инвертировать RLO после коннектора с помощью элемента "NOT” при его опросе.
Команды, связанные с RLO
Любой из микропроцессоров имеет регистр специального назначения, называемый слово состояния процессора, биты (флаги) которого устанавливаются /сбрасываются в результате выполнения арифметических, логических и др. команд. Иначе были бы невозможны команды условного ветвления и др. В слове состояния CPU SIMATIC S7 (рис. 6.6) среди прочих флагов присутствуют биты BR и RLO. Флаг RLO задействован во всех рассмотренных нами двоичных операциях. Кроме того, есть ряд других команд:
NOT Команда NOT инвертирует RLO.
CLR Команда CLEAR устанавливает RLO в 0 (имеется только в STL).
72
Рис. 6.6. Команды, связанные с RLO
SET Команда SET устанавливает RLO в 1 (имеется только в STL).
SAVE Команда SAVE сохраняет RLO в признаке "BR" (в слове состояния).
“A BR” Команда “A BR” используется для проверки сохраненного в бите BR RLO.
Команды обнаружения фронта RLO
"Фронт RLO" - событие, когда изменяется результат ло-
гической операции (рис. 6.7). |
|
||
|
Положительный фронт - когда RLO изменяется от “0” к |
||
“1”, |
инструкция |
контроля "FP" переводит сигнал в состояние |
|
"1" (например, |
M 8.0) для одного цикла. Чтобы обнаружить |
||
фронт сигнала, RLO должен быть сохранен в бите памяти (FP - |
|||
бит) |
или бите данных (например, M 1.0). |
|
|
|
Отрицательный фронт- когда RLO изменяется от “1” к |
||
“0”, |
инструкция |
контроля "FN" переводит сигнал в состояние |
|
"1" (например, M 8.1) для одного цикла. Чтобы |
обнаружить |
||
|
|
73 |
|
фронт сигнала, RLO должен быть сохранен в бите памяти (FN -бит) или бите данных (например, M 1.1).
Рис. 6.7. Обнаружение фронта RLO
Команды обнаружения фронта сигнала
"Фронт сигнала" - событие, когда сигнал изменяет свое состояние (рис. 6.8). Пример: Вход I 1.0 действует как статический сигнал. Вход I 1.1 действует как динамический сигнал и каждое изменение сигнала должно быть обнаружено.
Рис. 6.8. Обнаружение фронта сигнала
Положительный фронт - когда состояние сигнала I 1.1 изменяется от “0” к “1”, операция контроля "POS" дает результат "1" на выходе Q в течение одного цикла, причем дополнительный вход I 1.0 также должен иметь состояние "1" (как в примере выше). Чтобы можно было обнаружить изменение
74