Cодержание

Содержание

 Top Next

Неофициальная Версия от 16 апреля 2007

(к некоторым статьям добавлены анимированные рисунки в формате Flash swf и GIF-ani и поэтому полнофункциональная версия Справки конвертирована в CHM формат, так как обычный HLP не поддерживает анимацию)

Для получения справки по конкретному элементу встаньте на этот элемент в коде программы или в панели выбора элемента и просто нажмите кнопку "F1"

Это руководство подходит для программного пакета STEP 7 версий 5.1 - 5.4.

Принципиальных различий в версиях я не заметил.

LAD инструкции Английские обозначения (Международные)

LAD инструкции Немецкие обозначения (SIMATIC)

Инструкции языка LAD

Битовые логические операции

Сравнение

Преобразование

Блоки данных

Управление переходами

Целые числа Integer

Числа с плавающей запятой Real

Перемещение Move

Управления программой

Сдвиг

Циклический сдвиг

Биты состояния

Таймеры

Счётчики

Логические инструкции со словами Word

Примеры программ

Обзор примеров программ

Работа с языком Контактный план LAD/КОР

Типы блоков

Механизм EN/ENO

Перенос параметров

Адресация

Слово состояния

Типы данных

Информация о процессоре контроллера CPU

Адресация: специфичные области контроллеров

Регистры контроллеров

Аккумулятор

Ресурсы контроллеров

Встроенные системные функции (SFB, SFC)

Ошибки программирования

Поиск ошибок

-----------------------------------------------------------------------------------------------------------------------

Для формирования использовалась русская документация с официального сайта http://www.automation-drives.ru/as/support/documentation.

Сам не переводил, поэтому особо и не проверял, НО заметил некоторые расхождения между оригинальным справочным файлом и переведенной документацией, а также ошибки в справочных файлах, кочующие по всем версиям.

Поэтому в спорных случаях требуется обращение к другим источникам или эксперимент.

До некоторых статей руки не дошли...

Кое чего добавил от себя...

Для установки просто скопируйте этот файл в каталог C:\Program Files\Siemens\Step7\S7BIN , предварительно сохранив оригинальный.

Для обработки использую Help & Maual v.4.0.3 build 715 http://www.HelpAndManual.com/

Неофициальный форум http://plc.net.ru


Какой язык выбрать - LAD, STL или FDB?

 Top Previous Next

Выбор контактного плана LAD, списка операторов STL или функционального плана FBD

В STEP 7 программы S7 создаются на стандартных языках программирования: контактный план (LAD), список операторов (STL) или функциональный план (FBD).

На практике Вы должны решить, в каких случаях какой язык использовать. При этом надо учитывать не только удобство написания программы, но и удобство отладки и поиска логических ошибок.

При отладке и мониторинге можно выбирать наиболее удобное отображение информации, меняя язык отображения.

Для примера выбрана одна и таже операция (включение реле при замыкании 2-х контактов), а в правой части рисунков приведены отображения при отладке для всех языков.

Ветви программы написанные на LAD и FBD можно посмотреть на языке STL, выбрав соответсвующий пункт в меню. Обратное не всегда возможно.

Вы можете свободно использовать все три языка выбирая нужный в меню.

Контактный план LAD

Понятен для инженеров-электриков, работавших с релейными схемами.

Контактный план (немецкий KOP, английский LAD) – это графическое представление языка программирования STEP 7.

Его синтаксис для команд похож на релейно-контактные схемы: такая схема дает возможность проследить

поток энергии между шинами при его прохождении через различные контакты, составные элементы и выходные катушки.

Отображение в режиме отладки:

В контактном плане в сегменте 1 отображается последовательная цепь.

Токовая шина отображается сплошной зеленой линией вплоть до Key_2 - это значит, что в цепь уже подано питание и состояние Key_1=1.

Так как состояние Key_2=0, то сигнал дальше не проходит.

Список операторов STL

Понятен для программистов, работавших на языке ассемблера.

Список команд (немецкий AWL, английский STL) – это текстовое представление языка программирования STEP 7, подобное машинному коду.

STL не является ассемблером микроконтроллера - это транслятор в машинные команды микроконтроллера.

В разных CPU используются 16-ти и 32-х разрядные микроконтроллеры с различным набором внутренних регистров, не имеющих прямого соответсвия регистрам языков программирования.

Если программа написана в виде списка команд, то отдельные команды соответствуют шагам, с помощью которых CPU исполняет программу.

Для облегчения программирования список команд расширен путем включения в него некоторых конструкций языков высокого уровня (таких как доступ к структурированным данным и параметры блоков).

Отображение в режиме отладки:

При мониторинге справа от команд отображается состояние битов результата RLO и статуса STA и значение аккумулятора.

В контекстном меню можно выбрать отображение других регистров и формат вывода данных.

Функциональный план FBD

Понятен для инженеров-схемотехников, работавших со схемами на основе дискретной цифровой логики.

Функциональный план (нем. FUP, англ. FBD) – это графическое представление языка программирования STEP 7, использующее для представления логики логические блоки подобно булевой алгебре.

Сложные функции (например, математические функции) могут быть представлены непосредственно в соединении с логическими блоками.

Отображение в режиме отладки:

Функциональный блок &И открывается только при 1 на обоих входах, поэтому сигнал дальше не проходит

Также имеются языки высокого уровня и программное обеспечение, ориентированное на технологии.

Программирование последовательной цепи в контактном плане

Программирование параллельной цепи в контактном плане

Программирование функции памяти в контактном плане

Поиск ошибок


Программирование параллельной цепи в контактном плане

Программирование параллельной цепи в контактном плане

ProgNet2

Выделите Network 1 [Сегмент 1].

Вставьте новый сегмент.

Снова выделите шину.

Вставьте нормально открытый

контакт и катушку.

Выделите вертикальную линию на шине.

Вставьте параллельную ветвь.

Добавьте еще один нормально открытый контакт в параллельной ветви.

Замкните ветвь (если необходимо, выберите нижнюю стрелку).

В параллельной цепи все еще отсутствуют адреса.

Для назначения символических адресов действуйте так же, как и для последовательной цепи.

Напишите

у верхнего нормально открытого контакта "Key_3

[Ключ_3]",

у нижнего контакта "Key_4 [Ключ_4]",

а у катушки "Red_Light [Красный_свет]"

Сохраните блок.

Символы отображаются красным цветом, если, например, они отсутствуют в

таблице символов, или если имеет место синтаксическая ошибка.

Программирование последовательной цепи в контактном плане

Программирование функции памяти в контактном плане

Какой язык выбрать - LAD, STL или FDB?


Программирование последовательной цепи в контактном плане

Программирование последовательной цепи в контактном плане LAD

ProgNet1

Если необходимо, установите LAD

в качестве языка программирования

в меню View [Вид].

Щелкните в области заголовка

(title) OB1 и введите, например,

"Циклически обрабатываемая

главная программа".

Выделите “шину” для ввода своего

первого элемента.

Щелкните на этой кнопке на панели

инструментов и вставьте нормально

открытый контакт --| |--.

Таким же образом вставьте второй

нормально открытый контакт.

Вставьте катушку --( ) на правом конце

шины.

В этой последовательной цепи пока

отсутствуют адреса нормально

открытых контактов и катушки.

Проверьте, активизировано ли

символьное представление

(Symbolic Representation).

Щелкните на знаке ??.? и введите

символьное имя "Key_1" (Ключ_1) в

кавычках.

Подтвердите, нажав Enter.

Введите символическое имя "Key_2" для второго нормально открытого контакта.

Введите имя "Green_Light"

(Зеленый_свет) для катушки.

Теперь вы запрограммировали всю последовательную цепь.

Сохраните блок, если отсутствуют

символы, выделенные красным

цветом.

Символы отображаются красным цветом, если, например, они отсутствуют в

таблице символов, или если имеет место синтаксическая ошибка.

Программирование параллельной цепи в контактном плане

Программирование функции памяти в контактном плане

Какой язык выбрать - LAD, STL или FDB?


Программирование функции памяти в контактном плане

Программирование функции памяти в контактном плане

ProgNet3

Выделите Network 2 [Сегмент 2] и

вставьте еще один сегмент.

Снова выделите шину.

Перемещайтесь в каталоге

элементов программы в разделе

Bit Logic [Двоичная логика],

пока не достигнете элемента триггера SR.

Дважды щелкните, чтобы вставить этот

элемент, или перетащите его на шину.

Вставьте нормально открытый контакт --| |-- перед каждым из входов S и R.

Вход S (Set) служит дя установки триггера в состояние 1.

Вход R (Reset) служит дя сброса триггера в состояние 0.

Введите следующие символические имена перед элементом SR:

Верхний контакт "Automatic_On" [Автоматический режим включен]

Нижний контакт "Manual_On" [Ручной режим включен]. При установке только одного нормально открытого контакта на нижний вход триггера он может быть заменен просто отображением имени тэга на этом входе.

Элемент SR "Automatic_Mode" [Автоматический режим].

Сохраните блок и закройте окно.

Символы отображаются красным цветом, если, например, они отсутствуют в

таблице символов, или если имеет место синтаксическая ошибка.

Программирование последовательной цепи в контактном плане

Программирование параллельной цепи в контактном плане

Какой язык выбрать - LAD, STL или FDB?


Поиск ошибок

Ошибки программирования в LAD

Типичные ошибки невнимательности

Ошибки перекрёстной адресации

Глюки

Точка восстановления

Отладка при отсутствии железа

Отладка при наличии железа


Ошибки программирования в LAD

Ошибки программирования в LAD

Следующие выходные и промежуточные катушки нельзя помещать в пустой сегмент.

Эти элементы должны иметь предшествующее соединение :

• выход ---( ), установка выхода ---(S), сброс выхода ---(R)

• промежуточный выход ---(#)---, положительный фронт ---(P)---, отрицательный фронт ---(N)---

• все счетчики и таймеры

• переход по отрицанию ---(JMPN)

• включение главного управляющего реле ---(MCR<)

• сохранение VKE (RLO) в бите BR ---(SAVE)

• возврат ---(RET)

Выходную катушку можно поместить только на правом конце логической цепи ---( ) .

Возможно использование максимум 16 Выходных катушек в одной ветви.

Элемент Промежуточный выход ---(коннектор)--- никогда не может находиться в конце сегмента или в конце открытой ветви.

Катушки, не допускающие булевой логики, т.е. устанавливаются одни в цепи:

• активизация главного управляющего реле ---(MCRA)

• деактивизация главного управляющего реле ---(MCRD)

• открытие блока данных ---(OPN)

• выключение главного управляющего реле ---(MCR>)

Все остальные катушки могут как иметь булеву логику, так и не иметь ее.

Следующие катушки не должны использоваться как параллельные выходы:

• переход по отрицанию ---(JMPN)

• переход ---(JMP)

• вызов из катушки ---(CALL)

• возврат ---(RET)

Для начальной установки или сброса тэгов можно использовать следующий пример на основе STL

Ограничения таблицы символов

В таблице переменных допускается не более 255 знаков на строку.

Использование возврата каретки для перехода в другую строку не допускается.

Максимальный размер таблицы переменных не более 1024 строк.

Для предотвращения ошибок cчета не используйте один номер счетчика или таймера в нескольких местах программы

Ошибки программирования в LAD

Типичные ошибки невнимательности

Ошибки перекрёстной адресации

Глюки

Точка восстановления


Обзор инструкций контактного плана LAD

Обзор инструкций языка Контактный план LAD/КОР

Что такое LAD (КОР)?

LAD – это сокращение международного (английского) термина Ladder Logic [цепная логическая схема].

КОР – это сокращенное обозначение контактного плана (от немецкого Kontaktplan).

LAD - это графический язык программирования. Синтаксис команд похож на коммутационную схему.

LAD позволяет легко проследить поток сигнала между токовыми шинами через входы, выходы и команды.

В контактном плане в сегменте 1 отображается последовательная цепь.

При мониторинге Токовая шина отображается сплошной зеленой линией вплоть до Key_2 - это значит, что в цепь уже подано питание и состояние Key_1=1.

Так как состояние Key_2=0, то сигнал дальше не проходит.

Язык программирования Контактный план имеет все необходимые элементы для создания полной программы пользователя.

Он содержит полный набор базовых команд, и в вашем распоряжении имеется широкий диапазон адресов.

Функции и функциональные блоки позволяют наглядно структурировать вашу программу на КОР.

LAD инструкции Английские обозначения (Международные)

LAD инструкции Немецкие обозначения (SIMATIC)

Битовые логические операции

Инструкции сравнения

Инструкции преобразования

Инструкции счёта

Инструкции с блоками данных

Инструкции управления переходами

Инструкции с целыми числами Integer

Инструкции для чисел с плавающей запятой Real

Инструкции перемещения Move

Инструкции управления программой

Инструкции сдвига

Инструкции циклического сдвига

Инструкции битов состояния

Инструкции таймеров

Логические инструкции со словами Word

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Инструкции контактного плана LAD

Инструкции контактного плана LAD

В зависимости от выбранного в Симатик Менеджере регионального языка работы мнемоники будут отображаться в соответсвии с Международным или Немецким стандартами.

LAD инструкции Английские обозначения (Международные)

LAD инструкции Немецкие обозначения (SIMATIC)

В данном варианте Справки используется Международный вариант мнемоник

Битовые логические операции

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ

Инструкции сравнения

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R

Инструкции преобразования

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |

Инструкции счётчиков

S_CU | S_CUD | ---(CU)
S_CD | ---(SC) | ---(CD)

Инструкции с блоками данных ---(OPN)

Инструкции с целыми числами Integer

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI |

Инструкции для чисел с плавающей запятой Real

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR

Инструкции перемещения Move

Инструкции управления переходами JMP и Инструкции управления программой

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA)
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD)

Инструкции сдвига и Инструкции циклического сдвига

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW

Инструкции битов состояния

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---

Инструкции таймеров

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF )

Логические инструкции со словами Word

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


LAD инструкции Немецкие обозначения (SIMATIC)

LAD инструкции Немецкие обозначения (SIMATIC)

Немецкое обозначение | Английское обозначение | Раздел | Описание
---| |--- | ---| |--- | Битовые логические операции | Нормально открытый контакт (адрес)
---|/|--- | ---|/|--- | Битовые логические операции | Нормально замкнутый контакт (адрес)
---( ) | ---( ) | Битовые логические операции | Выходная катушка - Выход
---(#)--- | ---(#)--- | Битовые логические операции | Промежуточная катушка - промежуточный результат
==0 ---| |--- | ==0 ---| |--- | Биты состояния | Бит результата Равно 0
>0 ---| |--- | >0 ---| |--- | Биты состояния | Бит результата Больше 0
>=0 ---| |--- | >=0 ---| |--- | Биты состояния | Бит результата Больше или Равно 0
<=0 ---| |--- | <=0 ---| |--- | Биты состояния | Бит результата Меньше или Равно 0
<0 ---| |--- | <0 ---| |--- | Биты состояния | Бит результата Меньше 0
<>0 ---| |--- | <>0 ---| |--- | Биты состояния | Бит результата Не равно 0
ABS | ABS | Инструкции с числами с плавающей запятой | Вычисление модуля числа с плавающей точкой
ACOS | ACOS | Инструкции с числами с плавающей запятой | Вычисление косинуса Cos
ADD_DI | ADD_DI | Инструкции с целыми числами | Сложить двойное целое со знаком Double Integer
ADD_I | ADD_I | Инструкции с целыми числами | Сложить целое со знаком Integer
ADD_R | ADD_R | Инструкции с числами с плавающей запятой | Сложить числа с плавающей запятой Real
ASIN | ASIN | Инструкции с числами с плавающей запятой | Вычисление синуса Sin
ATAN | ATAN | Инструкции с числами с плавающей запятой | Вычисление арктангенса
BCD_DI | BCD_DI | Преобразование | Преобразование числа в формате BCD в двойное целое число
BCD_I | BCD_I | Преобразование | Преобразование числа в формате BCD в целое число
BIE ---| |--- | BR ---| |--- | Биты состояния | Exception Bit Binary Result
----(CALL) | ----(CALL) | Команды управления | Вызов FC/SFC без параметров
CALL_FB | CALL_FB | Команды управления | Вызов FB в графическом виде
CALL_FC | CALL_FC | Команды управления | Вызов FC в графическом виде
CALL_SFB | CALL_SFB | Команды управления | Вызов системного FB в графическом виде
CALL_SFC | CALL_SFC | Команды управления | Вызов системного FC в графическом виде
CEIL | CEIL | Преобразование | Округление до ближайшего большего целого числа
CMP >=D | CMP >=D | Сравнение | Сравнение целых двойных чисел Double Integer (
CMP >=I | CMP >=I | Сравнение | Сравнение целых чисел типа Integer (
CMP >=R | CMP >=R | Сравнение | Сравнение чисел с плавающей запятой Real (
COS | COS | Инструкции с числами с плавающей запятой | Вычисление косинуса
DI_BCD | DI_BCD | Преобразование | Преобразование двойного целого числа в число в формате BCD
DI_R | DI_R | Преобразование | Преобразование двойного целого числа в число с плавающей
DIV_DI | DIV_DI | Инструкции с целыми числами | Деление двойного целого числа
DIV_I | DIV_I | Инструкции с целыми числами | Деление целого числа
DIV_R | DIV_R | Инструкции с числами с плавающей запятой | Деление числа с плавающей запятой
EXP | EXP | Инструкции с числами с плавающей запятой | Вычисление экспоненты числа с плавающей точкой
FLOOR | FLOOR | Преобразование | Floor
I_BCD | I_BCD | Преобразование | Преобразование целого числа в число в формате BCD
I_DI | I_DI | Преобразование | Преобразование целого числа в двойное целое число
INV_I | INV_I | Преобразование | Инверсия целого числа Integer
INV_DI | INV_DI | Преобразование | Инверсия двойного целого числа Double Integer
---(JMP) | ---(JMP) | Программный переход | Условный переход
---(JMP) | ---(JMP) | Программный переход | Безусловный переход
---(JMPN) | ---(JMPN) | Программный переход | Jump-If-Not
LABEL | LABEL | Программный переход | Label
LN | LN | Инструкции с числами с плавающей запятой | Вычисление натурального логарифма
---(MCR>) | ---(MCR>) | Команды управления | Выключение Master Control Relay
---(MCR<) | ---(MCR<) | Команды управления | Включение Master Control Relay
---(MCRA) | ---(MCRA) | Команды управления | Активация Master Control Relay
---(MCRD) | ---(MCRD) | Команды управления | Дективация Master Control Relay
MOD_DI | MOD_DI | Инструкции с целыми числами | Получение остатка от деления двойных целых чисел
MOVE | MOVE | Move | Передача значения
MUL_DI | MUL_DI | Инструкции с целыми числами | Умножение двойных целых чисел
MUL_I | MUL_I | Инструкции с целыми числами | Умножение целых чисел
MUL_R | MUL_R | Инструкции с числами с плавающей запятой | Умножение чисел с плавающей запятой
---( N )--- | ---( N )--- | Битовые логические операции | Выделение отрицательного фронта RLO
NEG | NEG | Битовые логические операции | Выделение отрицательного фронта сигнала
NEG_DI | NEG_DI | Преобразование | Дополнительный двоичный код двойного целого числа
NEG_I | NEG_I | Преобразование | Дополнительный двоичный код целого числа
NEG_R | NEG_R | Преобразование | Дополнительный двоичный код числа с плавающей запятой
---| NOT |--- | ---| NOT |--- | Битовые логические операции | Инверсия результата логической операции
---( OPN ) | ---( OPN ) | DB call | Открыть блок данных DB или DI
OS ---| |--- | OS ---| |--- | Биты состояния | Бит ошибки Переполнение с запоминанием
OV ---| |--- | OV ---| |--- | Биты состояния | Бит ошибки Переполнение
---( P )--- | ---( P )--- | Bit logic instructio | Выделение положительного фронта RLO
POS | POS | Битовые логические операции | Выделение положительного фронта сигнала
---( R ) | ---( R ) | Битовые логические операции | Сброс бита
---(RET) | ---(RET) | Команды управления | Return
ROL_DW | ROL_DW | Shift/Rotate | Циклический сдвиг двойного слова влево
ROR_DW | ROR_DW | Shift/Rotate | Циклический сдвиг двойного слова вправо
ROUND | ROUND | Преобразование | Округление до двойного целого Double Integer
RS | RS | Битовые логические операции | Триггер Сброс-Установка RS
---( S ) | ---( S ) | Битовые логические операции | Установка бита
---( SA ) | ---( SF ) | Таймеры | Запуск таймера Задержка выключения
---( SAVE ) | ---( SAVE ) | Битовые логические операции | Сохранение RLO в бите BR
S_AVERZ | S_OFFDT | Таймеры | Задание параметров и запуск таймера Задержка выключения
---( SE ) | ---( SD ) | Таймеры | Запуск таймера Задержка включения
S_EVERZ | S_ODT | Таймеры | Задание параметров и запуск таймера Задержка включения
SHL_DW | SHL_DW | Shift/Rotate | Сдвиг влево двойного слова Double Word
SHL_W | SHL_W | Shift/Rotate | Сдвиг влево слова Word
SHR_DI | SHR_DI | Shift/Rotate | Сдвиг вправо двойного целого слова Double Integer
SHR_DW | SHR_DW | Shift/Rotate | Сдвиг вправо двойного слова Double Word
SHR_I | SHR_I | Shift/Rotate | Сдвиг вправо целого слова Integer
SHR_W | SHR_W | Shift/Rotate | Сдвиг вправо слова Word
---( SI ) | ---( SP ) | Таймеры | Запуск таймера Импульс
S_IMPULS | S_PULSE | Таймеры | Задание параметров и запуск таймера Импульс
SIN | SIN | Инструкции с числами с плавающей запятой | Вычислить значение синуса
SQR | SQR | Инструкции с числами с плавающей запятой | Вычисление квадратного корня
SQRT | SQRT | Инструкции с числами с плавающей запятой | Вычисление квадратного корня
SR | SR | Битовые логические операции | Триггер Установка-Сброс SR
---( SS ) | ---( SS ) | Таймеры | Запуск таймера Задержка включения с памятью
S_SEVERZ | S_ODTS | Таймеры | Задание параметров и запуск таймера Задержка включения с памятью
SUB_DI | SUB_DI | Инструкции с целыми числами | Вычитание двойных целых Double Integer
SUB_I | SUB_I | Инструкции с целыми числами | Вычитание целых чисел Integer
SUB_R | SUB_R | Инструкции с числами с плавающей запятой | Вычитание чисел с плавающей точкой
---( SV ) | ---( SE ) | Таймеры | Запуск таймера Удлинненный импульс
S_VIMP | S_PEXT | Таймеры | Задание параметров и запуск таймера Удлиненный Импульс
---( SZ ) | ---( SC ) | Счетчики | Установка значения счетчика
TAN | TAN | Инструкции с числами с плавающей запятой | Вычисление тангенса
TRUNC | TRUNC | Преобразование | Выделение целой части Double Integer
UO ---| |--- | UO ---| |--- | Биты состояния | Бит ошибки Неупорядочено
WAND_DW | WAND_DW | Логические инструкции со словами | И с двойным словом Double Word
WAND_W | WAND_W | Логические инструкции со словами | И со словом Word
WOR_DW | WOR_DW | Логические инструкции со словами | ИЛИ с двойным словом Double Word
WOR_W | WOR_W | Логические инструкции со словами | ИЛИ со словом Word
WXOR_DW | WXOR_DW | Логические инструкции со словами | Исключающее ИЛИ с двойным словом Double Word
WXOR_W | WXOR_W | Логические инструкции со словами | Исключающее ИЛИ с словом Word
ZAEHLER | S_CUD | Счетчики | Назначение параметров и прямой или обратный счет
----(ZR) | ----(CD) | Счетчики | Счетчик на уменьшение
Z_RUECK | S_CD | Счетчики | Назначение параметров и обратный счет
---( ZV ) | ----(CU) | Счетчики | Счетчик на увеличение
Z_VORW | S_CU | Счетчики | Назначение параметров и прямой счет


LAD инструкции Английские обозначения (Международные)

LAD инструкции Английские обозначения (Международные)

Английское обозначение | Немецкое обозначение | Раздел | Описание
---| |--- | ---| |--- | Битовые логические операции | Нормально открытый контакт (адрес)
---|/|--- | ---|/|--- | Битовые логические операции | Нормально замкнутый контакт (адрес)
---( ) | ---( ) | Битовые логические операции | Выходная катушка - Выход
---(#)--- | ---(#)--- | Битовые логические операции | Промежуточная катушка - промежуточный результат
---| ==0 |--- | ==0 ---| |--- | Биты состояния | Бит результата Равно 0
---| >0 |--- | >0 ---| |--- | Биты состояния | Бит результата Больше 0
---| >=0 |--- | >=0 ---| |--- | Биты состояния | Бит результата Больше или Равно 0
---| <=0 |--- | <=0 ---| |--- | Биты состояния | Бит результата Меньше или Равно 0
---| <0 |--- | <0 ---| |--- | Биты состояния | Бит результата Меньше 0
---| <>0 |--- | <>0 ---| |--- | Биты состояния | Бит результата Не равно 0
ABS | ABS | Инструкции с числами с плавающей запятой | Вычисление модуля числа с плавающей точкой
ACOS | ACOS | Инструкции с числами с плавающей запятой | Вычисление косинуса Cos
ADD_DI | ADD_DI | Инструкции с целыми числами | Сложить двойное целое со знаком Double Integer
ADD_I | ADD_I | Инструкции с целыми числами | Сложить целое со знаком Integer
ADD_R | ADD_R | Инструкции с числами с плавающей запятой | Сложить числа с плавающей запятой Real
ASIN | ASIN | Инструкции с числами с плавающей запятой | Вычисление синуса Sin
ATAN | ATAN | Инструкции с числами с плавающей запятой | Вычисление арктангенса
BCD_DI | BCD_DI | Преобразование | Преобразование числа в формате BCD в двойное целое число
BCD_I | BCD_I | Преобразование | Преобразование числа в формате BCD в целое число
BR ---| |--- | BIE ---| |--- | Биты состояния | Exception Bit Binary Result
----(CALL) | ----(CALL) | Команды управления | Вызов FC/SFC без параметров
CALL_FB | CALL_FB | Команды управления | Вызов FB в графическом виде
CALL_FC | CALL_FC | Команды управления | Вызов FC в графическом виде
CALL_SFB | CALL_SFB | Команды управления | Вызов системного FB в графическом виде
CALL_SFC | CALL_SFC | Команды управления | Вызов системного FC в графическом виде
----(CD) | ----(ZR) | Счетчики | Счетчик на уменьшение
CEIL | CEIL | Преобразование | Округление до ближайшего большего целого числа
CMP >=D | CMP >=D | Сравнение | Сравнение целых двойных чисел Double Integer (
CMP >=I | CMP >=I | Сравнение | Сравнение целых чисел типа Integer (
CMP >=R | CMP >=R | Сравнение | Сравнение чисел с плавающей запятой Real (
COS | COS | Инструкции с числами с плавающей запятой | Вычисление косинуса
----(CU) | ---( ZV ) | Счетчики | Счетчик на увеличение
DI_BCD | DI_BCD | Преобразование | Преобразование двойного целого числа в число в формате BCD
DI_R | DI_R | Преобразование | Преобразование двойного целого числа в число с плавающей
DIV_DI | DIV_DI | Инструкции с целыми числами | Деление двойного целого числа
DIV_I | DIV_I | Инструкции с целыми числами | Деление целого числа
DIV_R | DIV_R | Инструкции с числами с плавающей запятой | Деление числа с плавающей запятой
EXP | EXP | Инструкции с числами с плавающей запятой | Вычисление экспоненты числа с плавающей точкой
FLOOR | FLOOR | Преобразование | Округление до ближайшего меньшего целого
I_BCD | I_BCD | Преобразование | Преобразование целого числа в число в формате BCD
I_DI | I_DI | Преобразование | Преобразование целого числа в двойное целое число
INV_I | INV_I | Преобразование | Инверсия целого числа Integer
INV_DI | INV_DI | Преобразование | Инверсия двойного целого числа Double Integer
---(JMP) | ---(JMP) | Программный переход | Безусловный переход
---(JMP) | ---(JMP) | Программный переход | Условный переход
---(JMPN) | ---(JMPN) | Программный переход | Jump-If-Not
LABEL | LABEL | Программный переход | Метка для перехода
LN | LN | Инструкции с числами с плавающей запятой | Вычисление натурального логарифма
---(MCR>) | ---(MCR>) | Команды управления | Выключение Master Control Relay
---(MCR<) | ---(MCR<) | Команды управления | Включение Master Control Relay
---(MCRA) | ---(MCRA) | Команды управления | Активация Master Control Relay
---(MCRD) | ---(MCRD) | Команды управления | Дективация Master Control Relay
MOD_DI | MOD_DI | Integer Math Instruction | Получение остатка от деления двойных целых чисел
MOVE | MOVE | Move | Передача значения
MUL_DI | MUL_DI | Инструкции с целыми числами | Умножение двойных целых чисел
MUL_I | MUL_I | Инструкции с целыми числами | Умножение целых чисел
MUL_R | MUL_R | Инструкции с числами с плавающей запятой | Умножение чисел с плавающей запятой
---( N )--- | ---( N )--- | Битовые логические операции | Выделение отрицательного фронта RLO
NEG | NEG | Битовые логические операции | Выделение отрицательного фронта сигнала
NEG_DI | NEG_DI | Преобразование | Дополнительный двоичный код двойного целого числа
NEG_I | NEG_I | Преобразование | Дополнительный двоичный код целого числа
NEG_R | NEG_R | Преобразование | Дополнительный двоичный код числа с плавающей запятой
---| NOT |--- | ---| NOT |--- | Битовые логические операции | Инверсия результата логической операции
---( OPN ) | ---( OPN ) | DB call | Открыть блок данных DB или DI
---| OS |--- | OS ---| |--- | Биты состояния | Бит ошибки Переполнение с запоминанием
---| OV |--- | OV ---| |--- | Биты состояния | Бит ошибки Переполнение
---( P )--- | ---( P )--- | Битовые логические операции | Выделение положительного фронта RLO
POS | POS | Битовые логические операции | Выделение положительного фронта сигнала
---( R ) | ---( R ) | Битовые логические операции | Сброс бита
---(RET) | ---(RET) | Команды управления | Return
ROL_DW | ROL_DW | Shift/Rotate | Циклический сдвиг двойного слова влево
ROR_DW | ROR_DW | Shift/Rotate | Циклический сдвиг двойного слова вправо
ROUND | ROUND | Преобразование | Округление до двойного целого Double Integer
RS | RS | Битовые логические операции | Триггер Сброс-Установка RS
---( S ) | ---( S ) | Битовые логические операции | Установка бита
---( SAVE ) | ---( SAVE ) | Битовые логические операции | Сохранение RLO в бите BR
---( SC ) | ---( SZ ) | Счетчики | Установка значения счетчика
S_CD | Z_RUECK | Счетчики | Назначение параметров и обратный счет
S_CU | Z_VORW | Счетчики | Назначение параметров и прямой счет
S_CUD | ZAEHLER | Счетчики | Назначение параметров и прямой или обратный счет
---( SD ) | ---( SE ) | Таймеры | Запуск таймера Задержка включения
---( SE ) | ---( SV ) | Таймеры | Запуск таймера Удлинненный импульс
---( SF ) | ---( SA ) | Таймеры | Запуск таймера Задержка выключения
SHL_DW | SHL_DW | Shift/Rotate | Сдвиг влево двойного слова Double Word
SHL_W | SHL_W | Shift/Rotate | Сдвиг влево слова Word
SHR_DI | SHR_DI | Shift/Rotate | Сдвиг вправо двойного целого слова Double Integer
SHR_DW | SHR_DW | Shift/Rotate | Сдвиг вправо двойного слова Double Word
SHR_I | SHR_I | Shift/Rotate | Сдвиг вправо целого слова Integer
SHR_W | SHR_W | Shift/Rotate | Сдвиг вправо слова Word
SIN | SIN | Инструкции с числами с плавающей запятой | Вычислить значение синуса
S_ODT | S_EVERZ | Таймеры | Задание параметров и запуск таймера Задержка включения
S_ODTS | S_SEVERZ | Таймеры | Задание параметров и запуск таймера Задержка включения с памятью
S_OFFDT | S_AVERZ | Таймеры | Задание параметров и запуск таймера Задержка выключения
---( SP ) | ---( SI ) | Таймеры | Запуск таймера Импульс
S_PEXT | S_VIMP | Таймеры | Задание параметров и запуск таймера Удлиненный Импульс
S_PULSE | S_IMPULS | Таймеры | Задание параметров и запуск таймера Импульс
SQR | SQR | Инструкции с числами с плавающей запятой | Вычисление квадратного корня
SQRT | SQRT | Инструкции с числами с плавающей запятой | Вычисление квадратного корня
SR | SR | Битовые логические операции | Триггер Установка-Сброс SR
---( SS ) | ---( SS ) | Таймеры | Запуск таймера Задержка включения с памятью
SUB_DI | SUB_DI | Инструкции с целыми числами | Вычитание двойных целых Double Integer
SUB_I | SUB_I | Инструкции с целыми числами | Вычитание целых чисел Integer
SUB_R | SUB_R | Инструкции с числами с плавающей запятой | Вычитание чисел с плавающей точкой
TAN | TAN | Инструкции с числами с плавающей запятой | Вычисление тангенса
TRUNC | TRUNC | Преобразование | Выделение целой части Double Integer
---| UO |--- | UO ---| |--- | Биты состояния | Бит ошибки Неупорядочено
WAND_DW | WAND_DW | Логические инструкции со словами | И с двойным словом Double Word
WAND_W | WAND_W | Логические инструкции со словами | И со словом Word
WOR_DW | WOR_DW | Логические инструкции со словами | ИЛИ с двойным словом Double Word
WOR_W | WOR_W | Логические инструкции со словами | ИЛИ со словом Word
WXOR_DW | WXOR_DW | Логические инструкции со словами | Исключающее ИЛИ с двойным словом Double Word
WXOR_W | WXOR_W | Логические инструкции со словами | Исключающее ИЛИ с словом Word


Логические операции над битами

Битовые логические операции

Обзор

Битовые логические операции работают с двумя цифрами: 1 (True - Истина) и 0 (False - Ложь).

Эти две цифры образуют основание системы счисления, называемой двоичной системой.

Две цифры 1 и 0 называются двоичными цифрами или битами.

В мире контактов и катушек 1 означает активное состояние или протекание тока, а 0 – неактивное состояние или отсутствие протекания тока.

Для инверсных (обратных) сигналов наоборот.

Битовые логические операции интерпретируют сигнальные состояния 1 и 0 и сопрягают их в соответствии с правилами булевой логики.

Вход 1 |  | 0 | 1 | 0 | 1
Вход 2 |  | 0 | 0 | 1 | 1
Результат &И | AND | 0 | 0 | 0 | 1
Результат &ИЛИ | OR | 0 | 1 | 1 | 1
Результат &Искл.ИЛИ | XOR | 0 | 1 | 1 | 0

Эти сопряжения дают результат 1 или 0, который называется “результатом логической операции” (RLO).

Функции

Имеются битовые логические команды для выполнения следующих функций:

• Нормально открытый и нормально замкнутый контакт опрашивают состояние сигнала контакта и дают результат, который или копируется в бит результата логической операции (RLO), или логически сопрягаются с RLO.

- если эти контакты соединены последовательно (I0.0 и I0.1 на рисунке), то они сопрягают результат опроса состояния сигнала в соответствии с таблицей истинности для логической функции И;

- если они соединены параллельно (I0.1 и I0.2), то они сопрягают свой результат в соответствии с таблицей истинности для логической функции ИЛИ.

· ---| |--- Нормально открытый контакт (адрес)

· ---| / |--- Нормально замкнутый контакт (адрес)

Следующие Битовые логические операции выполняют функции сопряжения двух контактов:

· XOR Исключающее ИЛИ с битами

• Выходная катушка и промежуточный выход (коннектор) присваивают RLO или временно запоминают его.

· ---( ) Выходная катушка - Выход

· ---( # )--- Промежуточная катушка - промежуточный результат

• Следующие команды реагируют на RLO, равный 1:

- установка выхода и сброс выхода

· ---( S ) Установка бита

· ---( R ) Сброс бита

- триггеры "Установка-сброс" и "Сброс-установка"

· SR Триггер Установка-Сброс SR

· RS Триггер Сброс-Установка RS

• Другие команды реагируют на положительный или отрицательный фронт для выполнения следующих функций:

- увеличение и уменьшение значения счетчика

- запуск таймера

- создание выхода, равного 1

· ---(N)--- Выделение отрицательного фронта RLO

· ---(P)--- Выделение положительного фронта RLO

· NEG Выделение отрицательного фронта сигнала

· POS Выделение положительного фронта сигнала

• Остальные команды воздействуют на RLO непосредственно следующими способами:

- отрицание (инвертирование) RLO

· ---|NOT|--- Инверсия результата логической операции

- сохранение RLO в бите двоичного результата слова состояния

· ---(SAVE) Сохранение RLO в бите BR

Следующие инструкции предназначены для прямой работы с портами ввода/вывода:

· Прямой доступ на чтение

· Прямой доступ на запись

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Список битовых логических операций

Битовые логические операции

 | Обзор битовых логических операций
---| |--- | Нормально открытый контакт (адрес)
---| / |--- | Нормально замкнутый контакт (адрес)
---( ) | Выходная катушка - Выход
---( # )--- | Промежуточная катушка - промежуточный результат
---( S ) | Установка бита
---( R ) | Сброс бита
---|NOT|--- | Инверсия результата логической операции
---(SAVE) | Сохранение RLO в бите BR
XOR | Исключающее ИЛИ с битами
---(P)--- | Выделение положительного фронта RLO
---(N)--- | Выделение отрицательного фронта RLO
POS | Выделение положительного фронта сигнала
NEG | Выделение отрицательного фронта сигнала
SR | Триггер Установка-Сброс SR
RS | Триггер Сброс-Установка RS
IMD_READ | Прямой доступ на чтение
IMD_WRIT | Прямой доступ на запись

Логическое И

Логическое ИЛИ


---| |--- Нормально открытый контакт (адрес)

---| |--- Нормально открытый контакт (адрес) и параметр

---| |--- Нормально открытый контакт (адрес) и параметр

Символ

<адрес>

---| |---

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D, T, C | Адрес опрашиваемого бита

Описание

Вы можете использовать команду Нормально открытый контакт (адрес) для опроса состояния сигнала контакта по указанному адресу.

Если состояние сигнала по указанному адресу равно 1, то контакт замкнут, и команда дает результат, равный 1.

Если состояние сигнала по указанному адресу равно 0, то контакт разомкнут, и команда дает результат, равный 0.

Когда Нормально открытый контакт (адрес) является первой командой в логической цепи, эта команда сохраняет результат опроса сигнала в бите результата логической операции (RLO).

Любая команда Нормально открытый контакт (адрес), не являющаяся первой в логической цепи, сопрягает результат опроса состояния сигнала со значением, хранящимся в бите RLO. Эта команда формирует сопряжение одним из следующих двух способов:

• Если команда используется в последовательном соединении, то она сопрягает результат опроса состояния сигнала в соответствии с таблицей истинности логической функции И.

• Если команда используется в параллельном соединении, то она сопрягает результат опроса состояния сигнала в соответствии с таблицей истинности логической функции ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | X | X | X | 1

Пример

Тоже самое на STL

Network 1

A (I0.0) // Равно 1 состояние сигнала на входе I 0.0

A (I0.1) // И Равно 1 состояние сигнала на входе I 0.1

=Q 0.0

Ток протекает, если выполняется следующих условий:

Равно 1 состояние сигнала на входах I 0.0 И I 0.1

Обратным ему является ---| / |--- Нормально замкнутый контакт (адрес)

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---| / |--- Нормально замкнутый контакт (адрес)

---| / |--- Нормально замкнутый контакт (адрес)

Символ

<адрес>

---| / |---

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D, T, C | Адрес опрашиваемого бита

Описание

Вы можете использовать команду ---| / |--- Нормально замкнутый контакт (адрес) для опроса состояния сигнала контакта по указанному адресу.

Если состояние сигнала по указанному адресу равно 0, то контакт замкнут, и команда дает результат, равный 1.

Если состояние сигнала по указанному адресу равно 1, то контакт разомкнут, и команда дает результат, равный 0.

Когда Нормально замкнутый контакт (адрес) является первой командой в логической цепи, эта команда сохраняет результат опроса сигнала в бите результата логической операции (RLO).

Любая команда Нормально замкнутый контакт (адрес), не являющаяся первой в логической цепи, сопрягает результат опроса состояния сигнала со значением, хранящимся в бите RLO.

Эта команда формирует сопряжение одним из следующих двух способов:

• Если команда используется в последовательном соединении, то она сопрягает результат опроса состояния сигнала в соответствии с таблицей истинности логической функции И.

• Если команда используется в параллельном соединении, то она сопрягает результат опроса состояния сигнала в соответствии с таблицей истинности логической функции ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | X | X | X | 1

Пример

Тоже самое на STL

Network 1

AN (I0.0) // Равно 0 состояние сигнала на входе I 0.0

AN (I0.1) // И Равно 0 состояние сигнала на входе I 0.1

=Q 0.0

Ток протекает, если выполняется следующее условие:

Равно 0 состояние сигнала на входах I 0.0 И I 0.1

Обратным ему является ---| |--- "Нормально открытый контакт (адрес)" и параметр

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( ) Выходная катушка - Выход

---( ) Выходная катушка - Выход

Символ

<адрес>

---( )

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Адрес указывает бит, которому присваивается сигнальное состояние логической цепи.

Описание

Команда Выходная катушка работает подобно катушке в релейно-контактной схеме. Катушка в конце цепи пропускает или не пропускает ток в зависимости от следующих критериев:

• Если ток может протекать через цепь вплоть до катушки (т.е. состояние сигнала цепи равно 1), то катушка пропускает ток.

• Если ток не может протекать по всей цепи вплоть до катушки (т.е. состояние сигнала цепи равно 0), то катушка не пропускает ток.

Цепь логических операций представляет цепь тока. Команда Выходная катушка присваивает состояние сигнала логической цепи КОР катушке, к которой адресуется команда (это то же самое, что и присвоение состояния сигнала бита RLO операнду). Если ток течет через цепь, то состояние сигнала логической цепи равно 1; в противном случае состояние сигнала равно 0.

Команда Выходная катушка испытывает воздействие со стороны Главного управляющего реле (Master Control Relay или сокращенно MCR).

Дополнительную информацию о том, как функционирует MCR, можно получить в разделе.

Выходную катушку можно поместить только на правом конце логической цепи. Возможно использование максимум 16 Выходных катушек.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Вы можете создать инвертированный выход с помощью команды Инвертировать результат логической операции---|NOT|---

Зависимость от главного управляющего реле MCR (Master Control Relay)

Эта зависимость имеет место только при размещении выходной катушки внутри активированной зоны главного управляющего реле.

Внутри зоны действия MCR, если функция MCR активирована и ток протекает на выходную катушку , бит адреса устанавливается на подводимое к нему значение RLO.

Если функция MCR деактивирована, логический "0" записывается в выходной адрес независимо от подводимого к нему RLO.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | X | - | 0

Пример

Состояние сигнала выхода Q 4.0 равно 1, если равно 1 состояние сигнала на входе I 0.0

Состояние сигнала выхода Q 4.1 равно 1, если равно 0 состояние сигнала на входе I 0.0

Состояние сигнала выхода Q 4.1 обратное состоянию выхода Q4.0 за счёт использования оператора ---|NOT|---

При работе внутри активированной зоны MCR:

Если функция MCR включена, выходы Q4.0 и Q4.1 устанавливаются в соответствии с вышеописанными условиями.

При выключенной MCR (=0), выходы Q4.0 и Q4.1 сбрасываются в 0 независимо от протекания тока.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( # )--- Промежуточный выход (коннектор)

---( # )--- Промежуточный выход (коннектор)

Символ

<адрес>

---( # )---

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, *L, D | Адрес указывает бит, которому присваивается RLO

* Для команды Промежуточный выход (коннектор) можно использовать только адрес из области памяти L, если вы описываете его в VAR_TEMP. С этой командой вы не можете использовать область памяти L для абсолютной адресации.

Описание

Команда ---( # )--- Промежуточный выход (коннектор) – это промежуточный присваивающий элемент, сохраняющий RLO. Этот промежуточный присваивающий элемент запоминает битовую логическую комбинацию последней открытой ветви перед этим элементом. При последовательном соединении с другими контактами Промежуточный выход (коннектор) действует как обычный контакт.

Команда Промежуточный выход (коннектор) испытывает воздействие со стороны Главного управляющего реле (Master Control Relay, MCR).

Дополнительную информацию о том, как функционирует MCR, можно получить в разделе 16.5.

На размещение Промежуточного выхода накладываются определенные ограничения. Например, элемент Промежуточный выход (коннектор) никогда не может находиться в конце сегмента или в конце открытой ветви.

Вы можете создать инвертированный выход с помощью команды Инвертировать результат логической операции.

Зависимость от MCR (Master Control Relay)

Функция MCR влияет только при расположении коннектора внутри MCR зоны.

Внутри активированной зоны MCR , при ее включении, адрес принимает значение подводимого RLO.

Внутри деактивированной зоны MCR логический "0" записывается в указанный адрес независимо от подводимого RLO.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | X | - | 1

Пример

M 2.2 сохраняет RLO всей логической цепочки

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( S ) Установка выхода

---( S ) Установка выхода

Символ

<адрес>

---( S )

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Устанавливаемый бит

Описание

Команда Установка выхода выполняется только тогда, когда RLO = 1.

Если RLO = 1, эта команда устанавливает указанный адрес в 1.

Если RLO = 0, команда не оказывает влияния на указанный адрес. Адрес остается неизменным.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Команда Установка выхода испытывает воздействие со стороны Главного управляющего реле (Master Control Relay, MCR). Дополнительную информацию о том, как функционирует MCR, можно получить в разделе 16.5.

Зависимость от главного управляющего реле (Master Control Relay)

Зависимость от главного управляющего реле (MCR )проявляется только при нахождении катушки установки внутри активированной MCR зоны.

При этом, если главное управляющее реле MCR включено и ток протекает через катушку установки, адресуемый бит устанавливается в "1".

Если главное управляющее реле MCR выключено, инструкция не изменяет статуса указанного операнда, независимо от протекания тока через катушку.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | X | - | 0

Пример

Состояние сигнала на выходе Q 4.0 устанавливается в 1, если выполняется одно из следующих условий:

Равно 1 состояние сигнала на входах I 0.0 И I 0.1

ИЛИ равно 0 состояние сигнала на входе I 0.2.

Если RLO ветви равно 0, то состояние сигнала на выходе Q 4.0 не меняется.

При работе внутри активированной зоны MCR:

Если MCR включен, Q4.0 изменяется как описано выше.

Если MCR выключен, Q4.0 не изменяется независимо от состояния RLO.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( R ) Сброс выхода

---( R ) Сброс выхода

Символ

<адрес>

---( R )

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D, T, C | Сброшенный бит

Описание

Команда Сброс выхода выполняется только тогда, когда RLO = 1.

Если RLO = 1, эта команда сбрасывает указанный адрес в 0.

Если RLO = 0, команда не оказывает влияния на указанный адрес. Адрес остается неизменным.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Команда Сброс выхода испытывает воздействие со стороны Главного управляющего реле (Master Control Relay, MCR). Дополнительную информацию о том, как функционирует MCR, можно получить в разделе 16.5.

Зависимость от главного управляющего реле (Master Control Relay)

Зависимость от главного управляющего реле (MCR )проявляется только при нахождении катушки сброса внутри активированной MCR зоны.

При этом если главное управляющее реле MCR включено и ток протекает через катушку сброса, адресуемый бит сбрасывается в "0".

Если главное управляющее реле MCR выключено, инструкция не изменяет статуса указанного операнда, независимо от протекания тока через катушку.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | X | - |

Пример

Состояние сигнала на выходе Q 4.0 сбрасывается в 0, если выполняется одно из следующих

условий:

Равно 1 состояние сигнала на входах I 0.0 И I 0.1

ИЛИ равно 0 состояние сигнала на входе I 0.2

Если RLO ветви равен 0, то состояние сигнала на выходе Q 4.0 не меняется.

При работе внутри активированной зоны MCR:

Если MCR включена, Q4.0, T1, и C1 сбрасываются, как в примерах выше.

Если MCR выключена, Q4.0, T1, и C1 остаются неизменными, независимо от статуса RLO (протекания тока через катушку).

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


--|NOT|-- Инвертирование результата логической операции

---|NOT|--- Инвертирование результата логической операции

---|NOT|--- Инвертирование результата логической операции

Символ

---|NOT|---

Описание

Команда Инвертировать результат логической операции выполняет отрицание RLO – делает обратной результат.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | - | 1 | X | -

Пример

Состояние сигнала выхода Q 4.0 равно 1, если равно 1 состояние сигнала на входе I 0.0

Состояние сигнала выхода Q 4.1 равно 1, если равно 0 состояние сигнала на входе I 0.0

Состояние сигнала выхода Q 4.1 обратное состоянию выхода Q4.0 за счёт использования оператора ---|NOT|---

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---(SAVE) Сохранение RLO в бите BR

---( SAVE ) Сохранение RLO в регистре BR

Символ

---( SAVE )

Описание

Команда Сохранить RLO в регистре BR сохраняет RLO в бите BR слова состояния.

Бит первичного опроса /FC не сбрасывается.

По этой причине состояние бита BR включается в логическую операцию И в следующем сегменте.

Мы не рекомендуем вам использовать SAVE, а затем опрашивать бит BR в том же блоке или в подчиненных блоках, так как бит BR может быть изменен многими командами в промежутке между этими событиями.

Целесообразно использовать команду SAVE перед выходом из блока, так как выход ENO (=бит BR) тогда устанавливается на значение бита RLO, и вы можете после этого контролировать ошибки в блоке.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | X | - | - | - | - | - | - | - | -

Пример

Результат логической операции (RLO) записывается в бит BR

Смотри также:

BR Binary Result Bit (Слово состояния, Bit 8)

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( P )--- Обнаружение положительного фронта RLO

---( P )--- Обнаружение положительного фронта RLO

Символ

<адрес>

---( P )---

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Адрес M_BIT указывает бит памяти фронта, который хранит предыдущее состояние сигнала POS <адрес 1>. Используйте для M_BIT область памяти входов образа процесса (I) только в том случае, если этот адрес уже не занят ни одним из модулей ввода.

Описание

Операция Обнаружение положительного фронта RLO распознает изменение во введенном адресе с 0 на 1 (нарастающий фронт) и отображает это после выполнения операции как RLO = 1.

Текущее состояние сигнала в RLO сравнивается с состоянием сигнала адреса, бита памяти фронта.

Если состояние сигнала адреса равно 0, а RLO перед операцией был равен 1, то RLO после операции будет равен 1 (импульс), и 0 во всех остальных случаях.

Значение RLO перед операцией хранится в адресе.

На размещение элемента Обнаружение положительного фронта RLO накладываются определенные ограничения (см. раздел 2.1).

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | X | X | 1

Пример

Для наглядности используются промежуточные выходы, триггеры и счётчик.

При этом Pos_Front и Neg_Front принимают определённые статичные значения.

На Pos_Pulse и Neg_Pulse проникают только положительные импульсы и только в течении одного цикла после соответствующего фронта - поэтому при отладке визуально вы не успеваете увидеть этот импульс.

На счётчике видно воздействие "невидимых" Pos_Pulse и Neg_Pulse на счётных входах CU (+) и CD (-).

Или тоже самое воздествие можно увидеть на триггере М6.0, который удобно использовать при отладке "фронтовых" битов P и N.

Бит памяти фронта M 0.0 сохраняет старое состояние RLO от всей битовой логической комбинации.

Если имеет место изменение сигнала в RLO с 0 на 1, то программа переходит на метку CAS1.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


---( N )--- Обнаружение отрицательного фронта RLO

---( N )--- Обнаружение отрицательного фронта RLO

Символ

<адрес>

---( N )

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Адрес указывает на бит памяти фронта, который хранит предыдущее значение RLO

Описание

Операция Обнаружение отрицательного фронта RLO распознает изменение во введенном адресе с 1 на 0 (падающий фронт) и отображает это после выполнения операции как RLO = 1.

Текущее состояние сигнала в RLO сравнивается с состоянием сигнала адреса, бита памяти фронта.

Если состояние сигнала адреса равно 1, а RLO перед операцией был равен 0, то RLO после операции будет равен 0 (импульс), и 1 во всех остальных случаях.

Значение RLO перед операцией хранится в адресе.

На размещение элемента Обнаружение отрицательного фронта RLO накладываются определенные ограничения (см. раздел 2.1)

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | x | x | 1

Пример

Для наглядности используются промежуточные выходы, триггеры и счётчик.

При этом Pos_Front и Neg_Front принимают определённые статичные значения.

На Pos_Pulse и Neg_Pulse проникают только положительные импульсы и только в течении одного цикла после соответствующего фронта - поэтому при отладке визуально вы не успеваете увидеть этот импульс.

На счётчике видно воздействие "невидимых" Pos_Pulse и Neg_Pulse на счётных входах CU (+) и CD (-).

Или тоже самое воздествие можно увидеть на триггере М6.0, который удобно использовать при отладке "фронтовых" битов P и N.

Бит памяти фронта M 0.0 сохраняет старое состояние RLO от всей логической комбинации.

Если имеется изменение сигнала на RLO с 1 на 0, то программа переходит на метку CAS1.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


POS Обнаружение положительного фронта сигнала

POS Обнаружение положительного фронта сигнала

Символ

Параметр | Тип данных | В области памяти | Описание
<адрес 1> | BOOL | I, Q, M, L, D | Сигнал, подлежащий контролю на появление положительного фронта
<адрес 2> | BOOL | I, Q, M, L, D | Адрес M_BIT указывает бит памяти фронта, который хранит предыдущее состояние сигнала POS <адрес 1>. Используйте для M_BIT область памяти входов образа процесса (I) только в том случае, если этот адрес уже не занят ни одним из модулей ввода.
Q | BOOL | I, Q, M, L, D | Выход с однократным импульсом в течении одного цикла сканирования.

Описание

Команда Обнаружение положительного фронта сигнала сравнивает состояние сигнала <адрес 1> с результатом опроса состояния сигнала, хранящимся в <адрес 2>. Если имеет место переход с 0 на 1, то выход Q равен 1. В противном случае он равен 0.

На размещение блока Обнаружение положительного фронта сигнала накладываются определенные ограничения (см. раздел 2.1).

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | 0 | x | 1

Пример

Для наглядности используются промежуточные выходы, триггеры и счётчик.

При этом Pos_Front и Neg_Front принимают определённые статичные значения.

На Pos_Pulse и Neg_Pulse проникают только положительные импульсы и только в течении одного цикла после соответствующего фронта - поэтому при отладке визуально вы не успеваете увидеть этот импульс.

На счётчике видно воздействие "невидимых" Pos_Pulse и Neg_Pulse на счётных входах CU (+) и CD (-).

Или тоже самое воздествие можно увидеть на триггере М6.0, который удобно использовать при отладке "фронтовых" битов P и N.

Выход Q 4.0 равен 1 в течении одного цикла сканирования, если выполняются следующие условия:

Равно 1 состояние сигнала на входах I 0.0 И I 0.1 И I 0.2

И имеется положительный фронт на входе I 0.3

И равно 1 состояние сигнала на входе I 0.4

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


NEG Обнаружение отрицательного фронта сигнала

NEG Обнаружение отрицательного фронта сигнала

Символ

Параметр | Тип данных | В области памяти | Описание
<адрес 1> | BOOL | I, Q, M, L, D | Сигнал, подлежащий контролю на появление отрицательного фронта
<адрес 2> | BOOL | I, Q, M, L, D | Адрес M_BIT указывает бит памяти фронта, который хранит предыдущее состояние сигнала NEG<адрес 1>. Используйте для M_BIT область памяти входов образа процесса (I) только в том случае, если этот адрес уже не занят ни одним из модулей ввода.
Q | BOOL | I, Q, M, L, D | Выход с однократным импульсом

Описание

Команда Обнаружение отрицательного фронта сигнала сравнивает состояние сигнала <адрес 1> с результатом опроса состояния сигнала, хранящимся в <адрес 2>.

Если имеет место переход с 1 на 0, то выход Q равен 1. В противном случае он равен 0.

На размещение блока Обнаружение отрицательного фронта сигнала накладываются определенные ограничения (см. раздел 2.1).

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | 0 | x | 1

Пример

Для наглядности используются промежуточные выходы, триггеры и счётчик.

При этом Pos_Front и Neg_Front принимают определённые статичные значения.

На Pos_Pulse и Neg_Pulse проникают только положительные импульсы и только в течении одного цикла после соответствующего фронта - поэтому при отладке визуально вы не успеваете увидеть этот импульс.

На счётчике видно воздействие "невидимых" Pos_Pulse и Neg_Pulse на счётных входах CU (+) и CD (-).

Или тоже самое воздествие можно увидеть на триггере М6.0, который удобно использовать при отладке "фронтовых" битов P и N.

Выход Q 4.0 равен 1 в течении одного цикла сканирования, если выполняются следующие условия:

Равно 1 состояние сигнала на входах I 0.0 И I 0.1 И I 0.2

И имеется отрицательный фронт на входе I 0.3

И равно 1 состояние сигнала на входе I 0.4

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


SR Установка-сброс триггера

SR Установка-сброс триггера

Символ

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Адрес указывает бит, который должен быть установлен или сброшен.
S | BOOL | I, Q, M, L, D | Разрешенная операция установки
R | BOOL | I, Q, M, L, D | Разрешенная операция сброса
Q | BOOL | I, Q, M, L, D | Состояние сигнала <адрес>

Описание

Команда Установить-сбросить триггер (SR-триггер) выполняет операции установки (S) и сброса (R) только тогда, когда RLO равен 1. RLO, равный 0, не оказывает влияния на эти операции; адрес, указанный в операции, остается неизменным.

SR-триггер устанавливается, если состояние сигнала равно 1 на входе S и равно 0 на входе R. В противном случае, если состояние сигнала равно 0 на входе S и 1 на входе R, триггер сбрасывается. Если RLO равен 1 на обоих входах, триггер сбрасывается.

Команда Установить-сбросить триггер испытывает воздействие со стороны Главного управляющего реле (Master Control Relay, MCR).

Дополнительную информацию о том, как функционирует MCR, можно получить в разделе 16.5.

На размещение блока SR-триггер накладываются определенные ограничения (см. раздел 2.1).

Зависимость от главного управляющего реле (Master Control Relay)

Зависимость от главного управляющего реле (MCR )проявляется только при нахождении SR-триггера внутри активированной MCR

зоны.

При этом, если главное управляющее реле MCR включено, то адресуемый бит устанавливается в "1" или сбрасывается в “0” как описано выше.

Если главное управляющее реле MCR выключено, инструкция не изменяет статуса указанного операнда, независимо от состояния входных адресов триггера.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала равно 1 на входе I 0.0 и 0 на входе I 0.1, то бит памяти M 0.0 устанавливается, и выход Q 4.0 равен 1.

Если состояние сигнала равно 0 на входе I 0.0 и 1 на входе I 0.1, то бит памяти M 0.0 сбрасывается и Q 4.0 равен 0.

Если оба состояния сигнала равны 0, то ничего не меняется.

Если оба состояния сигнала равны 1, то операция Сброс имеет преимущество из-за своего расположения, M 0.0 сбрасывается, и Q 4.0 равен 0.

Если работает внутри активированной MCR:

Если MCR включен, Q4.0 изменяется как описано выше..

Если MCR выключен, Q4.0 не изменяется независимо от состояния входов.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


RS Сброс-Установка триггера

Символ

Параметр | Тип данных | В области памяти | Описание
<адрес> | BOOL | I, Q, M, L, D | Адрес указывает бит, который должен быть установлен или сброшен.
S | BOOL | I, Q, M, L, D | Разрешенная операция сброса
R | BOOL | I, Q, M, L, D | Разрешенная операция установки
Q | BOOL | I, Q, M, L, D | Состояние сигнала <адрес>

Описание

Команда Сбросить-установить триггер (RS-триггер) выполняет операции установки (S) и сброса (R) только тогда, когда RLO равен 1. RLO,

равный 0, не оказывает влияния на эти операции; адрес, указанный в операции, остается неизменным.

RS-триггер сбрасывается, если состояние сигнала равно 1 на входе R и равно 0 на входе S. В противном случае, если состояние сигнала равно 0 на входе R и 1 на входе S, триггер устанавливается. set.

Если RLO равен 1 на обоих входах, триггер устанавливается.

Команда Сбросить-установить триггер испытывает воздействие со стороны Главного управляющего реле (Master Control Relay, MCR).

Дополнительную информацию о том, как функционирует MCR, можно получить в разделе 16.5.

На размещение блока RS-триггер накладываются определенные ограничения (см. раздел 2.1).

Зависимость от главного управляющего реле (Master Control Relay)

Зависимость от главного управляющего реле (MCR )проявляется только при нахождении SR-триггера внутри активированной MCR зоны.

При этом, если главное управляющее реле MCR включено, то адресуемый бит устанавливается в "1" или сбрасывается в “0” как описано выше.

Если главное управляющее реле MCR выключено, инструкция не изменяет статуса указанного операнда, независимо от состояния входных адресов триггера.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала равно 1 на входе I 0.0 и ) на входе I 0.1, то бит памяти M 0.0 сбрасывается, и выход Q 4.0 равен 0.

Иначе, если состояние сигнала равно 0 на входе I 0.0 и 1 на входе I 0.1, то бит памяти M 0.0 устанавливается, и Q 4.0 равен 1.

Если оба состояния сигнала равны 0, то ничего не меняется.

Если оба состояния равны 1, то операция Установка имеет преимущество из-за своего расположения, M 0.0 устанавливается, и Q 4.0 равен 1.

Если работает внутри активированной MCR:

Если MCR включен, Q4.0 изменяется как описано выше.

Если MCR выключен, Q4.0 не изменяется независимо от состояния входов.

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


XOR Исключающее ИЛИ

XOR : Логическая инструкция исключающее ИЛИ

Обозначение

Для логической функции “Исключающее ИЛИ” (XOR) должна быть составлена следующая комбинация нормально открытых и нормально закрытых контактов:

Вход 1 |  | 0 | 1 | 0 | 1
Вход 2 |  | 0 | 0 | 1 | 1
Результат &Искл.ИЛИ | XOR | 0 | 1 | 1 | 0

Параметр | Тип данных | Область данных | Описание
<address1> | BOOL | I, Q, M, L, D, T, C | Адрес опрашиваемого бита 1
<address2 | BOOL | I, Q, M, L, D, T, C | Адрес опрашиваемого бита 2

Описание

XOR :(Битовая инструкция “Исключающее ИЛИ”) формирует RLO равным "1" при различном состоянии опрашиваемых сигналов.

Исключающее ИЛИ интерпретируют сигнальные состояния 1 и 0 и сопрягают их в соответствии с правилами булевой логики:

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &Искл.ИЛИ | 0 | 1 | 1 | 0

Пример

Выход Q4.0 равен "1"

если I0.0 = "0" И I0.1 = "1"

ИЛИ I0.0 = "1" И I0.1 = "0".

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


Логическое И

Логическое И

.Соединение двух и более последовательных инструкций представляют собой Логическое И этих элементов.

Логическое И интерпретируют сигнальные состояния 1 и 0 и сопрягают их в соответствии с правилами булевой логики:

Вход 1 |  | 0 | 1 | 0 | 1
Вход 2 |  | 0 | 0 | 1 | 1
Результат &И | AND | 0 | 0 | 0 | 1

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


Логическое ИЛИ

Логическое ИЛИ

.Соединение двух и более параллельных инструкций представляют собой Логическое ИЛИ этих элементов.

Логическое ИЛИ интерпретируют сигнальные состояния 1 и 0 и сопрягают их в соответствии с правилами булевой логики:

Вход 1 |  | 0 | 1 | 0 | 1
Вход 2 |  | 0 | 0 | 1 | 1
Результат &ИЛИ | OR | 0 | 1 | 1 | 1

---| |--- | ---( ) | ---|NOT|--- | ---( S ) | SR | ---(P)--- | POS | IMD_READ | И
---| / |--- | ---( # )--- | XOR | ---( R ) | RS | ---(N)--- | NEG | IMD_WRIT | ИЛИ


Логические операции над словами

Обзор логических инструкций над словами

Обзор логических инструкций над словами

Описание

Поразрядные логические инструкции над словами комбинируют пары слов (16 бит) или двойных слов (32 бита) побитно в соответствии с правилами булевой логики.

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &И | 0 | 0 | 0 | 1
Результат &ИЛИ | 0 | 1 | 1 | 1
Результат &Искл.ИЛИ | 0 | 1 | 1 | 0

Если значение результата на выходе OUT не равно 0, бит CC 1 в слове состояния устанавливается в 1.

Если значение результата на выходе OUT равно 0, бит CC 1 в слове состояния сбрасывается в 0.

Для выполнения логических операций над словами предоставляются следующие инструкции:

WAND_W И со словом Word

WOR_W ИЛИ со словом Word

WXOR_W Исключающее ИЛИ с словом Word

WAND_DW И с двойным словом Double Word

WOR_DW ИЛИ с двойным словом Double Word

WXOR_DW Исключающее ИЛИ с двойным словом Double Word

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Логические операции над словами Word

WAND_W И со словом Word

WOR_W ИЛИ со словом Word

WXOR_W Исключающее ИЛИ с словом Word

WAND_DW И с двойным словом Double Word

WOR_DW ИЛИ с двойным словом Double Word

WXOR_DW Исключающее ИЛИ с двойным словом Double Word

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WAND_W : Поразрядное И над словами

WAND_W : Поразрядное И над словами

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | WORD | I, Q, M, L, D | Первое значение
IN2 | WORD | I, Q, M, L, D | Второе значение
OUT | WORD | I, Q, M, L, D | Результат логической операции

Описание

WAND_W: ( Поразрядное И над словами) активируется при подаче 1 на вход деблокировки (EN) .

Эта команда производит функцию побитового И над двумя словами на входах IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов.

Результат может быть считан на выходе OUT.

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &И | 0 | 0 | 0 | 1

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Пример

Инструкция активируется состоянием сигнала 1 на входе I0.0.

Только биты с 0 по 3 будут сохранены, все остальные биты MW0 обнуляются.

MW0 | 01010101 01010101
IN2 | 00000000 00001111
MW0 AND IN2 = MW2 | 00000000 00000101

Если инструкция выполнена , то выход Q4.0 =1

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WAND_DW : Поразрядное И над двойным словом

WAND_DW : Поразрядное И над двойным словом

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DWORD | I, Q, M, L, D | Первое значение
IN2 | DWORD | I, Q, M, L, D | Второе значение
OUT | DWORD | I, Q, M, L, D | Результат логической операции

Описание

WAND_DW: (Поразрядное И над двойными словами) активируется при подаче 1 на вход деблокировки (EN) .

Эта команда производит функцию побитового И над двумя двойными словами на входах IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов. Результат может быть считан на выходе OUT.

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &И | 0 | 0 | 0 | 1

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Пример

Инструкция выполняется при I0.0 = 1.

Только биты с 0 по 11 сохраняются, все остальные биты MD4 обнуляются.

MD0 | 01010101 01010101 01010101 01010101
IN2 = 00000FFF | 00000000 00000000 00001111 11111111
MD0 AND IN2 = MD4 | 00000000 00000000 00000101 01010101

Если инструкция выполнена , то выход Q4.0 =1

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WOR_W : Поразрядное ИЛИ над словами

WOR_W : Поразрядное ИЛИ над словами

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | WORD | I, Q, M, L, D | Первое значение
IN2 | WORD | I, Q, M, L, D | Второе значение
OUT | WORD | I, Q, M, L, D | Результат логической операции

Описание

WOR_W :( Поразрядное И над словами) активируется при подаче 1 на вход деблокировки (EN).

Эта команда производит функцию побитового ИЛИ над двумя словами на входах IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов. Результат может быть считан на выходе OUT.

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &ИЛИ | 0 | 1 | 1 | 1

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Example

Инструкция активируется состоянием сигнала 1 на входе I0.0.

При этом биты с 0 по 3 будут установлены в 1, все остальные биты MW0 останутся неизменными и будут переданы в MW2.

MW0 | 01010101 01010101
IN2 | 00000000 00001111
MW0 OR IN2=MW2 | 01010101 01011111

Выход Q4.0 =1 если инструкция выполнилась.

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WOR_DW : Поразрядное ИЛИ над двойными словами

WOR_DW : Поразрядное ИЛИ над двойными словами

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DWORD | I, Q, M, L, D | Первое значение
IN2 | DWORD | I, Q, M, L, D | Второе значение
OUT | DWORD | I, Q, M, L, D | Результат логической операции

Описание

WOR_DW: (Поразрядное ИЛИ над двойными словами) активируется при подаче 1 на вход деблокировки (EN) .

Эта команда производит функцию побитового ИЛИ над двумя двойными словами, поданными на входы IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов.

Результат может быть считан на выходе OUT.

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &ИЛИ | 0 | 1 | 1 | 1

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Пример

Инструкция выполняется при I0.0 = 1.

Биты с 0 по 11 устанавливаются в 1, остальные передаются в MD4 без изменений. Выход Q4.0 = 1 при выполнении функции.

MD0 | 01010101 01010101 01010101 01010101
IN2 | 00000000 00000000 00001111 11111111
MD0 OR IN2 = MD4 | 01010101 01010101 01011111 11111111

Выход Q4.0 =1 если инструкция выполнилась.

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WXOR_W : Поразрядное исключающее ИЛИ над словами

WXOR_W : Поразрядное исключающее ИЛИ над словами

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | WORD | I, Q, M, L, D | Первое значение
IN2 | WORD | I, Q, M, L, D | Второе значение
OUT | WORD | I, Q, M, L, D | Результат логической операции

Описание

WXOR_W: ( Поразрядное исключающее ИЛИ над словами ) активируется при подаче 1 на вход деблокировки (EN) .

Эта команда производит функцию побитового исключающего ИЛИ над двумя словами на входах IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов.

Результат может быть считан на выходе OUT.

Бит в результирующем слове OUT будет иметь значение «1», если соответствующий бит только одного из двух комбинируемых значений равен «1».

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &Искл.ИЛИ | 0 | 1 | 1 | 0

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Пример

Инструкция активируется при I0.0 = 1.

MW0 | 01010101 01010101
IN2 | 00000000 00001111
MW0 XOR IN2 = MW2 | 01010101 01011010

Q4.0 =1 если инструкция выполняется.

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


WXOR_DW : Поразрядное Исключающее ИЛИ над двойными словами

WXOR_DW : Поразрядное Исключающее ИЛИ над двойными словами

Обозначение

Параметр | Тип данных | В области памяти | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DWORD | I, Q, M, L, D | Первое значение
IN2 | DWORD | I, Q, M, L, D | Второе значение
OUT | DWORD | I, Q, M, L, D | Результат логической операции

Описание

WXOR_DW: ( Поразрядное исключающее ИЛИ над двойными словами ) активируется при подаче 1 на вход деблокировки (EN) .

Эта команда выполняет функцию побитового исключающего ИЛИ над двумя двойными словами, поданными на входы IN1 и IN2.

Эти значения интерпретируются как простые последовательности битов.

Результат может быть считан на выходе OUT.

Бит в результирующем слове OUT будет иметь значение «1», если соответствующий бит только одного из двух комбинируемых значений равен «1».

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &Искл.ИЛИ | 0 | 1 | 1 | 0

ENO имеет одинаковое состояние сигнала с EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | x | 0 | 0 | - | x | 1 | 1 | 1

Пример

Инструкция выполняется при I0.0 = 1

MD0 | 01010101 01010101 01010101 01010101
IN2 = 00 00 0F FF | 00000000 00000000 00001111 11111111
MW2 = MD0 XOR IN2 | 01010101 01010101 01011010 10101010

Q4.0 =1 если инструкция выполняется.

WAND_W | WOR_W | WXOR_W
WAND_DW | WOR_DW | WXOR_DW


Инструкции преобразования

Обзор инструкций преобразования

Инструкции преобразования форматов данных преобразует входное значение IN в требуемый формат или меняет знак выходного значения OUT.

Группа инструкций для преобразования двоично-десятичного кода:

BCD_I Преобразование числа в формате BCD в целое число

I_BCD Преобразование целого числа в число в формате BCD

BCD_DI Преобразование числа в формате BCD в двойное целое число

DI_BCD Преобразование двойного целого числа в число в формате BCD

I_DINT Преобразование целого числа в двойное целое число

Группа инструкций для инвертирования:

INV_I Инверсия целого числа Integer

INV_DI Инверсия двойного целого числа Double Integer

NEG_I Дополнительный двоичный код целого числа

NEG_DI Дополнительный двоичный код двойного целого числа

Группа инструкций для преобразования чисел с плавающей запятой:

DI_REAL Преобразование двойного целого числа в число с плавающей

NEG_R Дополнительный двоичный код числа с плавающей запятой

ROUND Округление до двойного целого Double Integer

TRUNC Выделение целой части Double Integer

CEIL Округление до ближайшего большего целого числа

FLOOR Округление до ближайшего меньшего целого

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Инструкции преобразования

Инструкции преобразования

Вы можете использовать следующие инструкции для преобразования

двоично-десятичного кода в двоичный код и другие типы данных:

LAD | STL аналог |
BCD_I | BTI | Преобразование числа в формате BCD в целое число
BCD_DI | BTD | Преобразование числа в формате BCD в двойное целое число
DI_BCD | DTB | Преобразование двойного целого числа в число в формате BCD
I_BCD | ITB | Преобразование целого числа в число в формате BCD
I_DINT | ITD | Преобразование целого числа в двойное целое число
DI_REAL | DTR | Преобразование двойного целого числа в число с плавающей точкой
 |  | ОКРУГЛЕНИЕ
ROUND | RND | Округление вещественного числа до двойного целого Double Integer
TRUNC | TRUNC | Выделение вещественного числа целой части Double Integer
CEIL | RND+ | Округление вещественного числа до ближайшего большего целого числа
FLOOR | RND- | Округление вещественного числа до ближайшего меньшего целого числа
INV_I | INVI | Инверсия целого числа Integer
INV_DI | INVD | Инверсия двойного целого числа Double Integer
NEG_I | NEGI | Дополнительный двоичный код целого числа
NEG_DI | NEGD | Дополнительный двоичный код двойного целого числа
NEG_R | NEGR | Дополнительный двоичный код числа с плавающей запятой

Математические инструкции с целыми числами

Математические инструкции над числами с плавающей точкой


Масштабирование аналоговых величин

FC105 SCALE Масштабирование аналогового сигнала в физическую величину

FC106 UNSCALE Масштабирование физической величины в аналоговый сигнал

Диапазоны измерения напряжения и тока

Откуда их взять FC106/FC106 ?


Масштабирование: FC105

Масштабирование: FC105

Функция FC105 SCALE предназначена для масштабирования величин с аналоговых входов (напряжение, ток) в единицы измерения пользователя, например с датчиков измерения уровня или растояния.

Функция FC105 SCALE конвертирует входное целое значение (IN) в выходное число с плавающей точкой в заданных пределах величинами LO_LIM (нижний предел) и HI_LIM (верхний предел) .

Результат в формате числа с плавающей точке выдается на выход OUT.

Масштабирование производится по следующей формуле:

OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM

Константы K1 и K2 в формате числа с плавающей точкой задаются в зависимости от типа входного сигнала двухполярного BIPOLAR или однополярного UNIPOLAR.

· BIPOLAR двухполярный сигнал: Входная величина находится в пределах от –27648 до 27648, поэтому, K1 = –27648.0 и K2 = +27648.0

· UNIPOLAR однополярный сигнал: Входная величина находится в пределах от 0 до 27648, поэтому, K1 = 0.0 и K2 = +27648.0

Если входное значение больше K2 (переполнение аналогового входа >+27648), то на выходе (OUT) будет установлено максимально заданный предел HI_LIM, и выставлен флаг ошибки.

Если входное значение меньше K1 (отрицательное переполнение аналогового входа или выход за нижнюю границу номинального диапазона), то на выходе (OUT) будет установлено минимально заданный предел LO_LIM, и выставлен флаг ошибки.

Обратное масштабирование происходит при задании LO_LIM > HI_LIM, при этом выходное значение уменьшается при увеличении входного.

Параметр | Тип | Тип данных | Область данных | Комментарий
EN | Вход | BOOL | I,Q,M,D,L | Вход разрешения. 1 разрешает функцию
ENO | Выход | BOOL | I,Q,M,D,L | 1 показывает, что не было ошибки
IN | Вход | INT | I,Q,M,D,L,P, Constant | Входное целое число для масштабирования
HI_LIM | Вход | REAL | I,Q,M,D,L,P, Constant | Верхний предел выходного значения
LO_LIM | Вход | REAL | I,Q,M,D,L,P, Constant | Нижний предел выходного значения
BIPOLAR | Вход | BOOL | I,Q,M,D,L | 1 биполярный сигнал. 0 однополярный сигнал.
OUT | Выход | REAL | I,Q,M,D,L,P | Отмасштабированное значение
RET_VAL | Выход | WORD | I,Q,M,D,L,P | Возвращает W#16#0000 есди не было ошибки преобразования. Иначе смотри код ошибки

Код ошибки

Если входное значение больше K2 (переполнение аналогового входа >+27648), то на выходе (OUT) будет установлено максимально заданный предел HI_LIM, и выставлен флаг ошибки.

Если входное значение меньше K1 (отрицательное переполнение аналогового входа или выход за нижнюю границу номинального диапазона), то на выходе (OUT) будет установлено минимально заданный предел LO_LIM, и выставлен флаг ошибки.

Выходной сигнал ENO будет сброшен в 0 а на выходе RET_VAL будет установлено значение W#16#0008.

Пример

Пример использования ультразвукового датчика с аналоговым выходом 0..20 мА.

У некоторых типов датчиков имеется "глухая" нерабочая зона. Так выбранный в примере ультразвуковой датчик имеет глухую зону от 0 до 60 мм, и не измеряет дистанцию свыше 300 мм.

При этом выходной ток датчика будет в пределах 0..20 мА, а входное значение на входе IN FC105 в номинальном диапазоне измерения 60... 300 мм будет в пределах 0...+27648.

Пример использования ультразвукового датчика с аналоговым выходом 4..20 мА.

При этом входное значение на входе IN в номинальном диапазоне измерения 60... 300 мм будет в пределах 0...+27648.

CALL "SCALE"

IN :="Analog_Input"

HI_LIM :=3.000000e+002

LO_LIM :=6.000000e+001

BIPOLAR:=FALSE

RET_VAL:=MW0

OUT :="Distance"

Ан.выход | IN | OUT, Расстояние в мм | RET_VAL |
3,999 мА | -1 | 60.0 | W#16#0008 | Выход за нижнюю границу
4,0 мА | 0 | 60.0 | W#16#0000 |
16 мА | 20736 | 240.0 | W#16#0000 |
20,0 мА | 27648 | 300.0 | W#16#0000 |
22,81 мА | 32511 | 300.0 | W#16#0008 | Выход за верхнюю границу

При входном с игнале I0.0 = 1 (активирован) будет выполняться функция SCALE.

Целое значение MW10 на входе IN масштабируется в пределах измерения MD20=LO_LIM=60.0 и MD30=HI_LIM=300.0 на выход MD40=OUT.

Флаг BIPOLAR должен быть установлен в 0.

Если входное значение не выходит за пределы номинального диапазона измерения, то на выходах ENO и Q0.0 будет 1, а на выходе контроля RET_VAL будет значение MW0=W#16#0000.

Пример масштабирования с использованием инструкций языка STL:

Входное напряжение от 0 до 10 В на аналоговом модуле ввода SM334 по адресу PIW288 считывается как целое значение INT (16 бит) и должно быть преобразовано в значение в диапазоне от LO_LIM=100.0 до HI_LIM=1000.0 REAL и сохранено в формате числа с плавающей точкой в двойном слове MD10.

L PIW 288 // Считываем показания аналоговго входа от 0 до 10 В как целое INT (16 бит) в диапазоне от 0 до 27648

ITD // Преобразуем INT (16 Bit) в DINT (32 Bit)

DTR // Преобразуем DINT (32 Bit) в число с плавающей точкой REAL

L 2.7648e+4 // Максимальное значение = 10 В

/R // Делим на 27648 и получаем процент от максимального значения

L 9.000e+2 // диапазон 900

*R // Умножаем на величину диапазона 900= (1000-100)

L 1.000e+2 // LO_LIM= 100 (Смещение)

+R // Прибавляем LO_LIM= 100 (Смещение)

T MD10 // Отмасштабированное значение в диапазоне от 100.0 до 1000.0 в формате числа с плавающей точкой.

Смотри также:

FC105 SCALE

FC106 UNSCALE

Диапазоны измерения напряжения и тока

Откуда их взять?


Обратное масштабирование: FC106

Обратное масштабирование: FC106

Функция FC106 UNSCALE предназначена для масштабирования единиц измерения пользователя в величины для аналоговых выходов (напряжение, ток), например для управления через аналоговые выходы скоростью или нагревом.

Функция FC106 UNSCALE конвертирует входное число с плавающей точкой (IN) в выходное целое число в заданных пределах величинами LO_LIM (нижний предел) и HI_LIM (верхний предел) .

Результат в формате числа с плавающей точке выдается на выход OUT.

Масштабирование производится по следующей формуле:

OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) * (K2–K1) ] + K1

Константы K1 и K2 в формате числа с плавающей точкой задаются в зависимости от типа входного сигнала двухполярного BIPOLAR или однополярного UNIPOLAR.

· BIPOLAR двухполярный сигнал: Входная величина находится в пределах от –27648 до 27648, поэтому, K1 = –27648.0 и K2 = +27648.0
· UNIPOLAR однополярный сигнал: Входная величина находится в пределах от 0 до 27648, поэтому, K1 = 0.0 и K2 = +27648.0

Если входное значение больше K2 (переполнение аналогового входа >+27648), то на выходе (OUT) будет установлено максимально заданный предел HI_LIM, и выставлен флаг ошибки.

Если входное значение меньше K1 (отрицательное переполнение аналогового входа или выход за нижнюю границу номинального диапазона), то на выходе (OUT) будет установлено минимально заданный предел LO_LIM, и выставлен флаг ошибки.

Обратное масштабирование происходит при задании LO_LIM > HI_LIM, при этом выходное значение уменьшается при увеличении входного.

.

Параметр | Тип | Тип данных | Область данных | Комментарий
EN | Вход | BOOL | I,Q,M,D,L | Вход разрешения. 1 разрешает функцию
ENO | Выход | BOOL | I,Q,M,D,L | 1 показывает, что не было ошибки
IN | Вход | REAL | I,Q,M,D,L,P, Constant | Входное вещественное число для масштабирования
HI_LIM | Вход | REAL | I,Q,M,D,L,P, Constant | Верхний предел выходного значения
LO_LIM | Вход | REAL | I,Q,M,D,L,P, Constant | Нижний предел выходного значения
BIPOLAR | Вход | BOOL | I,Q,M,D,L | 1 биполярный сигнал. 0 однополярный сигнал.
OUT | Выход | INT | I,Q,M,D,L,P | Отмасштабированное целое число
RET_VAL | Выход | WORD | I,Q,M,D,L,P | Возвращает W#16#0000 есди не было ошибки преобразования. Иначе смотри код ошибки

Код ошибки

Если входное значение больше K2 (переполнение аналогового входа >+27648), то на выходе (OUT) будет установлено максимально заданный предел HI_LIM, и выставлен флаг ошибки.

Если входное значение меньше K1 (отрицательное переполнение аналогового входа или выход за нижнюю границу номинального диапазона), то на выходе (OUT) будет установлено минимально заданный предел LO_LIM, и выставлен флаг ошибки.

Выходной сигнал ENO будет сброшен в 0 а на выходе RET_VAL будет установлено значение W#16#0008.

Пример

Пример использования ультразвуковой дубинки с аналоговым входом 0..20 мА.

При этом входное значение на входе IN FC106 в номинальном диапазоне измерения 60... 300 мм будет преобразовано в выходное значение 0...+27648, подаваемое на модуль аналогового вывода 0..20 мА.

Пример использования ультразвуковой дубинки с аналоговым входом 4..20 мА.

При этом входное значение на входе IN FC106 в номинальном диапазоне измерения 60... 300 мм будет преобразовано в выходное значение 0...+27648, подаваемое на модуль аналогового вывода 4..20 мА.

CALL "UNSCALE" //CALL FC106

IN :="Distance" //вещественное число - заданное расстояние УЗ удара в мм

HI_LIM :=3.000000e+002 // верхний предел

LO_LIM :=6.000000e+001 // нижний предел

BIPOLAR:=FALSE

RET_VAL:=MW0 //код ошибки

OUT :="Analog_Output" //целое число в диапазоне 0...+27648 для передачи в аналоговый модуль вывода

IN, в мм Расстояние | Ан.выход | OUT | RET_VAL |
59.0 | 3,999 мА | 0 | W#16#0008 | Выход за нижнюю границу
60.0 | 4,0 мА | 0 | W#16#0000 |
240.0 | 16 мА | 20736 | W#16#0000 |
300.0 | 20,0 мА | 27648 | W#16#0000 |
305.0 | 22,81 мА | 27648 | W#16#0008 | Выход за верхнюю границу

При входном с игнале I0.0 = 1 (активирован) будет выполняться функция SCALE.

Вещественное значение расстояния MD10 на входе IN масштабируется в пределах измерения MD20=LO_LIM=60.0 и MD30=HI_LIM=300.0 на выход MW40=OUT = 0... +27648

Флаг BIPOLAR должен быть установлен в 0.

Если входное значение не выходит за пределы номинального диапазона измерения, то на выходах ENO и Q0.0 будет 1, а на выходе контроля RET_VAL будет значение MW0=W#16#0000.

Пример обратного масштабирования с использованием инструкций языка STL:

Число с плавающей точкой в двойном слове MD10должно быть преобразовано в значение в диапазоне от LO_LIM=100.0 до HI_LIM=1000.0 REAL и передано в формате INT на аналоговsq модулm вывода SM334 по адресу PQW288.

Выходное напряжение от 0 до 10 В задается как целое значение INT (16 бит) в диапазоне 0...+27648.

L MD10 // значение в диапазоне от 100.0 до 1000.0 в формате числа с плавающей точкой

L 1.000e+2 // LO_LIM= 100.0 (Смещение)

-R // Вычитаем LO_LIM= 100.0 (Смещение)

L 9.000e+2 // диапазон 900.0 = (1000.0 -100.0)

/R // Делим на 900.0 и получаем процент от максимального значения

L 2.7648e+4 // 27648.0

*R // Умножаем на величину диапазона 27648.0 целого числа

RND // Округляем число с плавающей точкой REAL DINT (32 Bit) до целого числа INT

T PIW 288 // Посылаем на аналоговый выход целое INT (16 бит) в диапазоне от 0 до 27648 (от 0 до 10 В)

Смотри также:

FC105 SCALE

FC106 UNSCALE

Диапазоны измерения напряжения и тока

Откуда их взять?


Откуда взять FC105 и FC106?

Открываем редактор и находим в дереве слева

Смотри также:

FC105 SCALE

FC106 UNSCALE

Диапазоны измерения напряжения и тока

Откуда их взять?


I_DINT Целое в Двойное целое

I_DINT Преобразование целого числа в двойное целое

I_DINT Преобразование целого числа в двойное целое

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | INT | I, Q, M, L, D | Целое число Integer
OUT | DINT | I, Q, M, L, D | Двойное целое число Double integer

Описание

I_DINT : Инструкция преобразования Целое в Двойное целое считывает содержимое входного параметра IN как целое значение (16-битовое) и преобразует его в двойное целое число (32-битовое) .

Выходной параметр OUT содержит результат. Выход ENO всегда имеет то же значение что и вход EN.

Содержание | ACCU1-H |  |  |  | ACCU1-L
№ бита | 31. . . | . . | . . | . . . 16 | 15 . . . | . . | . . | . . . 0
Перед инструкцией ITD | XXXX | XXXX | XXXX | XXXX | 1111 | 1111 | 1111 | 0101
После инструкции ITD | 1111 | 1111 | 1111 | 1111 | 1111 | 1111 | 1111 | 0101
 | X = 0 или 1, биты не используются в преобразовании

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

 |  | Комментарий
L | MW10 | //Загрузка целого числа в ACCU 1-L
ITD |  | //Преобразование integer (16-бит) в double integer (32-бит); результат - в ACCU 1.
T | MD12 | //Передача результата (double integer) в MD12.

MW10 = "-10" (Integer, 16-бит) -------> MD12="-10" (double Integer, 32-бит)

При I0.0 = "1", содержимое MW10 считывается как целое число и преобразуется в двойное целое число.

Результат передается в MD12.

Выход Q4.0 = "1" если преобразование не было выполнено (ENO = EN = 0).

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


BCD_I Двоично-десятичное в целое

Преобразование числа в формате BCD в целое число

BCD _I : Преобразование числа в формате BCD в целое число

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | WORD | I, Q, M, L, D | Двоично-десятичное число BCD
OUT | INT | I, Q, M, L, D | Integer значение двоично-десятичного числа BCD

Описание

BCD_I : Инструкция преобразования BCD в целое считывает число в двоично-десятичном формате (BCD, -999...+999) и преобразует это число в число с фиксированной точкой. Выходной параметр OUT содержит результат.

Выход ENO при возникновении переполнения сбрасывается в «0».

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MW 10 //Преобразуемая величина BTI //собственно BCD_I T MW 12 //Результат BCD_I AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Содержание меркерного слова MW10 считывается как 3-разрядное число в формате ВCD и преобразуется в целое число.

Результат сохраняется в меркерном слове MW12.

Если преобразование не выполняется, то состояние сигнала выхода Q4.0 равно 1 (ENO = EN=0 ).

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


BCD_DI Двоично-десятичное в двойное целое

BCD _DI : Преобразование числа в формате BCD в двойное целое число

 Top Previous Next

BCD _DI : Преобразование числа в формате BCD в двойное целое число

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DWORD | I, Q, M, L, D | Двоично-десятичное число BCD ± 9 999 999
OUT | DINT | I, Q, M, L, D | Double integer Двойное целое значение двоично-десятичного числа BCD

Описание

BCD_DI: Инструкция преобразования BCD числа в двойное целое считывает содержимое входного параметра IN как семизначное число в двоично-десятичном формате (BCD, ± 9 999 999) и преобразует это число в двойное целое число(32-битовое). Выходной параметр OUT содержит результат.

ENO всегда имеет то же состояние сигнала, что и EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина BTD //собственно BTD T MD 12 //Результат AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется, если состояние сигнала на входе I0.0 равно 1.

Содержимое двойного меркерного слова MD8 считывается как 7-значное число в формате BCD и преобразуется в двойное целое число.

Результат сохраняется в MD12.

Состояние сигнала на выходе Q4.0 равно 1 если преобразование не выполняется(ENO = EN= 0 ).

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


I_BCD Целое в двоично-десятичное

I_BCD : Преобразование целого числа в число в формате BCD

I_BCD : Преобразование целого числа в число в формате BCD

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | INT | I, Q, M, L, D | Целое число Integer
OUT | WORD | I, Q, M, L, D | BCD значение целого числа +/- 999

Описание

I_BCD: Инструкция преобразования Целое в BCD считывает содержимое входного параметра IN как целое значение и преобразует его в трехзначное число в двоично-десятичном формате (BCD, +/- 999).

Выходной параметр OUT содержит результат. В случае переполнения ENO сбрасывается в 0.

Допустимая область значений чисел:

от -999 до +999 .

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | x | x | 0 | x | x | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MW 10 //Преобразуемая величина ITB //собственно ITB T MW 12 //Результат AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Содержимое меркерного слова MW10 считывается как целое число и преобразуется в формат BCD . Результат сохраняется а меркерном слове MW12. состояние сигнала на выходе Q4.0 равно 0.

В случае переполнения или при состоянии сигнала на входе EN = 0 (это значит, что преобразование не выполняется), состояние сигнала на выходе Q4.0 равно 1.

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


DI_BCD Двойное целое в двоично-десятичное

DI_BCD : Преобразование двойного целого числа в число в формате BCD

 Top Previous Next

DI_BCD : Преобразование двойного целого числа в число в формате BCD

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DINT | I, Q, M, L, D | Двойное целое число Double integer
OUT | DWORD | I, Q, M, L, D | BCD значение двойного целого числа double integer +/- 9999999

Описание

DI_BCD: Инструкция преобразования Двойное целое в двоично-десятичное BCD считывает содержимое входного параметра IN как двойное целое значение и преобразует его в семизначное число в формате BCD ( +/-9 999 999).

Выходной параметр OUT содержит результат.

Биты 0...27 содержат число. Биты 28-31 содержат 0000 для положительных чисел, 1111 для отрицательных чисел.

В случае переполнения ENO сбрасывается в 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | x | x | 0 | x | x | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина DTB //собственно DI_BCD T MD 12 //Результат AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется , если состояние сигнала на I0.0 равно 1.

Содержимое двойного меркерного слова MD8 считывается как двойное целое число и преобразуется в 7-значное число в формате BCD.

Результат сохраняется в MD12 .

Состояние сигнала на выходе Q4.0 равно 1 : если преобразование не выполняется(ENO = EN= 0 ) или в случае переполнения .

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -9 999 999 L# -9 999 999... -32 769 L#-32 768 ...L#0 | L#+9 999 999 L#0 ...L#+32 767 +32 768...+9 999 999

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


DI_REAL Двойное целое в число с плавающей точкой Real

DI_REAL : Преобразование двойного целого числа в число с плавающей точкой

 Top Previous Next

DI_REAL : Преобразование двойного целого числа в число с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DINT | I, Q, M, L, D | Преобразуемое двойное целое число +/- 9 999 999
OUT | REAL | I, Q, M, L, D | Результат число с плавающей точкой

Описание

DI_REAL: Инструкция преобразования Двойное целое в число с плавающей точкой считывает содержимое входного параметра IN как двойное целое число (-9 999 999 ... +9 999 999) и преобразует его в число с плавающей точкой.

Выходной параметр OUT содержит результат. ENO всегда имеет такое же состояние сигнала, как и EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина DTR //собственно DI_REAL T MD 12 //Результат AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Содержимое двойного меркерного слова MD8 считывается как двойное целое число и преобразуется в число с плавающей точкой.

Результат сохраняется в двойном меркерном слове MD12.

Если преобразование не выполняется (ENO=EN=0), то состояние сигнала на выходе Q4.0 равно 1.

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


TRUNC : Выделение целой части из числа типа REAL

TRUNC : Выделение целой части из числа типа REAL

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D | Округляемая величина Floating-point
OUT | DINT | I, Q, M, L, D | Целая часть округляемой величины

Описание

TRUNC: Инструкция Выделение целой части из числа типа REAL считывает содержимое входного параметра IN как вещественное число и преобразует это число в двойное целое 32-битовое число.

Результат является целой частью вещественного числа. Он содержится в выходном параметре OUT.

Если происходит переполнение, то ENO сбрасывается в 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | x | x | 0 | x | x | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина Real TRUNC //собственно TRUNC T MD 12 //Результат TRUNC'а AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Содержимое двойного меркерного слова MD8 считывается как вещественное число и целая часть числа преобразованная в двойное целое сохраняется в двойном меркерном слове MD12.

Состояние сигнала на выходе Q4.0 равно 1 если происходит переполнение, или если состояние сигнала на входе I0.0 равно 0 (это значит, что преобразование не выполняется).

MD8 = "100.5" => TRUNC => MD12 = "+100"

MD8 = "-100.5" => TRUNC => MD12 = "-100

 |  | Комментарий | Пример 1 | Пример 2
L | MD10 | // Загрузка числа с плавающей точкой в ACCU 1. | "100.5" | "-100.5"
TRUNC |  | // Преобразование числа с плавающей точкой в двойное целое и округление результата. Результат в ACCU 1. |  |
T | MD20 | // Передача результата в MD20. | "+100" | "-100"

 | Пример входного значения | "-100.5" | "-100.49" | "100.49" | "100.5"
ROUND | Округление до двойного целого | "-100" | "-100" | "+100" | "+100"
CEIL | Округление до ближайшего большего | "-100" | "-100" | "+101" | "+101"
FLOOR | Округление до ближайшего меньшего | "-101" | "-101" | "+100" | "+100"
TRUNC | Выделение целой части | "-100" | "-100" | "+100" | "+100"

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


ROUND Округление до двойного целого Double Integer

ROUND : Округление Real до двойного целого

ROUND : Округление Real до ближайшего двойного целого числа

Обозначение

Параметр | Data Type | Memory Area | Description
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D | Округляемая величина
OUT | DINT | I, Q, M, L, D | округленное до ближайшего двойного целого числа

Описание

ROUND Инструкция Округлить до двойного целого считывает содержимое входного параметра IN как вещественное число и преобразует его в двойное целое 32-битовое число.

Результат является ближайшим целым числом и содержится в выходном параметре OUT.

Если дробная часть равна 0,5, то число округляется до четного числа (например, 2,5 > 2, 1,5 > 2).

Если происходит переполнение, то ENO сбрасывается в 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | x | x | 0 | x | x | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина RND //собственно ROUND T MD 12 //Результат ROUND'а AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется , если I0.0 равно 1.

Содержимое двойного меркерного слова MD8 считывается как вещественного число и преобразуется в двойное целое число.

Результат округления до ближайшего целого сохраняется в двойном меркерном слове MD12.

Состояние сигнала на выходе Q4.0 равно 1,если происходит переполнение, или если состояние сигнала на входе I0.0 равно 0 .

MD8 = "100.5" => RND => MD12 = "+100"

MD8 = "-100.5" => RND => MD12 = "-100"

MD8 = "2.5" => RND => MD12 = "2" //число округляется до ближайшего четного числа

MD8 = "1.5" => RND => MD12 = "2" //число округляется до ближайшего четного числа

 |  | Комментарий
L | MD10 | //Загрузка числа с плавающей точкой в ACCU 1..
RND |  | //Преобразование числа с плавающей точкой в двойное целое и округление результата до ближайшего целого.
T | MD20 | //Передача результата в MD20..

 | Пример входного значения | "-100.5" | "-100.49" | "100.49" | "100.5"
ROUND | Округление до двойного целого | "-100" | "-100" | "+100" | "+100"
CEIL | Округление до ближайшего большего | "-100" | "-100" | "+101" | "+101"
FLOOR | Округление до ближайшего меньшего | "-101" | "-101" | "+100" | "+100"
TRUNC | Выделение целой части | "-100" | "-100" | "+100" | "+100"

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


CEIL Округление до ближайшего большего целого числа

CEIL : Округление Real до ближайшего большего целого числа

CEIL : Округление Real до ближайшего большего целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D | Преобразуемая величина Real
OUT | DINT | I, Q, M, L, D | Ближайшее большее двойное целое double integer

Описание

CEIL : Инструкция Округление до ближайшего большего целого числа считывает содержимое входного параметра IN как вещественное число и преобразует это число в двойное целое 32- битовое число.

Результатом является наименьшее целое число, большее или равное заданному вещественному числу.

Выходной параметр OUT содержит результат.

Если происходит переполнение, то ENO равно 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
writes*:(EN = 1) | X | - | - | X | X | 0 | X | X | 1
writes**:(EN = 0) | 0 | - | - | - | - | 0 | 0 | 0 | 1

* Функция выполняется (EN = 1)
** Функция не выполняется (EN = 0)

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина RND+ //собственно CEIL T MD 12 //Результат CEIL'а AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Если состояние сигнала на входе I0.0 равно 1, содержимое двойного меркерного слова MD8 считывается как вещественное число и целая часть , преобразованная в двойное целое сохраняется в двойном меркерном слове MD12.

Выход Q4.0 равен 1 если происходит переполнение, или если инструкция не выполняется (вход I0.0 равен 0 ).

 |  | Комментарий
L | MD8 | // Загрузка числа с плавающей точкой в ACCU 1.
RND+ |  | // Преобразование числа с плавающей точкой в двойное целое и округление результата. Результат в ACCU 1..
T | MD12 | // Передача результата в MD12

MD8 = "100.5" => RND+ => MD12 = "+101"

MD8 = "-100.5" => RND+ => MD12 = "-100

 | Пример входного значения | "-100.5" | "-100.49" | "100.49" | "100.5"
ROUND | Округление до двойного целого | "-100" | "-100" | "+100" | "+100"
CEIL | Округление до ближайшего большего | "-100" | "-100" | "+101" | "+101"
FLOOR | Округление до ближайшего меньшего | "-101" | "-101" | "+100" | "+100"
TRUNC | Выделение целой части | "-100" | "-100" | "+100" | "+100"
I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


FLOOR : Округление до ближайшего меньшего целого числа

FLOOR : Округление до ближайшего меньшего целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D | Преобразуемая величина Real
OUT | DINT | I, Q, M, L, D | Ближайшее меньшее двойное целое double integer

Описание

FLOOR : Инструкция Округление до ближайшего меньшего целого числа считывает содержимое входного параметра IN как вещественное число и преобразует это число в двойное 32-битное целое число.

Результатом является наибольшее целое число, меньшее или равное заданному вещественному числу.

Выходной параметр OUT содержит результат. Если происходит переполнение, то ENO устанавливается в 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | x | x | 0 | x | x | 1

Пример

LAD | STL
 | A( A I0.0 JNB _001 L MD 8 //Преобразуемая величина RND- //собственно FLOOR T MD 12 //Результат FLOOR'а AN OV //--|NOT|--- SAVE CLR _001: A BR ) NOT = Q 4.0

Преобразование выполняется при состоянии сигнала I0.0 равном 1.

Содержимое двойного меркерного слова MD8 преобразуется из числа с плавающей точкой в меньшее двойное целое число.

Результат сохраняется в меркерном двойном слове MD12. При переполнении или невыполнении инструкции, выход Q4.0 устанавливается в 1.

MD8 = "100.5" => RND- => MD12 = "+100"

MD8 = "-100.5" => RND- => MD12 = "-101

 | Пример входного значения | "-100.5" | "-100.49" | "100.49" | "100.5"
ROUND | Округление до двойного целого | "-100" | "-100" | "+100" | "+100"
CEIL | Округление до ближайшего большего | "-100" | "-100" | "+101" | "+101"
FLOOR | Округление до ближайшего меньшего | "-101" | "-101" | "+100" | "+100"
TRUNC | Выделение целой части | "-100" | "-100" | "+100" | "+100"

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


INV_I Инверсия целого числа Integer

INV_I : Инверсия целого числа

INV_I : Инверсия целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | INT | I, Q, M, L, D | входное целое Integer
OUT | INT | I, Q, M, L, D | Инверсное целое число

Описание

INV_I : Инструкция Инверсия целого числа считывает содержимое входного параметра IN и выполняет поразрядную логическую операцию Исключающее ИЛИ с маской FFFFН, так что значение каждого бита инвертируется.

Выходной параметр OUT содержит результат. ENO всегда имеет то же состояние сигнала, что и EN.

Содержание | ACCU1-L
№ бита | 15 . . . | . . | . . | . . . 0
Перед выполнением INVI | 0110 | 0011 | 1010 | 1110
После выполнения INVI | 1001 | 1100 | 0101 | 0001

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

 |  | Комментарий |
L | IW8 | //Загрузка значения в ACCU 1-L. | 01000001 10000001
INVI |  | //Инверсия каждого из 16-бит аккумулятора |
T | MW10 | //Передача результата в MW10. | 10111110 01111110

Значение каждого бита в MW8 инвертируется, например:

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Значение каждого бита в MW8 инвертируется, например:

MW8 = 01000001 10000001

Результат:MW10 = 10111110 01111110

Выход Q4.0 =1 если преобразование не выполняется при ENO = EN= 0.

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


INV_DI Инверсия двойного целого числа Double Integer

INV_DI : Инверсия двойного целого числа

INV_DI : Инверсия двойного целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DINT | I, Q, M, L, D | входное Двойное целое Double integer
OUT | DINT | I, Q, M, L, D | Инверсия двойного целого числа

Описание

INV_DI : Инструкция Инверсия двойного целого числа считывает содержимое входного параметра IN и выполняет поразрядную логическую операцию Исключающее ИЛИ с маской FFFF FFFFН, так что значение каждого бита инвертируется.

Выходной параметр OUT содержит результат. ENO всегда имеет то же состояние сигнала, что и EN.

Contents | ACCU1-H |  |  |  | ACCU1-L
№ бита | 32. . . | . . | . . | . . . 16 | 15 . . . | . . | . . | . . . 0
Перед выполнением INVD | 0110 | 1111 | 1000 | 1100 | 0110 | 0011 | 1010 | 1110
После выполнения INVD | 1001 | 0000 | 0111 | 0011 | 1001 | 1100 | 0101 | 0001

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

 |  | Комментарий
L | ID8 | //Загрузка значения в ACCU 1..
INVD |  | //Инверсия всех битов аккумулятора (32-бита).
T | MD10 | //Передача результата в MD10.

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Значение каждого бита двойного меркерного слова MD8 инвертируется:

MD8 = F0FF FFF0 результат в: MD12 = 0F00 000F

Выход Q4.0 равен 1 , если преобразование не выполняется (ENO = EN = 0).

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


NEG_I Дополнительный двоичный код целого числа Integer

NEG_I : Дополнительный двоичный код целого числа

NEG_I : Дополнительный двоичный код целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | INT | I, Q, M, L, D | входное целое Integer
OUT | INT | I, Q, M, L, D | Дополнительный код целого числа

Описание

NEG_I : Инструкция Дополнительный двоичный код целого числа считывает содержимое входного параметра IN и изменяет знак (эквивалентно умножению числа на -1).

Выходной параметр OUT содержит результат. ENO всегда имеет то же состояние сигнала, что и EN, за исключением случая, когда EN равно 1 и происходит переполнение.

В этом случае состояние сигнала ENO равно 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

 |  | Комментарий
L | MW8 | //Загрузка значения в ACCU 1-L.
NEGI |  | //Формирование дополнения до двух в 16
T | MW10 | //Передача результата в MW10.

MW8 = 01000001 10000001

Результат:MW10 = 10111110 01111110

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Значение меркерного слова MW8 выводится на OUT в меркерное словоMW10 с противоположным знаком. Пример:

MW8 = +1000 --->NEG_I---> MW10 = -1000

Состояние сигнала на выходе Q4.0 равно 1 если преобразование не выполняется(ENO = EN=0).

Если состояние сигнала на EN равно 1 и происходит переполнение, то ENO равно 0.

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


NEG_DI Дополнительный двоичный код двойного целого числа Double Integer

NEG_DI : Дополнительный двоичный код двойного целого числа

NEG_DI : Дополнительный двоичный код двойного целого числа

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DINT | I, Q, M, L, D | входное Двойное целое Double integer
OUT | DINT | I, Q, M, L, D | Дополнительный код двойного целого числа

Описание

NEG_DI : Инструкция Дополнительный двоичный код двойного целого числа считывает содержимое входного параметра IN и изменяет знак (например, с положительного значения на отрицательное, что равноценно умножению на -1).

Выходной параметр OUT содержит результат.

ENO всегда имеет то же состояние сигнала, что и EN, за исключением случая, когда EN равно 1 и происходит переполнение.

В этом случае состояние сигнала ENO равно 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

 |  | Комментарий
L | MD8 | //Загрузка значения в ACCU 1.
NEGD |  | // Формирование дополнения до двух в 32 битах
T | MD12 | //передача результата в MD10.

MD8 = F0FF FFF0 результат в: MD12 = 0F00 000F

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Значение двойного меркерного слова MD8 выводится на OUT в двойное меркерное слово MD12 с противоположным знаком

MD8 = +1000 ---> Результат: ----> в MD12 = -1000

Состояние сигнала на выходе Q4.0 равно 1 если преобразование не выполняется (ENO = EN=0).

Если состояние сигнала на EN равно 1 и происходит переполнение, то ENO равно 0.

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


NEG_R : Изменение знака числа с плавающей запятой REAL

NEG_R : Изменение знака числа с плавающей запятой REAL

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D | число с плавающей точкой
OUT | REAL | I, Q, M, L, D | число с плавающей точкой

Описание

NEG_R : Инструкция Изменение знака числа типа REAL считывает содержимое входного параметра IN и инвертирует знаковый бит , что равносильно умножению на "–1" , т.е. инструкция меняет знак числа, например, с 0 для плюса на 1 для минуса.

ENO всегда имеет то же состояние сигнала, что и EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | - | - | 0 | x | x | 1

Пример

 |  | Комментарий
L | ID8 | //Загрузка значения в ACCU 1 (Пример: ID 8 = 1.5E+02).
NEGR |  | //Инверсия знака числа с плавающей точкой и сохранение результата в ACCU 1
T | MD10 | //Передача результата в MD10 (Пример: результат = -1.5E+02).

Преобразование выполняется, если состояние сигнала на I0.0 равно 1.

Значение двойного меркерного слова MD8 выводится на OUT в двойное меркерное слово MD12 с противоположным знаком, как показано в примере:

MD8 = + 6.234 Результат: MD12 = - 6.234

Если преобразование не выполняется, то состояние сигнала на выходе Q4.0 равно 1 (ENO = EN =0 ).

I_BCD | BCD_I | DI_BCD | ROUND | CEIL | INV_I | NEG_I | NEG_R
I_DINT | BCD_DI | DI_REAL | TRUNC | FLOOR | INV_DI | NEG_DI |


Инструкции с битами слова состояния

Обзор инструкций с битами слова состояния

Описание

Битовые логические операции с битами регистра слова состояния CPU контроллера.

Каждая из этих инструкций реагирует на одно из следующих условий, отображаемых одним или несколькими битами слова состояния:

· Бит двоичного результата (BR ---I I---) установлен в 1.

· Математическая операция привела к переполнению (OV ---I I---) или переполнению с запоминанинием (OS ---I I---).

· Недопустимый результат арифметической операции (UO ---I I---).

· Результат математической операции находится по отношению к 0 в одном из следующих состояний:: ,

<> 0, > 0, < 0, >= 0, <= 0.

Когда биты состояния оценивают в последовательной логической цепочке, результат их опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

Когда биты состояния оценивают в параллельной логической цепочке, результат их опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Биты слова состояния

Слово состояния представляет собой регистр памяти CPU, к которому можно обращаться по адресу бита и в поразрядных логических операциях над словами.

Структура слова состояния:

Вы можете оценивать биты слова состояния при работе с функциями:

• математических инструкций с целыми числами,

• математических инструкций над числами с плавающей запятой.

Ошибки программирования в LAD

Ошибки перекрёстной адресации


---| >0 |--- Бит результата Больше 0

>0 ---| |--- Бит результата “Больше 0”

Обозначение

Описание

>0 ---| |--- (Бит результата “Больше 0”) или >0 ---| / |--- (Опрос на “0” бита результата “Больше 0”) используются для результата математической операции на больше "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения знака результата.

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И.

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Примеры

При I0.0 = 1, блок SUB_I активируется.

Если значение входного слова IW0 больше значения в IW2, то результат операции IW0 - IW2 больше 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается положительный результат, выход Q 4.0 устанавливается в 1.

Выход Q4.0 устанавливается, если функция выполняется правильно и результат не больше 0.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


---| <0 |--- Бит результата Меньше 0

---| <0 |--- Бит результата “Меньше 0”

---| <0 |--- Бит результата “Меньше 0”

Обозначение

Описание

<0 ---| |--- (Бит результата ”Меньше 0”) или <0 ---| / |--- (Опрос на “0” бита результата ”Меньше 0”) используются для оценки результата математической операции на меньше "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения знака результата .

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

При I0.0 = 1, блок SUB_I активируется. Если значение входного слова IW0 меньше значения в IW2, то результат операции IW0 - IW2 меньше 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается отрицательный результат, выход Q 4.0 устанавливается в 1 .

Выход Q4.0 устанавливается, если функция выполняется правильно и результат не меньше 0.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


---| ==0 |--- Бит результата Равно 0

==0 ---| |--- Бит результата “Pавно 0”

==0 ---| |--- Бит результата “Pавно 0”

Обозначение

Описание

==0 ---| |--- (результат = 0) или==0 ---| / |--- (результат не равен 0) используются для оценки результата математической операции на равенство "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения равенства результата "0".

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом л

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 равно 1, то блок SUB_I активируется.

Если значение входного слова IW0 больше значения входного слова IW2, то результат операции IW0 - IW2 больше 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается нулевой результат, выход Q 4.0 устанавливается в 1.

Выход Q4.0 устанавливается, если функция выполняется правильно и результат не равен 0.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


>=0 ---| |--- Бит результата “Больше или равно 0”

>=0 ---| |--- Бит результата “Больше или равно 0”

Обозначение

Описание

>=0 ---| |--- (Бит результата “Больше или равно 0”) или >=0 ---| / |--- (Опрос на “0” бита результата “Больше или равно 0”) используются для оценки результата математической операции на больше или равно "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения знака результата . При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

При I0.0 = 1, блок SUB_I активируется. Если значение входного слова IW0 больше или равно значению в IW2, то результат операции IW0 - IW2 больше или равен 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается неотрицательный результат, выход Q 4.0 = 1

Выход Q4.0 устанавливается, если функция выполняется правильно и результат меньше 0.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


<>0 ---| |--- Бит результата Не равно 0

<>0 ---| |--- Бит результата “Не равно 0”

<>0 ---| |--- Бит результата “Не равно 0”

Обозначение

Описание

<>0 ---| |--- (Бит результата не равно 0) или <>0 ---| / |--- (опрос на “0” бит а результата не равно 0) используются для оценки результата математической операции на неравенство "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения неравенства результата "0".

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

При I0.0 = 1, блок SUB_I активируется. Если значение входного слова IW0 не равно значению в IW2, то результат операции IW0 - IW2 не равен 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается ненулевой результат, выход Q 4.0 устанавливается в 1.

Выход Q4.0 устанавливается, если функция выполняется правильно и результат равен 0

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


<=0 ---| |--- Бит результата Меньше или Равно 0

<=0 ---| |--- Бит результата Меньше или Равно 0

Обозначение

Описание

<=0 ---| |--- (Бит результата “Меньше или равно 0”) или <=0 ---| / |--- (Опрос на “0” бита результата “Меньше или равно 0”) используются для оценки результата математической операции на меньше или равно "0".

При выполнении этой инструкции оцениваются биты CC 1 и CC 0 в слове состояния для определения знака результата . При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Примеры

The box is activated by signal state "1" at I0.0. If the value of IW0 is less than or equal to the value of IW2 the result of the math function "IW0 - IW2" is less than or equal to "0". Q4.0 is set if the function is well properly executed and the result is less than or equal to "0".

При I0.0 = 1, блок SUB_I активируется. Если значение входного слова IW0 меньше или равно значению в IW2, то результат операции IW0 - IW2 меньше или равен 0.

Если состояние сигнала на EN равно 1 (активирован) и при выполнении операции получается неотрицательный результат, выход Q 4.0 =

Выход Q4.0 устанавливается, если функция выполняется правильно и результат не меньше 0.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


OV ---| |--- Бит ошибки Переполнение

---|OV|--- Бит ошибки “Переполнение”

---|OV|--- Бит ошибки “Переполнение”

Обозначение

Описание

OV ---| |---: Вы можете использовать инструкцию опроса Бита ошибки “Переполнение” для обнаружения переполнения (OV) в последней математической операции. Если после выполнения результат математической операции оказывается за пределами допустимого диапазона в отрицательной или положительной области, то бит OV в слове состояния устанавливается в 1.

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 равно 1, то блок SUB_I выполняется.

Если результат арифметической операции вычитания входного слова IW2 из входного слова IW0 находится за пределами допустимого диапазона для целых чисел то бит OV в слове состояния устанавливается в 1.

Результат опроса бита OV равен 1.

Выход Q4.0 устанавливается, если опрос OV равен 1 и RLO сегмента 2 равен 1 (если RLO перед выходом Q4.0 равен 1).

Замечание

Опрос OV необходим поскольку здесь используются два разных сегмента.

Другим вариантом является опрос выхода ENO который будет выдавать

статус "0" если будет получено переполнение при выполнении инструкции.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


OS ---| |--- Бит ошибки Переполнение с запоминанием

OS ---| |--- : Бит ошибки “Переполнение с запоминанием”

OS ---| |--- : Бит ошибки “Переполнение с запоминанием”

Обозначение

Описание

OS ---| |--- : Вы можете использовать команду опроса Бит ошибки “Переполнение с запоминанием” или OS ---| / |---(опрос на отсутствие переполнения) для распознавания предыдущего переполнения в математических операциях.

Если после ее выполнения результата математической операции оказывается за пределами допустимого диапазона в отрицательной или положительной области, то бит OS в слове состояния устанавливается в 1. Команда опрашивает состояние этого бита.

В отличие от бита OV (переполнение) бит OS остается установленным, даже если следующие арифметические операции были выполнены без ошибок.

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 равно 1, то активируется блок MUL_I. Если состояние сигнала на входе I0.1 равно 1, то активируется блок ADD_I. Если результат одной из этих арифметических операций выходит за пределы допустимого диапазона для целых чисел, то бит OS в слове состояния уста навливается. Результат опроса состояния бита OS в случае переполнения равен 1 и выход Q4.0 устанавливается в 1.

Замечание

Опрос бита OS необходим поскольку здесь используются два разных сегмента.

Другим вариантом является опрос выходов ENO которые будут выдавать статус "0" если будет получено переполнение при выполнении инструкции и произвести их логическое сопряжение.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


UO ---| |--- Бит ошибки Неупорядочено

UO ---| |--- : Бит ошибки “Неупорядочено”

UO ---| |--- : Бит ошибки “Неупорядочено”

Обозначение

Описание

UO ---| |--- : или UO ---| / |--- : Вы можете использовать инструкцию опроса Бита ошибки “Неупорядочено” для проверки, является ли неупорядоченным результат математические операции с плавающей точкой (иными словами, не является ли одно из значений, с которым выполняется операция, недопустимым числом с плавающей точкой).

Если результат математической операции является неупорядоченным (UO = unordered - неупорядочен), то опрос состояния сигнала дает результат 1.

Если комбинация СС1 и СС0 не указывает на неупорядоченность результата математической операции, то опрос состояния сигнала дает 0.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 равно 1, то блок DIV_R активизируется.

Если значение одного из двойных входных слов ID0 или ID4 является недопустимым числом с плавающей точкой, то арифметическая операция с плавающей точкой неупорядочена.

Если состояние сигнала EN равно 1 (активирован) и при выполнении команды возникает ошибка, то состояние сигнала на ENO равно 0.

Выход Q4.1 устанавливается, если функция DIV_R выполняется, но одно из значений в арифметической функции является недопустимым числом с плавающей точкой.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


BR ---| |--- Бит ошибки Двоичный результат

BR ---| |--- : Опрос Бита ошибки “Двоичный результат”

BR ---| |--- : Опрос Бита ошибки “Двоичный результат”

Обозначение

Описание

BR ---| |--- (опрос бита ошибки BR) или BR ---| / |--- (опрос на «0» бита BR) используются для проверки логического состояния бита BR в слове состояния.

При оценке результата опроса в последовательной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для И .

При оценке результата опроса в параллельной логической цепочке, результат опроса сопрягается с предшествующим результатом логической операции в соответствии с таблицей истинности для ИЛИ.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Выход Q4.0 устанавливается в “1” если статус сигнала на I0.0 = 1 ИЛИ статус сигнала на входе I0.2 = 0, И, в дополнение к этому результату, статус сигнала бита BR = 1.

---|>0|--- | ---|==0|--- | ---|>=0|--- | ---|OV|--- | ---|UO|---
---|<0|--- | ---|<>0|--- | ---|<=0|--- | ---|OS|--- | ---|BR|---


Инструкции сравнения

Обзор инструкций сравнения

Обзор инструкций сравнения

Описание

- где тип данных I, D, R

Входы IN1 и IN2 сравниваются в соответствии с выбранным типом данных:

== IN1 = равно IN2

<> IN1 <> не равно IN2

> IN1 > больше IN2

< IN1 < меньше IN2

>= IN1 >= больше или равно IN2

<= IN1 <= меньше или равно IN2

Если условие сравнения выполняется, то RLO получает значение "1".

Он сопрягается с результатами опроса последующих логических операций по схеме И, если они находятся в последовательной цепи и по схеме ИЛИ в случае параллельной цепи.

Вы можете использовать следующие инструкции сравнения:

· CMP ? I Сравнение целых чисел типа Integer

· CMP ? D Сравнение чисел типа Double Integer

· CMP ? R Сравнение чисел типа Real

Пример: Операции счета и сравнения

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Инструкции сравнения

Обзор инструкций сравнения

Вход разрешения сравнения можно непосредсвенно подлючать к шине.

Входы IN1 и IN2 сравниваются в соответствии с выбранным Вами типом :

== IN1 равно IN2

<> IN1 не равно IN2

> IN1 больше IN2

< IN1 меньше IN2

>= IN1 больше или равно IN2

<= IN1 меньше или равно IN2

Если условие сравнения выполняется, то RLO получает значение "1".

Он сопрягается с результатами опроса последующих логических операций по схеме И, если они находятся в последовательной цепи и по схеме ИЛИ в случае параллельной цепи.

Вы можете использовать следующие инструкции сравнения:

 | Обзор инструкций сравнения
CMP ? I | Сравнение целых чисел типа Integer

CMP ? D

Сравнение целых двойных чисел Double Integer

CMP ? R

Сравнение чисел с плавающей запятой Real

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R


CMP ? I : Сравнение целых чисел Integer

CMP ? I : Сравнение целых чисел Integer

Обозначение

Параметр | Тип данных | Область данных | Описание
Разрешение сравнения | BOOL | I, Q, M, L, D | Разрешение сравнения
Результат сравнения | BOOL | I, Q, M, L, D | Результат RLO выхода функции равно 1 только если вход =1 и операция сравнения выполняется и без ошибок
IN1 | INT | I, Q, M, L, D или константа | Первое значение для сравнения -32768 .... +32767
IN2 | INT | I, Q, M, L, D или константа | Второе значение для сравнения

Описание

Инструкция CMP ? I :Сравнить целые числа может использоваться как обыкновенный контакт в любом удобном месте контактного плана.

Эта инструкция сравнивает входы IN1 и IN2 в соответствии с типа сравнения выбираемым из окна списка. Если условие сравнения выполняется, то RLO получает значение "1".

Он сопрягается с результатами опроса последующих логических операций по схеме И, если они находятся в последовательной цепи и по схеме ИЛИ в случае параллельной цепи.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | 0 | - | 0 | x | x | 1

Пример

Q 4.0 устанавливается если:MW0 больше или равно MW2 и состояние сигнала на входах I0.0 и I0.1 равно 1

STL |  | Комментарий
L | MW10 | //Загрузка содержимого MW10 (16-битовое целое).).
L | IW24 | //Загрузка содержимого IW24 (16-битовое целое).
>I |  | //Сравнение: ACCU 2-L (MW10) больше (>) чем ACCU 1- L (IW24).
= | M 2.0 | //RLO = 1 если MW10 > IW24.

Применение компаратора позволяет делать счётчики с переменным коэффициентом деления.

В примере компаратор сбрасывает счётчик при достижении счётчиком значения 4, кратковременным импульсом.

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R


CMP ? D: Сравнение двойных целых чисел Double Integer

CMP ? D: Сравнение двойных целых чисел Double Integer

Обозначение

Параметр | Тип данных | Область данных | Описание
Разрешение сравнения | BOOL | I, Q, M, L, D | Разрешение сравнения
Результат сравнения | BOOL | I, Q, M, L, D | Результат RLO выхода функции равно 1 только если вход =1 и операция сравнения выполняется и без ошибок
IN1 | DINT | I, Q, M, L, D или константа L#число | Первое значение для сравнения L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Второе значение для сравнения

Описание

Инструкция CMP ? D :Сравнить двойные целые числа может использоваться как обыкновенный контакт в любом удобном месте контактного плана.

Эта инструкция сравнивает входы IN1 и IN2 в соответствии стипа сравнения , выбираемым из окна списка. Если условие сравнения выполняется, то RLO получает значение "1".

Он сопрягается с результатами опроса последующих логических операций по схеме И,

если они находятся в последовательной цепи и по схеме ИЛИ в случае параллельной цепи.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | 0 | - | 0 | x | x | 1

Пример

Q 4.0 устанавливается когда сигнал на входах I 0.0 и I 0.1 равен 1 и MD0

больше или равен MD4 и состояние входа I0.2 равно 1.

STL |  | Комментарий
L | MD10 | //Загрузка содержимого MD10 (двойное целое, 32 - битовое).
L | ID24 | //Загрузка содержимого ID24 (двойное целое, 32 - битовое).
>D |  | //Сравнение: ACCU 2 (MD10) больше (>) чем ACCU 1 (ID24).
= | M 2.0 | //RLO = 1 если MD10 > ID24

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R


CMP ? R: Сравнение чисел с плавающей запятой Real

CMP ? R: Сравнение чисел с плавающей запятой Real

Обозначение

Параметр | Тип данных | Область данных | Описание
Разрешение сравнения | BOOL | I, Q, M, L, D | Разрешение сравнения
Результат сравнения | BOOL | I, Q, M, L, D | Результат RLO выхода функции равно 1 только если вход =1 и операция сравнения выполняется и без ошибок
IN1 | REAL | I, Q, M, L, D или константа 123.0 = 1.230000e+002 | Первое значение для сравнения
IN2 | REAL | I, Q, M, L, D или константа 123.0 | Второе значение для сравнения

Описание

Инструкция CMP ? R:Сравнить числа с плавающей точкой может использоваться как обыкновенный контакт в любом удобном месте контактного плана.

Эта инструкция сравнивает входы IN1 и IN2 в соответствии с типа сравнения выбираемым из окна списка.

Если условие сравнения выполняется, то RLO получает значение "1".

Он сопрягается с результатами опроса последующих логических операций по схеме И, если они находятся в последовательной цепи и по схеме ИЛИ в случае параллельной цепи.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Q 4.0 устанавливается когда сигналы на входах I 0.0 и I 0.0 равны 1 и MD0 больше или равен MD4 и сигнал на входе I 0.2 равен 1.

STL |  | Комментарий
L | MD10 | //Загрузка содержимого MD10 (число с плавающей точкой).
L | 1.359E+02 | //Загрузка константы 1.359E+02.
>R |  | //Сравнение: ACCU 2 (MD10) больше (>) чем ACCU 1 (1.359-E+02).
= | M 2.0 | //RLO = 1 если MD10 > 1.359E+02.

CMP == I | CMP <> I | CMP > I | CMP < I | CMP <= I | CMP >= I
CMP == D | CMP <> D | CMP > D | CMP < D | CMP <= D | CMP >= D
CMP == R | CMP <> R | CMP > R | CMP < R | CMP <= R | CMP >= R


Обзор инструкций сдвига

Обзор инструкций сдвига

Вы можете использовать следующие инструкции сдвига:

SHR_I Сдвиг вправо целого слова Integer

SHR_DI Сдвиг вправо двойного целого слова Double Integer

SHL_W Сдвиг влево слова Word

SHR_W Сдвиг вправо слова Word

SHL_DW Сдвиг влево двойного слова Double Word

SHR_DW Сдвиг вправо двойного слова Double Word


SHR_I : Сдвиг вправо числа Integer

SHR_I : Сдвиг вправо числа Integer

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | INT | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | INT | I, Q, M, L, D | Результат операции сдвиг

Описание

Инструкция SHR_I (Сдвиг вправо целого числа) активируется состоянием сигнала “1” на разрешающем входе EN и побитно сдвигает вправо биты входа IN, имеющие номера с 0 по 15.

Биты с 16 по 31 при этом не затрагиваются.

Вход N задает на сколько бит происходит сдвиг. Если N больше, чем 16, то команда работает так, как будто N = 16.

Битовые позиции слева заполняются состоянием сигнала бита 15 (разряд знака целого числа), то есть нулем, если число положительное, и 1, если число отрицательное.

Результат операции сдвига Вы можете опрашивать на выходе OUT.

Инструкция, выполненная при неравном нулю N, всегда сбрасывает биты СС 0 и OV слова состояния в ”0”.

Вход EN может быть подключен к шине напрямую или логическую цепочку.

Выход ENO повторяет состояние сигнала на входе EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

Операция активируется, если вход I0.0 равен 1. Меркерное слово MW0 сдвигается вправо на количество битов, заданное в MW2.

Результат записывается в MW4, выход Q4.0 устанавливается в 1.

L W#16#2 //величина сдвига N в ACCU1

L MW 16 //сдвигаемое число IN в ACCU1. N в ACCU2

SSI //сам сдвиг ACCU1

T MW 20 //результат OUT

SET

SAVE

CLR

A BR //если не было ошибок

= Q 4.0 //устанавливаем

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


SHR_DI : Сдвиг вправо числа Double Integer

SHR_DI : Сдвиг вправо числа Double Integer

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DINT | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | DINT | I, Q, M, L, D | Результат операции сдвиг

Описание

Инструкция SHR_DI (Сдвиг вправо числа Double Integer )

активируется состоянием сигнала “1” на разрешающем входе (EN) и побитно сдвигает биты с 0 по 31вправо содержимого входа IN. Вход N задает, на сколько битов происходит сдвиг.

Если N больше, чем 32, то команда работает так, как будто N = 32.

Битовые позиции слева заполняются состоянием сигнала бита 31 (разряд знака двойного целого числа), то есть нулем, если число положительное, и 1, если число отрицательное.

Результат операции сдвига Вы можете считывать на выходе OUT.

Операция, запущенная при не равном нулю N, всегда сбрасывает биты A0 и OV слова состояния в ”0”.

Вход EN может быть подключен к шине напрямую или логическую цепочку.

ENO повторяет состояние сигнала на входе EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Example

Операция активируется, если статус входа I0.0 равен 1.

Двойное меркерное слово MD0 сдвигается вправо на количество бит, заданное MW4.

Результат сохраняется в MD10.

Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


SHR_W Сдвиг вправо слова Word

SHR_W: Сдвиг слова вправо

SHR_W: Сдвиг слова вправо

Обозначение

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | WORD | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | WORD | I, Q, M, L, D | Результат операции сдвиг

Описание

SHR_W :Инструкция сдвиг слова вправо активируется состоянием сигнала “1” на разрешающем входе (EN) и побитно сдвигает вправо биты входа IN, имеющие номера с 0 по 15.

Биты с номерами с 16 по 31 не изменяются.

Вход N задает, на сколько бит происходит сдвиг. Если N больше, чем 16, то команда записывает 0 на выходе OUT и сбрасывает биты СС0 и OV в ”0”.

Освобождающиеся слева битовые позиции заполняются нулями.

Результат операции сдвига Вы можете опрашивать на выходе OUT.

Операция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”. Вход EN может быть подключен к шине напрямую или логическую цепочку.

Выход ENO имеет то же значение , что и EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

Инструкция активируется, если вход I0.0 равен 1.

Меркерное слово MW0 сдвигается вправо на количество бит, заданное в MW2.

Результат сохраняется в MW4 .

Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


SHR_DW Сдвиг вправо двойного слова Double Word

SHR_DW : Сдвиг двойного слова вправо

SHR_DW : Сдвиг двойного слова вправо

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DWORD | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | DWORD | I, Q, M, L, D | Результат

Описание

SHR_DW: Инструкция Сдвиг двойного слова вправо активируется состоянием сигнала “1”на разрешающем входе (EN) и побитно сдвигает вправо биты входа IN, имеющие номера с 0 по 31.

Вход N задает, на сколько бит происходит сдвиг.

Если N больше, чем 32, то команда записывает 0 на выходе OUT и сбрасывает биты СС0 и OV в ”0”. Освобождающиеся слева битовые позиции заполняются нулями.

Результат операции сдвига Вы можете опрашивать на выходе OUT.

Инструкция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”.

Вход EN может быть подключен к шине напрямую или логическую цепочку.

Выход ENO равен входу EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

Операция активируется, если I0.0 = 1. Меркерное слово MD0 сдвигается вправо на количество бит, заданное в MW4.

Результат сохраняется в MD10. Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


SHL_W Сдвиг слова влево Word

SHL_W Сдвиг слова влево

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | WORD | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | WORD | I, Q, M, L, D | Результат операции сдвиг

Описание

SHL_W: Инструкция Сдвиг слова влево активируется , если на разрешающем входе (EN)состояние сигнала =1 и побитно сдвигает влево биты с 0 по 15 входа IN. Вход N задает, на сколько бит происходит сдвиг.

Если N больше, чем 16, то команда записывает 0 на выходе OUТ и сбрасывает биты CC0 и OV слова состояния в ”0”. Освобождающиеся справа битовые позиции заполняются нулями.

Результат операции сдвига может считываться на выходе OUT.

Операция, запущенная при не равном нулю N, сбрасывает биты CC0 и OV слова состояния в ”0”.

Вход EN может быть подключен к шине напрямую или логическую цепочку.

Выход ENO повторяет состояние входа EN .

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

Операция активируется, если вход I0.0 равен 1.

Меркерное слово MW0 сдвигается влево на количество битов, заданное в MW2.

Результат сохраняется в MW4. Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


SHL_DW Сдвиг влево двойного слова Double Word

SHL_DW: Сдвиг двойного слова влево

SHL_DW: Сдвиг двойного слова влево

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DWORD | I, Q, M, L, D | Сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится сдвиг
OUT | DWORD | I, Q, M, L, D | Результа

Описание

SHL_W: Инструкция Сдвиг слова влево активируется , если на разрешающем входе (EN)состояние сигнала =1 и побитно сдвигает влево биты с 0 по 15 входа IN. Вход N задает, на сколько бит происходит сдвиг.

Если N больше, чем 16, то команда записывает 0 на выходе OUТ и сбрасывает биты CC0 и OV слова состояния в ”0”. Освобождающиеся справа битовые позиции заполняются нулями.

Результат операции сдвига может считываться на выходе OUT.

Операция, запущенная при не равном нулю N, сбрасывает биты CC0 и OV слова состояния в ”0”.

Вход EN может быть подключен к шине напрямую или логическую цепочку.

Выход ENO повторяет состояние входа EN .

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

Операция активируется, если вход I0.0 равен 1.

Меркерное слово MW0 сдвигается влево на количество битов, заданное в MW2.

Результат сохраняется в MW4. Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


Обзор инструкций циклического сдвига

Обзор инструкций циклического сдвига

С помощью инструкций циклического сдвига, Вы можете побитно циклически сдвигать вправо или влево все содержимое входа IN.

Освобождающиеся разряды заполняются состояниями сигналов тех битов, которые выталкиваются из входного значения IN.

Число, задаваемое Вами для входного параметра N, показывает, на сколько битов должен производиться циклический сдвиг.

В зависимости от выбранной операции, циклический сдвиг происходит через бит СС1.

Бит СС0 слова состояния сбрасывается в “0”.

Число сдвига на входе N определяет количество битовых позиций, на которое долж-

но быть сдвинуто содержимое.

Это может быть константа или переменная.

Если число сдвига равно 0, то функция не выполняется.

Если оно равно 32, то содержимое входной переменной сохраняется, и устанавливаются биты состояния.

Если число сдвига равно 33, осуществляется сдвиг одного разряда.

Если оно равно 34, сдвигается два разряда и так далее (сдвиг выполняется по модулю 32).

В Вашем распоряжении имеются следующие операции циклического сдвига:

ROL_DW Циклический сдвиг двойного слова влево

ROR_DW Циклический сдвиг двойного слова вправо


ROL_DW Циклический сдвиг влево двойного слова Double Word

ROL_DW : Циклический сдвиг двойного слова влево

ROL_DW : Циклический сдвиг влево двойного слова

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DWORD | I, Q, M, L, D | Циклически сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится цикл. сдвиг
OUT | DWORD | I, Q, M, L, D | Результат циклического сдвига

Описание

ROL_DW Инструкция Циклический сдвиг двойного слова влево активируется состоянием сигнала “1” на разрешающем входе (EN) и побитно циклически сдвигает влево все содержимое входа IN.

Вход N задает, на сколько бит происходит циклический сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на число бит, равное (((N-1) по модулю 32) +1). Освобождающиеся справа битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов.

Результат операции циклического сдвига Вы можете опрашивать на выходе OUT.

Инструкция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”.

Выход ENO всегда равен входу EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

L W#16#2 //на сколько сдвигаем

L MD 0 //сдвигаемое число

RLD //сам сдвиг

T MD 10 //результат сдвига

SET

SAVE

CLR

A BR

= Q 4.0

Операция активируется, если I0.0 = 1.

Двойное меркерное слово MD0 сдвигается циклически влево на количество бит, заданное в MW4.

Результат сохраняется в MD10.

Выход Q4.0 устанавливается в 1.

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


ROR_DW Циклический сдвиг вправо двойного слова Double Word

ROR_DW : Циклический сдвиг вправо двойного слова

ROR_DW : Циклический сдвиг вправо двойного слова

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | DWORD | I, Q, M, L, D | Циклически сдвигаемое значение
N | WORD | I, Q, M, L, D | Количество битовых разрядов, на которое производится цикл, сдвиг
OUT | DWORD | I, Q, M, L, D | Результат циклического сдвига

Описание

ROR_DW Операция Циклический сдвиг двойного слова вправо активируется состоянием сигнала “1” на разрешающем входе (EN) и побитно задает, на сколько битов происходит циклический сдвиг.

Если N больше, чем 32, то двойное слово циклически сдвигается на число битов, равное (((N-1) по модулю 32) +1).

Значение N может находиться между 0 и 31.

Освобождающиеся слева битовые позиции заполняются состояниями сигналов циклически сдвигаемых битов.

Результат операции циклического сдвига Вы можете опрашивать на выходе OUT.

Операция, запущенная при не равном нулю N, всегда сбрасывает биты CC0 и OV слова состояния в ”0”.

Выход ENO всегда имеет то же значение , что и EN.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | - | x | x | x | 1

Пример

L W#16#2 //на сколько сдвигаем

L MD 0 //сдвигаемое число

RRD //сам сдвиг

T MD 10 //результат сдвига

SET

SAVE

CLR

A BR

= Q 4.0

Операция активируется, если I0.0 = 1.

Двойное меркерное слово MD0 циклически сдвигается вправо на количество битов, заданное в MW4.

Результат сохраняется в MD10. Выход Q4.0 устанавливается в 1.

При использовании языка STL возможно использование значения последнего выдвинутого бита в CC1=1 для определения условия перехода по команде JP LabelN

SHR_I | SHR_W | SHL_W | ROL_DW
SHR_DI | SHR_DW | SHL_DW | ROR_DW


Математические инструкции с плавающей точкой

Обзор математических инструкций с плавающей точкой

Обзор математических инструкций с плавающей точкой

Описание

Вы можете использовать математические инструкции с плавающей точкой для выполнения следующих математических операций, использующих два 32–битных числа с плавающей точкой (вещественный тип данных REAL) в формате IEEE:

ADD_R Сложить числа с плавающей запятой Real

SUB_R Вычитание чисел с плавающей точкой

MUL_R Умножение чисел с плавающей запятой

DIV_R Деление числа с плавающей запятой

Используя инструкции с плавающей точкой, Вы можете выполнять следующие операции с одним 32-битным числом с плавающей точкой в формате IEEE:

Вычисление Абсолютного значения (ABS)

Вычисление квадрата (SQR) и квадратного корня (SQRT)

Вычисление натурального логарифма

Вычисление экспоненты числа с плавающей точкой (EXP) по основанию e (е= 2.71828...)

Вычисление следующих тригонометрических функций угла, представленного в виде 32–битного числа с плавающей точкой:

Синус (SIN) и Арксинус (ASIN)

Косинус (COS) и Арккосинус (ACOS)

Тангенс (TAN) и Арктангенс (ATAN)

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Группа инструкций для преобразования чисел с плавающей запятой:

DI_REAL Преобразование двойного целого числа в число с плавающей

NEG_R Дополнительный двоичный код числа с плавающей запятой

ROUND Округление до двойного целого Double Integer

TRUNC Выделение целой части Double Integer

CEIL Округление до ближайшего большего целого числа

FLOOR Округление до ближайшего меньшего целого

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Инструкции чисел с плавающей точкой

Основные инструкции чисел с плавающей точкой

ABS | Вычисление модуля числа с плавающей точкой
ADD_R | Сложить числа с плавающей запятой Real
SUB_R | Вычитание чисел с плавающей точкой
MUL_R | Умножение чисел с плавающей запятой
DIV_R | Деление числа с плавающей запятой

Дополнительные инструкции

SIN |  | Вычислить значение синуса
ASIN |  | Вычисление синуса Sin
COS |  | Вычисление косинуса
ACOS |  | Вычисление косинуса Cos
TAN |  | Вычисление тангенса
ATAN |  | Вычисление арктангенса
EXP |  | Вычисление экспоненты числа с плавающей точкой
LN |  | Вычисление натурального логарифма
SQR |  | Вычисление квадратного корня
SQRT |  | Вычисление квадратного корня
 | Анализ битов слова состояния в инструкциях с плавающей точкой

Группа инструкций для преобразования чисел с плавающей запятой:

DI_REAL Преобразование двойного целого числа в число с плавающей

NEG_R Дополнительный двоичный код числа с плавающей запятой

ROUND Округление до двойного целого Double Integer

TRUNC Выделение целой части Double Integer

CEIL Округление до ближайшего большего целого числа

FLOOR Округление до ближайшего меньшего целого

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


Анализ битов слова состояния в инструкциях с плавающей точкой

Анализ битов слова состояния в инструкциях с плавающей точкой

Описание

Инструкции с плавающей точкой влияют на следующие биты слова состояния:

CC1 и CC0 , OV и OS .

В следующих таблицах показано влияние результатов выполнения инструкций с плавающей точкой на биты слова состояния:(32 бит):

Допустимый диапазон значений | CC 1 | CC 0 | OV | OS
+0, -0 (ноль) | 0 | 0 | 0 | *
-3.402823E+38 < результат < -1.175494E-38 (отрицательное число) | 0 | 1 | 0 | *
+1.175494E-38 < результат < 3.402824E+38 (положительное число) | 1 | 0 | 0 | *

* Бит OS не изменяется этими инструкциями.

Недопустимый диапазон значений | CC 1 | CC 0 | OV | OS
Слишком малое значение -1.175494E-38 < результат < - 1.401298E-45 (отрицательное число) | 0 | 0 | 1 | 1
Слишком малое значение +1.401298E-45 < результат < +1.175494E-38 (положительное число) | 0 | 0 | 1 | 1
Переполнение результат < -3.402823E+38 (отрицательное число) | 0 | 1 | 1 | 1
Переполнение результат > 3.402823E+38 (положительное число) | 1 | 0 | 1 | 1
Недопустимое число с плавающей точкой или недопустимая инструкция (входная величина в недопустимом диапазоне ) | 1 | 1 | 1 | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


ABS: Вычисление модуля числа с плавающей точкой

ABS: Вычисление модуля числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | число с плавающей точкой
OUT | REAL | I, Q, M, L, D | Абсолютное значение

Описание

ABS: С помощью инструкции Вычисление модуля числа с плавающей точкой, Вы можете определить абсолютную величину числа с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

Пример

Если I0.0 = 1, то абсолютное значение MD8 выводится на MD12.

MD8 = +6.234 дает в результате MD12 = 6.234.

Выход Q4.0 равен 1 , если преобразование не выполняется (ENO = EN = 0).

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


ADD_R : Сложение чисел с плавающей точкой

ADD_R : Сложение чисел с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | REAL | I, Q, M, L, D или константа | Первое слагаемое
IN2 | REAL | I, Q, M, L, D или константа | Второе слагаемое
OUT | REAL | I, Q, M, L, D | Результат сложения

Описание

ADD_R: Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Сложение чисел с плавающей точкой.

Инструкция складывает входы IN1 и IN2. Результат может быть считан на выходе OUT.

Если какой-либо из входов или результат не является числом с плавающей точкой, биты OV и OS устанавливаются в 1, а ENO устанавливается в 0 и, таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотрите также оценку битов слова состояния.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Example

Состояние сигнала 1 на входе I0.0 активирует блок ADD_R. Результат

сложения MD0 + MD4 выводится в двойное меркерное слово MD10. Если

результат не является числом с плавающей точкой или если состояние

сигнала на входе I0.0 равно 0, то выход Q4.0 устанавливается в 1.

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


SUB_R : Вычитание чисел с плавающей точкой

SUB_R : Вычитание чисел с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | REAL | I, Q, M, L, D or constant | Вычитаемое
IN2 | REAL | I, Q, M, L, D or constant | Вычитатель
OUT | REAL | I, Q, M, L, D | Разность

Описание

SUB_R :Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Вычитание чисел с плавающей точкой.

Инструкция вычитает вход IN2 из IN1.

Результат может быть считан на выходе OUT.

Если какой-либо из входов или результат не является числом с плавающей точкой, биты OV и OS устанавливаются в 1, а ENO устанавливается 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотрите также оценку битов слова состояния.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Состояние сигнала 1 на входе I0.0 активирует блок SUB_R .

Результат вычитания MD0 - MD4 выводится в двойное меркерное слово MD10.

Если один из входов или результат не является числом с плавающей точкой или, если состояние сигнала на входе I0.0 равно 0, то выход Q4.0 устанавливается в 1.

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


MUL_R : Умножение чисел с плавающей точкой

MUL_R : Умножение чисел с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | REAL | I, Q, M, L, D или константа | Первый множитель
IN2 | REAL | I, Q, M, L, D или константа | Второй множитель
OUT | REAL | I, Q, M, L, D | Произведение

Описание

MUL_R: Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Умножение чисел с плавающей точкой.

Инструкция умножает вход IN1 на IN2.

Результат может быть считан на выходе OUT.

Если какой-либо из входов или результат не является числом с плавающей точкой, биты OV и OS устанавливаются в 1, а ENO устанавливается 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Если состояние сигнала 1 на входе I0.0 активирует блок MUL_R , результат умножения MD0 x MD4 выводится в двойное меркерное слово MD10.

Если один из входов или результат не является числом с плавающей точкой или если состояние сигнала на входе I0.0 равно 0, то выход Q4.0 устанавливается в 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


DIV_R : Деление чисел с плавающей точкой

DIV_R : Деление чисел с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | REAL | I, Q, M, L, D или константа | Делимое
IN2 | REAL | I, Q, M, L, D или константа | Делитель
OUT | REAL | I, Q, M, L, D | Результат деления

Описание

DIV_R : Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Деление вещественных чисел.

Инструкция делит вход IN1 на IN2.

Результат может быть считан на выходе OUT.

Если какой-либо из входов или результат не является числом с плавающей точкой, биты OV и OS устанавливаются в 1, а ENO устанавливается в0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Состояние сигнала 1 на входе I0.0 активирует блок DIV_R.

Результат деления MD0 на MD4 выводится в двойное меркерное слово MD10.

Если один из входов или результат не является числом с плавающей точкой или если состояние сигнала на входе I0.0 равно 0, то выход Q4.0 устанавливается в 1.

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


SQR: Вычисление квадрата числа с плавающей точкой

SQR: Вычисление квадрата числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | Входное число
OUT | REAL | I, Q, M, L, D | Квадрат числа

Описание

SQR :С помощью инструкции Вычисление квадрата числа с плавающей точкой, можно возвести число с плавающей точкой в квадрат. Смотрите также оценку битов слова состояния.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


SQRT: Вычисление квадратного корня числа с плавающей точкой

SQRT: Вычисление квадратного корня числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | входное число
OUT | REAL | I, Q, M, L, D | Квадратный корень из числа

Описание

SQRT: С помощью инструкции Вычисление квадратного корня числа плавающей точкой, Вы можете извлечь квадратный корень из числа с плавающей точкой.

Инструкция возвращает положительный результат, если значение входного значения больше 0.

Единственное исключение для –0: результат также –0.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


LN : Вычисление натурального логарифма числа с плавающей точкой

LN : Вычисление натурального логарифма числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | входное число 1.234
OUT | REAL | I, Q, M, L, D | Натуральный логарифм числа

Описание

С помощью инструкции Вычисление натурального логарифма

числа с плавающей точкой ,Вы можете определить натуральный

логарифм числа с плавающей точкой.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


EXP : Вычисление экспоненты числа с плавающей точкой

EXP : Вычисление экспоненты числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | входное число
OUT | REAL | I, Q, M, L, D | Экспоненциальное значение числа

С помощью инструкции Вычисление экспоненты числа с плавающей точкой , Вы можете найти экспоненциальное значение

числа с плавающей точкой по основанию е (=2,71828...).

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


SIN : Вычисление синуса числа с плавающей точкой

SIN : Вычисление синуса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | Число с плавающей точкой в радианах
OUT | REAL | I, Q, M, L, D | Синус числа с плавающей точкой

Инструкция SIN вычисляет синус числа с плавающей точкой. Это число должно представлять значение угла в радианах.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


ASIN: Вычисление арксинуса числа с плавающей точкой

ASIN: Вычисление арксинуса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | Число с плавающей точкой
OUT | REAL | I, Q, M, L, D | Число с плавающей точкой в радианах

Инструкция ASIN вычисляет арксинус числа с плавающей точкой в пределах допустимых значений от –1 до 1.

Результат представляется как значение угла в радианах в диапазоне:-?/2 <= Выходная величина <= ? /2 , где ? =3.1415

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


COS: Вычисление косинуса числа с плавающей точкой

COS: Вычисление косинуса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | Число с плавающей точкой в радианах
OUT | REAL | I, Q, M, L, D | Косинус числа с плавающей точкой

Описание

Инструкция COS вычисляет синус числа с плавающей точкой.

Это число должно представлять значение угла в радианах.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


ACOS: Вычисление арккосинуса числа с плавающей точкой

ACOS: Вычисление арккосинуса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D или константа | число с плавающей точкой
OUT | REAL | I, Q, M, L, D | Число с плавающей точкой в радианах

Описанеие

Инструкция ACOS вычисляет арккосинус числа с плавающей точкой в пределах допустимых значений от –1 до 1.

Результат представляется как значение угла в радианах в диапазоне: 0 < Выходная величина < + ? , где

? =3.1415

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


TAN: Вычисление тангенса числа с плавающей точкой

TAN: Вычисление тангенса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D or constant | Число с плавающей точкой в радианах
OUT | REAL | I, Q, M, L, D | Тангенс числа с плавающей точкой

Описание

Инструкция TAN вычисляет тангенс числа с плавающей точкой. Это число

должно представлять значение угла в радианах.

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


ATAN: Вычисление арктангенса числа с плавающей точкой

ATAN: Вычисление арктангенса числа с плавающей точкой

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | REAL | I, Q, M, L, D or constant | число с плавающей точкой
OUT | REAL | I, Q, M, L, D | Число с плавающей точкой в радианах

Описание

Инструкция ATAN вычисляет арктангенс числа с плавающей точкой .

Результат представляется как значение угла в радианах в диапазоне:

-?/2 < Выходная величина < + ? /2 , где ? =3.1415

Смотри также Анализ битов слова состояния в инструкциях с плавающей точкой.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

ADD_R | MUL_R | SQR | EXP | SIN | COS | TAN | ABS | DI_REAL | ROUND | CEIL
SUB_R | DIV_R | SQRT | LN | ASIN | ACOS | ATAN |  | NEG_R | TRUNC | FLOOR


Обзор математических инструкций с целыми числами

Обзор математических инструкций с целыми числами

Описание

Используя математические инструкции с целыми числами, Вы можете

выполнять операции с двумя числами типа Integer (16 и 32 битовыми):

ADD_I Сложить целое со знаком Integer

SUB_I Вычитание целых чисел Integer

MUL_I Умножение целых чисел

DIV_I Деление целого числа

ADD_DI Сложить двойное целое со знаком Double Integer

SUB_DI Вычитание двойных целых Double Integer

MUL_DI Умножение двойных целых чисел

DIV_DI Деление двойного целого числа

MOD_DI Получение остатка от деления двойных целых чисел

Пример: Математические операции с целыми числами

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI |


Оценка битов слова состояния при выполнении математических операций с целыми числами

Оценка битов слова состояния при выполнении математических операций с целыми числами

Описание

Математические инструкции с целыми числами приводят к изменениям следующих бит слова состояния: CC1 и CC0, OV и OS.

Следующие таблицы показывают изменения битов слова состояния при выполнении этих инструкций с числами типа Integers (16 и 32 бит):

Допустимый диапазон значения | CC 1 | CC 0 | OV | OS
0 (ноль) | 0 | 0 | 0 | *
16 бит: -32 768 <= результат< 0 (отрицательное число) 32 бит: -2 147 483 648 <= результат< 0 (отрицательное число) | 0 | 1 | 0 | *
16 бит: 32 767 >= результат > 0 (положительное число) 32 бит: 2 147 483 647 >= результат > 0 (положительное число) | 1 | 0 | 0 | *

* Бит OS не изменяется при выполнении этих инструкций.

Недопустимый диапазон значения | CC 1 | CC 0 | OV | OS
Недопустимо малое значение (сложение) 16 бит: результат = -65536 32 бит: результат = -4 294 967 296 | 0 | 0 | 1 | 1
Недопустимо малое значение (умножение) 16 бит: результат < -32 768 (отрицательное число) 32 битs: результат < -2 147 483 648 (отрицательное число) | 0 | 1 | 1 | 1
Переполнение (сложение , вычитание) 16 бит: результат > 32 767 (положительное число) 32 бит: результат > 2 147 483 647 (положительное число) | 0 | 1 | 1 | 1
Переполнение (умножение, деление) 16 бит: результат > 32 767 (положительное число) 32 бит: результат > 2 147 483 647 (положительное число) | 1 | 0 | 1 | 1
Переполнение (сложение , вычитание) 16 бит: результат < -32 768 (отрицательное число) 32 бит: результат < -2 147 483 648 (отрицательное число) | 1 | 0 | 1 | 1
Деление на 0 | 1 | 1 | 1 | 1

Инструкция | CC 1 | CC 0 | OV | OS
+D: результат = -4 294 967 296 | 0 | 0 | 1 | 1
/D или MOD: деление на 0 | 1 | 1 | 1 | 1


ADD_I Сложение целых чисел Integer

ADD_I : Сложение целых чисел

ADD_I : Сложение целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | INT | I, Q, M, L, D или константа число | Первое слагаемое -32768 .... +32767
IN2 | INT | I, Q, M, L, D или константа число | Второе слагаемое
OUT | INT | I, Q, M, L, D | Сумма

ADD_I :инструкция Сложить целые числа активируется при состоянии сигнала 1 на входе EN (деблокировка входа) .

Эта инструкция складывает входы IN1 и IN2 и результат можно считать на выходе OUT.

Если результат выходит за пределы допустимого диапазона для целых чисел, то биты OV и OS слова состояния равны 1 , а выход ENO равен 0 и таким образом, каскадное включение следующих инструкций не будет выполняться..

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок ADD_I.

Результат сложения MW0 + MW2 передается в меркерное слово MW10.

Если результат выходит за пределы допустимого диапазона для целых чисел или состояние сигнала на входе I0.0 равно 0, выход Q4.0 устанавливается в 1 .

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


ADD_DI Сложение двойных целых чисел Double Integer

ADD_DI : Сложение двойных целых чисел

ADD_DI : Сложение двойных целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DINT | I, Q, M, L, D или константа L#число | Первое слагаемое L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Второе слагаемое
OUT | DINT | I, Q, M, L, D | Сумма

ADD_DI :Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Сложить двойные целые числа.

Эта инструкция складывает входы IN1 и IN2. Результат можно считать на OUT.

Если результат выходит за пределы допустимого диапазона для двойных целых чисел, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок ADD_DI .

Результат сложения MD0 + MD4 передается в меркерное слово MD 10.

Если результат выходит за пределы допустимого диапазона для двойных целых чисел, выход Q4.0 устанавливается в 1.

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


SUB_I Вычитание целых чисел Integer

SUB_I Вычитание целых чисел

SUB_I Вычитание целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | INT | I, Q, M, L, D или константа | Уменьшаемое -32768 .... +32767
IN2 | INT | I, Q, M, L, D или константа | Вычитаемое
OUT | INT | I, Q, M, L, D | Разница

SUB_I: инструкция Вычитание целых чисел активируется при состоянии сигнала 1 на входе EN (деблокировка входа).

Эта инструкция вычитает из значения на входе IN1 значение IN2.

Результат можно считать на выходе OUT.

Если результат выходит за пределы допустимого диапазона для целых чисел, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок SUB_I.

Результат вычитания MW0 -MW2 передается в меркерное слово MW10.

Если результат выходит за пределы допустимого диапазона для целых чисел или состояние сигнала на входе I0.0 равно 0, выход Q4.0 устанавливается в 1.

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


SUB_DI Вычитание двойных целых чисел Double Integer

SUB_DI : Вычитание двойных целых чисел

SUB_DI : Вычитание двойных целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DINT | I, Q, M, L, D или константа L#число | Уменьшаемое L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Вычитаемое
OUT | DINT | I, Q, M, L, D | Разница

SUB_DI: Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Вычитание двойных целых чисел.

Эта инструкция вычитает значения поданные на входы IN1 и IN2.

Результат можно считать на выходе OUT.

Если результат выходит за пределы допустимого диапазона для целых чисел, то биты OV и OS слова состояния равны 1, а ENO равно 0 и,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок SUB_DI.

Результат вычитания MD0 –MD4 передается в меркерное двойное слово MD10.

Если результат выходит за пределы допустимого диапазона для двойных целых чисел, выход Q4.0 устанавливается в 1 .

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


MUL_I Умножение целых чисел Integer

MUL_I : Умножение целых чисел

MUL_I : Умножение целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | INT | I, Q, M, L, D или константа | Первый множитель -32768 .... +32767
IN2 | INT | I, Q, M, L, D или константа | Второй множитель
OUT | INT | I, Q, M, L, D | Произведение

MUL_I : инструкция Умножение целых чисел активируется при состоянии сигнала 1 на входе EN (деблокировка входа).

Эта инструкция умножает значения поданные на входы IN1 и IN2, а результат можно считать на выходе OUT.

Если результат выходит за пределы допустимого диапазона для целых чисел, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок MUL_I .

Результат умножения MW0 х MW2 передается в меркерное слово MW10.

Если результат выходит за пределы допустимого диапазона для целых чисел, выход Q4.0

устанавливается в 1 .

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


MUL_DI Умножение двойных целых чисел Double Integer

MUL_DI : Умножение двойных целых чисел

MUL_DI : Умножение двойных целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DINT | I, Q, M, L, D или константа L#число | Первый множитель L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Второй множитель
OUT | DINT | I, Q, M, L, D | Произведение

MUL_DI : инструкция Умножение двойных целых чисел активируется при состоянии сигнала 1 на входе EN (деблокировка входа).

Эта инструкция перемножает входы IN1 и IN2.

Результат в виде 32-битного целого числа можно считать на OUT.

Если результат выходит за пределы допустимого диапазона для двойных целых чисел, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x |  | x | x |

Пример

Сигнал 1 на входе I0.0 активирует блок MUL_DI .

Результат умножения MD0 х MD4 передается в меркерное слово MD10.

Если результат выходит за пределы допустимого диапазона для двойных целых чисел, выход Q4.0 устанавливается в 1 .

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


DIV_I : Деление целых чисел

DIV_I : Деление целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | INT | I, Q, M, L, D или константа | Делимое -32768 .... +32767
IN2 | INT | I, Q, M, L, D или константа | Делитель
OUT | INT | I, Q, M, L, D | Частное Целое от деления

DIV_I : инструкцию Деление целых чисел активирует состояние сигнала 1 на входе EN (деблокировка входа).

Эта инструкция делит значение, поданное на вход IN1 на IN2.

Результат можно считать на выходе OUT.

Если результат выходит за пределы допустимого диапазона для целых чисел, то биты OV и OS слова состояния равны 1, а значение ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок DIV_I .

Результат деления MW0 / MW2 передается в меркерное слово MW10.

Если результат выходит за пределы допустимого диапазона для целых, выход Q4.0 устанавливается в 1.

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


DIV_DI Деление двойных целых чисел Double Integer

DIV_DI : Деление двойных целых чисел

DIV_DI : Деление двойных целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DINT | I, Q, M, L, D или константа L#число | Делимое L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Делитель
OUT | DINT | I, Q, M, L, D | Двойное Целое от деления

DIV_DI :Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию Разделить двойные целые числа.

Эта инструкция делит вход IN1 на IN2.

Частное от деления (округленный результат) можно считать на OUT.

Инструкция Разделить двойные целые числа хранит частное от деления в виде единственного 32-битного значения в формате DINT.

Эта инструкция не выдает остатка от деления.

Если частное выходит за пределы допустимого диапазона для двойного целого числа, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок DIV_DI .

Результат деления MD0 / MD4 передается в меркерное слово MD10.

Если результат выходит за пределы допустимого диапазона для двойных целых целых чисел , выход Q4.0 устанавливается в 1.

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


MOD_DI Получение остатка от деления двойных целых чисел Double Integer

MOD_DI : Получение остатка от деления двойных целых чисел

MOD_DI : Получение остатка от деления двойных целых чисел

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN1 | DINT | I, Q, M, L, D или константа L#число | Делимое L# -2147483648 .... L#+2147483647
IN2 | DINT | I, Q, M, L, D или константа L#число | Делитель
OUT | DINT | I, Q, M, L, D | Остаток от деления

MOD_DI :Состояние сигнала 1 на входе EN (деблокировка входа) активирует инструкцию получить остаток от деления двойных целых чисел.

Эта инструкция делит вход IN1 на IN2.

Остаток от деления можно считать на OUT.

Если результат выходит за пределы допустимого диапазона для двойного целого числа, то биты OV и OS слова состояния равны 1, а ENO равно 0 и ,таким образом, каскадное включение следующих инструкций не будет выполняться.

Смотри также Анализ битов слова состояния в инструкциях с целыми числами Integer.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | x | x | x | x | 0 | x | x | 1

Пример

Сигнал 1 на входе I0.0 активирует блок MOD_DI .

Остаток от деления MD0 / MD4 передается в меркерное слово MD10.

Если результат выходит за пределы допустимого диапазона для двойных целых целых чисел , выход Q4.0 устанавливается в 1 .

 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

ADD_I | MUL_I | ADD_DI | MUL_DI | MOD_DI
SUB_I | DIV_I | SUB_DI | DIV_DI | REAL+-*


Счетчики

Область памяти счетчиков

Область памяти счетчиков

Счетчики имеют область, зарезервированную для них в памяти CPU.

Эта область памяти резервирует по одному 16-битному слову для каждого адреса счетчика. При программировании в KOP поддерживается 256 счетчиков.

Инструкции счета являются единственными функциями, которые имеют доступ к области памяти счетчиков

Значение счетчика

Биты слова счетчика с 0 по 9 содержат значение счетчика в двоичном коде. Значение счетчика берется из аккумулятора и вводится в слово счетчика, при установке счетчика. Значение счетчика может находиться в диапазоне от 0 до 999.

Вы можете изменять значение счетчика, используя следующие инструкции:

• S_CUD Назначение параметров и прямой или обратный счет

• S_CD Назначение параметров и обратный счет

• S_CU Назначение параметров и прямой счет

• ---( SC ) Set Counter Coil

• ---( CU ) Счетчик на увеличение

• ---( CD ) Счетчик на уменьшение

Структура битов в счетчике

Счетчик устанавливается на требуемое значение загрузкой числа между 0 и 999 в качестве значения счетчика, например, 127 в следующем формате: C# 127.

С# означает двоично-десятичный формат (BCD-формат: каждая группа из четырех битов содержит двоичный код для одного десятичного разряда).

Биты Аккумулятора с 0 по 11 содержат значение счетчика в двоично-десятичном формате. На рисунке показано содержимое аккумулятора после загрузки значения 127 и содержимое слова счетчика, после того, как он был установлен.

Пример: Операции счета и сравнения

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Инструкции счетчиков

Обзор инструкций счетчиков

Область памяти

Счетчики имеют область, зарезервированную для них в памяти CPU.

Эта область памяти резервирует по одному 16-битному слову для каждого адреса счетчика.

При программировании в KOP поддерживается 256 счетчиков.

Инструкции счета являются единственными функциями, которые имеют доступ к области памяти счетчиков

Значение счетчика

Биты слова счетчика с 0 по 9 содержат значение счетчика в двоичном коде.

Значение счетчика берется из аккумулятора и вводится в слово счетчика, при установке счетчика.

Значение счетчика может находиться в диапазоне от 0 до 999.

Вы можете изменять значение счетчика, используя следующие инструкции:

• S_CUD Назначение параметров и прямой или обратный счет

• S_CD Назначение параметров и обратный счет

• S_CU Назначение параметров и прямой счет

• ---( SC ) Set Counter Coil

• ---( CU ) Счетчик на увеличение

• ---( CD ) Счетчик на уменьшение


S_CUD реверсивный счетчик

S_CUD : Назначение параметров и прямой/обратный счетчик

S_CUD : Назначение параметров и прямой/обратный счетчик

Обозначение

Параметр English | Data Type | Область данных | Описание
C no. | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.
CU | BOOL | I, Q, M, L, D | Вход прямого счета
CD | BOOL | I, Q, M, L, D | Вход обратного счета
S | BOOL | I, Q, M, L, D | Вход предустановки Счетчика
PV | WORD | I, Q, M, L, D or constant | Задание значения счетчика от 0 до 999 как C#<значение> в формате BCD
R | BOOL | I, Q, M, L, D | Вход сброса
CV | WORD | I, Q, M, L, D | Текущее значение счетчика (целый формат)
CV_BCD | WORD | I, Q, M, L, D | Текущее значение счетчика (двоично-десятичный формат BCD)
Q | BOOL | I, Q, M, L, D | Состояние счетчика

Описание

S_CUD : (Реверсивный счетчик) устанавливается на значение, указанное на входе PV при появлении положительного фронта (изменение сигнала с 0 на 1) на входе S реверсивного счетчика.

Счетчик увеличивается на 1, если состояние сигнала на входе CU изменяется с 0 на 1 (нарастающий фронт) и значение счетчика меньше 999. Счетчик уменьшается на 1, если состояние сигнала на входе CD изменяется с 0 на 1 (нарастающий фронт) и значение счетчика больше 0.

При статической 1 или отрицательном фронте сигнала содержимое счетчика не изменяется.

Если имеет место нарастающий фронт на обоих счетных входах, то выполняются обе инструкции и счетчик сохраняет прежнее значение.

Счетчик сбрасывается, если RLO=1 появляется на входе R.

Опрос на 1 состояния сигнала на выходе Q дает 1, если значение счетчика больше 0; опрос дает результат 0, если значение счетчика равно 0.

Счётчик нельзя помещать один в пустой сегмент. Счётчик должен иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Замечание

Для предотвращения ошибок cчета не используйте один номер

счетчика в нескольких местах программы

Пример

Если происходит изменение состояния сигнала с 0 на 1 на входе I0.2 счетчик C10 переустанавливается на значение из MW10.

Если состояние сигнала на входе I0.0 меняется с 0 на 1, то значение счетчика C10

увеличивается на 1, кроме случая, когда значение счетчика C10 уже равно 999.

Если вход I0.1 меняется с 0 на 1,то счетчик C10 уменьшается на 1 кроме случая, когда значение счетчика C10 уже равно 0.

Если I0.3 меняется с 0 на 1, то значение счетчика C10 устанавливается в 0.

Выход Q4.0 равен 1, когда cодержимое C 10 не равно 0.

В этом примере входы счётчика подсчитывают импульсы, формируемые командами определения фронта --(P)-- и --(N)--

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


S_CU прямой прибавляющий счетчик

S_CU : Назначение параметров и прямой счетчик

S_CU : Назначение параметров и прямой счетчик

Обозначение

Параметр English | Тип данных | Область данных | Описание
C no. | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.
CU | BOOL | I, Q, M, L, D | Вход прямого счета
S | BOOL | I, Q, M, L, D | Вход предустановки Счетчика
PV | WORD | I, Q, M, L, D or constant | Задание значения счетчика от 0 до 999 как C#<значение> в формате BCD
R | BOOL | I, Q, M, L, D | Вход сброса
CV | WORD | I, Q, M, L, D | Текущее значение счетчика (целый формат)
CV_BCD | WORD | I, Q, M, L, D | Текущее значение счетчика (двоично-десятичный формат BCD)
Q | BOOL | I, Q, M, L, D | Состояние счетчика

Description

S_CU : (прямой счет) устанавливается на значение, указанное на входе PV при появлении положительного фронта (изменение сигнала с 0 на 1) на входе S счетчика. Счетчик сбрасывается, если RLO=1 появляется на входе R. Счетчик увеличивается на 1, если состояние сигнала на входе CU изменяется с 0 на 1 (нарастающий фронт RLO) и значение счетчика меньше 999. При статической 1 или отрицательном фронте сигнала содержимое счетчика не изменяется.

Опрос на 1 состояния сигнала на выходе Q дает 1, если значение счетчика больше 0; опрос дает результат 0, если значение счетчика равно 0.

Счётчик нельзя помещать один в пустой сегмент. Счётчик должен иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Замечание

Для предотвращения ошибок не используйте один номер

счетчика в нескольких местах программы

Пример

Изменение сигнала с 0 на 1 на входе I0.2 устанавливает счетчик С 10 на значение, сохраненное в MW10.

Если состояние сигнала I0.0 изменяется с 0 на 1, значение счетчика С10 увеличивается на 1 до тех пор, пока не станет равным 999.

Если вход I0.3 принимает значение 1, то содержимое счетчика С10 сбрасывается в 0. Состояние сигнала на выходе Q4.0 равно 1, если значение счетчика С10 отлично от 0.

Применение компаратора позволяет делать счётчики с переменным коэффициентом деления.

В примере компаратор сбрасывает счётчик при достижении счётчиком значения 4.

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


S_CD :Обратный вычитающий счетчик

S_CD :Обратный вычитающий счетчик

Обозначение

Параметр | Тип данных | Область данных | Описание
C no. | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.
CD | BOOL | I, Q, M, L, D | Вход обратного счета
S | BOOL | I, Q, M, L, D | Вход предустановки Счетчика
PV | WORD | I, Q, M, L, D or constant | Задание значения счетчика от 0 до 999 как C#<значение> в формате BCD
R | BOOL | I, Q, M, L, D | Вход сброса
CV | WORD | I, Q, M, L, D | Текущее значение счетчика (целый формат)
CV_BCD | WORD | I, Q, M, L, D | Текущее значение счетчика (двоично-десятичный формат BCD)
Q | BOOL | I, Q, M, L, D | Состояние счетчика

Описание

S_CD : (обратный или вычитающий счетчик) устанавливается на значение, указанное на входе PV при появлении положительного фронта (изменение сигнала с 0 на 1) на входе S счетчика. Счетчик сбрасывается, если RLO=1 появляется на входе R.

Счетчик уменьшается на 1, если состояние сигнала на входе CD изменяется с 0 на 1 (нарастающий фронт RLO) и значение счетчика больше 0.

При статической 1 или отрицательном фронте сигнала содержимое счетчика не изменяется.

Опрос на 1 состояния сигнала на выходе Q дает 1, если значение счетчика больше 0; опрос дает результат 0, если значение счетчика равно 0.

Счётчик нельзя помещать один в пустой сегмент. Счётчик должен иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Замечание

Для предотвращения ошибок не используйте один номер счетчика в нескольких местах программы

Пример

Изменение сигнала с 0 на 1 на входе I0.2 устанавливает счетчик С 10 на значение, сохраненное в MW10. Если состояние сигнала I0.0 изменяется с 0 на 1, значение счетчика С10 уменьшается на 1 до тех пор, пока не станет равным 0.

Если вход I0.3 принимает значение 1, то содержимое счетчика С10 сбрасывается в 0.

Состояние сигнала на выходе Q4.0 равно 1, если значение счетчика С10 отлично от 0.

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


---( SC ) : Установка значения счетчика

Обозначение

<C no.>

---( SC )

<preset value>

Параметр | Тип данных | Область данных | Описание
<C no.> | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.
<preset value> | WORD | I, Q, M, L, D or constant | Задание значения счетчика от 0 до 999 как C#<значение> в формате BCD

---( SC ) Инструкция Установка значения счетчика назначает счетчику предустановленное значение при появлении положительного фронта RLO.

При ее выполнении задаваемая величина передается в системную память счетчиков.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | x | - | - | - | - | 0 | x | - | 0

Пример

A I 0.0 //если сигнал на входе I0.0 изменяется с 0 на 1 (положительный фронт RLO)

L C#100 //значение счетчика

S C 5 //загрузить в счетчик

Счетчик C5 получает значение 100 если сигнал на входе I0.0 изменяется с 0 на 1 (положительный фронт RLO).

Без положительного фронта RLO содержимое счетчика C5 не изменяется.

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


---( CU ) Катушка прибавляющего счетчика

---( CU ): Счет на увеличение

---( CU ): Счет на увеличение

Обозначение

<C no.>

---( CU )

Параметр English | Тип данных | Область данных | Описание
<C no.> | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.

Описание

---( CU ) Инструкция Счет на увеличение производит увеличение значения указанного счетчика на 1 при появлении нарастающего фронта RLO и значении счетчика меньше 999.

Без нарастающего фронта RLO или при значении счетчика 999 ,содержимое счетчика не

меняется.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | - | - | 0

Example

A I 0.0 //если сигнал на входе I0.0 изменяется с 0 на 1

//(положительный фронт RLO)

L C#100 //значение счетчика

S C10 //загрузить в счетчик

A I 0.1 //если сигнал на входе I0.0 изменяется с 0 на 1

//(положительный фронт RLO)

CU C10

A I 0.2 //если сигнал на входе I0.0 изменяется с 0 на 1

//(положительный фронт RLO)

R C10 //сбросить счетчик

При изменении сигнала на входе I0.0 с "0" на "1" (положительный фронт RLO), заданное значение 100 записывается в счетчик C10.

При изменении сигнала на входе I0.1 с "0" на "1" (положительный фронт RLO), содержимое счетчика C10 будет увеличиваться на 1 до тех пор, пока счетчик C10 не достигнет "999". Без фронта RLO, содержимое счетчика C10 не меняется.

При появлении на входе I0.2 сигнала "1", счетчик C10 сбрасывается в "0".

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


---( CD ) Катушка вычитающего счетчика

---( CD ): Счет на уменьшение

---( CD ): Счет на уменьшение

Обозначение

<C no.>

---( CD )

Параметр English | Тип данных | Область данных | Описание
<C no.> | COUNTER | C | Номер счетчика .Диапазон номеров зависит от CPU.

Описание

---( CD ) Инструкция Счет на уменьшение производит увеличение значения указанного счетчика на 1 при появлении положительного фронта RLO и значении счетчика больше 0.

Без нарастающего фронта RLO или при значении счетчика 0 ,содержимое счетчика не меняется.

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | - | - | 0

Пример

При изменении сигнала на входе I0.0 с "0" на "1" (положительный фронт RLO), заданное значение 100 записывается в счетчик C10.

При изменении сигнала на входе I0.1 с "0" на "1" (положительный фронт RLO), содержимое счетчика C10 будет уменьшаться на 1 до тех пор, пока счетчик C10 не достигнет "0".

Без фронта RLO, содержимое счетчика C10 не меняется.

При содержимом счетчике равном 0, включается выход Q4 0.

При появлении на входе I0.2 сигнала "1", счетчик C10 сбрасывается в "0".

S_CU | S_CUD | ---(CU) | Обзор
S_CD | ---(SC) | ---(CD) |


Таймеры

Обзор таймерных инст Размещение таймера в памяти и его компонентырукций

 Top Previous Next

Обзор таймерных инструкций

Описание

Для правильного выбора таймера и задания значения времени дополнительную информацию Вы найдете в руководстве "Расположение таймеров в памяти и компоненты таймера".

К области памяти таймеров имеют доступ следующие функции:

· S_PULSE Задание параметров и запуск таймера Импульс

· S_PEXT Задание параметров и запуск таймера Удлиненный Импульс

· S_ODT Задание параметров и запуск таймера Задержка включения

· S_ODTS Задание параметров и запуск таймера Задержка включения с памятью

· S_OFFDT Задание параметров и запуск таймера Задержка выключения

· ---( SP ) Запуск таймера Импульс

· ---( SE ) Запуск таймера Удлинненный импульс

· ---( SD ) Запуск таймера Задержка включения

· ---( SS ) Запуск таймера Задержка включения с памятью

· ---( SF ) Запуск таймера Задержка выключения

Байт периодических сигналов

Тактовый меркер

Выбор подходящего таймера

Рисунок дает обзор пяти типов таймеров.

Этот обзор должен помочь вам выбрать таймер, адекватный вашим целям.

Таймер | Описание
S_PULSE формирователь импульса | Максимальное время в течение которого выходной сигнал остается равным 1, совпадает с запрограммированным временем T. Выход сбрасывается раньше, если входной сигнал меняется состояние на 0.
S_PEXT формирователь удлиненного импульса | Выходной сигнал остается равным 1 в течение запрограммированного времени независимо от того, как долго остается равным 1 входной сигнал.
S_ODT формирователем задержки включения | Выходной сигнал устанавливается в 1 только по истечении запрограммированного времени, при этом входной сигнал все еще должен быть равен 1.
S_ODTS формирователем задержки включения с запоминанием | Выходной сигнал устанавливается в 1 только по истечении запрограммированного времени независимо от того, как долго остается равным 1 входной сигнал.
S_OFFDT формирователем задержки выключения | Выходной сигнал устанавливается в 1, когда устанавливается в 1 входной сигнал, и остается равным 1, пока таймер работает. Отсчет времени начинается, когда входной сигнал меняется с 1 на 0.

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) |

Ошибки программирования в LAD

Ошибки перекрёстной адресации


Размещение таймера в памяти и его компоненты

Размещение таймера в памяти и его компоненты

Область в памяти

Таймеры имеют собственную зарезервированную область памяти в вашем CPU.

Эта область памяти резервирует одно 16-битное слово для каждого адреса таймера.

Набор команд контактного плана поддерживает 256 таймеров.

Чтобы узнать количество доступных таймерных слов, обратитесь к техническому описанию вашего контроллера.

К области памяти таймеров имеют доступ следующие функции:

• Таймерные команды

• Обновление таймерных слов с помощью генератора тактовых импульсов.

Эта функция вашего CPU в режиме RUN уменьшает заданное значение времени на одну единицу через интервалы времени, установленные базой времени, пока значение времени не станет равным нулю.

Конфигурация битов в таймерной ячейке

Когда таймер запускается, содержимое таймерной ячейки используется в качестве значения времени.

Биты с 0 по 11 в таймерной ячейке содержат значение времени в двоично-десятичном формате (BCD–формат: каждая группа из четырех битов содержит двоичный код одного десятичного разряда).

Биты 12 и 13 содержат базу времени в двоичном коде (см. таблицу 5–1). Рис. 5–1 показывает содержимое таймерной ячейки, загруженной значением таймера 127 с базой времени 1 секунда.

Значение времени

Биты с 0 по 9 в таймерном слове содержат значение времени в двоичном коде.

Значение времени задает количество единиц.

Обновление таймера уменьшает значение времени на одну единицу через интервал времени, установленный базой времени.

Значение времени уменьшается до тех пор, пока оно не станет равным нулю.

Вы можете загружать значение времени в младшее слово аккумулятора 1 в двоичном, шестнадцатеричном или двоично-десятичном (BCD) коде (см. рисунок).

Диапазон времени охватывает значения с 0 по 9 990 секунд.

Вы можете предварительно загрузить значение времени с использованием любого из следующих форматов:

• W#16#wxyz

- где w = база времени (то есть интервал времени или разрешающая способность)

- xyz = значение времени в двоично-десятичном формате.

• S5T# aH_bbM_ccS_dddMS

S5T#1H_12M_18S

- где a = часы, bb = минуты, cc = секунды и ddd = миллисекунды

- База времени выбирается автоматически и значение округляется до ближайшего меньшего числа с этой базой времени.

Максимальное значение времени, которое вы можете ввести,

равно 9 990 секунд или 2H_46M_30S = 2 часа 46 минут 30 секунд.

S5TIME#4S = 4 секунды
s5t#2h_15m = 2 часа 15 минут
S5T#1H_12M_18S = 1 час 12 минут 18 секунд

База времени

Биты 12 и 13 в таймерном слове содержат базу времени в двоичном коде.

База времени определяет интервал, через который значение времени уменьшается на одну единицу (см. таблицу и рис.).

Минимальная база времени равна 10 мс; максимальная - 10 с.

База времени и ее двоичный код

База времени | Двоичный код для базы времени
10 мс | 00
100 мс | 01
1 с | 10
10с | 11

Так как значения времени запоминаются только через один интервал времени, то значения, не являющиеся точными кратными интервала времени, урезаются.

Значения, разрешающая способность которых слишком велика для желаемого диапазона, округляются таким образом, что достигается желаемый диапазон, но не желаемая разрешающая способность.

Таблица показывает возможные разрешающие способности и соответствующие им диапазоны.для базы времени

Разрешающая способность | Диапазон
0,01 секунды | от 10MS до 9S_990MS
0,1 секунды | от 100MS до 1M_39S_900MS
1 секунда | от 1S до 16M_39S
10 секунд | от 10S до 2HR_46M_30S

Чтение времени и база времени

Каждый таймерный блок предоставляет два выхода, BI и BCD, для которых вы можете задать адрес слова.

Значение времени на выходе BI представлено в двоичном формате.

База времени и значение времени на выходе BCD представлены в двоично-десятичном формате (BCD).

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


Тактовый меркер

Тактовый меркер (clock memory)

В контроллере для многих процедур требуется периодический сигнал и поэтому предусмотрена возможность использования в качестве тактового меркера одного байта памяти, номер которого задаётся пользователем при конфигурировани системы.

Тактовый меркер состоит из битов, чьи сигнальные состояния периодически меняются с коэффициентом заполнения (отношением длительностей положительного и отрицательного импульсов) 1:1.

Биты объединяются в байт и соответствуют фиксированным частотам.

Заметьте, что обновление тактового меркера асинхронно к выполнению главной программы.

Содержимое байта тактового меркера

Пример записи в таблице символов

Pulse_10_HZ | m0.0 | // 0,1 сек мерцание
Pulse_5_HZ | m0.1 | // 0,2 сек быстромигающий
Pulse_2_5_HZ | m0.2 | // 0,4 сек быстромигающий
Pulse_2_HZ | m0.3 | // 0,5 сек мигающий
Pulse_1_25_HZ | m0.4 | // 0,8 сек мигающий
Pulse_1_HZ | m0.5 | // 1 сек мигающий
Pulse_0_625_HZ | m0.6 | // 1,6 сек медленно мигающий
Pulse_0_5_HZ | m0.7 | // 2 сек очень медленно мигающий

Номер меркерного байта, объявленного тактовым, определяется при параметризации CPU.

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


S_PULSE – Таймер S5 формирователь импульса

S_PULSE – Таймер S5 формирователь импульса

Символ

Параметр | Тип данных | В области памяти | Описание
T no. | TIMER | T | Номер таймера (зависит от возможностей контроллера)
S | BOOL | I, Q, M, L, D | Пуск
TV | S5TIME | I, Q, M, L, D | Заданное значение времени
R | BOOL | I, Q, M, L, D | Сброс
BI | WORD | I, Q, M, L, D | Остаток времени в Целом Integer формате
BCD | WORD | I, Q, M, L, D | Остаток времени в BCD формате
Q | BOOL | I, Q, M, L, D | Состояние таймера

Описание

Команда Pulse S5 Timer – формирователь импульса – формирователь импульса запускает указанный таймер, если имеется положительный фронт (т.е. изменение состояния сигнала с 0 на 1) на входе S (Start - Пуск).

Изменение сигнала всегда необходимо для запуска таймера.

Таймер продолжает работать с временем, указанным на входе TV (Time Value - Значение времени), пока не истечет запрограммированное время, если состояние сигнала на входе TV равно 1.

Пока таймер работает, опрос состояния сигнала на 1 на выходе Q дает результат, равный 1.

Если на входе S происходит изменение с 1 на 0 до истечения заданного времени, таймер останавливается.

Тогда опрос на 1 состояния сигнала на выходе Q дает результат, равный 0.

Изменение с 0 на 1 на входе таймера R (Reset [Сбросить]) во время работы таймера сбрасывает таймер.

Это изменение сбрасывает также в ноль время и базу времени.

Состояния сигнала 1 на входе таймера R не оказывает никакого влияния, если таймер не работает.

Текущее значение времени может быть считано на выходах BI и BCD.

Значение времени на BI представлено в двоичном коде, а на выходе BCD – в двоично-десятичном коде.

Таймер нельзя помещать один в пустой сегмент. Таймер должен иметь предшествующее соединение.

Временные диаграммы

Импульсный таймер:

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

На рис. 5-3 показана команда Таймер S5 – формирователь импульса, описаны биты слова состояния и показаны характеристики таймера – формирователя импульса.

На размещение таймерных блоков накладываются определенные ограничения (см. раздел 2.1).

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 (т.е . в RLO имеется положительный фронт), таймер T 5 запускается.

Таймер продолжает работать с заданным временем 2 секунды, пока вход I 0.0 равен 1.

Если состояние сигнала на входе I 0.0 меняется с 1 на 0 до истечения времени, то таймер останавливается.

Если состояние сигнала на входе I 0.1 меняется с 0 на 1, когда таймер работает, то таймер сбрасывается.

Состояние сигнала на выходе Q 4.0 равно 1, пока таймер работает.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


S_PEXT Таймер S5 формирователь удлиненного импульса

S_PEXT Extended Pulse S5 Timer – формирователь удлиненного импульса

 Top Previous Next

S_PEXT Extended Pulse S5 Timer – формирователь удлиненного импульса

Символ

Параметр | Тип данных | В области памяти | Описание
T no. | TIMER | T | Номер таймера (зависит от возможностей контроллера)
S | BOOL | I, Q, M, L, D | Пуск
TV | S5TIME | I, Q, M, L, D | Заданное значение времени
R | BOOL | I, Q, M, L, D | Сброс
BI | WORD | I, Q, M, L, D | Остаток времени в Целом формате
BCD | WORD | I, Q, M, L, D | Остаток времени в BCD формате
Q | BOOL | I, Q, M, L, D | Состояние таймера

Описание

S_PEXT (Extended Pulse S5 Timer – формирователь удлиненного импульса ) Команда Таймер S5 – формирователь удлиненного импульса запускает указанный таймер, если имеется положительный фронт (т.е. изменение состояния сигнала с 0 на 1) на входе S (Start [Пуск]).

Изменение сигнала всегда необходимо для запуска таймера.

Таймер продолжает работать с временем, указанным на входе TV (Time Value [Значение времени]), даже если состояние сигнала на входе S меняется на 0 до истечения времени.

Пока таймер работает, опрос состояния сигнала на 1 на выходе Q дает результат, равный 1.

Таймер перезапускается с заданным временем, если состояние сигнала на входе S меняется с 0 на 1 во время работы таймера.

Изменение с 0 на 1 на входе таймера R (Reset [Сбросить]) во время работы таймера сбрасывает таймер.

Это изменение сбрасывает также в ноль время и базу времени.

Текущее значение времени может быть считано на выходах BI и BCD.

Значение времени на BI представлено в двоичном коде, а на выходе BCD – в двоично-десятичном коде.

Смотри также Размещение таймера в памяти и его компоненты.

Таймер нельзя помещать один в пустой сегмент. Таймер должен иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

На рис. 5-4 показана команда Таймер S5 – формирователь удлиненного импульса, описаны биты слова состояния и показаны характеристики таймера – формирователя удлиненного импульса.

На размещение таймерных блоков накладываются определенные ограничения (см. раздел 2.1).

Временные диаграммы

Таймер удлиненный импульс:

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 (т.е. в RLO имеется положительный фронт), таймер Т 5 запускается.

Таймер продолжает работать с заданным временем 2 секунды даже при наличии отрицательного фронта на входе S.

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 до истечения заданного времени, таймер перезапускается.

Если состояние сигнала на входе I 0.1 меняется с 0 на 1, когда таймер работает, таймер сбрасывается.

Состояние сигнала на выходе Q 4.0 равно 1, пока таймер работает.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


S_ODT формирователем задержки включения с запоминанием

S_ODT : таймер «Задержка включения»

On-Delay S5 Timer - формирователем задержки включения

Символ

Параметр | Тип данных | В области памяти | Описание
T no. | TIMER | T | Номер таймера (зависит от возможностей контроллера)
S | BOOL | I, Q, M, L, D | Пуск
TV | S5TIME | I, Q, M, L, D | Заданное значение времени
R | BOOL | I, Q, M, L, D | Сброс
BI | WORD | I, Q, M, L, D | Остаток времени в Целом формате
BCD | WORD | I, Q, M, L, D | Остаток времени в BCD формате
Q | BOOL | I, Q, M, L, D | Состояние таймера

Описание

S_ODT: (таймер «Задержка включения») запускает заданный таймер если имеется нарастающий фронт (изменение состояния сигнала с 0 на 1) на входе запуска (S). Для запуска таймера всегда необходим фронт сигнала.

Таймер продолжает работать в течение времени, заданного на входе TV, пока состояние сигнала на входе S равно 1.

Выход Q выдает 1, когда время истекло без ошибок при состоянии сигнала на входе S равном 1.

Если состояние сигнала на входе S меняется с 1 на 0 во время работы таймера, таймер останавливается.

В этом случае выход Q остается в 0.

Если во время работы таймера происходит изменение с 0 на 1 сигнала на входе сброса (R), то таймер сбрасывается.

Это изменение сбрасывает в ноль время и базу времени.

На выходе Q выдается 0.

При этом таймер сбрасывается независимо от сигнала на входе S .

Текущее значение времени может быть считано на выходах BI и BCD.

Значение времени на BI представлено в двоичном формате, а на BCD - в двоично-десятичном формате. Это время равно разнице между начальным значением, заданным на входе TV и временем , прошедшим с момента запуска таймера.

Смотри также Размещение таймера в памяти и его компоненты.

Таймер нельзя помещать один в пустой сегмент. Таймер должен иметь предшествующее соединение.

Временные диаграммы

Таймер с задержкой включения:

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Example

Если состояние сигнала на входе I0.0 меняется с 0 на 1 (нарастающий фронт RLO), таймер T5 запускается.

Если заданное время (2s) истекло и состояние сигнала на входе I0.0 равно 1, то состояние сигнала на выходе Q4.0 становится равным 1.

Если состояние сигнала на входе I0.0 меняется с 1 на 0, то таймер останавливается и выход Q4.0 равен 0 (если состояние сигнала на входе I0.1 меняется с 0 на 1, время сбрасывается независимо от того – работал таймер или нет).

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


S_ODTS S5 таймер с задержкой включения с запоминанием

Retentive On-Delay S5 таймер - с задержкой включения с запоминанием

 Top Previous Next

Retentive On-Delay S5 таймер - с задержкой включения с запоминанием

Символ

Параметр | Тип данных | В области памяти | Описание
T no. | TIMER | T | Номер таймера (зависит от возможностей контроллера)
S | BOOL | I, Q, M, L, D | Пуск
TV | S5TIME | I, Q, M, L, D | Заданное значение времени
R | BOOL | I, Q, M, L, D | Сброс
BI | WORD | I, Q, M, L, D | Остаток времени в Целом формате
BCD | WORD | I, Q, M, L, D | Остаток времени в BCD формате
Q | BOOL | I, Q, M, L, D | Состояние таймера

Описание

S_ODTS: ( Таймер «Задержка включения с памятью») запускает заданный таймер, если имеется нарастающий фронт на входе запуска (S). Для запуска таймера всегда необходимо изменение сигнала.

Таймер продолжает работать в течение времени, заданного на входе TV, даже если состояние сигнала на входе S меняется на 0 до истечения заданного времени.

Состояние сигнала на выходе Q выдает значение 1, по истечении заданного времени, независимо от состояния сигнала на входе S.

Таймер перезапускается с заданным временем, если состояние сигнала на входе S меняется с 0 на 1 во время работы таймера.

Изменение с 0 на 1 сигнала на входе сброса (R) таймера сбрасывает таймер независимо от состояния RLO на входе S.

Текущее значение времени может быть считано на выходах BI и BCD.

Значение времени на BI представлено в двоичном формате, а на BCD - в двоично-десятичном формате.

Это время равно разнице между начальным значением, заданным на входе TV и временем , прошедшим с момента запуска таймера.

Таймер нельзя помещать один в пустой сегмент. Таймер должен иметь предшествующее соединение.

Временные диаграммы

Таймер задержки включения с запоминанием:

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 меняется с 0 на 1 (нарастающий фронт RLO), таймерT5 запускается .Таймер продолжает работат несмотря на изменение сигнала на входе I0.0 с 1 на 0.

Если состояние сигнала на входе I0.0 меняется с 0 на 1 до истечения заданного времени, таймер перезапускается.

Состояние сигнала на выходе Q4.0 устанавливается в 1 по истечении заданного времени .

(Если состояние сигнала на входе I0.1 меняется с 0 на 1, время сбрасывается независимо от RLO на входе S).

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


S_OFFDT S5 таймер с задержкой выключения

S_OFFDT : Off-Delay S5 Timer - с задержкой выключения

S_OFFDT : Off-Delay S5 Timer - с задержкой выключения

Символ

Параметр | Тип данных | В области памяти | Описание
T no. | TIMER | T | Номер таймера (зависит от возможностей контроллера)
S | BOOL | I, Q, M, L, D | Пуск
TV | S5TIME | I, Q, M, L, D | Заданное значение времени
R | BOOL | I, Q, M, L, D | Сброс
BI | WORD | I, Q, M, L, D | Остаток времени в Целом формате
BCD | WORD | I, Q, M, L, D | Остаток времени в BCD формате
Q | BOOL | I, Q, M, L, D | Состояние таймера

Описание

S_OFFDT : ( Таймер «Задержка выключения») запускает заданный таймер, если имеется падающий фронт на входе запуска (S).

Для запуска таймера всегда необходимо изменение сигнала.

Выход Q равен 1, когда состояние сигнала на входе S равно 1 или пока таймер работает.

Таймер сбрасывается, когда состояние сигнала на входе S меняется с 0 на 1 во время работы таймера. Таймер не перезапускается, пока состояние сигнала на входе S снова не изменится с 1 на 0.

Изменение с 0 на 1 сигнала на входе сброса (R) таймера во время его работы сбрасывает таймер.

Текущее значение времени может быть считано на выходах BI и BCD.

Значение времени на BI представлено в двоичном формате, а на BCD - в двоично-десятичном формате. Это время равно разнице между начальным значением, заданным на входе TV и временем , прошедшим с момента запуска таймера.

Таймер нельзя помещать один в пустой сегмент. Таймер должен иметь предшествующее соединение.

Временные диаграммы

Таймер с задержкой выключения:

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | x | x | x | 1

Пример

Если состояние сигнала на входе I0.0 меняется с 1 на 0, таймер запускается. Выход Q4.0 равен 1 когда I0.0 равен 1 или таймер работает.

Если состояние сигнала на I0.1 меняется с 0 на 1 когда таймер работает, то таймер сбрасывается.

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


---( SP ) Катушка с таймером – формирователем импульса

---( SP ) Катушка с таймером – формирователем импульса

Символ

<T номер>

---( SP )

<время>

Параметр | Тип данных | В области памяти | Описание
<T номер> | TIMER | T | Номер таймера (зависит от возможностей контроллера)
<время> | S5TIME | I, Q, M, L, D | Заданное значение времени

Описание

---( SP ) (Катушка с таймером – формирователем импульса) Команда Катушка с таймером – формирователем импульса (SP) запускает указанный таймер с заданным значением времени, если RLO имеет положительный фронт (т.е. в RLO имеет место переход с 0 на 1).

Таймер продолжает работать с заданным временем, пока значение RLO положительно. Опрос состояния сигнала таймера на 1 дает результат, равный 1, пока таймер работает.

Если RLO меняется с 1 на 0 до истечения заданного времени, то таймер останавливается. В этом случае опрос состояния сигнала на 1 дает результат, равный 0.

Единицами времени являются d (дни), h (часы), m (минуты), s (секунды) и ms (миллисекунды). За информацией о размещении таймера в памяти и его компонентах обратитесь к разделу 5.1.

Смотри также Размещение таймера в памяти и его компоненты and S_PULSE (Pulse S5 Timer – формирователь импульса).

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | - | - |

Пример

тоже самое с другим оператором

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 (т.е. в RLO имеет место положительный фронт),

то таймер Т 5 запускается.

Таймер продолжает работать с заданным временем в 2 секунды, пока состояние сигнала на входе I 0.0 равно 1.

Если состояние сигнала на входе I 0.0 меняется с 1 на 0 до истечения заданного времени, то таймер останавливается.

Состояние сигнала на выходе Q 4.0 равно 1, пока таймер работает.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


---( SE ) Катушка с таймером – формирователем удлиненного импульса

---( SE ) Катушка с таймером – формирователем удлиненного импульса

Символ

<T номер>

---( SE )

<время>

Параметр | Тип данных | В области памяти | Описание
<T номер> | TIMER | T | Номер таймера (зависит от возможностей контроллера)
<время> | S5TIME | I, Q, M, L, D | Заданное значение времени

Описание

---( SE ) (Катушка с таймером – формирователем удлиненного импульса) Команда Катушка с таймером формирователем удлиненного импульса (SE) запускает указанный таймер с заданным значением времени, если RLO имеет положительный фронт (т.е. в RLO имеет место переход с 0 на 1).

Таймер продолжает работать с заданным временем, даже если RLO становится равным 0 до истечения этого времени. Опрос состояния сигнала таймера на 1 дает результат, равный 1, пока таймер работает. Если RLO изменяется с 0 на 1 во время работы таймера, то таймер перезапускается с заданным временем. За информацией о размещении таймера в памяти и его компонентах обратитесь к разделу 5.1.

Смотри также Размещение таймера в памяти и его компоненты and S_PEXT (Extended Pulse S5 Timer – формирователь удлиненного импульса ).

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | - | - |

Пример

тоже самое с другим оператором

Если состояние сигнала на I 0.0 изменяется с 0 на 1 (т.е. в RLO имеет место положительный фронт), то таймер Т 5

запускается. Таймер продолжает работать несмотря на отрицательный фронт в RLO. Если состояние сигнала на

I 0.0 изменяется с 0 на 1 до истечения заданного времени, то таймер перезапускается.

Состояние сигнала на выходе Q 4.0 равно 1, пока таймер работает. T 5 Q 4.0

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


---( SD ) Катушка с таймером – формирователем задержки включения

---( SD ) Катушка с таймером – формирователем задержки включения

Символ

<T номер>

---( SD )

<время>

Параметр | Тип данных | В области памяти | Описание
<T номер> | TIMER | T | Номер таймера (зависит от возможностей контроллера)
<время> | S5TIME | I, Q, M, L, D | Заданное значение времени

Описание

---( SD ) (On Delay Timer Coil) Команда Катушка с таймером формирователем задержки включения (SD) запускает указанный таймер, если RLO имеет положительный фронт (т.е. в RLO имеет место переход с 0 на 1). Опрос состояния таймера на 1 дает результат, равный 1, когда указанное время истекло без ошибок, а RLO еще равен 1. Когда RLO изменяет свое значение с 1 на 0 во время работы таймера, таймер останавливается. В этом случае is case, a signal state c опрос состояния сигнала на 1 всегда дает результат, равный 0.

За информацией о размещении таймера в памяти и его компонентах обратитесь к разделу Размещение таймера в памяти и его компоненты и S_ODT (On-Delay S5 Timer - формирователем задержки включения с запоминанием).

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | - | - |

Пример

тоже самое с другим оператором

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 (т.е. имеет место положительный фронт в RLO), то таймер Т 5 запускается Если время истекло, а состояние сигнала на входе I 0.0 еще равно 1, то выход Q 4.0 равен 1. Если состояние сигнала на входе I 0.0 меняется с 1 на 0, то таймер останавливается, а выход Q 4.0 становится равным 0.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


---( SS ) Катушка с таймером – формирователем задержки включения с запоминанием

---( SS ) Катушка с таймером – формирователем задержки включения с запоминанием

Символ

<T номер>

---( SS )

<время>

Параметр | Тип данных | В области памяти | Описание
<T номер> | TIMER | T | Номер таймера (зависит от возможностей контроллера)
<время> | S5TIME | I, Q, M, L, D | Заданное значение времени

Описание

---( SS ) (Retentive Катушка с таймером – формирователем задержки включения) Команда Катушка с таймером формирователем задержки включения с запоминанием (SS) запускает указанный таймер, если RLO имеет положительный фронт (т.е. в RLO имеет место переход с 0 на 1).

Таймер продолжает работать с указанным временем, даже если RLO меняется на 0 до истечения времени. Опрос состояния таймера на 1 дает результат, равный 1, когда время истекло, независимо от RLO.

Таймер перезапускается с заданным временем, если во время работы таймера RLO меняется с 0 на 1.

За информацией о размещении таймера в памяти и его компонентах обратитесь к разделу Размещение таймера в памяти и его компоненты и S_ODTS (Retentive On-Delay S5 Timer - формирователем задержки включения с запоминанием).

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | - | - |

Пример

тоже самое с другим оператором

Если состояние сигнала на I 0.0 меняется с 0 на 1 (нарастающий фронт в RLO), то таймер Т5 запускается. Таймер продолжает работать, даже если состояние сигнала на входе I 0.0 меняется с 1 на 0.

Если состояние сигнала на входе I 0.0 меняется с 0 на 1 до истечения заданного времени, то таймер Т 5 перезапускается. Выход Q 4.0 становится равным 1, когда время истекло.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


---( SF ) Катушка с таймером – формирователем задержки выключения

---( SF ) Катушка с таймером – формирователем задержки выключения

Символ

<T номер>

---( SF )

<время>

Параметр | Тип данных | В области памяти | Описание
<T номер> | TIMER | T | Номер таймера (зависит от возможностей контроллера)
<время> | S5TIME | I, Q, M, L, D | Заданное значение времени

Описание

---( SF ) (Катушка с таймером – формирователем задержки выключения) Команда Катушка с таймером формирователем задержки выключения (SF) запускает указанный таймер, если RLO имеет отрицательный фронт (т.е. в RLO имеет место переход с 1 на 0). Результат опроса состояния сигнала таймера на 1 равен 1, когда RLO равен 1 или когда таймер работает. Когда RLO изменяется с 0 на 1 во время работы таймера, таймер сбрасывается.

Таймер не перезапускается, пока RLO не поменяет свое значение с 1 на 0.

За информацией о размещении таймера в памяти и его компонентах обратитесь к разделу Размещение таймера в памяти и его компоненты and S_OFFDT (Off-Delay S5 Timer - формирователем задержки выключения с запоминанием).

Выходную катушку нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  | - | - |

Пример

тоже самое с другим оператором

Если состояние сигнала на входе I 0.0 меняется с 1 на 0, то таймер запускается.

Если состояние сигнала на входе I 0.0 меняется с 0 на 1, то таймер сбрасывается.

Состояние сигнала на выходе Q 4.0 равно 1, когда состояние сигнала на входе I 0.0 равно 1, или когда таймер работает.

Примеры других предустановленных значений времени:

Возможные единицы: h (часы), m (минуты), s (секунды), ms (миллисекунды)

S5T#4s --> 4 секунды

S5T#1h_15m --> 1 час и 15 минут

S5T#2h_46m_30s-->2 часа, 46 минут и 30 секунд

S_PULSE | S_PEXT | S_ODT | S_ODTS | S_OFFDT | Clock_Memory
---( SP ) | ---( SE ) | ---( SD ) | ---( SS ) | ---( SF ) | Обзор


MOVE : Передача значения

MOVE : Передача значения

Обозначение

Параметр | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
IN | Все Элементарные Типы данных 8,16 или 32-битовые | I, Q, M, L, D или константа | Исходная область -32768 .... +32767 L# -2147483648 .... L#+2147483647 B#16#FF W#16#FFFF DW#16#FFFFFFFF
OUT | Все Элементарные Типы данных 8,16 или 32-битовые | I, Q, M, L, D | Целевая область

Инструкция MOVE (Передать значение) активируется при разрешении на входе EN.

Значение, указанное на входе IN, копируется в адрес, указанный на выходе OUT.

ENO имеет то же состояние сигнала, что и EN. Инструкция MOVE позволяет передавать данные с шириной доступа BYTE, WORD или DWORD.

Типы данных, определенные пользователем, такие как массивы или структуры, должны копироваться с помощью системной функции ”BLKMOV” (SFC 20).

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | 1 | - | - | - | - | 0 | 1 | 1 | 1

MCR : Влияние главного управляющего реле

Влияние главного управляющего реле (MCR) проявляется только в случае, если инструкция Move находится внутри MCR зоны.

В этом случае, внутри зоны MCR, если функция MCR включена и разрешающий сигнал подан на вход EN; данные будут скопированы , как описано ранее.

Если функция MCR выключена, то при выполнении функции MOVE , значение "0" будет записано в указанный адрес на выходе OUT независимо от содержимого входа IN .

Различные размеры операндов

Размеры операндов (байт, слово, двойное слово) на входе и выходе блочного элемента MOVE могут быть разными. Если операнд на входе «меньше», чем на выходе, он передается в выходной операнд с правым выравниванием

(значение передаваемого операнда заполняет правые биты результата) и заполнением нулями левой части.

Если входной операнд «больше» выходного операнда, то передается только правая часть операнда, соответствующая выходному операнду.

Рисунок 6.2 объясняет этот факт. Байт или слово на входе загружается с правым выравниванием в аккумулятор 1, а оставшаяся часть заполняется нулями. Байт или слово на выходе OUT извлекается из аккумулятора 1 с правым выравниванием.

При передаче значений между переменными различной ширины доступа, старшие байты отсекаются или заполняются нулями:

Пример: Двойное слово Double Word | 1111 1111 | 0000 1111 | 1111 0000 | 0101 0101
Move | Результат
В двойное слово: | 1111 1111 | 0000 1111 | 1111 0000 | 0101 0101
В слово: |  |  | 1111 0000 | 0101 0101
В байт: |  |  |  | 0101 0101
Пример: Байт : Byte |  |  |  | 1111 0000
Move | Результат
В байт: |  |  |  | 1111 0000
В слово: |  |  | 0000 0000 | 1111 0000
В двойное слово: | 0000 0000 | 0000 0000 | 0000 0000 | 1111 0000

Пример

A I 1.0

JNB _001

L MW 10 //собственно

T DBW 12 //команда MOVE

SET

SAVE

CLR

_001: A BR

= Q 4.0

Инструкция выполняется, если вход I0.0 = 1. Содержимое MW10 копируется в слово данных 12 открытого блока данных DB.

Если инструкция выполняется, выход Q4.0 устанавливается в 1.

Если этот пример находится внутри активированной зоны MCR:

• При включенной функции MCR, MW10 копируется в DBW12.

• При выключенной функции MCR, значение "0" записывается в DBW12.


Инструкции с блоками данных

---(OPN) : Открыть блок данных: DB или DI


---(OPN) : Открыть блок данных: DB или DI

Обозначение

<DB no.> or <DI no.>

---(OPN)

Parameter | Тип данных | Область данных | Описание
<DB no.> <DI no.> | BLOCK_DB | DB, DI | Номер блока данных в регистре DB/DI; Допустимые значения зависят от типа CPU

Описание

---(OPN): Вы можете использовать инструкцию Открыть блок данных для открытия глобального блока данных (DB) или экземплярного блока данных (DI).

Инструкция ---(OPN) является безусловным открытием блока данных. Номер блока данных заносится в регистр DB или DI.

Последующие инструкции обращения к данным соответствуют обращению к номеру блока данных ранее открытого через регистры DB и DI.

Катушка, не допускает булевой логики, т.е. устанавливается одна в цепи.

Ошибки программирования в LAD

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | - | - | - | -

Пример

DB10 является текущим открытым блоком. Опрос бита DBX0.0 соответственно производится для бита 0 байта данных 0 блока данных DB10.

Состояние сигнала этого бита присваивается выходу Q4.0.


Инструкции управления выполнения программы

Обзор команд управления программой

Доступны следующие инструкции управления программой:

· · ---(CALL) Вызов функций FC/SFC без параметров
· · CALL_FB Вызов функциональных блоков FB в графическом виде
· · CALL_FC Вызов функций FC в графическом виде
· · CALL_SFB Вызов системного FB в графическом виде
· · CALL_SFC Вызов системноой функции FC в графическом виде
· · RET Return
· · Вызов мультиэкземпляров
· · Вызов библиотечных блоков

• ---( JMP )--- Безусловный переход

• ---( JMP )--- Условный переход

• ---( JMPN )--- Jump-If-Not

· · Важные замечания по использованию MCR функций
· · ---(MCR<) Включение Master Control Relay
· · ---(MCR>) Выключение Master Control Relay
· · ---(MCRA) Активация Master Control Relay
· · ---(MCRD) Дективация Master Control Relay

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


Обзор инструкций перехода

Обзор инструкций перехода

Описание

Вы можете использовать эти инструкции во всех логических блоках , например в

организационных блоках(OBs), функциональных блоках (FBs) и функциях (FCs).

Возможно использование следующих инструкций перехода:

• ---( JMP )--- Безусловный переход

• ---( JMP )--- Условный переход при RLO=1

• ---( JMPN )--- Jump-If-Not при RLO=0

Метка перехода как операнд

Адресом в инструкции перехода является метка . Метка перехода указывает место в программе, на которое необходимо перейти. Вы вводите имя метки над блоком JMP.

Имя метки состоит максимум из четырех символов. Первый символ должен быть буквой, остальные могут быть буквами или цифрами (например, SEG3).

Метка перехода как место назначения

Целевая метка вводится в начале сегмента выбором элемента LABEL из каталога элементов контактного плана. В этом блоке записывается имя метки

Проверяя биты слова состояния можно создать соответствующий условный переход аналогичный в языке STL.

Вы можете использовать следующие инструкции STL перехода для безусловного прерывания линейного выполнения программы :

• JU Безусловный переход

• JL Распределенный переход

Вы можете использовать следующие инструкции STL условного перехода в зависимости от результата логической операции (RLO) предыдущей логической инструкции:

• JC Переход при RLO = 1

• JCN Переход при RLO = 0

• JCB Переход при RLO = 1 с сохранением в BR

• JNB Переход при RLO = 0 с сохранением в BR

Следующие инструкции STL выполняют условный переход в зависимости от состояния битов слова состояния:

• JBI Переход при BR = 1

• JNBI Переход при BR = 0

• JO Переход при OV = 1

• JOS Переход при OS = 1

Следующие инструкции STL выполняют условный переход в зависимости от результатов вычислений:

• JZ Переход при нулевом результате

• JN Переход при ненулевом результате

• JP Переход при положительном результате

• JM Переход при отрицательном результате

• JPZ Переход при неотрицательном результате

• JMZ Переход при отрицательном или нулевом результате

• JUO Переход при недействительном результате

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


Logic Control Instructions

Обзор инструкций перехода

Обзор инструкций перехода

Описание

Вы можете использовать эти инструкции во всех логических блоках , например в

организационных блоках(OBs), функциональных блоках (FBs) и функциях (FCs).

Возможно использование следующих инструкций перехода:

• ---( JMP )--- Безусловный переход

• ---( JMP )--- Условный переход

• ---( JMPN )--- Jump-If-Not

Метка перехода как операнд

Адресом в инструкции перехода является метка . Метка перехода указывает место в программе, на которое необходимо перейти. Вы вводите имя метки над блоком JMP.

Имя метки состоит максимум из четырех символов. Первый символ должен быть буквой, остальные могут быть буквами или цифрами (например, SEG3).

Метка перехода как место назначения

Целевая метка вводится в начале сегмента выбором элемента LABEL из каталога элементов контактного плана. В этом блоке записывается имя метки

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


LABEL : Метка перехода

LABEL : Метка перехода

Обозначение

Описание

Метка перехода - это идентификатор места назначения инструкции перехода.

Первый символ должен быть буквой алфавита, остальные могут быть цифрами (например, CAS1).

Метка перехода должна существовать для любой инструкции перехода (JMP или JMPN).

Ограничения: Имя метки не более 4-х символов.

Пример

При I0.0 = 1, переход на метку CAS1 будет выполнен.

Инструкция сброса выхода Q4.0 не будет выполняться, даже если состояние сигнала I0.3 равно1.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---( JMPN ) переход при RLO=0

---( JMPN ) Переход при 0

Обозначение

<Имя метки>

---( JMPN )

Описание

---( JMPN ): Инструкция Переход при 0 соответствует команде “перейти на метку”, которая выполняется, если RLO равен 0.

Целевая метка (LABEL) должна устанавливаться для каждой инструкции перехода ---( JMPN ).

Ни одна из команд между командой перехода и меткой не выполняется.

Если условный переход не выполняется, то RLO после инструкции перехода устанавливается в "1".

Выходную катушку ---( JMPN ) нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Нельзя использоваться как параллельные выходы.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - |  |  |  |

Пример

Если состояние сигнала на входе I0.0 равно 0, переход на метку CAS1 будет выполнен. Инструкция сброса выхода Q4.0 не будет выполняться, даже если состояние сигнала I0.3 равно 1.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---( JMP ) переход внутри блока при RLO=1

---( JMP ) переход внутри блока

---( JMP ) переход внутри блока

производит переход к метке при RLO 1.

Имеются две команды перехода:

---(JMP) Безусловный переход

---(JMP) Условный переход отличается от безусловного наличием логической инструкции между питающей шиной слева и катушкой

Нельзя использоваться как параллельные выходы.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(JMP) : Безусловный переход

Обозначение

<Имя метки>

---( JMP )

Описание

---( JMP ) (переход на метку при RLO 1) выполняется как безусловный переход на метку если нет других элементов контактного плана между этой катушкой и питающей шиной слева.

Метка перехода (LABEL) должна быть установлена для каждого перехода ---( JMP ).

Инструкции между инструкцией перехода и меткой не выполняются.

Нельзя использоваться как параллельные выходы.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | - | - | - | -

Example

Переход всегда выполняется. Никакие инструкции между командой перехода и меткой не выполняются.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(JMP): Условный переход

Обозначение

<Имя метки>

---( JMP )

Описание

---( JMP ):Инструкция Условный переход (переход внутри блока при RLO 1) работает как условный переход при RLO предыдущей логической инструкции равном "1".

Целевая метка (LABEL) должна быть установлена для каждого перехода ---( JMP ).

Ни одна из команд между командой перехода и меткой не выполняется.

Если условный переход не выполняется, то RLO после инструкции перехода устанавливается в "1".

Нельзя использоваться как параллельные выходы.

Проверяя биты слова состояния можно создать соответствующий условный переход аналогичный в языке STL.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | 1 | 1 | 0

Example

Если состояние сигнала на входе I0.0 равно 1, переход на метку CAS1 будет выполнен.

Инструкция сброса выхода Q4.0 не будет выполняться, даже если состояние сигнала I0.3 равно1.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


Обзор инструкций вызова подпрограмм

Обзор инструкций вызова подпрограмм

Доступны следующие инструкции управления программой:

· · ---(CALL) Вызов функций FC/SFC без параметров
· · CALL_FB Вызов функциональных блоков FB в графическом виде
· · CALL_FC Вызов функций FC в графическом виде
· · CALL_SFB Вызов системного FB в графическом виде
· · CALL_SFC Вызов системноой функции FC в графическом виде
· · RET Return

· · Вызов мультиэкземпляров
· · Вызов библиотечных блоков

· · Важные замечания по использованию MCR функций
· · ---(MCR<) Включение Master Control Relay
· · ---(MCR>) Выключение Master Control Relay
· · ---(MCRA) Активация Master Control Relay
· · ---(MCRD) Дективация Master Control Relay

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(Call) : Вызов FC (SFC) без параметров

---(Call) : Вызов FC (SFC) без параметров

Обозначение

<FC/SFC no.>

---( CALL )

Parameter | Тип данных | Область данных | Описание
<FC/SFC no.> | BLOCK_FC BLOCK_SFC | - | Номер FC/SFC; диапазон номеров зависит от типа CPU

Описание

---(Call) С помощью инструкции Вызвать FC/SFC без параметров можно вызвать функцию (FC) или системную функцию (SFC), которые не имеют параметров.

Вызов выполняется только при подаче RLO 1 на управляющую катушку CALL.

Если инструкция выполняется, то выполняются следующие функции:

• Сохраняется адрес, необходимый для возврата в вызывающий блок.

• Предыдущая область локальных данных заменяется текущей областью локальных данных.

• Бит MA (бит активации MCR) записывается в стек блоков (BSTACK).

• Для вызываемой FC или SFC создается новая область локальных данных.

Нельзя использоваться как параллельные выходы.

Слово состояния

 |  | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
Unconditional: | устанавливает: | - | - | - | - | 0 | 0 | 1 | - | 0
Conditional: | устанавливает: | - | - | - | - | 0 | 0 | 1 | 1 | 0

Пример

На рисунке выше показана часть пользовательской программы, написанной в контактном плане.

В теле данного функционального блока открывается блок данных DB10 и активируется зона MCR .

Если выполняется безусловный вызов FC10, то выполняются следующие функции:

Сохраняется адрес, необходимый для возврата в текущий FB, а также регистры для DB10 и для экземпляра блока данных FB.

Помещается в стек блоков (BSTACK) бит MA, установленный в 1 в команде MCRA , и этот бит сбрасывется в 0 для вызванного FC10.

Исполнение программы продолжается в FC10.

Если Вы хотите использовать функцию MCR в FC10, Вы должны ее там повторно ативировать.

Когда FC10 завершается, выполнение программы продолжается в вызывающем FB.

Бит MA восстанавливается, DB10 и экземпляр блока данных пользовательского FB снова являются текущими DB независимо от того, какие DB были использованы в FC10.

После возврата из FC10 состояние сигнала входа. I0.0 присваивается выходу Q4.0.

Вызов FC11 является условным.

Он выполняется только тог да, когда состояние входа I0.1 равно 1.

Если вызов выполняется, то происходит то же самое, что и при вызове FC10.

Замечание

После возврата в вызывающий блок, ранее открытый блок данных остается открытым не во всех случаях. Более подробную информацию Вы найдете в файле README .

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


CALL_FC Вызов функции в графическом виде

CALL_FC Вызов функции в графическом виде

Обозначение

Символьные имена интерфейса зависят от вызываемого блока (сколько и

какие параметры в нем описаны). EN, ENO и имя или номер функции

обязательны.

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
FC no. | BLOCK_FC | - | Номер функции, диапазон номеров зависит от CPU

Описание

CALL_FC (вызов функции в графическом виде) вызывает для выполнения FC при состоянии сигнала на входе EN = 1.

При этом выполняются следующие процедуры:

• Сохранение адреса возврата в вызывающий блок,

• Создание новой области в локальном стеке для вызываемой функции и замена локальных данных вызывающего блока на текущие данные.

• Бит MA (бит активности функции MCR ) сохраняется в BSTACK,

После этого, выполнение программы продолжается в вызванном блоке.

Бит BR позволяет организовать управление выходом ENO.

Пользователь должен назначить необходимый статус этого бита (индикация ошибки) в вызываемом блоке с помощью команды ---(SAVE).

Если в вызываемой функции в таблице описаний созданы параметры типа IN, OUT и IN_OUT, эти переменные появляются в качестве формальных параметров при вызове этого блока.

При вызове функции, Вы должны назначать фактические параметры для всех формальных параметров вызываемой функции.

Задание начальных значений для параметров функции не допускается.

Нельзя использоваться как параллельные выходы.

Слово состояния

 |  | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
Безусловный вызов: | устанавливает: | x | - | - | - | 0 | 0 | x | x | x
Условный вызов: | устанавливает: | - | - | - | - | 0 | 0 | x | x | x

Example

Сегменты на рисунке являются частью пользовательского функционального блока, написанного на языке контактного плана.

В этом блоке открывается блок DB10 и активируется функция MCR.

Если выполняется безусловный вызов FС11, происходит следующее:

Сохраняются точка возврата в вызывающий блок и регистры блоков данных для DB10 и экземплярного блока вызывающего FB.

Бит MA, установленный в 1 инструкцией MCRA сохраняется в стеке блоков BSTACK и сбрасывается в 0 для вызванного блока FС10.

Выполнение программы продолжается в FС10. Если FС10 требуется активация MCR, то это должно быть повторно сделано в самой функции.

Значение RLO должно быть сохранено в бите BR с помощью инструкции---(SAVE) для возможности оценки ошибки в блоке FB.

После выполнения FС10, программа возвращается для выполнения в вызывающий FB. Бит MA восстанавливается, как и номер экземплярного блока данных , восстанавливаемый в регистре DI.

Если FС10 обработан без ошибок, дальнейшая обработка продолжается в зависимости от состояния выхода ENO:

Если состояние сигнала на выходе ENO = 1, производится обработка блока FC11.

Если состояние сигнала на выходе ENO = 0, производится обработка следующего сегмента.

Если FС11 обработан без ошибок то выход ENO и Q4.0 также равны 1.

Замечание

После возврата программы в вызывающий блок, не всегда гарантируется ,

что номер ранее открытого блока данных будет восстановлен. Для справки

обратитесь к файлу README.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


CALL_SFC Вызов системной функции FC в графическом виде

CALL_SFC Вызов системной функции FC в графическом виде

Обозначение

Символьные имена интерфейса зависят от вызываемого блока (сколько и

какие параметры в нем описаны). EN, ENO и имя или номер SFC

обязательны .

Parameter | Тип данных | Область данных | Описание
EN | BOOL | - | Разрешение входа
ENO | BOOL | - | Разрешение выхода
SFC no. | BLOCK_SFC | - | Номер SFC, диапазон номеров зависит от CPU

Описание

CALL_SFС (Вызов SFС в графическом виде) выполняется при состоянии сигнала на входе EN = 1. При исполнении CALL_SFC

выполняются следующие процедуры:

• Сохранение адреса возврата в вызывающий блок,

• Сохранение значений регистров блоков данных (DB и DI),

• Бит MA (бит активности функции MCR ) сохраняется в BSTACK.

• Создание новой области в локальном стеке для вызываемой системной функции .

После этого выполняется программа вызываемой SFС.

Параметр ENO = 1 если блок был обработан и не произошло ошибок .

Нельзя использоваться как параллельные выходы.

Слово состояния

 |  | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
Безусловный | устанавливает: | x | - | - | - | 0 | 0 | x | x | x
По условию: | устанавливает: | - | - | - | - | 0 | 0 | x | x | x

Пример

Сегменты на рисунке являются частью пользовательского функционального блока в контактном плане .

В этом блоке открывается блок DB10 и активируется функция MCR.

Если выполняется безусловный вызов SFС20, происходит следующее:

Сохраняются точка возврата в вызывающий блок и регистры блоков данных для DB10 и экземплярного блока вызывающего FB.

Бит MA , установленный в 1 инструкцией MCRA сохраняется в стеке блоков BSTACK и сбрасывается в 0 для вызванного блока SFС20.

Выполнение программы продолжается в SFС20.

После завершения обработки SFС20 , программа возвращается в вызывающий блок.

Восстанавливается бит МА .

Если SFС20 обработан без ошибок, продолжается обработка в вызывающем блоке и состояние сигнала на выходе ENO = 1 и, соответственно, выход Q4.0 также равен 1.

При ENO = 0, соответственно, и выход Q4.0 также равен 0.

Замечание

После возврата программы в вызывающий блок, не всегда гарантируется ,

что номер ранее открытого блока данных будет восстановлен. Для справки

обратитесь к файлу README.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


CALL_FB : Вызов FB в графическом виде

CALL_FB : Вызов FB в графическом виде

Обозначение

Символьные имена интерфейса зависят от вызываемого блока (сколько и какие параметры в нем описаны).

EN, ENO и имя или номер блока FB обязательны.

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
FB no. DB no. | BLOCK_FB BLOCK_DB | - - | Номера блоков FB/DB, диапазон номеров зависит от CPU

Описание

CALL_FB (Вызов FB в графическом виде) производится при

состоянии сигнала на входе EN = 1. При выполнении команды

CALL_FB выполняются следующие процедуры:

• Сохранение адреса возврата в вызывающий блок,

• Сохранение значений регистров блоков данных (DB и DI),

• Бит MA (бит активности функции MCR ) сохраняется в BSTACK

• Создание новой области в локальном стеке для вызываемого

функционального блока и ее активация вместо локальной области

вызывающего блока.

После этого выполнение программы продолжается в вызванном

функциональном блоке. Для управления выходом ENO используется

оценка бита BR. Пользователь должен сохранять необходимый статус

(сообщение об ошибке) в бите BR с помощью инструкции ---(SAVE).

Нельзя использоваться как параллельные выходы.

Слово состояния

?УТОЧНИТЬ ТАБЛИЦУ

 |  | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
Unconditional: | устанавливает: | x | - | - | - | 0 | 0 | x | x | x
Conditional: | устанавливает: | - | - | - | - | 0 | 0 | x | x | x

Пример

Сегменты на рисунке являются частью пользовательского функционального блока.

В этом блоке открывается блок DB10 и

активируется функция MCR. Если выполняется безусловный вызов FB11, происходит следующее:

Сохраняются точка возврата в вызывающий блок и регистр блоков данных для DB10 и экземплярного блока вызывающего FB.

Бит MA, установленный в 1 инструкцией MCRA сохраняется в стеке блоков BSTACK и сбрасывается в 0 для вызванного блока FB11.

Выполнение программы продолжается в FB11.

Если FB11 требуется активация MCR, то это должно быть повторно сделано в функциональном блоке.

Значение RLO должно быть сохранено в бите BR с помощью инструкции [SAVE] для оценки ошибки в блоке FB.

После выполнения FB11, программа возвращается для выполнения в вызывающий FB.

Бит MA восстанавливается, как и номер экземплярного блока данных , восстанавливаемый в регистре DI.

Если FB11 обработан без ошибок, состояние сигнала на выходе ENO = 1 и ,соответственно, выход Q4.0

также равен 1.

Замечание

После вызова блоков FB/SFB, номер ранее открытого блока данных будет

утерян. Требуемый блок данных нужно снова открыть в вызывающем блоке.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


CALL_SFB Вызов системного FB в графическом виде

CALL_SFB : Вызов системного FB в графическом виде

Обозначение

Символьные имена интерфейса зависят от вызываемого системного блока (сколько и какие параметры в нем описаны). EN, ENO и имя или номер блока SFB обязательны.

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
SFB no. DB no. | BLOCK_SFB BLOCK_DB | - - | Номера блоков SFB/DB ; диапазон номеров зависит от CPU

Описание

CALL_SFB (Вызов SFB в графическом виде) выполняется при состоянии сигнала на входе EN = 1.

При исполнении CALL_SFB выполняются следующие процедуры:

• Сохранение адреса возврата в вызывающий блок,

• Сохранение значений регистров блоков данных (DB и DI),

• Создание новой области в локальном стеке для вызываемого функционального блока и ее активация .

• Бит MA (бит активности функции MCR ) сохраняется в BSTACK

После этого, выполняется программа вызываемого SFB.

Параметр ENO = 1 если блок был обработан без ошибок .

Нельзя использоваться как параллельные выходы.

Слово состояния

?УТОЧНИТЬ ТАБЛИЦУ

 |  | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
Безусловный вызов: | устанавливает: | x | - | - | - | 0 | 0 | x | x | x
Условный вызов: | устанавливает: | - | - | - | - | 0 | 0 | x | x | x

Example

Сегменты на рисунке являются частью пользовательского функционального блока .

В этом блоке открывается блок DB10 и активируется функция MCR.

При безусловном вызове SFB8, происходит следующее:

Сохраняются точка возврата в вызывающий блок и регистры блоков данных для DB10 и экземплярного блока вызывающего FB. Бит MA , установленный в 1 инструкцией MCRA сохраняется в стеке блоков BSTACK и сбрасывается в 0 для вызванного блока SFB8.

Выполнение программы продолжается в SFB8. После завершения обработки SFB8 , программа возвращается в вызывающий блок.

Восстанавливаются бит МА и номер экземплярного блока данных пользовательского FB.

Если SFB8 обработан без ошибок, состояние сигнала на выходе ENO = 1 и, соответственно, выход Q4.0 также равен 1.

Замечание

После вызова блоков FB/SFB, номер ранее открытого блока данных будет утерян.

Требуемый блок данных нужно снова открыть в вызывающем блоке.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(RET) Возврат

---(RET) Возврат

---( RET )

Описание

Инструкция ---(RET) (Возврат) используется для условного окончания блока.

Для этого выхода требуется выполнение некоторой предварительной инструкции.

Выходную катушку ---(RET) нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Нельзя использоваться как параллельные выходы.

Биты слова состояния

Условный возврат (при RLO = "1"):

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | * | - | - | - | 0 | 0 | 1 | 1 | 0

* Инструкция RET стоит в одном ряду с такими инструкциями, как ---(SAVE) , ---(BEC).

Она изменяет бит BR .

Пример

Обработка блока завершается при статусе I0.0 = "1".

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


Вызов мультиэкземпляров

Вызов мультиэкземпляров

Обозначение

Parameter | Тип данных | Область данных | Описание
EN | BOOL | I, Q, M, L, D | Разрешение входа
ENO | BOOL | I, Q, M, L, D | Разрешение выхода
#Variable name | FB, SFB | - | Имя мультиэкземпляра

Описание

Вы создаете мультиэкземпляр при помощи задания в таблице описаний функционального блока статической переменной типа FB.

Только ранее описанные мультиэкземпляры будут отображаться в каталоге программных элементов.

Интерфейс мультиэкземпляра зависит от описанных в нем переменных. Вход EN и выход ENO являются обязательными.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | 0 | 0 | x | x | x

Смотри также Программирование мультиэкземпляра

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функций | ---(MCR>) | ---(MCRD) | ---( JMPN )


Вызов библиотечных блоков

Вызов библиотечных блоков

Библиотеки, установленные в SIMATIC Manager могут использоваться для вызова блоков, которые:

• Встроены в операционную систему Вашего CPU

(Библиотека"Standard Library" в STEP 7 с версии 3 и "stdlibs (V2)" для STEP 7 версии 2)

Можете просто перетащить нужную функцию в свою программу и ввести требуемые параметры.

Чтобы узнать назначение функции достаточно встать на неё мышью и нажать F1.

• Вы создаете самостоятельно для последующего использования.

Нельзя использоваться как параллельные выходы.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )


Использованик MCR функций

Использование MCR функций

Важные замечания по использованию MCR функций

MCR-зависимость

MCR-область

MCR-зона

MCR-установка и сброс битов

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )


Важные замечания по использованию MCR

Take care with blocks in which the Master Control Relay was activated with MCRA:·

If the MCR is deactivated, the value 0 is written by all assignments in program segments between ---(MCR<) and ---(MCR>). This is valid for all boxes which contain an assignment, including the paramter transfer to blocks.

· The MCR is deactivated if the RLO was = 0 before an MCR< instruction.

Danger: PLC in STOP or undefined runtime characteristics!The compiler also uses write access to local data behind the temporary variables defined in VAR_TEMP for calculating addresses. This means the following command sequences will set the PLC to STOP or lead to undefined runtime characteristics:

Formal parameter access

· Access to components of complex FC parameters of the type STRUCT, UDT, ARRAY, STRING

· Access to components of complex FB parameters of the type STRUCT, UDT, ARRAY, STRING from the IN_OUT area in a block with multiple instance capability (version 2 block).

· Access to parameters of a function block with multiple instance capability (version 2 block) if its address is greater than 8180.0.

· Access in a function block with multiple instance capability (version 2 block) to a parameter of the type BLOCK_DB opens DB0. Any subsequent data access sets the CPU to STOP. T 0, C 0, FC0, or FB0 are also always used for TIMER, COUNTER, BLOCK_FC, and BLOCK_FB.

Parameter passing

· Calls in which parameters are transferred.

LAD/FBD

· T branches and Промежуточная катушка - промежуточный результатs in Ladder or FBD starting with RLO = 0.

Remedy

Free the above commands from their dependence on the MCR:

1. Deactivate the Master Control Relay using the Дективация Master Control Relayinstruction before the statement or network in question.

2. Activate the Master Control Relay again using the Активация Master Control Relay instruction after the statement or network in question.

Главное реле управления

В системах управления контактами главное реле управления (Master Control Relay, MCR) активирует или деактивирует секцию системы управления, которая состоит из одной или более цепей.

В деактивированной цепи

- отключаются все несохраняющие контакторы и

- сохраняют состояния сохраняющие контакторы.

Состояния контакторов изменить нельзя до активации MCR.

Из-за этого свойства MCR чаще используется в языке программирования LAD, хотя язык программирования FBD также предоставляет функции, требующиеся для MCR.

Обратите внимание, что отключение (снятие напряжения) с использованием «программного» главного реле управления не является заменой аварийного отключения (EMERGENCY OFF) или средств безопасности! Используйте выключение главного реле управления точно так же, как и выключение с помощью функции для работы с памятью!

Используя MCRA и MCRD, вы можете обозначить область в вашей программе, в которой будет действовать MCR-зависимость.

В этой области с помощью MCR< и MCR> определяются одна или более зон, в которых MCR-зависимость может быть активирована или отключена.

Можно построить вложения MCR-зон.

Результат логической операции (RLO), непосредственно предшествующий MCR-зоне, включает или деактивирует MCR-зависимость в этой зоне.

MCR-зависимость

MCR-область

MCR-зона

MCR-установка и сброс битов


MCR-зона

MCR-зона

LAD: MCR-зону (MCR zone) вы можете определить с помощью катушки MCR< (начало) и катушки MCR> (конец MCR-зоны). Для катушки MCR< требуется предшествующая логическая операция; катушка MCR> подключается непосредственно к левой направляющей (шине питания).

Обе катушки завершают цепь.

Внутри этой хоны вы можете управлять MCR-зависимостью при помощи RLO, предшествующего катушке MCR<.

Если в катушке течет ток, MCR-зависимость отключена («нормальная» обработка); если ток в катушке не течет, MCR-зависимость активирована.

MCR-зону вы можете открыть внутри другой MCR-зоны.

Глубина вложения для MCR-зон равна 8, то есть можно открыть до восьми зон перед тем, как их закрыть.

Управление MCR-зависимостью вложенной MCR-зоны осуществляется с помощью RLO в момент ее открытия. Однако, если MCR-зависимость разрешена во «внешней» зоне, вы не сможете отключить MCR-зависимость в «подчиненной» MCR-зоне.

Главное реле управления первой MCR-зоны управляет MCR-зависимостью во всех вложенных.

Вызов блока внутри MCR-зоны не меняет ее глубину вложения.

Программа вызванного блока все еще находится в MCR-зоне, которая была открыта, когда блок вызывался (и управляется отсюда).

Тем не менее, вы должны повторно активировать MCR-зависимость в вызванном блоке путем открытия MCR-области.

На рисунке меркеры М 10.0 и М 11.0 управляют MCR-зависимостями.

MCR-зоны в случае смены блоков

При помощи меркера М 10.0 вы можете активировать MCR-зависимость в обеих зонах (значением «0») вне зависимости от сигнального состояния меркера М 11.0.

Если MCR-зависимость для зоны 1 отключена с помощью М 10.0 = «1», можно управлять MCR-зависимостью зоны 2 меркером М 11.0 (таблица 17.1).

М 10.0 | М 11.0 | Зона 1 | Зона 2
«1» | «1» | MCR-зависимости нет | MCR-зависимости нет
«1» | «0» | MCR-зависимости нет | MCR-зависимость активирована
«0» | «1» или «0» | MCR-зависимость активирована | MCR-зависимость активирована

MCR-зависимость

MCR-область

MCR-зона

MCR-установка и сброс битов


---(MCR<) Включение Master Control Relay

---(MCR<) Включение Master Control Relay

Важные замечания по использованию функций MCR

Обозначение

---(MCR<)

---(MCR<) Инструкция Включить Master Control Relay (Главное управляющее реле) запускает операцию, которая сохраняет RLO в стеке MCR и открывает зону действия MCR.

Стек MCR работает по принципу буфера LIFO (Last In, First Out - последний вошел, первый вышел) и он имеет глубину в восемь записей. .

Если стек уже полон, инструкция ---(MCR<) генерирует ошибку стека MCR (MCRF).

На следующие инструкции, описанные как MCR инструкции, оказывает влияние RLO, сохраненное в стеке MCR, при открытии зоны действия MCR:

· --( # ) Промежуточная катушка - промежуточный результат

· --( ) Output

· --( S ) Set Output

· --( R ) Reset Output

· RS Reset Flip Flop

· SR Set Flip Flop

· MOVE Передача значения

Выходную катушку ---(MCR<) нельзя помещать одну в пустой сегмент. Катушка должна иметь предшествующее соединение.

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | 1 | - | 0

Пример

Зона MCR активируется при выполнении инструкции MCRA.

После этого возможно активировать до восьми вложенных зон MCR.

В примере выше показаны две такие зоны.

Функции выполняются следующим образом:

I0.0 = "1" (MCR зона 1 ВКЛ.): статус I0.4 передается на выход Q4.1

I0.0 = "0" (MCR зона 1 ВЫКЛ): Q4.1 в "0" независимо от статуса I0.4

I0.1 = "1" (MCR зона 2 ВКЛ): Q4.0 устанавливается в "1" если I0.3 в "1"

I0.1 = "0" (MCR зона 2 ВЫКЛ): Q4.0 остается неизменным независимо от статуса входа I0.3.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(MCR>) Выключение Master Control Relay

---(MCR>) Выключение Master Control Relay

Важные замечания по использованию функций MCR

Обозначение

---(MCR>)

Описание

---(MCR>) Инструкция Выключить Master Control Relay (Главное управляющее реле) запускает операцию, которая восстанавливает RLO из стека MCR и закрывает зону действия MCR.

Стек MCR работает по принципу буфера LIFO (Last In, First Out - последний вошел, первый вышел) и он имеет глубину в восемь записей. .

Если стек уже пуст, инструкция ---(MCR>) генерирует ошибку стека MCR (MCRF).

На следующие инструкции, описанные как MCR инструкции, оказывает влияние RLO, сохраненное в стеке MCR, при открытии зоны действия MCR:

· --( # ) Промежуточная катушка - промежуточный результат

· --( ) Output

· --( S ) Set Output

· --( R ) Reset Output

· RS Reset Flip Flop

· SR Set Flip Flop

· MOVE Передача значения

Катушка, не допускает булевой логики, т.е. устанавливается одна в цепи (См. Ошибки программирования в LAD)

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | 0 | 1 | - | 0

Пример

Зона MCR активируется при выполнении инструкции MCRA.

После этого возможно активировать до восьми вложенных зон MCR.

В примере выше показаны две такие зоны.

Первая инструкция ---(MCR>) (MCR ВЫКЛ) относится ко второй инструкции ---(MCR<) (MCR ВКЛ).

Все инструкции между ними относятся ко 2 зоне MCR.

Функции выполняются следующим образом:

I0.0 = "1: статус I0.4 передается на выход Q4.1

I0.0 = "0": Q4.1 в "0" независимо от статуса I0.4

I0.1 = "1: Q4.0 устанавливается в "1" если I0.3 в "1"

I0.1 = "0" :Q4.0 остается неизменным независимо от статуса входа I0.3.

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(MCRA) Активация Master Control Relay

---(MCRA) Активация Master Control Relay

Важные замечания по использованию функций MCR

Обозначение

---(MCRA)

Описание

---(MCRA) (Активировать Master Control Relay) Эта инструкция активирует функцию главного управляющего реле (MCR).

После выполнения этой инструкции можно программировать работу в зоне MCR с помощью инструкций:

· ---(MCR<)

· ---(MCR>)

Катушка, не допускает булевой логики, т.е. устанавливается одна в цепи (См. Ошибки программирования в LAD)

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | - | - | - | -

Пример

MCR зона активируется с помощью инструкции MCRA.

Инструкции между MCR< и MCR> (выходы Q4.0, Q4.1) обрабатываются следующим образом:

I0.0 = "1" ( MCR ВКЛ ): Q4.0 устанавливается в"1" если I0.3 имеет статус "1", останется неизменной при I0.3 в "0" и статус I0.4 присваивается выходу Q4.1.

I0.0 = "0" ( MCR ВЫКЛ): Q4.0 остается неизменным независимо от статуса I0.3 и выход Q4.1 в "0" независимо от статуса входа I0.4

Инструкция ---(MCRD) деактивирует зону MCR. Это означает, что Вы не можете более использовать инструкции ---(MCR<) и ---(MCR>).

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )


---(MCRD) Деактивация Master Control Relay

---(MCRD) Деактивация Master Control Relay

Важные замечания по использованию функций MCR

Обозначение

---(MCRD)

Описание

---(MCRD) (Деактивировать Master Control Relay) Эта инструкция деактивирует функцию главного управляющего реле(MCR).

После выполнения этой инструкции нельзя программировать работу в зоне MCR.

Катушка, не допускает булевой логики, т.е. устанавливается одна в цепи (См. Ошибки программирования в LAD)

Слово состояния

 | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC
устанавливает: | - | - | - | - | - | - | - | - | -

Пример

MCR зона активируется с помощью инструкции MCRA .

Инструкции между MCR< и MCR> (выходы Q4.0, Q4.1) обрабатываются следующим образом:

I0.0 = "1" ( MCR ВКЛ ): Q4.0 устанавливается в"1" если I0.3 имеет статус "1", останется неизменной при I0.3 в "0" и статус I0.4 присваивается выходу Q4.1.

I0.0 = "0" ( MCR ВЫКЛ): Q4.0 остается неизменным независимо от статуса I0.3 и выход Q4.1 в "0" независимо от статуса входа I0.4

Инструкция ---(MCRD) деактивирует зону MCR. Это означает, что вы не можете более использовать инструкции ---(MCR<) и ---(MCR>).

---(CALL) | CALL_FB | CALL_SFB | Вызов мультиэкземпляров | Label | ---(MCR<) | ---(MCRA) | ---( JMP )
RET | CALL_FC | CALL_SFC | Вызов библиотечных блоков | MCR функции | ---(MCR>) | ---(MCRD) | ---( JMPN )

}


Сложение с заданием EN и ENO

Сложение с заданием EN и ENO

При сложении с использованием EN и ENO заданий, следующие STL

инструкции будут созданы:

1 A I 0.0 // Задание входа EN

2 JNB _001 // Запись RLO в BR и переход при RLO = 0

3 L in1 // Загрузка слагаемого 1

4 L in2 // Загрузка слагаемого 2

5 +I // Сложение

6 T out // Вывод значения суммы

7 AN OV // Оценка переполнения

8 SAVE // Сохранение ошибки в BR

9 CLR // Первичный опрос

10 _001: A BR // Запись BR в RLO

11 = Q 4.0

После выполнения первой инструкции формируется результат логической операции.

Инструкция JNB записывает RLO в бит BR и взводит бит первичного опроса.

• Если RLO = 0, выполняется переход на метку (строка 10) и выполняется инструкция опроса бита BR.

Сложение не выполняется. В строке 10 значение бита BR копируется в RLO и тогда, соответственно, значение 0 передается на выход.

• При RLO = 1, переход на метку не выполняется и, соответственно , выполняется сложение.

В строке 7 оценивается возможная ошибка при сложении, и затем, результат этого сохраняется в бите BR в строке 8.

Строка 9 взводит бит первичного опроса. Затем бит BR записывается в RLO в строке 10 и таким образом выход показывает было ли успешно выполнено сложение. Строки 10 и 11 не меняют бит BR.

EN/ENO механизм

Сложение с использованием заданий как EN так и ENO

Сложение с использованием задания EN и без задания ENO

Сложение без задания EN , но с заданием ENO

Сложение без задания EN и без задания ENO


Сложение с использованием EN и без задания ENO

Сложение с использованием EN и без задания ENO

В случае сложения с заданным входом EN и без задания выхода ENO, формируется следующая STL программа:

1 A I 0.0 // EN задание

2 JNB _001 // Запись RLO в BR и переход на метку при RLO = 0

3 L in1 // Загрузка слагаемого 1

4 L in2 // Загрузка слагаемого 2

5 +I // Сложение

6 T out // Передача результата на выход

7 _001: NOP 0

После выполнения инструкции строки 1, RLO содержит результат выполненной операции. Инструкция JNB записывает RLO в бит BR и взводит бит первичного опроса.

• Если RLO = 0, выполняется переход на метку (строка 7). Сложение не выполняется. Биты BR и RLO принимают значение 0.

• При RLO = 1, переход на метку не выполняется и, соответственно , выполняется сложение. В программе не оценивается возможная ошибка сложения. Биты BR и RLO принимают значение 1.

EN/ENO механизм

Сложение с использованием заданий как EN так и ENO

Сложение с использованием задания EN и без задания ENO

Сложение без задания EN , но с заданием ENO

Сложение без задания EN и без задания ENO


Сложение без задания EN , но с использованием выхода ENО

Сложение без задания EN , но с использованием выхода ENО

В случае сложения без использованием входа EN, но с заданием выхода ENO, формируется следующая STL программа :

1 L in1 // Загрузка слагаемого 1

2 L in2 // Загрузка слагаемого 2

3 +I // Сложение

4 T out // Передача результата на выход

5 AN OV // Оценка переполнения

6 SAVE // Сохранение ошибки в BR

7 CLR // Первичный опрос

8 A BR // Запись BR в RLO

9 = Q 4.0

Сложение выполняется безусловно.

В строке 5 программы оценивается возможная ошибка переполнения при сложении, которая затем сохраняется в бите BR в строке 6.

Строка 7 взводит бит первичного опроса. Теперь бит BR записывается в бит RLO в строке 8 и этим , соответственно, показывает была ли ошибка при выполнении сложения или нет.

Строки 8 и 9 не изменяют содержания бита BR, показывающего успешное выполнение задачи.

EN/ENO механизм

Сложение с использованием заданий как EN так и ENO

Сложение с использованием задания EN и без задания ENO

Сложение без задания EN , но с заданием ENO

Сложение без задания EN и без задания ENO


Сложение без использованием входа EN и без задания ENО

Сложение без использованием входа EN и без задания ENО

В случае сложения без использованием входа EN и без задания выхода ENO, формируется следующая STL программа:

1 L in1 // Загрузка слагаемого 1

2 L in2 // Загрузка слагаемого 2

3 +I // Сложение

4 T out // Передача результата на выход

5 NOP 0

Сложение выполняется безусловно.

Биты BR и RLO не изменяют cвоего значения.

EN/ENO механизм

Сложение с использованием заданий как EN так и ENO

Сложение с использованием задания EN и без задания ENO

Сложение без задания EN , но с заданием ENO

Сложение без задания EN и без задания ENO


Программирование в LAD

Программирование в LAD

Адресация

Абсолютная и Символьная адресация

Абсолютная адресация

Символьная адресация

Direct Addressing

Immediate Addressing

Образ процесса - отображение Входов I и Выходов Q в области памяти

Прямой доступ к периферии - Входы PI и Выходы PQ в области памяти

Ввод и отображение констант

Логическое И Bit, Byte, Word с идентификатором двойным словом Double Word

Идентификаторы элементов и блоков

Слово состояния

Слово состояния

/FC First Check (Слово состояния, Bit 0)

RLO Result of Logic Operation Результат логической операции (Слово состояния, Bit 1)

STA Status Bit Бит состояния (Слово состояния, Bit 2)

OR (Слово состояния, Bit 3)

OS Overflow Stored Переполнение с запоминанием (Слово состояния, Bit 4)

OV Overflow (Слово состояния, Bit 5)

CC 1, CC 0 Condition Codes (Слово состояния, Bits 6 and 7)

BR Binary Result Двоичный результат (Слово состояния, Bit 8)

CC 1 and CC 0 Результат после Математических операций

CC 1 and CC 0 Результат после инструкций простого и циклического сдвига

CC 1 and CC 0 Результат после инструкций сравнения

CC 1 and CC 0 Результат после логических инструкций со словами

Типы данных

Типы данных

Элементарные Типы данных

Комплексные Типы данных

Параметрические Типы данных

ARRAY

BOOL

BYTE

CHAR

DATE

DATE_AND_TIME

DINT

DWORD

INT

REAL

S5TIME

STRING

STRUCT

TIME

TIME_OF_DAY

UDT

WORD


OB81 Пример

Пример использования организационного блока ошибки источника питания OB81

Используя локальные данные (стартовую информацию) в OB ошибки, Вы можете оценить тип произошедшей ошибки.

Например, если CPU обнаруживает неисправность батареи, то операционная система вызывает OB81

Вы можете написать программу, которая оценивает код события, запускаемый вызовом OB81.

Вы можете также написать программу, которая осуществляет реакцию, такую как активизация выхода, связанного с лампой на станции оператора.

Важно !

ОВ трудно отлаживать в Online, так как они вызываются контроллером только в момент возникновения или устранения ошибки.

Поэтому, если хотите видеть происходящее в динамике, то надо в ОВ вставить вспомогательные элементы, фиксирующие факт события, в виде тригеров и счётчиков , а в основной программе наблюдать за их изменением.

Локальные данные организационного блока ошибки OB81

Следующая таблица показывает временные переменные, которые должны быть описаны в этом случае в таблице описания переменных OB81.

Символ Battery error [сбой батареи] (BOOL) должен быть идентифицирован как выход (например, Q 4.0) так, чтобы другие части программы могли обращаться к этим данным.

Описание | Имя | Тип | Объяснение
TEMP | OB81EVCLASS | BYTE | Класс ошибки/Идентификатор ошибки 39xx
TEMP | OB81FLTID | BYTE | Код ошибки:
 |  |  | b#16#21 = по крайней мере, одна батарея резервного питания CPU истощена 1)
 |  |  | b#16#22 = нет резервного напряжения в CPU
 |  |  | b#16#23 = отказ источника питания 24 В в CPU 1)
 |  |  | b#16#31 = по крайней мере, одна батарея резервного питания стойки расширения истощена 1)
 |  |  | b#16#32 = нет резервного напряжения в стойке расширения1)
 |  |  | b#16#33 = отказ источника питания 24 В стойки расширения 1)
TEMP | OB81PRIORITY | BYTE | Класс приоритета = 26/28
TEMP | OB81OBNUMBR | BYTE | 81 = OB81
TEMP | OB81RESERVED1 | BYTE | Зарезервировано
TEMP | OB81RESERVED2 | BYTE | Зарезервировано
TEMP | OB81MDLADDR | INT | Зарезервировано
TEMP | OB81RESERVED3 | BYTE | Имеет смысл только для кодов ошибки B#16#31, B#16#32, B#16#33
TEMP | OB81RESERVED4 | BYTE |
TEMP | OB81RESERVED5 | BYTE |
TEMP | OB81RESERVED6 | BYTE |
TEMP | OB81DATETIME | DATE AND TIME | Дата и время запуска OB

Типовая программа для организационного блока ошибки OB81

Типовая программа на языке STL показывает, как Вы можете считывать код ошибки в OB81.

Программа структурирована следующим образом:

• В OB81 (OB81FLTID) считывается код ошибки и сравнивается со значением для события ”battery exhausted [истощение батареи]" (B#16#3921).

• Если код ошибки соответствует коду события ”battery exhausted [истощение батареи]", то программа переходит к метке Berr и активизирует выход batteryerror.

• Если код ошибки не соответствует коду события ”battery exhausted [истощение батареи]", то программа сравнивает этот код с кодом события ”battery failure [отказ батареи]".

• Если код ошибки соответствует коду события ”battery failure [отказ батареи]", то программа переходит к метке Berr и активизирует выход batteryerror. В противном случае блок завершается.

 | L B#16#21 | // Сравнение кода события "battery exhausted"
 |  | //(B#16#21) с
 | L #OB81_FLT_ID | // кодом ошибки для OB81
 | ==I | // В случае совпадения (батарея истощена),
 | JC Berr | // переход к Berr
 | L B#16#22 | // Сравнение кода "battery failure" (b#16#22) с
 | ==I | // кодом ошибки для OB81
 | JC Berr | // В случае совпадения, переход к Berr
 | BEU | // Номер сообщения об ошибке батареи
Berr: | L B#16#39 | // Сравнение ID следующего события с
 | L #OB81_EV_CLASS | // кодом ошибки для OB81
 | ==I | // Если обнаружены ошибка или истощение батареи
 | S batteryerror | // установка выхода "battery error"
 |  | // (Переменная в символьной таблице)
 | L B#16#38 | // Сравнение ID завершения события с
 | ==I | // кодом ошибки в OB81
 | R batteryerror | // сброс выхода "battery error”, // если была зафиксирована ошибка

Вы можете найти подробную информацию о блоках OB, SFB и SFC в соответствующей оперативной справке Help on Blocks [справка о блоках].


 OB86 Пример

OB86 Пример

OB86 Пример

Важно !

ОВ трудно отлаживать в Online, так как они вызываются контроллером только в момент возникновения или устранения ошибки.

Поэтому, если хотите видеть происходящее в динамике, то надо в ОВ вставить вспомогательные элементы, фиксирующие факт события, в виде тригеров и счётчиков , а в основной программе наблюдать за их изменением.

Network 1: Обработка события возникновения или устранения ошибки

L #OB86_EV_CLASS // !!! Байт Возникшая ошибка 39h, устраненная ошибка 38h

L B#16#39 // !!! Байт

==I // Используем такую конструкцию STL операторов для сравнения байтов !!!

= "Err_D_SetReset" // 1 Флаг возникновения ошибки

L #OB86_FLT_ID // Код ошибки: C1...C8

S "Err_D_fr"

L #OB86_RACKS_FLTD // Адрес устройства, вызвавшего ошибку

L W#16#104 // Профибус адрес частотника 4

==I // Сравнить адреса

= #Err_04 // Если совпадает, то взвести временный флаг ошибки

L #OB86_RACKS_FLTD

L W#16#105 // Профибус адрес частотника 5

==I

= #Err_05

L #OB86_RACKS_FLTD

L W#16#103 // Профибус адрес станции 3

==I

= #Err_03

L #OB86_RACKS_FLTD

L W#16#108 // Профибус адрес станции 8

==I

= #Err_08

L #OB86_RACKS_FLTD

L W#16#109 // Профибус адрес станции 9

==I

= #Err_09

Далее взводим или сбрасываем флаги ошибки для соответствующей станции, которые уже доступны для чтения в основной программе.

.....


Встроенные системные функции и блоки (SFB, SFC)

За более подробной информацией о встроенных SFB и SFC обращайтесь к справочному руководству "Системное программное обеспечение S7-300/400. Системные и стандартные функции".

В книгах "Программируемые контроллеры S7-300. Аппаратное обеспечение и руководство по монтажу" и "Система автоматизации S7-400, M7-400. Данные модулей. Справочное руководство" объясняется, какие SFB и SFC доступны.


Области адресов

Области адресов

Области адресов, имеющиеся в каждом программируемом контроллере, представляют собой

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,

- функции таймера и счетчика (им посвящены главы «Таймеры» «Счетчики»),

- L-стек (смотрите параграф «Временные локальные данные»).

В зависимости от программы пользователя к этому могут добавиться кодовые блоки и блоки данных с локальными (внутриблочными) переменными.

Абсолютная и Символьная адресация

Если вы хотите увидеть разницу между абсолютной и символической адресацией,

деактивизируйте команду меню View > Display > Symbolic Representation [Вид > Отображение > Символическое представление].

Символьная и Абсолютная адресация в LAD

Вы можете изменить ограничение имен в символьной адресации в окне программирования LAD/STL/FBD с помощью команды меню

Options > Customize [Параметры > Настроить],

выбрав во вкладке "LAD/FBD" "Width of address field [Ширина поля адреса]". Здесь вы можете установить ограничение от 10 до 26 символов.

Дополнительную информацию вы можете найти с помощью команды меню

Help > Contents [Помощь > Содержание]

в разделах

"Programming Blocks [Программирование блоков]", "Creating Logic Blocks [Создание логических блоков]" и "Editing Ladder Instructions [Редактирование команд контактного плана]".

Абсолютная адресация

Символьная адресация

Установка адресных приоритетов (Символьный/Абсолютный)

Непосредственная адресация

Прямая адресация

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,


Символьная адресация переменных

Символьная адресация

В таблице символов назначаются символьные имена и типы данных всем абсолютным адресам, к которым Вы хотите позднее обращаться в Вашей программе;

например, для входа I 0.1 – символьное имя Key 1 [Ключ 1].

Эти имена применимы во всех частях программы и определены как глобальные переменные.

Используя символьное программирование, вы можете существенно улучшить читаемость созданной Вами программы S7.

Символьная адресация переменных

При символической адресации вместо абсолютных адресов используются имена (называемые символами, symbol). Выбрать имя можете вы сами. Такое имя должно начинаться с литеры и может содержать до 24 знаков.

Учитывается регистр (верхний и нижний) написания букв. В STL не разрешено использовать ключевые слова в качестве символов.

Для использования ключевых слов в качестве символов в SCL вставьте символ решетки «#» перед таким именем.

Имя (или символ) должно быть назначено абсолютному адресу.

Различают глобальные (global) символы и локальные (local) символы, действительные только в блоке.

Глобальные символы

Назначить имена в таблице символов вы можете следующим объектам:

· Блокам данных и кодовым блокам (DB, FB, FC, SFB, SFC);
· Входам, выходам, периферийным входам, периферийным выходам (I, IB, IW, ID, Q, QB, QW, QD);
· Меркерам, таймерам и счетчикам (M, MB, MW, MD, T , C);
· Пользовательским типам данных;
· Таблицам переменных.

Глобальный символ может также содержать пробелы, специальные и национальные литеры, такие как умляут. Исключение составляют символьные обозначения 00hex и FFhex.

При использовании символов со специальными литерами вы должны заключать в программе такие символы в кавычки.

В компилированных блоках редактор STL всегда отображает глобальные символы в кавычках.

Вы можете использовать глобальные символы на протяжении всей программы; каждый такой символ в программе должен быть уникален.

Редактирование, импортирование и экспортирование глобальных символов описано в параграфе «Таблица символов».

Локальные символы

Имена локальных данных определяются в разделе описаний соответствующего блока.

Эти имена могут содержать только буквы, цифры и знак подчеркивания.

Локальные символы действуют только внутри блока. Такие же символы (такие же имена переменных) могут быть применены в ином контексте (для обозначения совершенно иных объектов) в другом блоке.

Редактор отображает локальные символы с впереди стоящим знаком «#».

Если редактор не может отличить локальный символ от адреса вы должны предварить (добавить к началу) этот символ знаком «#».

Локальные символы доступны только в базе данных программирующего устройства (в автономном контейнере Blocks (Блоки)).

Если при декомпиляции эта информация отсутствует, то редактор вставляет заменяющий символ.

В зависимости от структуры и приложения типы данных классифицируются следующим образом.

Использование символических имен

Если вы используете символические имена при программировании в пошаговом редакторе, то они уже должны быть назначены абсолютным адресам.

Кроме того, вы можете вводить новые символические имена в таблице символов, программируя в пошаговом редакторе.

После ввода нового символического имени вы можете немедленно задействовать его при написании оставшейся части программы. Если вы для ввода программы используете (исходный) текстовый файл, то вы должны сделать абсолютные адреса доступными (присвоить им имена) на момент компиляции.

В случае массивов доступ к их отдельным компонентам осуществляется по имени массива и индексу,

например,

MSERIES[1] – первый компонент.

В LAD и FBD индекс – это целочисленное (INT) постоянное (constant) значение.

В структурах каждый подидентификатор отделяется от предшествующего подидентификатора десятичной точкой, к примеру, FRAME.HEADER.CNUM.

Компоненты пользовательских типов данных адресуются точно так же как структуры.

Адреса данных

Символическая адресация данных использует полный путь доступа (адрес), включая блок данных.

Пример: блок данных с символическим именем MVALUES содержит переменные MVALUE1, MVALUE2 и MTIME.

Эти переменные могут быть адресованы в следующем виде:

“MVALUES”.MVALUE1

“MVALUES”.MVALUE2

“MVALUES”.MTIME

За дальнейшей информацией вы можете обратиться к параграфу 18.2.2 «Доступ к операндам данных».

Абсолютная адресация

Символьная адресация

Установка адресных приоритетов (Символьный/Абсолютный)

Непосредственная адресация

Прямая адресация

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,


Непосредственная адресация

The value to be processed is appended directly to the instruction for statements using immediate addressing.

Example of Immediate Addressing

See also:

Ввод и отображение констант

Абсолютная адресация

Символьная адресация

Установка адресных приоритетов (Символьный/Абсолютный)

Непосредственная адресация

Прямая адресация

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,


Прямая адресация

In statements that use direct addressing, the address consists of the address identifier and the memory location. The data to be processed are to be found at this memory address.

Пример

Пример прямой адресации | Описание
A I 0.0 | логическое И с битом 0.0.
A DB11.DBX10.1 | логическое И с битом : блок данных 11 . байт 10 . бит 1
S L 1000.0 | Установить локальный бит данных 1000.0 в 1.
= M 234.5 | Установить бит памяти меркеров 234.5 в соответствии с состоянием RLO.
L IB1 | Загрузить байт входов 1 в ACCU 1-LL.
L IW0 | Загрузить слово входов 0 в ACCU 1-L.
L ID0 | Загрузить двойное слово входов 0 в ACCU 1.
T DBD 12 | Копировать ACCU 1 в двойное слово блока данных 12.
L MW2000 | Загрузить слово 2000 в ACCU 1.
LAR1 AR2 | Загрузить адресный регистр AR1 содержимым AR2.

Абсолютная адресация

Символьная адресация

Установка адресных приоритетов (Символьный/Абсолютный)

Непосредственная адресация

Прямая адресация

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,


Специфичные области адресации

Выберите в меню SIMATIC Менеджера PLC > Module Information > General для просмотра областей адресов, которые можно напрямую читать из CPU.

Эту информацию можно узнать из соответсвующих руководств:

• The S7-300 Programmable Controller Instruction Set

• The S7-400 Programmable Controller Instruction Set.

Абсолютная адресация

Символьная адресация

Установка адресных приоритетов (Символьный/Абсолютный)

Непосредственная адресация

Прямая адресация

- периферийные входы и выходы,

- образ входов процесса и образ выходов процесса,

- область памяти меркеров,


Типы данных

Обзор типов данных

Типы данных (data types) обуславливают характеристики данных, по сути, представление содержимого переменной, и допустимые области значений. STEP 7 предлагает предопределенные типы данных, из которых вы можете составлять пользовательские типы данных (user-defined data types, UDT).

Типы данных доступны на основе принципа глобальности и могут быть использованы в каждом блоке. LAD и FBD используют одни и те же типы данных.

· Элементарные Простые Типы данных (Elementary data types),

· Комплексные Сложные Типы данных (Complex data types),

· Пользовательские типы данных (User data types),

· Параметрические Типы данных (для параметров) (Parameter data types).

В таблице приведены свойства этих классов типов.

На дискете, прилагаемой к этой книге, в библиотеках «LAD_Book» и «FBD_Book» в разделе «Data Types» вы найдете примеры описания (объявления) и использования переменных всех типов данных.

Простые типы данных | Сложные типы данных | Пользовательские типы данных | Типы данных параметров
BOOL, BYTE, CHAR, WORD, INT, DATE, DWORD, DINT, REAL, S5TIME, TOD | DT, STRING, ARRAY, STRUCT | UDT Глобальных блоки данных DB Экземпляры | TIMER, COUNTER, BLOCK_DB, BLOCK_SDB, BLOCK_FC, BLOCK_FB, POINTER, ANY
Типы данных, размер которых не превышает одного двойного слова (32 бита) | Типы данных, которые могут содержать более одного двойного слова (DT, STRING) или со- стоят из нескольких компонентов | Структуры или области данных, которым может быть присвоено имя | Параметры блоков
Могут быть соотнесены с операндами, адресуемыми по абсолютным или символическим адресам | Могут быть назначены только переменным, обращение к которым происходит с помощью символической адресации |  | Могут быть назначены только параметрам блоков (только символическая адресация)
Допустимы во всех адресных областях | Допустимы в блоках данных (как глобальные данные и экземплярные данные), как временные локальные данные и в качестве параметров блоков |  | Допустимы в сочетании с параметрами блоков

Если вы хотите подсоединить к выходу одной инструкции вход другой инструкции с другим типом данных, то между ними надо вставить инструкцию преобразования типов данных.

Типы данных должны быть присвоены переменным в Таблице переменных и символьным именам в Таблице символов.

Data type assignment in an instruction address:

Пример 1: Прямая адресация MW200

Для прямой и косвенной адресации возможно использование только идентификаторов BOOL (" "), BYTE ("B”), WORD ("W”), или DWORD ("DW”).

Пример 2:Непосредственная адресация сравнение с константой 50

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Идентификаторы Элементов и Блоков

Идентификаторы Битов, Байтов, Слов и Двойных Слов

Формы написания префикса констант

Ввод и отображение констант

Шестнадцатиричная система счисления HEX


Элементарные типы данных

Простые типы данных

Простые типы данных могут резервировать бит, байт, слово или двойное слово.

В таблице показаны простые типы данных.

Для многих типов данных существует два представления констант, которые вы можете применять в равной степени (например, TIME# или T#). Таблица содержит минимальное значение для типа данных в верхней строке и максимальное значение в нижней строке.

1 Bit 1 Бит | Byte Байт (8 бит) | Word (2 байта) (16 бит) | Double Words (4 байта) (32 бит)
BOOL TRUE, FALSE | BYTE B#16#FF #11111111 | WORD W#16#FFFF, 16#FFFF 2#1111_1111_1111_1111 В(255,255) C#999 | DWORD DW#16#FFFFFFFF #11111111111111111111111111111111 B#(255,255,255,255)
 | CHAR 'A' $r | INT -32768 ... +32767 | DINT L# -2147483648 L#+2147483647
 |  | DATE DATE#1990-01-01 (=0050hex) D#2168-12-31 (=FF62hex) | REAL +1.175495e-38 +3.402823e+38
 |  | S5TIME S5TIME#500ms (= 0050hex) S5T#2h46m30s (= 3999hex) | TIME T#+24d20h31m23s647ms T#5h10s T#+65535
 |  |  | TIME_OF_DAY TIME_OF_DAY#00:00:00 (= 0000_0000hex) TOD#23:59:59.999 (= 0526_5BFFhex)

Описание (объявление) простых типов данных

В таблице приведены некоторые примеры описания переменных простых типов.

Имя (Name)– это идентификатор локальной (внутриблочной) переменной (может содержать до 24 знаков, включая только буквы, цифры и знак подчеркивания).

В столбце Тип (Type) вводится соответствующий тип данных.

Имя (Name) | Тип (Type) | Начальное значение (Initial Value) | Комментарии (Comments)
Automatic | BOOL | FALSE | Начальное значение – сигнальное состояние «0»
Manual_off | BOOL | TRUE | Начальное значение – сигнальное состояние «1»
Measured_value | DINT | L#0 | Начальное значение переменной типа DINT
Memory | WORD | W#16#FFFF | Начальное значение переменной типа WORD
Waiting_time | S5TIME | S5T#20s | Начальное значение переменной типа S5TIME


Шестнадцатиричная система счисления HEX

Шестнадцатиричная система счисления HEX

В разных языках программирования используются различные обозначения признака шестнадцатеричного числа в виде префиксов или суфиксов

Язык программирования | HEX | Десятичная
Ассемблер | 10h | 16
Паскаль | $10 | 16
Си | 0x010 | 16
Степ7 | B#16#10 W#16#FFFF DW#16#FFFFFFFF | 16

Десятичное значение вычисляется по формуле: .... (Бит 3) х 8 + (Бит 2) х 4 + (Бит 1) х 2 + (Бит 0) х 1

где каждый бит в зависимости от порядкового номера имеет свой "десятичный вес"=2 в степени N

Десятичная | HEX | Двоичная веса "8","4","2","1" | Пример для цифровых новичков
0 | 0 | 0000 | 0 + 0 + 0 + 0 = 0
1 | 1 | 0001 | 0 + 0 + 0 + 1 = 1
2 | 2 | 0010 | 0 + 0 + 2 + 0 = 2
3 | 3 | 0011 | 0 + 0 + 2 + 1 = 3
4 | 4 | 0100 | 0 + 4 + 0 + 0 = 4
5 | 5 | 0101 | 0 + 4 + 0 + 1 = 5
6 | 6 | 0110 | 0 + 4 + 2 + 0 = 6
7 | 7 | 0111 | 0 + 4 + 2 + 1 = 7
8 | 8 | 1000 | 8 + 0 + 0 + 0 = 8
9 | 9 | 1001 | 8 + 0 + 0 + 1 = 9
10 | A | 1010 | 8 + 0 + 2 + 0 = 10
11 | B | 1011 | 8 + 0 + 2 +1 = 11
12 | C | 1100 | 8 + 4 + 0 + 0 = 12
13 | D | 1101 | 8 + 4 + 0 + 1 = 13
14 | E | 1110 | 8 + 4 + 2 + 0 = 14
15 | F | 1111 | 8 + 4 + 2 + 1 = 15

Значение байта записывается двумя HEX символами

Hexadecimal Шестнадцатиричный | B#16#0 (десятичный эквивалент 0) | B#16#FF (десятичный эквивалент 255)
Binary / Двоичный | #0 | #11111111

Значение слова записывается четырьмя HEX символами

16-разрядное шестнадцатеричное число Hexadecimal /Шестнадцатиричный | W#16#0000, 16#0000 W#16#FFFF, 16#FFFF
16-разрядное двоичное число Binary / Двоичный | 2#0000_0000_0000_0000 2#1111_1111_1111_1111

Значение двойного слова записывается 8 HEX символами

32-разрядное шестнадцатеричное число

DW#16#0

DW#16#FFFFFFFF

В Windows имеется встроенный калькулятор, который в режиме "Инженерного калькулятора" позволяет производить операции с любыми видами счисления и переходить из одной в другую.


BOOL Булевый (Бит)

BOOL Булевый Двоичный (Бит)

Бит = единица двоичной информации, принимающая только 2 состояния:

0 = Ложь = Выключено

1 = Истина = Включено

Тип данных | Длина (бит) | Формат | Пример
BOOL | 1 | Boolean | TRUE, FALSE 1, 0

Битовые логические операции работают с двумя цифрами: 1 (True - Истина) и 0 (False - Ложь).

Эти две цифры образуют основание системы счисления, называемой двоичной системой.

Две цифры 1 и 0 называются двоичными цифрами или битами.

В мире контактов и катушек 1 означает активное состояние или протекание тока, а 0 – неактивное состояние или отсутствие протекания тока.

Подробнее смотри в разделе "Битовые логические операции"

Из последовательности битов образуются байты = 8 бит, слова =16 бит , двойные слова =32 бита ....

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


BYTE Байт (8 бит)

BYTE (8 битов)

8-разрядное шестнадцатеричное безнаковое число, состоящее из 8 бит, из которых можно получить 256 двоичных комбинаций.

Байт можно трактовать как число от 0 до 255 или как двоичный набор 8 бит, с каждым из которых можно производить независимые битовые логические операции или как символ.

Тип данных | Длина (бит) | Формат | Пример
 |  |  | Мин. | Макс.
BYTE Байт | 8 | Hexadecimal Шестнадцатиричный | B#16#0 (десятичный эквивалент 0) | B#16#FF (десятичный эквивалент 255)
 | 8 | Binary Двоичный | #0 | #11111111

MSB: Старший бит 7

LSB: Младший бит 0

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


CHAR - Символ (8 бит)

CHAR - Символ (8 бит)

Переменная типа CHAR (character, литера) занимает один байт.

Тип данных CHAR представляет одну литеру в ASCII-формате, например, ’A’.

Работая с этим типом данных, вы можете использовать любую печатную литеру в апострофах. Некоторые особые литеры требуют записи, показанной в таблице.

Пример: ’$$’ представляет знак доллара в ASCII-коде.

Функция MOVE (Переместить) позволяет вам задействовать два или четыре ASCII-символа, заключенных в апострофы, в качестве специальной формы типа данных CHAR для начертания ASCII-символов в переменной.

Тип данных | Длина (бит) | Формат | Пример написания
CHAR | 8 | символ ASCII | 'A'

Специальные литеры для типа данных CHAR

CHAR | Hex (шестнадцатеричное число) | Описание
$$ | 24hex | Знак доллара (Dollar sign)
$’ | 27hex | Апостроф (Apostrophe)
$L или $l | 0Аhex | Подача (бумаги) на одну строку (Line feed, LF)
$P или $p | 0Сhex | Новая страница (New page, FF)
$R или $r | 0Dhex | Возврат каретки (Carriage return, CR)
$T или $t | 09hex | Табулятор (Tabulator)

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


WORD -Слово (16 бит)

WORD (16 битов)

 Top Previous Next

WORD (16 битов)

16-битное шестнадцатеричное безнаковое число, состоящее из 16 бит или из 2-х байтов.

Слово можно трактовать как:

· безнаковое число от 0 до 65535;
· упакованное двоично-десятичное число от 0 до 999;
· 2 байта;
· двоичный набор 16 бит, с каждым из которых можно производить независимые битовые логические операции или поразрядные логические операции над словами

MSB: Старший бит 15

LSB: Младший бит 0

16-разрядное шестнадцатеричное число | W#16#0000, 16#0000 W#16#FFFF, 16#FFFF
16-разрядное двоичное число | 2#0000_0000_0000_0000 2#1111_1111_1111_1111
Значение счетчика, 3 декады (разряда) BCD | C#000 C#999
Два 8-разрядных числа без знака | В(0,0) В(255,255)

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных

I_BCD Преобразование целого числа в число в формате BCD

BCD_DI Преобразование числа в формате BCD в двойное целое число

DI_BCD Преобразование двойного целого числа в число в формате BCD

· SHL_W Сдвиг влево слова Word
· SHR_W Сдвиг вправо слова Word
· WAND_W И со словом Word

WOR_W ИЛИ со словом Word

WXOR_W Исключающее ИЛИ с словом Word


INT - Целое число со знаком (16 бит)

INT (целое число)

 Top Previous Next

INT (целое число)

Переменная типа INT (integer) хранится как целое число (16-битное число с фиксированной запятой или десятичной точкой).

Тип данных INT не имеет специального идентификатора.

Целочисленная переменная занимает одно машинное слово.

Сигнальные состояния битов с 0-го по 14-ый представляют цифровые разряды (позиции) числа.

Сигнальное состояние 15-го бита представляет знак (sign, S).

Сигнальное состояние «0» означает, что число положительное, сигнальное состояние «1» обозначает отрицательное

число.

Отрицательное число представляется в дополнительном коде (в форме дополнения до двух).

Допустимая область значений чисел:

от -32 768 (8000hex)до +32 767 (7FFFhex) .

Целое сохраняется в DINT-переменной, когда оно при вводе меньше -32 768 или превышает +32 767

Тип данных | Длина (бит) | Формат | Пример написания
 |  |  | Минимум | Максимум
INT | 16 | Целое со знаком | -32768 | +32767

Бит знака:

0 означает положительное число "+"

1 означает отрицательное число "-"

MSB: Старший бит 15

LSB: Младший бит 0

В двоичном формате отрицательное число представляется, как дважды комплементное от положительного числа

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Математические инструкции с целыми числами

ADD_I Сложить целое со знаком Integer

SUB_I Вычитание целых чисел Integer

MUL_I Умножение целых чисел

DIV_I Деление целого числа

· CMP ? I Сравнение целых чисел типа Integer

Преобразования типов данных

I_BCD Преобразование целого числа в число в формате BCD

I_DINT Преобразование целого числа в двойное целое число

Группа инструкций для инвертирования:

INV_I Инверсия целого числа Integer

NEG_I Дополнительный двоичный код целого числа

SHR_I Сдвиг вправо целого слова Integer


DINT - Двойное целое число со знаком (32 бита)

DINT (двойное целое число)

 Top Previous Next

DINT (двойное целое число)

Переменная типа DINT хранится как целое число (32-битное число с фиксированной запятой).

Целое сохраняется в DINT-переменной, когда оно превышает +32 767 или меньше -32 768, или когда число предваряется идентификатором типа L#, в том числе 0 задаётся как L#0.

Под переменную типа DINT отводится двойное слово.

Сигнальные состояния битов с 0-го по 30-ый представляют цифровые позиции числа.

Знак хранится в 31-м бите.

Бит 31, установленный в «0», обозначает положительное число; если его значение «1», то данное число отрицательное.

Отрицательные числа хранятся в дополнительном коде (дополнение до двух).

Область значений чисел:

от +2 147 483 647 (7FFF FFFFhex)

до –2 147 483 648 (8000 0000hex).

Целое сохраняется в INT-переменной, когда оно при вводе превышает -32 769 и меньше +32 768 и не имеет префикса L#

Тип данных | Длина (бит) | Формат | Пример написания при вводе
 |  |  | Минимум | Максимум
DINT | 32 | Целое со знаком | L# -2147483648 -2147483648... -32 769 L#0 | L#+2147483647 +32 768...+2147483647

Бит знака 31:

0 означает положительное число "+"

1 означает отрицательное число "-"

MSB: Старший бит 31 = Бит знака

LSB: Младший бит 0

В двоичном формате отрицательное число представляется, как дважды комплементное от положительного числа

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Математические инструкции с целыми числами

· CMP ? D Сравнение чисел типа Double Integer

Преобразования типов данных

Группа инструкций для преобразования двоично-десятичного кода:

BCD_DI Преобразование числа в формате BCD в двойное целое число

DI_BCD Преобразование двойного целого числа в число в формате BCD

I_DINT Преобразование целого числа в двойное целое число

Группа инструкций для инвертирования:

INV_DI Инверсия двойного целого числа Double Integer

NEG_DI Дополнительный двоичный код двойного целого числа

Группа инструкций для преобразования чисел с плавающей запятой:

DI_REAL Преобразование двойного целого числа в число с плавающей

ROUND Округление до двойного целого Double Integer

TRUNC Выделение целой части Double Integer

CEIL Округление до ближайшего большего целого числа

FLOOR Округление до ближайшего меньшего целого

SHR_DI Сдвиг вправо двойного целого слова Double Integer


DWORD Двойное слово (32 бита)

DWORD Двойное слово (32 бита)

32-битное шестнадцатеричное безнаковое число, состоящее из 32 бит или из 2-х слов или 4-х байтов.

Двойное лово можно трактовать как:

· безнаковое число от 0 до 4294967295;
· 4 байта - 8-разрядных числа без знака;
· двоичный набор 32 бит, с каждым из которых можно производить независимые битовые логические операции или поразрядные логические операции над словами
Тип данных | Длина (бит) | Формат | Пример формата
DWORD | 32 | 32-разрядное двоичное число |  | 2#00000000000000000000000000000000
 |  |  |  | 2#11111111111111111111111111111111
 |  |  |  | Min. | Max.
 |  | 32-разрядное шестна- дцатеричное число |  | DW#16#0 | DW#16#FFFFFFFF (десятичный эквивалент 4294967295)
 |  | Четыре 8-разрядных числа без знака |  | B#(0,0,0,0) | B#(255,255,255,255)

MSB: Старший бит 31

LSB: Младший бит 0

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных

· SHL_DW Сдвиг влево двойного слова Double Word
· SHR_DW Сдвиг вправо двойного слова Double Word
· ROL_DW Циклический сдвиг двойного слова влево

ROR_DW Циклический сдвиг двойного слова вправо

WAND_DW И с двойным словом Double Word

WOR_DW ИЛИ с двойным словом Double Word

WXOR_DW Исключающее ИЛИ с двойным словом Double Word


REAL Вещественный тип данных (32 бита)

REAL Вещественный тип данных (32 бита)

Переменная типа REAL представляет дробь и хранится как 32-битное число с плавающей запятой (десятичной точкой).

Целое сохраняется как переменная типа REAL при добавлении десятичной точки и нуля.

В экспоненциальном представлении вы можете предварить «е» или «Е» целым числом или дробью из семи соответствующих чисел и знака.

Цифры, которые расположены за «е» или «Е» представляют экспоненту по базе 10.

STEP 7 производит преобразование REAL-переменной во внутреннее представление числа с плавающей точкой.

Переменные типа REAL разделяются на числа, которые могут быть представлены с полной точностью («нормализованные» числа с плавающей точкой) и ограниченной точностью («ненормализованные» числа с плавающей точкой).

Область значений нормализованных чисел с плавающей точкой:

от -3.402 823 ? 10+38 до –1.175 494 ? 10-38

±0

от +1.175 494 ? 10-38 до +3.402 823 ? 10+38.

Ненормализованное число с плавающей точкой может находиться в следующем диапазоне:

от –1.175 494 ? 10-38 до –1.401 298 ? 10-45

и

от +1.401 298 ? 10-45 до +1.175 494 ? 10-38.

CPU серии S7-300 (за исключением CPU 318) не производят расчетов с ненормализованными числами с плавающей точкой.

Битовый образ ненормализованного числа интерпретируется как нуль.

Если результат попадает в этот диапазон, то он представляется как нуль, и устанавливаются биты статуса OV и переполнения OS .

Переменная типа REAL внутри состоит из следующих трех компонентов: знака (31-й бит), 8-битной экспоненты по базе 2 (биты с 23-го по 30-ый) и 23-битной мантиссы (биты с 0-го по 22-ой).

Знак может принимать значения «0» (положительное) и «1» (отрицательное).

Перед сохранением экспоненты к ней добавляется постоянное значение (смещение, +127), поэтому она отображает диапазон значений от 0 до 255.

Мантисса представляет дробную часть числа.

Целая часть мантиссы не сохраняется, так как она всегда равна 1 (в случае нормализованного числа с плавающей точкой) или 0 (в случае ненормализованного числа с плавающей точкой).

В таблице показан внутренний диапазон чисел с плавающей точкой.

Data Type | Length (bits) | Format | Format Examples
 |  |  | positive min. |  | positive max
REAL |  | Floating point | +1.175495e-38 | +3.402823e+38
 |  |  | negative min. | negative max.
 |  |  | -1.175495e-38 | -3.402823e+38

Floating point numbers are rounded to 6 decimal places.

The limits shown above are in exponential form, but values may also be entered as a fractional number, if there is at least one digit on either side of the decimal point (for example, 0.123456 or 12345600000.0). The same rule applies for the exponential form (for example, 123.456e-6).

S7 CPUs use the IEEE FP 32-bit binary memory format to process floating point numbers:

Any floating-point number =

Where in the normalized number equation shown above:

s = sign bit, (0 = positive, 1 = negative)

e = a binary integer exponent = the decimal integer exponent + 127 as an 8-bit unsigned binary integer exponent (0 < e < 255).

S7 CPU memory format for the floating-point number (32 bits)

Quantity | Sign s | Exp. e | Mantissa f | Value Formula | Изменение битов Слова состояния
 |  |  |  |  | CC1 | CC0 | OV | OS
Plus qNaN Not a Number |  |  | <>0 |  | 1 |  |  |
Plus infinity +Overflow |  |  |  |  | 1 |  |  |
Plus normalized numbers |  | ..254 | any |  | 1 |  |  | -
Plus denormalized numbers +Underflow |  |  | <>0 |  | 0 |  |  |
Plus null |  |  |  |  | 0 |  |  | -
Minus null |  |  |  |  | 0 |  |  | -
Minus denormalized numbers -Underflow |  |  | <>0 |  | 0 |  |  |
Minus normalized numbers |  | ..254 | any |  | 0 |  |  | -
Minus infinity - Overflow |  |  |  |  | 0 |  |  |
Minus qNaN Not a Number |  |  | <>0 |  | 1 |  |  |

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных

DI_REAL Преобразование двойного целого числа в число с плавающей

NEG_R Дополнительный двоичный код числа с плавающей запятой

ROUND Округление до двойного целого Double Integer

TRUNC Выделение целой части Double Integer

CEIL Округление до ближайшего большего целого числа

FLOOR Округление до ближайшего меньшего целого

· CMP ? R Сравнение чисел типа Real


Plus or Minus qNaNNot a Floating-Point Number

A qNaN represents the results of operations that have no mathematical interpretation, such as infinity divided by infinity. All operations involving qNaN return a qNaN (no number) result. If there is a qNaN accessed by a math instruction, then the CC 0, CC 1, OV, and OS bits of the Слово состояния are all set to 1.


Plus or Minus InfinitiesOverflow

Infinities are signed (positive or negative) and represent floating point numbers that exceed the overflow threshold. Overflow is detected for a given data format and operation when the result exponent is greater than or equal to the maximum exponent value. (This overflow description ignores the effects of rounding or user-selected rounding modes.)


Plus or Minus Normalized Numbers

If the binary exponent is 1 ≤ e ≤ 254 (binary exponent = decimal exponent + 127), then the floating-point number is used according to the normalized number equation.


Plus or Minus Denormalized NumbersUnderflow

This IEEE floating-point format which can extend the range of small exponential numbers from [image] to [image] is not supported. An underflow fault is indicated in the Слово состояния when number values between +/- 0 and +/- 8.43000e-37 are processed.


Plus or Minus Null (Zeros)

0 является числом со знаком (положительным или отрицательным) и представляется числом с плавающей запятой +0.0 или -0.0.


DATE (Дата)

DATE (Дата)

Переменная типа DATE хранится в машинном слове как число с фиксированной точкой без знака.

Содержимое переменной соответствует количеству дней, начиная с 01.01.1990.

Ее представление показывает год, месяц и день, разделенные дефисом.

Примеры:

DATE#1990-01-01 (=0050hex)

D#2168-12-31 (=FF62hex)

Data Type | Length (bits) | Format | Format Examples
 |  |  | Min. | Max.
DATE |  | Year-Month-Day | D#1990-01-01 | D#2168-12-31

MSB: Most Significant Bit

LSB: Least Significant Bit

NoteA DATE is stored as an unsigned integer in units of days, with day 1 equal to Jan. 1, 1990.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


TIME (Время)

TIME (Время)

Переменная типа TIME резервирует одно двойное слово. Ее представление содержит

информацию о днях (d), часах (h), минутах (m), секундах (s) и миллисекундах (ms),

отдельные элементы этих данных могут быть опущены. Содержимое переменной

интерпретируется в миллисекундах (ms) и хранится как 32-битное число с фиксиро-

ванной точкой со знаком.

Примеры:

TIME#24d20h31m23s647ms (= 7FFF_FFFFhex)

TIME#0ms (= 0000_0000hex)

T#-24d20h31m23s648ms (= 8000_0000hex)

Для типа TIME также возможно «десятичное представление», например,

TIME#2.25h или T#2.25h.

Примеры:

TIME#0.0h (= 0000_0000hex)

TIME#24.855134d (= 7FFF_FFFFhex)

Data Type | Length (bits) | Format
TIME |  | Signed time span of: + or - Days Hours Minutes Seconds Milliseconds

Format Examples (Upper and Lower Limits)

Max. | T#+24d20h31m23s647ms
Min. | T# -24d20h31m23s648ms

It is not necessary to enter all time units (for example, T#5h10s is a valid entry).

If only one unit is specified, the absolute value of days, hours, and minutes may not exceed the upper or lower limits shown above.

T# -65535 and T#+65535 are the lower and upper limits for seconds and milliseconds.

When more than one unit of time is specified, the value of a unit may not exceed

· 23 hours

· 59 minutes

· 59 seconds

· 999 milliseconds

MSB: Most Significant Bit

LSB: Least Significant Bit

NoteA TIME data type is stored as a signed integer number of milliseconds in twos complement format.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


TIME_OF_DAY (Время суток)

TIME_OF_DAY (Время суток)

Переменная типа данных TIME_OF_DAY резервирует для себя одно двойное слово.

Она содержит количество миллисекунд с начала суток (со времени 00:00) в виде числа с фиксированной точкой без знака.

Ее представление содержит информацию о часах, минутах и секундах, разделенных двоеточием.

Миллисекунды, которые следуют за секундами, отделены от них десятичной точкой.

Примеры:

TIME_OF_DAY#00:00:00 (= 0000_0000hex) //Минимальное время

TOD#23:59:59.999 (= 0526_5BFFhex) //Максимальное время

Миллисекунды могут отсутствовать.

Data Type | Length (bits) | Format
TIME_OF_DAY or TOD |  | Time of day in Hours:Minutes:Seconds.Milliseconds

Format Examples (Upper and Lower Limits)

TOD#00:00:00.000

TOD#23:59:59.999

Hours, minutes, and seconds must be specified. Entry of milliseconds is optional.

MSB: Most Significant Bit

LSB: Least Significant Bit

Note A TOD data type is stored as an unsigned integer number of milliseconds, with zero equal to midnight.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


S5TIME Время установки таймеров

S5TIME Время установки таймеров

Переменная типа S5TIME используется в базовых языках STL, LAD и FBD для установки таймеров системы SIMATIC.

Она занимает одно 16-битное слово с 1 + 3 декадами.

Время устанавливается в часах (hours), минутах (minutes), секундах (seconds) и миллисекундах (milliseconds).

STEP 7 производит преобразование во внутренне представление, которое является BCD-числом в диапазоне 000 … 999.

Интервалы времени могут принимать следующие значения: 10 мс (0000), 100 мс (0001), 1 с (0010) и 10 с (0011).

Длительность складывается из временного интервала и значения времени.

Примеры:

S5TIME#500ms (= 0050hex)

S5T#2h46m30s (= 3999hex)

Data Type | Length (bits) | Format |  |  | Format Examples
 |  |  |  | Min. |  | Max.
S5TIME |  |  | hr min s or min s ms | S5T#0ms and S5T#10ms |  | S5T#2h46m30s

When using the S5TIME data type with timers, there are limitations to the range and resolution of time values. The table below details the range associated with each resolution.

Time Base

Resolution | Range
0.01 s | ms to 9 s 990 ms
0.1 s | ms to 1 m 39 s 900 ms
1 s | s to 16 m 39 s
10 s | s to 2 h 46 m 30 s

Values that exceed 2h46m30s are not accepted. A value whose resolution is too high for the range limits is truncated down to a valid resolution.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


ARRAY Data Type

ARRAY (массив)

 Top Previous Next

ARRAY (массив)

Тип данных ARRAY представляет массив, состоящий из фиксированного числа однотипных элементов.

В квадратных скобках после наименования типа ARRAY вы должны задать область индексов поля.

Начальное значение слева должно быть меньше или равно завершающему значению справа.

Оба индекса являются числами типа INT из области значений –32 768 … +32 767. Наибольшая размерность поля – 6, границы «измерений» разделяются запятой.

Тип данных отдельного компонента поля располагается в строке под определением типа данных ARRAY.

Допускаются все типы данных за исключением ARRAY;

также это может быть пользовательский тип данных.

Предустановка

На этапе описания вы можете предустановить значения отдельных компонентов поля (не как в случае параметров блока в функции, входных/выходных параметров в функциональном блоке или временной переменной).

Тип данных предустанавливаемого значения должен быть тем же, что и тип поля.

Вы можете не устанавливать предварительно все компоненты поля.

Если количество предустановленных значений меньше числа компонентов поля, то предварительно устанавливаются только первые компоненты.

Количество предустановленных компонентов не должно превышать числа компонентов поля.

Предустановленные значения разделяются запятыми.

Предварительно присваиваемое элементам массива одинаковое значение указывается в круглых скобках, перед открывающей скобкой ставится коэффициент повторения.

Примеры описания массивов

Name (Имя) | Type (Тип) | Initial Value (Начальное значение) | Comments (Комментарии)
Meas. val. | ARRAY[1..24] | 0.4, 1.5, 11 (2.6, 3.0) | Массив с 24 элементами типа REAL
TOD | ARRAY[-10..10] | 21 (TOD#08:30:00) | Массив TOD с 21 элементом TIME_OF_DAY
Result | ARRAY[1..24,1..4] | 96 (L#0) | Двумерный массив с 96 элементами DINT
Char. | ARRAY[1..2,3..4] | 2 (’a’), 2 (’b’) | Двумерный массив с 4 элементами CHAR

Приложение

Вы можете применить массив как составную переменную (целиком) в параметрах блоков типа ARRAY с однородной структурой или в параметрах блоков типа ANY (Любой).

Например, вы можете скопировать содержимое переменной-массива с помощью системной функции SFC 20 BLKMOV.

Также вы можете определить отдельные компоненты массива в параметре блока, если он того же типа, что и компоненты.

Если отдельные компоненты поля элементарных типов данных, то вы можете обрабатывать их с помощью «нормальных» функций LAD и FBD.

Доступ к компонентам массива осуществляется по имени массива и индексу, указываемому в квадратных скобках.

В LAD и FBD значение индекса является фиксированным и не может меняться во время исполнения (переменные индексы не допускаются).

Многомерные массивы, размерности

Массивы могут быть максимум 6-мерными. Многомерные массивы аналогичны одномерным массивам.

На этапе декларирования границы измерений записываются в квадратных скобках и разделяются запятыми.

Структура переменных

Переменная типа ARRAY всегда начинается на границе машинного слова, то есть с байта с четным адресом.

Массив занимает область памяти до границы следующего слова

Компоненты типа BOOL (Логический) начинаются с младшего значащего бита;

компоненты типов BYTE (Байт) и CHAR (Литерный) начинаются с правого байта.

Отдельные компоненты расположены упорядоченно.

В многомерных массивах компоненты хранятся построчно (по размерностям), начиная с первой размерности. В случае однобитных и однобайтных компонентов новая размерность всегда начинается со следующего байте.

Если компоненты относятся к другим типам данных, то новая размерность всегда начинается со следующего слова (в следующем четном байте).

An array is a complex data type of up to 6 dimensions. All elements in an array can be of any data type (except Параметрические Типы данных), but all elements must be the same data type. ARRAYs cannot be nested, and must have at least 2 elements. A dimension’s limits (for example, x1 and x2) can be negative, zero, or positive, but x2 must be greater than x1.

Specifying Dimensions

Examples: Single dimensional ARRAY[x1..x2]

ARRAY[-2..-1]

ARRAY[0..1]

ARRAY[1..2]

Additional dimensions are separated by commas.

Example: Three dimensional: ARRAY[x1..x2, y1..y2, z1..z2]

Variable Table Editing

ARRAYs can be used within the program. You enter initial values in the initialization column. ARRAYs listed in the variable declaration table must also possess valid declaration attributes.

Initial Values

Elements are initialized by a list of values separated by commas.You may use a repetition factor, for example "4(10)” ("assigns 10 to the next 4 elements”), to assign initial values in an array. Elements not assigned an initial value default to zero.

Символьная адресация

Your program statements can access array values via variable symbols.

Example

L

ARRAY[3]

Load the value with the name ‘’array’' present in element 3 of the ARRAY into ACCU 1.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


STRING Data Type - Строка символов

STRING (строка символов)

Тип данных STRING представляет строку символов (литер), содержащую максимум до 254 литер.

Вы должны определить максимально допустимое количество знаков и указать его в квадратных скобках после ключевого слова STRING.

Длину строки можно не определять, опустив квадратные скобки со значением длины строки.

При этом редактор будет использовать максимальную длину (254 байта).

В случае функций FC редактор не допускает определения длины или требует стандартного размера в 254 байта.

Переменная типа STRING занимает памяти на два байта больше, чем объявленная максимальная длина строки, за счет включения в начале строки 2-х служебных байтов максимальной и актуальной длины строки.

Предустановка выполняется с использованием символов в формате ASCII, заключенных в одинарные кавычки (апострофы), или префикса в виде знака доллара в случае специальных символов (обратитесь к разделу о типе данных CHAR).

Если начальное (initial) или предустановленное (pre-assigned) значение короче объявленной максимальной длины, оставшиеся литерные ячейки не резервируются.

Когда обработка переменной типа STRING завершена (переменная в режиме постпроцесса), в расчет принимаются только ячейки, в текущий момент занятые литерами.

В качестве начального значения также возможно определить «пустую строку».

На рисунке показана структура переменной типа STRING.

Тип данных | Макимальная Длина | Формат
STRING[n] или STRING | n+2 служебных байта | Строка переменной длины максимум 254 символов. Если длина не задана, то по умолчанию будет установлена длина строки 254 символа.

Тип данных | Пример
STRING[2] | 'AB'
STRING[67] | 'При этом редактор будет использовать максимальную длину (254 байта)'

Строку STRING обрамляют 'только одинарными кавычками'.

Пример

Последовательность байтов строки STRING[4] на 4 символа с начальным заданным значением из двух символов 'AB'.

Замечание

Если содержание строки изменяется программой пользователя, то байт актуальной длины 1, также должен быть соответствующим образом изменён.

Если временная переменная строкового типа определена, то байт максимальной длины 0 должен быть задан перед использованием строки.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


STRUCT Data Type

STRUCT (структура)

Тип данных STRUCT представляет структуру данных, состоящую из фиксированного числа компонентов, каждый из которых может быть отличного от других типа данных.

Вы должны определить отдельные компоненты структуры и их типы данных под строкой с именем переменной и ключевым словом STRUCT.

Использовать в построении рассматриваемого типа данных можно любые типы, включая другие структуры.

Пример описания структуры

Name (Имя) | Type (Тип) | Initial Value (Начальное значение) | Comments (Комментарии)
MotCont | STRUCT |  | Простая переменная структурного типа с 4 компонентами
On | BOOL | FALSE | Переменная MotCont.On типа BOOL
Off | BOOL | TRUE | Переменная MotCont.Off типа BOOL
Delay | S5TIME | S5TIME#5s | Переменная MotCont.Delay типа S5TIME
maxSpeed | INT | 5000 | Переменная MotCont.maxSpeed типа INT
 | END_SRUCT |  |

Предустановка

На стадии описания вы можете предварительно присвоить значения отдельным компонентам структуры (не как в случае параметров блока в функции, входных / выходных параметров в функциональном блоке или временной переменной).

Тип данных предустанавливаемых значений должен совпадать с типом компонентов.

Приложение

Вы можете применить составную переменную (целиком) в параметрах блока типа STRUCT с такой же структурой или в параметрах блока типа ANY (Любой).

Например, вы можете скопировать содержимое переменной типа STRUCT при помощи системной функции SFC 20 BLKMOV. Вы также можете определить отдельный компонент структуры в параметре блока, если параметр относится к тому же типу данных, что и компонент.

Если отдельные компоненты структуры имеют простой тип данных, то вы можете обрабатывать их, применяя «нормальные» функции LAD и FBD.

Доступ к компоненту структуры осуществляется по имени структуры и имени компонента, разделенных точкой.

Структура переменных

Переменные типа STRUCT всегда начинаются с границы машинного слова, то есть с байта по четному адресу.

Поэтому отдельные компоненты расположены в памяти в порядке их объявления. STRUCT-переменные занимают область памяти до границы следующего слова.

Компоненты типа BOOL (Логический) начинаются с младшего значащего бита;

компоненты типов BYTE (Байтовый) и CHAR (Литерный) начинаются с правого байта.

Компоненты других типов начинаются с границы слова.

Вложенная структура – это структура, являющаяся компонентом другой структуры.

Возможная глубина вложения структур – 6 вложений.

Все компоненты простых типов данных могут быть доступны с помощью «нормальных» функций LAD или FBD.

Каждое индивидуальное имя отделяется точкой.

A structure (STRUCT) is a complex data type that can be nested to eight levels. Elements in a structure can be of any valid data type. A STRUCT must have at least two components between each STRUCT and END_STRUCT pair. A structure can be declared in the variable declaration table of a logic block or in a user-defined data type (UDT).

You can access the individual structure variables in the user program with <structurename.variable name>. A STRUCT within a STRUCT counts as only one component.

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


DATE_AND_TIME Data Type

DATE_AND_TIME (дата и время)

 Top Previous Next

DATE_AND_TIME (дата и время)

Тип данных DATE_AND_TIME представляет формат времени, состоящий из даты и времени суток.

Допускается использование аббревиатуры DT вместо полного названия типа DATE_AND_TIME.

Отдельные компоненты DT-переменной закодированы в формате ASCII .

Data Type | Length (bits) | Format
DATE_AND_TIME |  | Yr-Mo-Day-hr:min:s.ms
or |  |
DT |  | Format Example
 |  | DT#1995-02-02-08:30:01.999

Тип данных DATE_AND_TIME запоминается в двоично-десятичном формате BCD:

Byte | Contents | Range
0 | Year | ... 89 (from 1990 to 2089)
1 | Month | to 12
2 | Day | to 31
3 | Hour | to 23
4 | Minute | to 59
5 | Second | to 59
6 | MSD of ms | to 99
7 (4 MSB) | LSD of ms | to 9
7 (4 LSB) | Day of week | to 7 (1 = Sunday)

Display of bytes 6 and 7:

MSD: Most Significant Decade

LSD: Least Significant Decade

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


UDT Data Type - пользователя

Пользовательские типы данных UDT

Пользовательские типы данных UDT

Пользовательский тип данных (user data type – UDT) соответствует структуре (комбинация компонентов любых типов) с действием на глобальном уровне. Вы можете воспользоваться пользовательским типом данных, если в вашей программе часто фигурирует структурный тип и переменные, или вы хотите структуре данных присвоить имя.

Типы UDT обладают глобальным действием; то есть, они описываются один раз и доступны для использования во всех блоках. UDT могут адресоваться символически; вы должны соответственно назначить абсолютный адрес в таблице символов. Тип данных UDT (в таблице символов) идентичен абсолютному адресу.

Если вы хотите объявить переменную, определенную в виде UDT, при описании назначьте ей тип UDT как в случае «нормального» типа данных. UDT могут адресоваться абсолютно (UDT 0 … UDT 65 535).

Вы также можете определить UDT для единого типа данных.

При программировании блока данных назначьте блоку этот UDT в качестве структуры данных.

Как работать с пользовательскими типами данных показано в примере «Message Frame Data» («Данные фрейма сообщения») в параграфе 24.3 «Краткое описание «Message Frame Data» («Данные фрейма сообщения»)».

Обзор параметрических типов

Параметрический тип | Описание |  | Примеры фактических адресов
TIMER | Таймер | 16 бит | Т 15 или символ
COUNTER | Счетчик | 16 бит | С 16 или символ
BLOCK_FC | Функция | 16 бит | FC 17 или символ
BLOCK_FB | Функциональный блок | 16 бит | FB 18 или символ
BLOCK_DB | Блок данных | 16 бит | DB 19 или символ
BLOCK_SDB | Блок системных данных | 16 бит | SDB 100 или символ
POINTER | DB-указатель | 48 бит | P#M10.0 (указатель)
 |  |  | P#DB20.DBX22.2 (указатель)
 |  |  | MW 20 (указатель)
 |  |  | I 1.0 (указатель)
ANY | ANY-указатель | 80 бит | P#DB10.DBX0.0 WORD 20 или любая переменная

Программирование структур UDT

Создать определяемый пользователем тип данных вы можете либо в SIMATIC-менеджере, отметив объект Blocks (Блоки) и выбрав пункт меню Insert > S7 Block > Data Type (Вставка> БлокS7 > Типданных), либо в редакторе путем выбора команды меню File > New (Файл> Новый) и ввода«UDTn» встроке«Object Name» («Имяобъекта»).

Двойной щелчок на объектеUDT в окне программы откроет таблицу описаний, которая выглядит точно также, как таблица описаний блока данных.

UDT программируется как блок данных, с заполнением отдельных строк для имени (Name), типа данных(Type), начального значения (Initial value) и комментариев (Comments).

Единственное отличие заключается в том, что нельзя переключиться в просмотр данных(data view). (СUDT вы не создаете никаких переменных, а формируете только коллекцию типов данных; по этой причине здесь нет фактических значений).

Начальные значения, заданные вами в UDT, передаются в переменные при их описании.

Data Type | Format
Пользовательский тип данных | UDT n (n = a particular previously created UDT address)

A Типы данных пользователя can be used as a template for data blocks or as a data type in a variable declaration table. You create UDTs with the Data Block Editor.

A UDT structure may contain groups of elementary and/or Комплексные Типы данных, or also other UDTs (to a maximum of six nesting levels).

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


Параметрический тип

Параметрические типы

Параметрические типы

Параметрические типы (parameter types) – это типы данных для параметров блоков.

Спецификации размеров (длины) в таблице указывают на требующиеся объемы памяти для параметров функциональных блоков. Вы также можете использовать TIMER и COUNTER в таблице символов в качестве типов данных для таймеров и счетчиков.

В дополнение к элементарным типам данных ARRAY, STRUCT, STRING и типам данных определённым пользователем (UDT), параметрический тип может быть одним из следующих. Параметрические Типы данных могут быть использованы только для объявления параметров IN, IN_OUT и OUT.

Data Type | Size | Information Passed | Format (n = Block Number)
TIMER | 16 бит | Таймер | T n
COUNTER | 16 бит | Счетчик | C n
BLOCK_FB | 16 бит | Функциональный блок | FB n
BLOCK_FC | 16 бит | Функция | FC n
BLOCK_DB | 16 бит | Блок данных | DB n
BLOCK_SDB | 16 бит | Блок системных данных | SDB n
POINTER | 48 бит | DB-указатель Offset pointer x = byte y = bit with area identifier - for example, Q | P#x.y P#Qx.y
ANY | 80 бит | ANY-указатель Area = M Starting bit = 50.0 Data type = BYTE Number of data type units = 10 This example defines data area MB50 to MB59. | P#M50.0 BYTE 10

Block declarations

Data Type | Declaration Type
TIMER, COUNTER, BLOCK | IN only
POINTER | IN, OUT (only for FCs), IN_OUT
ANY | IN, OUT (only for FCs), IN_OUT, TEMP

BOOL | CHAR | WORD | INT | REAL | ARRAY | S5TIME | TOD
BYTE | STRING | DWORD | DINT | UDT | STRUCT | DATE | DT

Преобразования типов данных


Ввод и отображение констант

Шестнадцатиричная система счисления HEX

Формат данных | Примеры ввода и допустимые диапазоны |  | Тип данных
Цифровые константы: |  |  |
Двоичные цифры | TRUE или FALSE |  | BOOL
Безнаковые целые десятичные цифры (16 бит) | B#(0,0) ... B#(255,255) |  | WORD
(32 бит) | B# (0,0,0,0) ... B#(255, 255,255,255) |  | DWORD
Целые со знаком (16 бит) | -32768 .... +32767 |  | INT
Двойные целые со знаком (32 бит) | L# -2147483648 .... L#+2147483647 |  | DINT
Шестнадцатеричные | B#16#0 .... B#16#FF |  | BYTE
 | W#16#0 ... W#16#FFFF |  | WORD
 | DW#16#0 ... DW#16#FFFFFFFF |  | DWORD
Двоичные | #0 ... 2#1111111111111111 |  | WORD
 | #0 ... 2#11111111111111111111111111111111 |  | DWORD
Вещественные числа с плавающей запятой | положительный min. | положительный max. |
 | +1.175494e-38 | +3.402823e+38 | REAL
 | отрицательное, минимум | положительное, максимум |
 | -1.175495e -38 | -3.402823e +38 | REAL
Счётчики |  |  |
BCD двоично-десятичное значение счётчика | C#0 to C#999 (вводится десятичное значение в формате BCD) |  | WORD
Таймеры |  |  |
формат S5TIME | S5T#0ms и S5T#10ms до S5T#2h46m30s |  | S5TIME
Формат времени CPU |  |  |
значение времени TIME | от T# -24d20h31m23s647ms до T#+24d20h31m23s647ms или от T# -65535ms до T#+65535ms |  | TIME
значение даты DATE | от D#1990-01-01 до D#2168-12-31 |  | DATE
значение времени дня TIME_OF_DAY | от TOD#00:00:00.000 до TOD#23:59:59.999 |  | TIME_OF_DAY
значение даты и времени DATE_AND_TIME | от DT#90-01-01-0:0:0 до DT#89-12-31-23:59:59.999 |  | DATE_AND_TIME
Символьные константы |  |  |
'Символ' | 'a' (ASCII characters) |  | CHAR
'Строка символов' | 'Строка символов' длинной от 2 до 254 символов, включая специальные комбинации для обозначения некоторых символов $$ знак доллара, $' аппостроф, $L или $l конец строки, $P или $p конец страницы, $R или $r возврат каретки, $T или $t табулятор |  | STRING
P# указатель на константу |  |  |
P# | P# x.y (внутризоновый указатель double word) |  | POINTER
 | P#Areax.y (area-crossing double word) |  | POINTER
 | P#Area x.y TYPE z Пример: ANY reference P#M50.0 BYTE 10 Area = M x.y = 50.0 TYPE = BYTE Number of data type units z = 10 Этот пример определяет область данных от MB50 до MB59. |  | ANY

NoteInstead of the short data type prefixes, long representations are also possible.

Типы данных

Идентификаторы Элементов и Блоков

Идентификаторы Битов, Байтов, Слов и Двойных Слов

Формы написания префикса констант

Ввод и отображение констант


Формы написания префикса констант

Формы написания префикса констант

Короткая | Длинная
B# | Byte#
C# | Counter#
W# | Word#
DW# | Dword#
D# | Date#
T# | Time#
TOD# | Time_of_day#
S5T# | S5Time#
DT# | Date_and_time#
P# | Pointer#

Типы данных

Идентификаторы Элементов и Блоков

Идентификаторы Битов, Байтов, Слов и Двойных Слов

Формы написания префикса констант

Ввод и отображение констант


Идентификаторы Битов, Байтов, Слов и Двойных Слов

CPU Memory Area | Address Identifier
 | Bit | Byte | Word | Double Word
Таблица образа процесса входов (PII) | I | IB | IW | ID
Таблица образа процесса выходов (PIQ) | Q | QB | QW | QD
Битовая память (M) | M | MB | MW | MD
Локальные данные | L | LB | LW | LD
Direct peripheral input area (I) |  | PIB | PIW | PID
Direct peripheral output area (Q) |  | PQB | PQW | PQD
Data Block ---( OPN ) DB ---( OPN ) DI | DBX DIX | DBB DIB | DBW DIW | DBD DID
Timer (T) | T |  | T |
Counter (C) | C |  | C |

NoteThe two addresses: IB0 and IB1 (I area, byte type, address bytes 0, 1) address the same two bytes of data as the single address: IW0 (I area, word type, 2 bytes, address bytes 0, 1).

Типы данных

Идентификаторы Элементов и Блоков

Идентификаторы Битов, Байтов, Слов и Двойных Слов

Формы написания префикса констант

Ввод и отображение констант


Идентификаторы Элементов и Блоков

T | Таймер
DB | Общедоступный блок данных
DI | Экземплярный блок данных
FC | Функция (подпрограмма)
FB | Функциональный блок
OB | Организационный блок
C | Счётчик
SDB | Системный блок данных
SFC | Системная Функция
SFB | Системный Функциональный блок

Типы данных

Идентификаторы Элементов и Блоков

Идентификаторы Битов, Байтов, Слов и Двойных Слов

Формы написания префикса констант

Ввод и отображение констант


Регистры CPU

Аккумулятор

Адресные регистры

Слово состояния

Стек MCR .


Аккумуляторы

32-х разрядные регистры - аккумуляторы общего назначения используются для обработки 8-разрядных байтов, 16-ти разрядных слов и 32-х разрядных двойных слов.

Адресуемое значение загружается и обрабатывает в аккумуляторе ACCU 1 .

Результат операции всегда сохраняется в Аккумуляторе 1 и может быть скопирован в память.

Механизм стека для аккумуляторов используется следующим образом:

· Инструкция загрузки значения в аккумулятор ACCU 1 сохраняет предыдущее значение ACCU1 в ACCU 2.

· Инструкция переноса (копирования) из аккумулятора не меняет значение аккумуляторов..

· Инструкция TAK меняет местами содержимое ACCU 1 и ACCU 2.

· Результат логической операции между ACCU 1 и ACCU 2 (Математические операции, Инструкции сравнения, AND, OR, и др.) всегда запоминается в ACCU 1.

Размещение байтов, слов и двойных слов в 32-х разрядном аккумуляторе (на примере аккумулятора ACCU 1):

Аккумулятор

Адресные регистры

Слово состояния

Стек MCR .


Слово состояния

Слово состояния bits are read and written by the CPU and directly by your program statements.

As each of your instructions is processed, CPU Слово состояния bits are used according to the function of each instruction. Слово состояния bits are used to link your instructions together and to provide immediate result and error information. Your program statements can then read Слово состояния bits and take action, if necessary.

N бита | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Слово состояния: | BR | CC 1 | CC 0 | OV | OS | OR | STA | RLO | /FC

Сокращения применяемы в описании Слова состояния:

- Не используется в данной операции

* Читается состояние для операции

x Может быть записано "1" или "0"

0 Сбрасывается в "0"

1 Устанавливается в "1"

Бит | Имя | Описание
0 | /FC |
1 | RLO |
2 | STA |
3 | OR |
4 | OS |
5 | OV |
6 | CC 0 |
7 | CC 1 |
8 | BR |

See also:

Регистры контроллеров


/FC First Check Bit (Status Word, Bit 0)

/FC Первичный опрос First Check Bit (Status Word, Bit 0)

Первый оператор проверки, следующий за условным оператором, называется "первичным опросом" ("first check").

Он имеет особенное значение, потому что CPU имеет прямой доступ к результату этого оператора, как результату логической операции.

Таким образом "старое значение" ("old") результата логической операции RLO теряется. Первичный опрос всегда соответствует началу логической операции.

Правило (алгоритм) первичного опроса (AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ)) не играет при этом никакой роли.

Status Word STA

Бит состояния /FC управляет двоичными логическими операциями внутри логического устройства управления (часть АЛУ).

Двоичный логический шаг всегда начинается с двоичной инструкции проверки (первичного опроса) при /FC = "0", как показано в описании двоичных логических операций.

Первичный опрос устанавливает /FC в состояние "1" (/FC = "1").

Двоичный логический шаг заканчивается присвоение двоичного значения, или условным переходом, или изменением блока. Это сбрасывает бит состояния: /FC = "0".

Следующая двоичная проверка (опрос) начинается с новой двоичной логической функции.

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


RLO Result of Logic Operation (Status Word, Bit 1)

RLO Result of Logic Operation - Результат Логической Операции (Слово Состояния, бит 1)

Результат логической операции (RLO) - это состояние сигнала в CPU, которое CPU в дальнейшем использует для обработки двоичных сигналов.

Результат логической операции формируется и модифицируется с помощью операторов проверки (check statement).

Если RLO имеет значение "1", то это означает, что условие двоичной логической операции выполнено, если RLO имеет значение "0", то это означает, что условие двоичной логической операции не выполнено.

Биты устанавливаются или сбрасываются в соответствии с результатом логической операции.

Бит состояния RLO является промежуточным буфером в двоичных логических операциях.

При первичном опросе CPU передает результат опроса в RLO, комбинирует результат опроса с хранящимся в RLO значением при каждом последующем опросе и затем сохраняет результат в RLO (как описано в главе "Двоичные логические операции").

Вы можете также устанавливать SET, сбрасывать CLR или инвертироватьNOT значение в RLO непосредственно или сохранять его в BR. Функции счетчика, таймера и операции с памятью управляются с использованием RLO, как и функции перехода.

Результат логической операции RLO формируется с помощью операторов проверки. Эти операторы проверяют сигнал бита на состояние "1" или "0" и связывают его в соответствии с правилом AND (И), OR (ИЛИ), Exclusive OR (Исключающее ИЛИ).

Вход 1 | 0 | 1 | 0 | 1
Вход 2 | 0 | 0 | 1 | 1
Результат &И | 0 | 0 | 0 | 1
Результат &ИЛИ | 0 | 1 | 1 | 1
Результат &Исключающее ИЛИ | 0 | 1 | 1 | 0

Затем CPU сохраняет результат данной логической операции как новый результат логической операции RLO.

На рисунке показано, как программируется проверка сигнала бита на состояние "1" и "0".

В случаях проверки на состояние сигнала "1" результат проверки идентичен состоянию сигнала проверяемого бита.

В случаях проверки на состояние сигнала "0" результат проверки инвертируется относительно состояния сигнала проверяемого бита.

Status Word STA

Установка и сброс RLO

Оператор SET устанавливает RLO в состояние "1", а оператор CLR сбрасывает RLO в состояние "0".

Одновременно происходит установка в "1" или сброс в "0" бита состояния STA.

Рассматриваемые операторы выполняются без всяких условий.

Операторы SET и CLR устанавливают также биты состояния OR и /FC, что означает, что после операторов SET или CLR новая логическая операция начинается со следующей операции проверки (опроса).

Вы можете запрограммировать сброс или установку бита (двоичного адреса) с помощью оператора SET:

SET ;

S M 8.0; //Установка меркера

R M 8.1; //Сброс меркера

CLR ;

S C 1; //Сброс меркера фронта для установки

//счетчика "Set counter"

Прямая установка и сброс RLO также полезны при использовании с таймерами и счетчиками.

Для запуска таймера и счетчика Вам необходимо изменить RLO со значения "0" на значение "1" (помните также, что Вам еще требуется для этого положительный фронт сигнала разрешения).

В разделе программы, в котором преобладают числовые логические операции, RLO обычно не определяется, например, при последующей функции перехода для проверки "числовых флагов" (битов состояния -"digital flags").

При этом Вы можете использовать операторы SET и CLR для определенных установок и сбросов RLO или для программного изменения RLO.

Об инвертировании RLO с NOT см. "Двоичные логические операции".

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


STA Status Bit (Status Word, Bit 2)

STA Состояние Status Bit (Слово Состояния, бит 2)

Состояние бита STA соответствует состоянию сигнала указанного двоичного разряда (двоичного адреса) или проверяемого "условного бита" для двоичной логической операции (A, AN, O, ON, X, XN).

В случае операций с памятью (S, R, =) значение бита состояния STA соответствует записанному в память значению или (в случае отсутствия операции записи в память, например, при RLO = "0" или когда главное управляющее реле MCR активно) значение бита STA соответствует значению адресованного (но неизмененного) двоичного адреса.

При проверке наличия фронта сигнала FP или FN значение RLO до операции проверки фронта сохраняется в бите состояния STA.

Все остальные двоичные операции устанавливают STA (STA = "1"), как и переходы, зависящие от состояния двоичного флага: JC, JCN, JBI, JNBI (исключение: CLR сбрасывает бит STA: STA = "0").

Бит состояния STA не влияет на обработку операторов STL-операторов.

Состояние этого бита отображается тестовыми функциями с помощью программатора PG (такой функцией, например, как функция отображения состояния программы "program status").

Таким образом, Вы можете использовать этот бит состояния для трассировки двоичных логических последовательностей или в целях отладки программы.

Status Word STA

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


OR (Status Word, Bit 3)

Бит состояния OR (OR status bit) (Слово Состояния, бит 3)

Бит OR status сохраняет результат выполненной (имеется в виду, что условие функции выполнено) двоичной логической операции AND (И) ("1") и показывает последующей операции OR (ИЛИ), что результат уже зафиксирован (при комбинированной операции OR (ИЛИ) внутри операции AND (И) перед выполнением операции OR (ИЛИ)).

Все остальные двоичные операторы сбрасывают бит OR status.

В таблице в графах "Двоичные флаги (Binary flags)" приводится пример двоичного логического шага для иллюстрации действия двоичных флагов. Двоичный логический шаг начинается с первичного опроса после операции с памятью и заканчивается с последней операцией с памятью до функции проверки.

Status Word STA

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


OS Overflow Stored (Status Word, Bit 4)

Сохранение информации о превышении граничных значений (Stored overflow) (Слово Состояния, бит 4)

Бит состояния OS фиксирует факт превышения (дублирует и сохраняет установленное состояние бита OV).

Когда CPU устанавливает бит состояния OV, он также устанавливает бит состояния OS.

При этом, если бит состояния OV в дальнейшем может быть сброшен при выполнении соответствующей операции, то бит OS сохранит свое состояние, т.е. информацию о состоявшемся факте превышения.

Это позволит Вам выполнять альтернативную проверку бита состояния, в том числе и отложенную во времени (в более поздней точке программы), для определения факта превышения диапазона допустимых численных значений или факта использования некорректных действительных (REAL) чисел.

Вы можете проверять состояние бита OS посредством операторов проверки (опроса) или с помощью оператора перехода JOS.

Следующие операции сбрасывают бит состояния OS:

· перехода JOS если OS=1

· Cмена блока

· Конец блока

Status Word OS

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1, CC 0 Condition Codes (Status Word, Bits 6 and 7)

CC 1, CC 0 Биты состояния (биты "условных кодов") (condition codes)

Биты состояния CC0, CC1 (условные биты) призваны обеспечивать информацией о результатах выполнения функций сравнения, арифметических и математических функций, логических операций для слов данных или о состоянии "вытолкнутых" битов в случае выполнения операций сдвига.

Вы можете проверять состояние всех числовых флагов с помощью операторов перехода или посредством операторов проверки (опроса).

В нижней части таблицы показаны примеры установки числовых флагов (digital flags).

· Bit Logic instructions

· Comparison instructions

· Math instructions

· Shift and Rotate instructions

· Word Logic instructions

NoteCC 1 and CC 0 can also be read by conditional jump instructions.

Status Word OS

Вычисления с INT-данными

Результат | CC0 | CC1 | OV | OS
<-32768 (+I, -I) | 0 | 1 | 1 | 1
<-32768 (*I) | 1 | 0 | 1 | 1
-32768 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1 ... +32767 | 0 | 1 | 0 | -
>+32767 (+I, -I) | 1 | 0 | 1 | 1
>+32767 (*I) | 0 | 1 | 1 | 1
32768 (/I) | 0 | 1 | 1 | 1
(-)65536 | 0 | 0 | 1 | 1
Деление на 0 | 1 | 1 | 1 | 1

Вычисления с DINT-данными

Результат | CC0 | CC1 | OV | OS
<-2147483648 (+D, -D) | 0 | 1 | 1 | 1
<-2147483648 (*D) | 1 | 0 | 1 | 1
-2147483648 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1... +2147483647 | 0 | 1 | 0 | -
>+2147483647 (+D, -D) | 1 | 0 | 1 | 1
>+2147483647 (*D) | 0 | 1 | 1 | 1
2147483648 (/D) | 0 | 1 | 1 | 1
(-)4294967296 | 0 | 0 | 1 | 1
Деление на 0 (/D, MOD) | 1 | 1 | 1 | 1

Вычисления с REAL-данными

Результат | CC0 | CC1 | OV | OS
+ нормирован | 0 | 1 | 1 | 1
± ненормирован | 1 | 0 | 1 | 1
± ноль | 1 | 0 | 0 | -
- нормирован | 0 | 0 | 0 | -
+ бесконечность (деление на 0) | 0 | 1 | 0 | -
- бесконечность (деление на 0) | 1 | 0 | 1 | 1
± некорр. REAL | 0 | 1 | 1 | 1

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1 and CC 0 Results from Math Instructions

Вычисления с INT-данными

Результат | CC0 | CC1 | OV | OS
<-32768 (+I, -I) | 0 | 1 | 1 | 1
<-32768 (*I) | 1 | 0 | 1 | 1
-32768 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1 ... +32767 | 0 | 1 | 0 | -
>+32767 (+I, -I) | 1 | 0 | 1 | 1
>+32767 (*I) | 0 | 1 | 1 | 1
32768 (/I) | 0 | 1 | 1 | 1
(-)65536 | 0 | 0 | 1 | 1
Деление на 0 | 1 | 1 | 1 | 1

Вычисления с DINT-данными

Результат | CC0 | CC1 | OV | OS
<-2147483648 (+D, -D) | 0 | 1 | 1 | 1
<-2147483648 (*D) | 1 | 0 | 1 | 1
-2147483648 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1... +2147483647 | 0 | 1 | 0 | -
>+2147483647 (+D, -D) | 1 | 0 | 1 | 1
>+2147483647 (*D) | 0 | 1 | 1 | 1
2147483648 (/D) | 0 | 1 | 1 | 1
(-)4294967296 | 0 | 0 | 1 | 1
Деление на 0 (/D, MOD) | 1 | 1 | 1 | 1

Вычисления с REAL-данными

Результат | CC0 | CC1 | OV | OS
+ нормирован | 0 | 1 | 1 | 1
± ненормирован | 1 | 0 | 1 | 1
± ноль | 1 | 0 | 0 | -
- нормирован | 0 | 0 | 0 | -
+ бесконечность (деление на 0) | 0 | 1 | 0 | -
- бесконечность (деление на 0) | 1 | 0 | 1 | 1
± некорр. REAL | 0 | 1 | 1 | 1

Преобразование NEG_I с INT-данными

Результат | CC0 | CC1 | OV | OS
-32768 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1 ... +32767 | 0 | 1 | 0 | -
(-)32768 | 1 | 0 | 1 | 1

Преобразование NEG_D с DINT-данными

Результат | CC0 | CC1 | OV | OS
-2147483648 ... -1 | 1 | 0 | 0 | -
0 | 0 | 0 | 0 | -
+1 ... +2147483647 | 0 | 1 | 0 | -
(-)2147483648 | 1 | 0 | 1 | 1

Status Word OS

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1 and CC 0 Results from Comparison Instructions

Биты состояния при работе с функциями сравнения

Функции сравнения устанавливают биты состояния CC0 и CC1.

Флаги

устанавливаются независимо от типа выполняемой функции сравнения; зависят они только от отношения между двумя значениями, указанными в выражении функции сравнения.

Функция сравнения чисел формата REAL производит проверку корректности данных формата REAL.

CC 1 | CC 0 | OV | OS | Meaning
0 | 0 | 0 | - | ACCU 2 = ACCU 1 равен
0 | 1 | 0 | - | ACCU 2 < ACCU 1 больше чем
1 | 0 | 0 | - | ACCU 2 > ACCU 1 меньше чем
1 | 1 | 1 | 1 | некорректное число REAL

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1 and CC 0 Results from Shift and Rotate Instructions

Биты состояния при работе с функциями сдвига

Функции сдвига устанавливают биты состояния CC0 и CC1.

Бит OV находится в сброшенном состоянии ("0").

CC 1 | CC 0 | OV | OS | Результат
0 | 0 | 0 | - | Сдвинутый бит = 0
0 | 1 | 0 | - | Сдвинутый бит = 1
- | - | - | - | с числом поз. 0

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1 and CC 0 Results from Word Logic Instructions

Биты состояния при работе с логическими операциями для слов

Логические операции для слов устанавливают биты состояния CC0 и CC1.

Бит OV находится в сброшенном состоянии ("0").

CC 1 | CC 0 | OV | OS | Meaning
0 | 0 | 0 | - | Result = 0
0 | 1 | 0 | - | Result <> 0

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


CC 1

If the result at output OUT does not equal 0, bit CC 1 of the Слово состояния is set to "1".

If the result at output OUT does equal 0, bit CC 1 of the Слово состояния is set to "0".


OV Overflow (Status Word, Bit 5)

OV Переполнение (Overflow) (Слово Состояния, бит 5)

Бит состояния OV индицирует факт превышения диапазона допустимых численных значений (переполнения) или факт использования некорректных действительных (REAL) чисел.

На состояние бита OV влияют следующие функции: арифметические, математические, отдельные функции преобразования, функции сравнения действительных (REAL) чисел.

Вы можете проверить состояние бита OV с помощью операций проверки или посредством оператора перехода JO.

Status Word OS

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


BR Binary Result (Status Word, Bit 8)

BR Двоичный результат (binary result) (Слово Состояния, бит 8)

Бит состояния BR (двоичный результат) помогает реализовать механизм EN/ENO для вызовов блоков (в сочетании с графическими языками).

В разделе "Использование двоичного результата" показано, как STEP 7 использует бит двоичный результат.

Вы можете также установить или сбросить бит состояния BR или проверить его состояние с помощью операторов проверки (опроса) или посредством операторов перехода. ).

Установка и сброс BR

С помощью оператора SAVE Вы можете сохранить в бите состояния "двоичный результат" (BR - "binary result").

Оператор SAVE пересылает состояние сигнала RLO в бит состояния BR.

Оператор SAVE выполняются без всяких условий; при этом он не влияет на другие биты состояния.

SET ;

SAVE ; //Установка бита BR в "1"

...

AN OV;

SAVE ; //Сброс бита BR в "0" при превышении

...

Использование двоичного результата (бита состояния BR)

STEP 7 использует бит BR (двоичный результат) для реализации механизма EN/ENO при использовании языков программирования LAD ("контактный план" - ["ladder diagram"]) и FBD ("Функциональная блок-схема" - ["functional block diagram"]).

Вы можете пропустить эту информацию, если Вы используете только язык программирования STL; тогда в Вашем распоряжении двоичный результат BR как дополнительный бит RLO.

Тем не менее, для индикации ошибок при обработке блоков (как это используется в системных блоках SFB и SFC и некоторых стандартных блоках) Вы можете использовать BR как флаг групповой ошибки, даже если Вы используете исключительно программирование на STL.

Механизм EN/ENO

При использовании языков программирования LAD и FBD все функциональные элементы имеют разрешающие входы EN и разрешающие выходы ENO. Если на разрешающем входе EN присутствует единица "1", то функциональный элемент активизируется (выполняется его функция). Если функция выполняется корректно, то на разрешающем выходе ENO также присутствует единичный сигнал "1".

Если происходит ошибка во время выполнения функции (например, переполнение при вычислении арифметической функции), выход ENO сбрасывается в состояние "0". Если на разрешающем входе EN присутствует сигнал "0", то на разрешающем выходе ENO также присутствует сигнал "0".

Вы можете использовать такие свойства разрешающих входов/выходов (EN/ENO) при связывании нескольких функциональных элементов в единую цепь; при этом разрешающий выход ENO предыдущего элемента будет управлять разрешающим входом EN последующего функционального элемента (см. рис. 15.1).

Такая конфигурация позволит сделать возможным, чтобы происходил разрыв ("switch off") всей цепи (чтобы не был активен ни один функциональный элемент, если в примере на входе I 1.0 присутствует сигнал "0") или чтобы при появлении ошибки в одном из функциональных элементов последующие за ним элементы не могли быть активизированы.

Вход EN и выход ENO не являются параметрами блока, однако, инструкции программы приводят к тому, что LAD/FBD редактор сам генерирует предыдущие и последующие функциональные элементы (даже в случае применения функций и функциональных блоков).

В этом случае LAD/FBD редактор использует двоичный результат для хранения состояния сигнала на разрешающем входе EN во время обработки блока или в качестве сигнального бита для индикации ошибки в функциональном элементе.

Вы можете найти программу, указанную на рис. 15.1, в сегменте Network 8 блока FB 115 в программе "Program Flow Control" (в библиотеке STL_Book). Если Вы видите указанный сегмент блока FB 115 на экране монитора, Вы можете переключиться на LAD-представление, выбрав опции: View -> LAD. После этого редактор включит графическое отображение LAD-программы.

Если Вы пишите свои собственные функции или функциональные блоки и хотите их использовать, например, с LAD- или FBD-представлением, Вы должны таким образом управлять BR, чтобы этот бит сбрасывался в "0" при обнаружении ошибки (см. ниже).

Сообщение о групповой ошибке в блоках

Вы можете использовать двоичный результат в качестве сигнального бита для сообщения о групповой ошибке в блоках. Если блок обрабатывается без ошибок, бит BR устанавливается в состояние "1", иначе - BR сбрасывается в состояние "0".

Пример реализации механизма EN/ENO

A(

A(

A(

A Input1

JNB M001 //Опрос входа EN

L Numb1

L Numb2 //функционального элемента

/R

T tmp1

AN OV //Проверка ошибки в элементе

SAVE //и установка BR

CLR

M001: A BR //Проверка BR для установки ENO

)

JNB M002 //Вход EN следующего элемента

L tmp1

RND

T tmp2

AN OV

SAVE

CLR

M002: A BR

)

A Input2

JNB M003 //Вход EN последнего элемента

L tmp2

T Numb3

SET

SAVE

CLR

M003: A BR

)

= Output1

Пример:

В начале обработки блока BR устанавливается в состояние "1".

На тот случай, если после этого при обработке блока будет обнаружена ошибка, например, результат выходит за рамки определенного диапазона (после чего дальнейшая обработка блока должна быть остановлена) Вы должны запрограммировать сброс BR в состояние "0" с помощью JNB и переход на конец блока, например, (в случае ошибки условие должно выдать сигнал "0").

SET ;

SAVE ; //BR = "1"

...

L 10000;

L Result; //Если Result > 10000,

<=I ; //то BR = "0" и выполнить

JNB ERR; //переход к ERR

SAVE Save RLO in BR Bit

SPBB Jump if RLO = 1 with BR

SPBNB Jump if RLO = 0 with BR

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


Проверка битов состояния

Проверка битов состояния

Биты состояния RLO и BR и все числовые флаги (digital flags) могут быть проверены с помощью операций двоичного опроса и функций перехода.

Также можно обрабатывать биты состояния после загрузки в аккумулятор слова состояния.

Вы можете использовать все операторы опроса (проверки), описанные в

главе 4 "Двоичные логические операции", для проверки числовых флагов

(digital flags) и двоичного результата BR (см. ниже).

A - Проверка (опрос) выполнения условия и логическое AND (И)

O - Проверка (опрос) выполнения условия и логическое OR (ИЛИ)

X - Проверка (опрос) выполнения условия и Exclusive OR

(исключающее ИЛИ)

AN - Проверка (опрос) невыполнения условия и логическое AND (И)

ON - Проверка (опрос) невыполнения условия и логическое OR (ИЛИ)

XN - Проверка (опрос) невыполнения условия и Exclusive OR

(исключающее ИЛИ)

Status Word Addresses for Bit Logic Instructions A, AN, O, ON, X, XN

Address | Status Word Check
==0 | Результат равен 0 ((CC 1 = 0) AND (CC 0 = 0))
<>0 | Результат не равен 0 (((CC 1 = 1) AND (CC 0 = 0)) OR ((CC 1 = 0) AND (CC 0 = 1)))
>0 | Результат больше 0 ((CC 1 = 1) AND (CC 0 = 0))
<0 | Результат меньше 0 ((CC 1 = 0) AND (CC 0 = 1))
>=0 | Результат больше или равен 0 (((CC 1 = 1) AND (CC 0 = 0)) OR ((CC 1 = 0) AND (CC 0 = 0)))
<=0 | Результат меньше или равен 0 (((CC 1 = 0) AND (CC 0 = 1)) OR ((CC 1 = 0) AND (CC 0 = 0)))
UO | Результат не верен ((CC 1 = 1) AND (CC 0 = 1))
BR | Двоичный результат BR = 1
OS | Сохраненное переполнение OS = 1
OV | Переполнение OV = 1

При этом принципы использования операторов опроса (проверки) такие же, как и при проверке, например, входов.

Проверка битов состояния с помощью функций перехода

Вы можете проверять биты состояния RLO и BR, все комбинации CC0 и CC1, а также биты состояния OV и OS с помощью соответствующих функций перехода .

В главе "Функции перехода" содержится подробное описание.

BR | CC 1 | CC 0 | OV | OS | RLO |
 |  |  |  |  | 1 | JC, JCB
 |  |  |  |  | 0 | JCN, JNB
1 |  |  |  |  |  | JBI
0 |  |  |  |  |  | JNBI
 | 0 | 0 |  |  |  | JZ, JMZ, JPZ
 | 1 | 0 |  |  |  | JN, JP, JPZ
 | 0 | 1 |  |  |  | JN, JM, JMZ
 | 1 | 1 |  |  |  | JUO
 |  |  | 1 |  |  | JO
 |  |  |  | 1 |  | JOS

Замечания по проверке битов состояния OV и OS

Если результат вычисления выходит за пределы диапазона допустимых значений для определенного типа данных, то бит состояния OV устанавливается в "1"; одновременно устанавливается в "1" бит состояния OS (бит для сохранения информации о том, что имело место нарушение границы диапазона допустимых значений).

Если результат следующей далее функции (например, в цепочке вычислений) находится в пределах допустимых значений, флаг OV будет сброшен.

Однако, при этом флаг OS останется установленным, так что тот факт, что имело место превышения границ разрешенного диапазона значений, останется сохраненным, при этом он может быть обнаружен с помощью проверки (опроса) в конце вычислений.

Флаг OS не может быть сброшен, пока не встретится функция перехода JOS или не сменится блок (т.е., пока не произойдет новый вызов блока или пока не закончится обработка текущего блока).

Далее представлены два варианта программного решения задачи проверки состояния флагов для определения того факта, что имело место превышение пределов диапазона допустимых значений - в первой программе выполняется двоичный опрос (проверка) флагов, а во второй - выполняется проверка флагов с помощью условных переходов.

Двоичный опрос

L Value1;

L Value2;

+I ;

A OV; //Отдельная проверка

= Status1;

L Value3;

+I ;

A OV; //Отдельная проверка

= Status2;

L Value4;

+I ;

A OS; //Отдельная проверка

= Status_overall;

T Result;

Функции перехода

L Value1;

L Value2;

+I ;

JO ST1; //Отдельная проверка

L Value3;

+I ;

JO ST2; //Отдельная проверка

L Value4;

+I ;

JOS STOV; //Общая проверка

T Result;

Как видно из последних примеров, опрос (проверку) флагов можно производить либо после каждой операции вычисления (опрос бита состояния OV), либо в конце цепочки вычислений (опрос бита состояния OS).

BR

CC 1

CC 0

OV

OS

OR

STA

RLO

/FC

Обзор


Стек MCR

Стек MCR работает по принципу буфера LIFO (Last In, First Out - последний вошел, первый вышел) и он имеет глубину в восемь записей. .


CPU Resources

В разных CPU используются 16-ти и 32-х разрядные микроконтроллеры с различным набором внутренних регистров.

Depending on the parameters you have assigned to your CPU, the contents of bit memory, timer, counter, and DB areas is either retained or lost during a power failure or following a memory reset.

You define retentive properties for bit memory, timers, counters, and areas of DB memory using the application Hardware Configuration.

The following tables should help you to decide how to distribute your program in the memory areas.

X means Data retained

0 means Data reset to "0”

D means Data set to default value specified by EPROM.

 | EPROM (Memory Card or integrated): CPU with installed backup battery
Data |  | Logic blocks | DB | Memory bits, timers, counters defined retentive | Memory bits, timers, counters, not defined retentive
Power failure |  | X | X | X |
Memory reset |  | X | D |  |

 | EPROM (Memory Card or integrated): CPU without installed backup battery
Data |  | Logic blocks | DB |  | Memory bits, timers, counters defined retentive | Memory bits, timers, counters, not defined retentive
Power failure |  | X |  | D | X |
Memory reset |  | X |  | D | or D for DB |

 | RAM: CPU with installed backup battery
Data |  | Logic blocks | DB | Memory bits, timers, counters defined retentive | Memory bits, timers, counters, not defined retentive
Power failure |  | X | X | X |
Memory reset |  |  |  |  |


Обзор примеров программирования

Обзор примеров программирования

Практические применения

Каждая команда KOP, описанная в данном руководстве выполняет определенную функцию.

Комбинируя эти команды в программе, Вы можете реализовать широкий спектр задач автоматизации.

Эта глава предлагает следующие примеры применения команд KOP:

· Управление частотным преобразователем по Профибус

• Управление транспортером с использованием битовой логики

• Определение направления движения ленты транспортера с использованием битовых логических операций

• Генерация тактовых импульсов с помощью таймерных команд

• Контроль склада с помощью операций счета и сравнения

• Решение задачи с использованием инструкций над целыми числами

• Установка интервала времени для нагревания печи

· Бинарный делитель частоты

Используемые инструкции

Каталог программных элементов | Каталог программных элементов | Описание
WAND_W | Логика со словами | Поразрядное И со словами
WOR_W | Логика со словами | Поразрядное ИЛИ со словами
---( CD ) | Счетчик | Счетчик на уменьшение
---( CU ) | Счетчик | Счетчик на увеличение
---( R ) | Битовая логика | Сброс бита
---( S ) | Битовая логика | Установка бита
---( P ) | Битовая логика | Выделение положительного фронта RLO
ADD_I | Плавающая запятая | Сложить целое со знаком Integer
DIV_I | Плавающая запятая | Деление целого числа
MUL_I | Плавающая запятая | Умножение целых чисел
CMP <=I | Сравнение | Сравнение целых чисел типа Integer
––| |–– | Битовая логика | Нормально открытый контакт
––| / |–– | Битовая логика | Нормально замкнутый контакт
––( ) | Битовая логика | Выходная катушка - Выход
---( JMPN ) | Переходы | Jump-If-Not
---( RET ) | Управление | Return
MOVE | Перемещение | Передача значения
---( SE ) | Таймеры | Запуск таймера Удлинненный импульс


Управление частотным преобразователем по Профибус

Пример: Управление частотным преобразователем по Профибус

На фото показан стенд для управления приводом с помощью частотного преобразователя.

Для работы по Профибус к нему потребуется добавить модуль связи Профибус.

Заполнить таблицу параметров частотника и написать процедуру управления

Процедура сводится к посылке частотному преобразователю Слова Управления (PZD0) и уставки Частоты (PZD1)

Исходное Слово Управления в состоянии покоя :

047E

0000

Команда крутиться с частотой 12.5Hz (w#16#1000) :

047F

1000

Команда крутиться с частотой 50Hz (w#16#4000) :

047F

4000

Команда крутиться в обратном направлении с частотой 12.5Hz:

0C7F

1000

Подробности смотри в "MICROMASTER PROFIBUS Optional Board. Operating Instructions Edition 02/02. 6SE6400-5AK00-0BP0"

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Конфигурация

Если у тебя установлен программный пакет DriveES, то в HW-Config будет доступна расширенная конфигурация

Я по возможности выбираю PKW+PZD-6/6

то есть имею возможность через "механизм PKW" считать любые ячейки из таблицы частотника,

а 6 слов PZD позволяют напрямую считывать 6 основных ячеек: Слово Состояния, частоту, ток, момент, напряжение ...

В стандартной конфигурации

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Таблица параметров частотника

Установите адрес Профибус микропереключателями на модуле связи Профибус частотника

или в таблице.

0918

In000

*

Адрес Профибус если не используете микропереключатели адреса

Используя программу из поставки DriveES задайте параметры работы частотника:

1. Starter по Профибус

2. или DriveMonitor через переходник на COM-порт

3. или вручную через базовую панель оператора

После введения основных установок согласно фирменному руководству: параметров движка

забейте следующие параметры, отличные от заводских установок

0700 | In000 | 6 | CB - команды через Профибус
1000 | In000 | 6 | CB - задание скорости через Профибус
2051 | In000 | 52:0 | PZD0 Слово Состояния из 0052
 | In001 | 21:0 | PZD1 Фактическая частота из 0021
 | In002 | 27:0 | PZD2 Фактический ток из 0027
 | In003 | 31:0 | PZD3 Фактический момент из 0031
 | In004 | 26:0 | PZD4 Фактическое выпрямленное напряжение из 0026
 | In005 | 0:0 | PZD5 не используется
 | In006 | 0:0 | PZD6 не используется
 | In007 | 0:0 | PZD7 не используется

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Таблица символов

Таблица символов (визуально байты в Словах CW и SW поменяны местами)

Слово Управления |  |  | 0000.0100.0111.1110 047E - покой 047F/0C7F - крутить по/против 04FE - Сброс ошибки
CW_JOG_R | M 150.0 | BOOL | (0), Толчок вправо 1
CW_JOG_L | M 150.1 | BOOL | (0), Толчок влево 1
CW_SetPoint_Valid | M 150.2 | BOOL | (1) Уставки верны, 0 - нет
CW_SetPoint_Inverted | M 150.3 | BOOL | 0/1 Направление вращения обратное 1
CW_NotUsed_4 | M 150.4 | BOOL | (0)
CW_Pot_Up | M 150.5 | BOOL | (0) 1=Motor potentiometer UP / 0=No meaning
CW_Pot_Down | M 150.6 | BOOL | (0) 1=Motor potentiometer Down / 0=No meaning
CW_NotUsed_7 | M 150.7 | BOOL | (0) 1=Local control active(BOP/AOP) / 0=Remote control active
CW_Pusk_OFF1 | M 151.0 | BOOL | 0 - Стоп, 1 -Пуск
CW_OFF2 | M 151.1 | BOOL | (1) 1=Operating condition/ 0=OFF2 - pulse disable
CW_OFF3 | M 151.2 | BOOL | (1), Быстрое электрическое торможение 0
CW_Enable | M 151.3 | BOOL | (1) 1=Enable operation/ 0=Disable operation
CW_Op_Condition | M 151.4 | BOOL | (1) 1=Operating condition/ 0=Disable RFG
CW_enable_RFG | M 151.5 | BOOL | (1) 1=Enable RFG / 0=Stop RFG
CW_enable_setpoint | M 151.6 | BOOL | (1) 1=Enable setpoint/ 0=Disable setpoint
CW_Ack_fault | M 151.7 | BOOL | (0), Сброс ошибки 1 F***
Слово Состояния |  |  | FA31 Готов к работе, FB34/BB34 - работает по/против, FA38 - выключился из-за ошибки
SW_no_deviation | M 166.0 | BOOL | 1=No setpoint-act.val. deviation/ 0=setpoint-act.val. deviation
SW_Bit_9 | M 166.1 | BOOL | 1=Master control requested/ 0=Local operation
SW_f_reached | M 166.2 | BOOL | Достигли заданной частоты
SW_current_limit | M 166.3 | BOOL | 1= / 0=Alarm:Motor at current limit
SW_M_holding_break | M 166.4 | BOOL | 1= / 0=Motor holding brake
SW_overload | M 166.5 | BOOL | Перегрузка 0=Motor overload
SW_CClockW_rotation | M 166.6 | BOOL | 1= CW rotation / 0= CCW rotation
SW_Conv_overload | M 166.7 | BOOL | 1= /0=Converter overload
SW_Ready_ON | M 167.0 | BOOL | Готов к работе 1=Ready for On/ 0=Not ready for On
SW_Ready_RUN | M 167.1 | BOOL | 1=Ready for run/ 0=Not ready for run
SW_Run | M 167.2 | BOOL | 1=Operation enabled/ 0=Operation disabled
SW_Fault_active | M 167.3 | BOOL | Ошибка F*** вызвала остановку 1=Fault active / 0=No fault active
SW_OFF2_applied | M 167.4 | BOOL | 1=No OFF2 command applied / 0=OFF2 command applied
SW_OFF3_applied | M 167.5 | BOOL | 1=No OFF3 command applied / 0=OFF3 command applied
SW_Start_lockout | M 167.6 | BOOL | 1=Starting lockout / 0=No Starting lockout
SW_Alarm_active | M 167.7 | BOOL | Предупреждение А*** активно 1=Alarm is active / 0= Alarm is active
CW_word1 | MW 150 | WORD | Слово управления - смотри побитно вверху
CW_freq_setpoint | MW 152 | WORD | Задаваемая частота
SW_reserved_3 | MW 154 | WORD |
SW_reserved_4 | MW 156 | WORD |
CW_reserved_5 | MW 158 | WORD |
CW_reserved_6 | MW 160 | WORD |
CW_reserved_7 | MW 162 | WORD |
CW_reserved_8 | MW 164 | WORD |
SW_word1 | MW 166 | WORD | Слово состояния - смотри побитно вверху
SW_freq_real | MW 168 | INT | Фактическая частота
SW_Current_real | MW 170 | INT | Фактический ток
SW_Torque_real | MW 172 | INT | Фактический момент
SW_U_real | MW 174 | INT | Фактическое входное выпрямленное U
SW_reserved_6 | MW 176 | WORD |
SW_reserved_7 | MW 178 | WORD |
SW_reserved_8 | MW 180 | WORD |

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Фирменная Таблица символов

В Сименовских фирменных примерах адресация выглядит так:

Слово управления
CW_Bit_8 | BOOL | 1=Jog right on/ 0=Jog right off
CW_Bit_9 | BOOL | 1=Jog left on / 0=Jog left off
CW_Bit_10 | BOOL | 1=Setpoint valid / 0=Setpoint invalid
CW_Bit_11 | BOOL | 1=Setpoint inverted/ 0=Setpoint is not inverted
CW_Bit_12 | BOOL | -
CW_Bit_13 | BOOL | 1=Motor potentiometer UP / 0=No meaning
CW_Bit_14 | BOOL | 1=Motor potentiometer Down / 0=No meaning
CW_Bit_15 | BOOL | 1=Local control active(BOP/AOP) / 0=Remote control active
CW_Bit_0 | BOOL | 1=On/ 0=OFF
CW_Bit_1 | BOOL | 1=Operating condition/ 0=OFF2 - pulse disable
CW_Bit_2 | BOOL | 1=Operating condition/ 0=OFF3 - Rapid stop
CW_Bit_3 | BOOL | 1=Enable operation/ 0=Disable operation
CW_Bit_4 | BOOL | 1=Operating condition/ 0=Disable RFG
CW_Bit_5 | BOOL | 1=Enable RFG / 0=Stop RFG
CW_Bit_6 | BOOL | 1=Enable setpoint/ 0=Disable setpoint
CW_Bit_7 | BOOL | 1=fault acknowledge / 0=No meaning
Слово Состояния
SW_Bit_8 | BOOL | 1=No setpoint-act.val. deviation/ 0=setpoint-act.val. deviation
SW_Bit_9 | BOOL | 1=Master control requested/ 0=Local operation
SW_Bit_10 | BOOL | 1=fmax reached/ 0=fmax not reached
SW_Bit_11 | BOOL | 1= / 0=Alarm:Motor at current limit
SW_Bit_12 | BOOL | 1= / 0=Motor holding brake
SW_Bit_13 | BOOL | 1= / 0=Motor overload
SW_Bit_14 | BOOL | 1= CW rotation / 0= CCW rotation
SW_Bit_15 | BOOL | 1= /0=Converter overload
SW_Bit_0 | BOOL | 1=Ready for On/ 0=Not ready for On
SW_Bit_1 | BOOL | 1=Ready for run/ 0=Not ready for run
SW_Bit_2 | BOOL | 1=Operation enabled/ 0=Operation disabled
SW_Bit_3 | BOOL | 1=Fault active / 0=No fault active
SW_Bit_4 | BOOL | 1=No OFF2 command applied / 0=OFF2 command applied
SW_Bit_5 | BOOL | 1=No OFF3 command applied / 0=OFF3 command applied
SW_Bit_6 | BOOL | 1=Starting lockout / 0=No Starting lockout
SW_Bit_7 | BOOL | 1=Alarm is active / 0= Alarm is active

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Процедура управления

Упрощённая процедура управления частотником

Network 1: | Задать начальное состояние Слова управления |
 | L W#16#47E | //000.0100.0111.1110
 | T "CW_word1" | // Загружаем исходное Слово управления // затем по ходу дела будем править биты
Network 2: | 5 CDS Бит (Local/Remote) 0 НЕТ 1 ДА |
 |  | Использую для переключения таблиц параметров при работе от PLC или с BOP. CDS1 to CDS2 (control word and setpoint)
Network 3: | Определение наличия и величины выпрямленного напряжения |
 |  | Определение наличия и величины выпрямленного напряжения частотников по параметру 2051:8=0026 VDC>2000h и флаг готовности частотника по входному напряжению При плохой сети и провалах напруги при пуске движка приходится опускать граничное значение минимально-допустимого рабочего напряжения
Network 4: | Сброс сигналов для частотников |
 |  | У тебя могут быть свои условия для определения условий, разрешающих включение частотника
Network 5: | Пуск двигателя ОНУ |
 |  | Пуск от кнопки Остановка от кнопки Стоп или по условиям готовности частотника
Network 6: | Команда быстрого электрического торможения OFF3 |
 |  | У тебя могут быть свои условия для включения быстрого электрического торможения
Network 7: | Управление тормозом |
 |  | У тебя могут быть свои условия для включения тормоза в том числе задержки.
Network 8: | Направление вращения |
 |  | Задаём направление вращения двигателя. Для одностороннего вращения жёстко установи этот бит в нужное состояние.
Network 9: | Квитирование сбоя 0 НЕТ 1 ДА |
 |  | Сброс ошибки с основного экрана для выбранного привода
Network 10: | Масштабирование скорости в единицы частотника | подготовка значения скорости в единицах частотника 50 Гц = 16384 = W#16#4000 1 Гц = 16384/50 = 327,68 ? 327
 | L "Freq_setpoint_HZ" | //частота в Гц
 | L 327 | // коэффициент 1 Гц = 327
 | *I | //327*50 Гц=16350 =W#16#3FDE
 | T "CW_freq_setpoint" | // Передать в область обмена
Network 11: | Процедура пересылки команды и скорости в частотник |
 | CALL "DPWR_DAT" | //CALL SFC15
 | LADDR :=W#16#108 | //десятичный адрес 264 в HEX W#16#108
 | RECORD :=P#M 150.0 BYTE 12 | //адрес области обмена и размер 6 слов (12 байт)
 | RET_VAL:=MW190 | //ErrorSFC15 - флаг успешности/ошибки передачи
 |  | Исходное Слово Управления в состоянии покоя : 047E 0000 Команда крутиться с частотой 12.5Hz (w#16#1000) : 047F 1000 Команда крутиться с частотой 50Hz (w#16#4000) : 047F 4000 Команда крутиться в обратном направлении с частотой 12.5Hz: 0C7F 1000
Network 12: | Процедура чтения 6 слов из частотника |
 | CALL "DPRD_DAT" | //CALL SFC14
 | LADDR :=W#16#108 | //десятичный адрес 264 в HEX W#16#108
 | RET_VAL:=ErrorSFC14 | //ErrorSFC14 - флаг успешности/ошибки получения
 | RECORD :=P#P#M 166.0 BYTE 12 | //адрес области обмена и размер 6 слов (12 байт)

Для быстрых контроллеров (400-х) и при использовании Y-LINK для резервированных систем

вместо SFC14/15 можно использовать прямое чтение и запись в соответствующие порты частотника

Network 11: | Процедура пересылки команды и скорости в частотник |
 | L "CW_word1" | // Слово управления
 | T PQW 264 | // пересылаем в Слово упраления частотника
 | L "CW_freq_setpoint" | // частота в пределах 0...16384 (0...50 Гц)
 | T PQW 266 | // пересылаем в ячейку задания скорости частотника

Конфигурация

Таблица параметров частотника

Таблица символов

Процедура управления


Масштабирование

Можно масштабировать значения с помощью плавающей арифметики

L #drive_f_setpoint // частота в [Hz]

L 0.000000e+000

<R // если скорость меньше 0Hz

JC N004

L #drive_f_setpoint

L 5.000000e+001

>R // setpoint < 50Hz ?

JC N004

L #drive_f_setpoint

L 1.000000e+002 // 100

*R // Умножаем вещественное

RND //conversion of a 32-bit IEEE floating-point number to 32-bit integer

L 16384 // 16384 = 4000HEX = 50Hz

*D // Умножаем двойное целое

L 5000

/D // Делим двойное целое

T #SEND.f_setpoint // Задание частотнику

N004: NOP 0

Обратное из считанного из частотника в Гц

L #REC.f_act

ITD

DTR

L 5.000000e+001 //16383= 4000HEX = 50Hz

*R

L 1.638400e+004

/R

L 1.000000e+002

*R

TRUNC

ITD

DTR

L 1.000000e+002

/R

T #drive_f_act


Управление транспортером с использованием битовой логики

Управление лентой транспортера

Пример: Битовые логические инструкции

Управление лентой транспортера

На следующем рисунке показана лента транспортера, которая может приводиться в движение с помощью электродвигателя.

В начале транспортера имеются две кнопки: S1 для запуска и S2 для останова.

В конце транспортера тоже имеются две кнопки: S3 для запуска и S4 для останова.

Транспортер можно запускать или останавливать с любого конца.

Также датчик S5 останавливает транспортер, когда предмет, находящийся на ленте, достигает конца.

Абсолютное и символьное программирование

Вы можете написать программу для управления лентой транспортера, показанного на рисунке, используя абсолютные значения или их символьные имена, представляющие различные компоненты конвейера.

Вы должны создать таблицу символов для того, чтобы поставить в соответствие выбранным символьным именам абсолютные адреса (см. STEP 7 Online Help).

Компонент системы | Абсолютный адрес | Символ | Таблица символов
Кнопка S1 “Пуск” | I 1.1 | S1 | I 1.1 S1
Кнопка S2 “Стоп” | I 1.2 | S2 | I 1.2 S2
Кнопка S3 “Пуск” | I 1.3 | S3 | I 1.3 S3
Кнопка S4 “Стоп” | I 1.4 | S4 | I 1.4 S4
Датчик S5 | I 1.5 | S5 | I 1.5 S5
Двигатель | Q 4.0 | MOTOR_ON | Q 4.0 MOTOR_ON

Программа управления конвейером (в контактном плане)

Network 1: Нажатие любой кнопки “Пуск” устанавливает тэг Q4.0 в 1

и включает двигатель.

LAD | STL
 | O S1 //Нажатие любой кнопки . O S3 S MOTOR_ON //включает конвейер

Network 2: Нажатие любой кнопки “Стоп”

или срабатывание датчика сбрасывает тэг Q4.0 в 0

вызывает отключение двигателя.

LAD | STL
 | O S2 //Нажатие любой стоповой кнопки O S4 //или срабатывание ON S5 //нормально закрытого концевика R MOTOR_ON //останавливает конвейер.

При одновременном нажатии кнопок Пуск и Стоп или Срабатывании датчика преимущество имеют кнопки Стоп и датчик, так как они обрабатываются позже.

Возможно также использовать SR триггер для этих же целей.

LAD | STL
 | O S1 //Нажатие любой кнопки . O S3 S MOTOR_ON //включает конвейер O S2 //Нажатие любой стоповой кнопки O S4 //или срабатывание ON S5 //нормально закрытого концевика R MOTOR_ON //останавливает конвейер.


Определение направления движения ленты транспортера

Пример 2 : Определение направления движения ленты транспортера

На рисунке показана лента транспортера, с двумя фотоэлектрическими датчиками (РЕВ1 и РЕВ2), которые служат для определения направления в котором движется пакет, расположенный на ленте.

Оба фотобарьера работают как нормально открытые контакты

Абсолютное и символьное программирование

Вы можете написать программу для определения направления движения транспортера, показанного на рисунке, используя абсолютные значения или их символьные имена, представляющие различные компоненты конвейера .

Вы должны создать таблицу символов для того, чтобы поставить в соответствие выбранным символьным именам абсолютные адреса (см. STEP 7 Online Help).

Компонент системы | Абсолютный адрес | Символ | Таблица символов
Фотоэлектрический датчик 1 | I 0.0 | PEB1 | I 0.0 PEB1
Фотоэлектрический датчик 2 | I 0.1 | PEB2 | I 0.1 PEB2
Индикатор движения направо | Q 4.0 | RIGHT | Q 4.0 RIGHT
Индикатор движения налево | Q 4.1 | LEFT | Q 4.1 LEFT
Тактовый меркер 1 | M 0.0 | PMB1 | M 0.0 PMB1
Тактовый меркер 2 | M 0.1 | PMB2 | M 0.1 PMB2

Программа для определения направления движения транспортера

Network 1: Если на входе I0.0 сигнал изменяется с 0 на 1 (нарастающий фронт), и при этом состояние сигнала на входе I0.1 равно 0, то пакет на ленте транспортера движется влево.

LAD | STL
 | A I 0.0 //на входе I 0.0 FP M 0.0 //при появлении положительного фронта AN I 0.1 //= 0 при наличии упаковки на конвейере S Q 4.1 //определяется движение влево

Network 2: Если на входе I0.1 сигнал изменяется с 0 на 1 ( нарастающий фронт), и при этом состояние сигнала на входе I0.0 равно 0, то пакет на ленте транспортера движется вправо.

Если световой барьер выдает низкий уровень, это значит , что пакет находится перед ним.

LAD | STL
 | A I 0.1 //на входе I 0.1 FP M 0.1 //при появлении положительного фронта AN I 0.0 //= 0 при наличии упаковки на конвейере S Q 4.1 //определяется движение вправо

Network 3: Если оба световых барьера перекрытыэто значит , что пакет находится между ними. Указатели направления сбрасываются.

LAD | STL
 | AN I0.0 //Если ни один из световых барьеров AN I0.1 //не пересечен R Q 4.0 //конвейер R Q 4.1 //выключается


Генерация тактовых импульсов с помощью таймерных команд

Пример: Таймерные инструкции

Генератор тактовых импульсов

Для создания периодически повторяющегося сигнала Вы можете использовать генератор тактовых импульсов или импульсное реле.

Генераторы тактовых импульсов обычно используются в системах сигнализации, управляющих миганием индикаторных ламп.

Если Вы используете S7-300, то Вы можете реализовать функцию генератора тактовых импульсов используя вызов программы из специальных

организационных блоков, управляемых временем.

Пример, показанный в следующей программе LAD, иллюстрирует использование таймерных функций для генерации тактовых импульсов.

Программа для cинхронного генератора импульсов (в контактном плане)

Network 1: Если состояние сигнала таймера T 1 равно 0, загрузить значение времени 250 мс в T 1 и запустить T 1 как удлинненный импульс.

AN M0.2 //Если таймер T 1 закончил отсчет,

L S5T#250ms //загрузка значения 250 ms в таймер T 1 и

SV T1 //запуск таймера как T 1 удлиненный импульс.

Network 2: Состояние таймера временно сохраняется во вспомогательном меркерном.

A T1

=M0.2 //Инверсия RLO.

Network 3: Если состояние сигнала таймера T1 равно "1", перейти на метку М001.

A M0.2

BEС //Если таймер не закончил отсчет, конец блока.

Network 4: Когда время таймера T1 истекает, MW 100 увеличивается на "1".

//Если таймер закончил отсчет,

L MW100 //загрузка содержимого MW100,

INC 1 //инкремент на 1,

Network 5: Команда MOVE позволяет вывести различные тактовые частоты на выходах от Q12.0 до Q 13.7.

T MW100 //сохранение результата в MW100.

A Flag_Error //M 10.0 = 1 при возникновении ошибки.

A M100.1 //При этом с частотой 1 Hz.

= Q 4.0 //Q4.0 мигает лампа ошибки

Проверка сигнала

Проверка значения T1 дает следующий результат логической операции(RLO)

для нормально замкнутого контакта M0.2.

Как только время таймера истекает, таймер запускается вновь. Поэтому

опрос сигнала, который выполняется командой --| / |-- T1, выдает состояние

сигнала "1" только кратковременно.

Соответственно инвертированный RLO имеет вид:

Каждые 250 мс бит RLO становится равным 0. Переход не метку не

выполняется и содержимое слова памяти MW100 увеличивается на 1.

Получение необходимой частоты

В таблице В?5 перечислены частоты, которые Вы можете получить из

отдельных битов байтов памяти MB101 и MB100:

Биты MB101/MB100 | Частота в Гц | Длительность
M 101.0 | 2.0 | 0.5 с (250 мс вкл./250 мс выкл.)
M 101.1 | 1.0 | 1 с (0.5 с вкл./0.5 с выкл.)
M 101.2 | 0.5 | 2 с (1 с вкл./1 с выкл.)
M 101.3 | 0.25 | 4 с (2 с вкл./2 с выкл.)
M 101.4 | 0.125 | 8 с (4 с вкл./4 с выкл.)
M 101.5 | 0.0625 | 16 с (8 с вкл./8 с выкл.)
M 101.6 | 0.03125 | 32 с (16 с вкл./16 с выкл.)
M 101.7 | 0.015625 | 64 с (32 с вкл./32 с выкл.)
M 100.0 | 0.0078125 | 128 с (64 с вкл./64 с выкл.)
M 100.1 | 0.0039062 | 256 с (128 с вкл./128 с выкл.)
M 100.2 | 0.0019531 | 512 с (256 с вкл./256 с выкл.)
M 100.3 | 0.0009765 | 1024 с (512 с вкл./512 с выкл.)
M 100.4 | 0.0004882 | 2048 с (1024 с вкл./1024 с выкл.)
M 100.5 | 0.0002441 | 4096 с (2048 с вкл./2048 с выкл.)
M 100.6 | 0.000122 | 8192 с (4096 с вкл./4096 с выкл.)
M 100.7 | 0.000061 | 16384 с (8192 с вкл./8192 с выкл.)

Состояние отдельных битов меркерного байта MB 101

Цикл | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Время в ms
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 250 ms
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 250 ms
2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 250 ms
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 250 ms
4 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 250 ms
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 250 ms
6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 250 ms
7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 250 ms
8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 250 ms
9 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 250 ms
10 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 250 ms
11 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 250 ms
12 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 250 ms

Состояние сигнала бита 1 меркерного байта MB 101 (M 101.1)

Частота = 1/T = 1/1 s = 1 Hz

Смотри также Тактовый меркер


Контроль склада с помощью операций счета и сравнения

Пример: Операции счета и сравнения

Пример: Операции счета и сравнения

Промежуточный склад со счетчиком и компаратором

На рисунке представлена система из двух конвейеров и промежуточным складом между ними. Конвейер 1 доставляет пакеты в зону складирования.

Фотоэлектрический датчик в конце конвейера 1 у зоны складирования определяет, сколько пакетов доставлено в эту зону.

Конвейер 2 транспортирует пакеты из зоны временного складирования к погрузочной площадке, где пакеты грузятся на грузовые автомобили для доставки клиентам.

Фотоэлектрический датчик в конце конвейера 2 вблизи зоны складирования определяет, сколько пакетов покидают зону складирования для отправки на погрузочную площадку.

Информационное табло с пятью лампами отображает уровень заполнения склада временного хранения.

Программа для индикации загрузки склада ( в контактном плане)

Network 1: Счетчик C1 увеличивает значение при каждом изменении сигнала с 0 на 1 на входе CU и уменьшает значение при каждом изменении сигнала с 0 на 1 на входе CD.

При изменении сигнала с 0 на 1 на входе S счетчик принимает значение PV=10.

Изменение сигнала с 0 на 1 на входе R сбрасывает значение счетчика в 0.

MW200 содержит текущее значение C1 в двоично-десятичном виде.

Q12.1 показывает, что зона складирования не пуста.

A I 0.0 //каждый импульс на световом барьере 1

CU C1 // увеличивает значение счетчика C 1 на 1,

//выполняя подсчет числа пакетов,

//поступающих на склад временного хранения.

A I 0.1 // каждый импульс на световом барьере 2

CD C1 // уменьшает значение счетчика C 1 на 1,

//выполняя подсчет числа упаковок,

//покидающих склад временного хранения.

AN C1 //При значении счетчика = 0,

= Q 12.0 //Включается лампа "Склад пустой"

Network 2: Q12.0 показывает, что склад пуст.

A C1 //Если значение счетчика не равно 0,

= Q 12.1 // Включается лампа "Склад не пустой".

Network 3: Если 50 меньше или равно значению счетчика (иными словами, если текущее значение счетчика больше 50), то загорается индикаторная лампа “Зона складирования заполнена на 50%”

L 50

L C1

<=I //При значении счетчика >= 50,

= Q 15.2 // Включается лампа "Склад заполнен на 50 %”.

Network 4: Если значение счетчика больше или равно 90, то горит индикаторная лампа “Зона складирования заполнена на 90%”.

L 90

>=I // При значении счетчика >= 90,

= Q 15.3 // Включается лампа "Склад заполнен на 90 %”.

Network 5: Если значение счетчика больше или равно 100, то горит индикаторная лампа “Зона складирования заполнена полностью”

L С1

L 100

>=I // При значении счетчика >= 100

= Q 15.4 // Включается лампа "Склад заполнен полностью”. (Вы можете также использовать

выход Q 15.4 для блокировки мотора конвейера 1.)


Решение задачи с использованием инструкций над целыми числами

Пример: Математические операции с целыми числами

Пример: Математические операции с целыми числами

Решение математической задачи

Следующий пример программы показывает, как использовать математические операции с целыми числами и команды L и T для вычисления результата следующего уравнения:

MW4 = ((IW0 + DBW3) x 15) / MW0

Программа в контактном плане

Network 1: Открыть блок данных DB1.

Network 2: Входное слово IW0 складывается с глобальным словом данных DBW3 (?блок данных должен быть создан и открыт) и сумма загружается в меркерное слово MW100.

MW100 затем умножается на 15 и результат сохраняется в меркерном слове MW102.

MW102 делится на MW0. Результат сохраняется в MW4.


Установка интервала времени для нагревания печи

Пример: Поразрядные логические операции со словами

Пример: Поразрядные логические операции со словами

Нагрев печи

Оператор начинает разогрев печи нажатием кнопки “Пуск”. Он может

задавать длительность нагрева с помощью цифрового переключателя,

показанного на рисунке. Значение, устанавливаемое оператором задает

количество секунд в двоично-десятичном формате (BCD).

Компонент системы | Абсолютный адрес в программе
Кнопка “Пуск” | I 0.7
Переключатель для разряда единиц | от I 1.0 до I 1.3
Переключатель для разряда десятков | от I 1.4 до I 1.7
Переключатель для разряда сотен | от I 0.0 до I 0.3
Запуск нагрева | Q 4.0

Программа управления нагревом печи в контактном плане

Network 1: Если таймер работает, то включается нагрев.

Network 2: Если таймер работает, инструкция Return(Возврат) заканчивает

выполнение программы.

Network 3: Замаскировать биты с I0.4 по I0.7, ?т.е. сбросить их в 0. Эти биты

входов переключателя не используются. 16 битов входов переключателя

сопрягаются с W#16#0FFF в соответствии с командой “Поразрядное И со

словами”. Результат загружается в меркерное слово MW1. Чтобы установить

базу времени в секундах, предустановленное значение комбинируется с

W#16#2000 в соответствии с командой “Поразрядное ИЛИ со словами”,

устанавливая бит 13 в 1 и сбрасывая бит 12 в 0.

Network 4: Запуск таймера T 1 как удлинненный импульс при нажатии на

стартовую кнопку, с установкой его на значение из MW2 (подготовленного

ранее в сегменте 3).


User-Defined Data Types (UDT)

Задача

A program to control a valve is required. To create the program, the current valve position should be read and this value preprocessed. Then the valve should be opened and closed. A user-defined data type should be defined for the measured value.

Решение

A function "ANALOG_VALUE" should be programmed in which the current valve position is read in, checked for plausibility, the physical limit value calculated, and the limit value alarms formed. The analog value formed in this way is stored in a data block whose only variable is of the data type UDT. This user-defined data type is to be structured as follows:

Component | Data Type | Meaning
Measured value | REAL | Physical value
Limit values | STRUCT | Structure with the components limit value.L and limit value.H: limit values for the physical value
Alarms | STRUCT | Structure with the component alarm.L and alarm.H: binary variables which signal whether the limit values were undershot or exceeded
Wire break | BOOL | Analog value is faulty because a wire break occurred
Overflow | BOOL | Analog value is faulty because an overflow occurred.
Group fault | BOOL | Analog value is faulty.

A second function "VALVE" actually controls the valve. Here you should note that opening the valve must be stopped when the valve control reaches the upper limit value. In the same way, you should stop closing the valve when the valve control reaches the lower limit value.

STL Source File

//*************************************************************************************************************

Symbol Table

ANALOG_VALUE | FC10 | FC10 | Read, convert, ans save analog value
MEAS.VAL | UDT24 | UDT24 | User-defined data type
MEAS.VAL_DATA | DB37 | DB37 | Contains a variable with the data structure "MEAS.VAL" for the valve position
VALVE | FC15 | FC15 | Valve control

//*************************************************************************************

TYPE "MEAS.VAL" //UDT "MEAS.VAL"

STRUCT

Measured value : REAL ; //Physical value

Limit values : STRUCT

L : REAL ; //Lower limit value (low)

H : REAL ; //Upper limit value (high)

END_STRUCT ;

Alarms : STRUCT

L : BOOL ; //Lower alarm (low)

H : BOOL ; //Upper alarm (high)

END_STRUCT ;

Wire break : BOOL ;

Overflow : BOOL ;

Group fault : BOOL ;

END_STRUCT ;

END_TYPE

//***********************************************************************************

DATA_BLOCK "MEAS.VAL_DATA" //Data block "MEAS.VAL_DATA"

STRUCT

Measured values : "MEAS.VAL"; //Variable with the data structure "MEAS.VAL"

END_STRUCT ;

BEGIN

END_DATA_BLOCK

//***********************************************************************************

FUNCTION "ANALOG_VALUE" : VOID

VAR_INPUT

Address : WORD ; //I/O address

Meas_range_start : REAL ;

Meas_range_end : REAL ;

Type : INT ; //Measuring type: 1=0-20 mA, 2=4-20 mA, 3=0-10 V

Limit_value_L : REAL ;

Limit_value_H : REAL ;

END_VAR

VAR_OUTPUT

Meas_value_info : "MEAS.VAL"; //Variable with data structure "MEAS.VAL"

END_VAR

BEGIN

NETWORK

TITLE =

// Reads the analog value in, checks it for plausibility (wire break,

// overflow), calculates the physical value using the measuring type

// and the measuring range limits and forms the limit value alarms by

// comparing with the limit values.

// The relevant input data and the calculated results are stored in the

// variable "Meas_value_info".

END_FUNCTION

//*********************************************************************************

FUNCTION "VALVE" : VOID

VAR_INPUT

OPEN : BOOL ; //Open valve

CLOSE : BOOL ; //Close valve

STOP : BOOL ; //Stop valve

POSITION : "MEAS.VAL"; //Variable with the data structure "MEAS.VAL",

//current valve position

END_VAR

VAR_OUTPUT

COMMAND_OPEN : BOOL ;

COMMAND_CLOSE : BOOL ;

FAULT : BOOL ;

END_VAR

BEGIN

NETWORK

TITLE = Unit logic

A #POSITION.Group fault;

JC End; //No change to the valve position if

//analog value faulty.

//The valve is then opened.

AN #OPEN;

JC Close;

R #COMMAND_CLOSE; //Stop closing the valve if necessary.

AN #POSITION.Alarm.H; //Physical value has not yet reached the upper

//limit value?

S #COMMAND_OPEN;

A #POSITION.Alarm.H; //Physical value has reached the upper

//limit value?

R #COMMAND_OPEN;

//The valve is then closed.

Close: AN #CLOSE;

JC Stop;

R #COMMAND_OPEN; //Stop opening the valve if necessary.

AN #POSITION.Alarm.L; //Physical value has not yet reached the lower

//limit value?

S #COMMAND_CLOSE;

A #POSITION.Alarm.L; //Physical value has reached the lower

//limit value?

R #COMMAND_CLOSE;

//The valve is then stopped.

Stop: AN #STOP;

JC End;

R #COMMAND_OPEN;

R #COMMAND_CLOSE;

End: NOP 0;

END_FUNCTION

//***********************************************************************************

ORGANIZATION_BLOCK OB1

VAR_TEMP

OB1_System: array [1..20] of byte;

END_VAR

BEGIN

NETWORK TITLE =

//

CALL "ANALOG_VALUE" (

Address := PIW 10,

Meas_range_start := 0.000000e+000,

Meas_range_end := 1.000000e+002,

Type := 2,

Limit_value_L := 5.000000e+000,

Limit_value_H := 9.500000e+001,

Meas_value_info := "MEAS.VAL_DATA".Measured values);

//

CALL "VALVE" (

OPEN := I 10.0,

CLOSE := I 10.2,

STOP := I 10.1,

POSITION := "MEAS.VAL_DATA".Measured values,

COMMAND_OPEN := Q 4.0,

COMMAND_CLOSE := Q 4.1,

FAULT := Q 4.2);

END_ORGANIZATION_BLOCK


Пример OB81

 Top Previous

Пример использования организационного блока ошибки источника питания OB81

Используя локальные данные (стартовую информацию) в OB ошибки, Вы можете оценить тип произошедшей ошибки.

Например, если CPU обнаруживает неисправность батареи, то операционная система вызывает OB81

Вы можете написать программу, которая оценивает код события, запускаемый вызовом OB81.

Вы можете также написать программу, которая осуществляет реакцию, такую как активизация выхода, связанного с лампой на станции оператора.

Локальные данные организационного блока ошибки OB81

Следующая таблица показывает временные переменные, которые должны быть описаны в этом случае в таблице описания переменных OB81.

Символ Battery error [сбой батареи] (BOOL) должен быть идентифицирован как выход (например, Q 4.0) так, чтобы другие части программы могли обращаться к этим данным.

Описание | Имя | Тип | Объяснение
TEMP | OB81EVCLASS | BYTE | Класс ошибки/Идентификатор ошибки 39xx
TEMP | OB81FLTID | BYTE | Код ошибки:
 |  |  | b#16#21 = по крайней мере, одна батарея резервного питания CPU истощена 1)
 |  |  | b#16#22 = нет резервного напряжения в CPU
 |  |  | b#16#23 = отказ источника питания 24 В в CPU 1)
 |  |  | b#16#31 = по крайней мере, одна батарея резервного питания стойки расширения истощена 1)
 |  |  | b#16#32 = нет резервного напряжения в стойке расширения1)
 |  |  | b#16#33 = отказ источника питания 24 В стойки расширения 1)
TEMP | OB81PRIORITY | BYTE | Класс приоритета = 26/28
TEMP | OB81OBNUMBR | BYTE | 81 = OB81
TEMP | OB81RESERVED1 | BYTE | Зарезервировано
TEMP | OB81RESERVED2 | BYTE | Зарезервировано
TEMP | OB81MDLADDR | INT | Зарезервировано
TEMP | OB81RESERVED3 | BYTE | Имеет смысл только для кодов ошибки B#16#31, B#16#32, B#16#33
TEMP | OB81RESERVED4 | BYTE |
TEMP | OB81RESERVED5 | BYTE |
TEMP | OB81RESERVED6 | BYTE |
TEMP | OB81DATETIME | DATE AND TIME | Дата и время запуска OB

Типовая программа для организационного блока ошибки OB81

Типовая программа на языке STL показывает, как Вы можете считывать код ошибки в OB81.

Программа структурирована следующим образом:

• В OB81 (OB81FLTID) считывается код ошибки и сравнивается со значением для события ”battery exhausted [истощение батареи]" (B#16#3921).

• Если код ошибки соответствует коду события ”battery exhausted [истощение батареи]", то программа переходит к метке Berr и активизирует выход batteryerror.

• Если код ошибки не соответствует коду события ”battery exhausted [истощение батареи]", то программа сравнивает этот код с кодом события ”battery failure [отказ батареи]".

• Если код ошибки соответствует коду события ”battery failure [отказ батареи]", то программа переходит к метке Berr и активизирует выход batteryerror. В противном случае блок завершается.

 | L B#16#21 | // Сравнение кода события "battery exhausted"
 |  | //(B#16#21) с
 | L #OB81_FLT_ID | // кодом ошибки для OB81
 | ==I | // В случае совпадения (батарея истощена),
 | JC Berr | // переход к Berr
 | L B#16#22 | // Сравнение кода "battery failure" (b#16#22) с
 | ==I | // кодом ошибки для OB81
 | JC Berr | // В случае совпадения, переход к Berr
 | BEU | // Номер сообщения об ошибке батареи
Berr: | L B#16#39 | // Сравнение ID следующего события с
 | L #OB81_EV_CLASS | // кодом ошибки для OB81
 | ==I | // Если обнаружены ошибка или истощение батареи
 | S batteryerror | // установка выхода "battery error"
 |  | // (Переменная в символьной таблице)
 | L B#16#38 | // Сравнение ID завершения события с
 | ==I | // кодом ошибки в OB81
 | R batteryerror | // сброс выхода "battery error”, // если была зафиксирована ошибка

Вы можете найти подробную информацию о блоках OB, SFB и SFC в соответствующей оперативной справке Help on Blocks [справка о блоках].


Bool_type

 Top

BOOL Булевый Двоичный (Бит)

Бит = единица двоичной информации, принимающая только 2 состояния:

0 = Ложь = Выключено

1 = Истина = Включено