Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3023

.pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
2.9 Mб
Скачать

Присвоение, установка, сброс Присвоение. Операция “=” (присвоение) передает ре-

зультат логической операции (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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]