Учебное пособие 800454
.pdfПрисвоение, установка, сброс Присвоение. Операция “=” (присвоение) передает ре-
зультат логической операции (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
фронта сигнала, статус сигнала I 1.1 должен быть сохранен в M_BIT (бит памяти или бит блока данных) (например, M1.0).
Отрицательный фронт - когда состояние сигнала I 1.1 изменяется от “1” к “0”, операция контроля " NEG " дает результат "1" на выходе Q в течение одного цикла, причем д о- полнительный вход I 1.0 также должен иметь состояние "1" (как в примере выше). Чтобы можно было обнаружить изменение фронта сигнала, статус сигнала I 1.1 должен быть сохранен в M_BIT (бит памяти или бит блока данных) (например,
M1.1).
Инструкция перехода Jump
В языке LAD/FBD метка (label) вводится как идентификатор выше элемента катушки или элемента назначения. В STL она вводится после инструкции перехода Jump (рис. 6.9).
Для метки Вы можете использовать до 4-х символов, причем первый символ должен быть буквой или символом “_”. Метка отмечает точку, с которой выполнение программы должно быть продолжено. Любые инструкции или сегменты между инструкцией jump и меткой не выполняются.
Переходы могут быть выполнены как вперед, так и назад. Инструкция jump и адрес перехода (метка) должны быть в том же блоке. Адрес перехода должен быть представлен в блоке только один раз. Инструкции Jump могут быть использованы в
FB, FC и OB.
Инструкция безусловного перехода JU вызывает вы-
полнение программы с нового адреса независимо от RLO. Условный переход JC выполняется только тогда, когда
RLO равен “1”. Если RLO равен “0”, переход не выполняется, RLO устанавливается в “1” и выполнение программы продолжается со следующей инструкции (рис. 6.10).
Условный переход JCN выполняется только тогда, когда RLO равен "0". Если RLO равен "1", переход не выполняется, а выполнение программы продолжается со следующей инструкции.
75
Рис. 6.9. Безусловный переход (Независящий от RLO)
Рис. 6.10. Условный переход (Зависящий от RLO)
76
7. ЧИСЛОВЫЕ ОПЕРАЦИИ
Все данные в программе пользователя должны быть идентифицированы типом данных.
Команды двоичной логики работают с битами. Команды загрузки и передачи (STL) и команды пересылки (LAD и FBD) работают с байтами, словами и двойными словами. Бит – это двоичная цифра "0" или "1". Байт состоит из восьми битов, слово – из 16 битов, а двойное слово – из 32 битов. Математические команды тоже работают с байтами, словами или двойными словами. По адресам этих байтов, слов или двойных слов Вы можете закодировать числа разного формата, такие как целые числа и числа с плавающей точкой.
Числовые функции обрабатывают числовые значения преимущественно типов данных INT (целое), DINT (двойное целое) и REAL (вещественное). На рис. 7.1 представлены форматы 16-разрядных чисел.
Рис. 7.1. Форматы 16-разрядных чисел
77
INT - тип данных INT является стандартным для языков программирования типом integer (16 бит) и служит для хранения целых чисел со знаком. Число типа integer занимает одно слово памяти, находится в диапазоне -32768 и +32767.
В двоичном формате отрицательное число представляется дополнительным кодом. Дополнительный код отрицательного числа получается инверсией всех битов и добавлением к результату "1". Знак (бит 15) показывает, является ли число положительным или отрицательным ("0" = положительное, "1" = отрицательное).
BCD код - каждая цифра десятичного числа кодируется четырьмя двоичными разрядами. Четыре бита используются потому что самая большая десятичная цифра - 9 требует в двоичном коде четыре двоичных разряда (1001).
Двоично-десятичные коды (BCD) чисел от 0 до 9 совпадают с обычным двоичным представлением.
Форматы 32-разрядных чисел представлены на рис. 7.2.
Рис. 7.2. Форматы 32-разрядных чисел
78
DINT - 32-битные числа со знаком называются "double integers" (двойное целое) или “long integers” (длинное целое).
Они лежат в диапазоне L# -2147483648 до L#+2147483647.
REAL - число типа real (известное также как число с плавающей запятой) является положительным или отрицательным числом из диапазона от -3,402823x1038 до 3,402823x1038 . Представление чисел с плавающей запятой соответствует меж-
дународному стандарту IEEE |
|
|
|
Примеры: |
+10.339 |
или |
+1.0339E1 |
|
-234567 |
или |
-2.34567E5. |
Число типа REAL занимает в памяти два слова. Самый старший разряд показывает знак. Другие биты представляют мантиссу и показатель степени числа 2. В экспоненциальном представлении число представляет собой произведение нормированного значения числа на степень числа 10.
Загрузка и передача данных осуществляется оператором MOVE (рис. 7.3). В приведенном примере число 5 пересылается в байт MB5.
Рис. 7.3. Загрузка и передача данных
MOVE (LAD/FBD) Если вход EN (разрешение) активен, значение на входе IN копируется по адресу на выходе OUT. Выход ENO (разрешение выхода) имеет такое же состояние, как и вход EN.
79