Читайте также:
|
|
В разделе кратко описаны некоторые простейшие FFB, доступные в библиотеке IEC. Для удобства эти FFB разбиты на группы. В имени FFB часто присутствует тип данных, который должен стоять вместо «***» (например, ADD_REAL). Более полно FFB описаны в [1].
Группа элементарных функций «Arithmetic» - арифметика
В этой группе представлены EF, выполняющие арифметические операции (табл. 2.1). Типы данных на входах (IN) и выходе (OUT) должны быть одинаковыми. Некоторые EF допускают расширение количества входов до 32.
Таблица 2.1
Группа «Arithmetic»
Имя функции | Тип данных | Действие | Примечание |
ADD_*** | ANY_NUM, TIME | Сложение OUT=IN1+IN2+… | Количество входов – до 32 для ANY_NUM |
DIV_*** | ANY_NUM | Деление OUT:=IN1/IN2 | Для ANY_INT – целочисленное деление |
MOD_*** | ANY_INT | Остаток от целочисленного деления | |
MOVE | ANY | OUT=IN |
Окончание таблицы 2.1
Имя функции | Тип данных | Действие | Примечание |
MUL_*** | ANY_NUM | Умножение OUT=IN1*IN2*… | Количество входов – до 32 |
SUB_*** | ANY_NUM, TIME | вычитание OUT=IN1–IN2 | |
TIME_MUL_*** | IN1: TIME IN2: ANY_NUM OUT: TIME | умножение OUT=IN1*IN2 | |
TIME_DIV_*** | IN1: TIME IN2: ANY_NUM OUT: TIME | деление OUT=IN1/IN2 |
Группа элементарных функциональных блока «Bistable» – триггеры
В группу входят два триггера: RS (с доминирующим входом «Сброс» – R1) и SR (с доминирующим входом «Установка» – S1). Оба триггера имеют выход Q1. Разрешенный тип данных на входах и выходах – BOOL.
Ниже приведена таблица переходов RS и SR триггеров. В таблице «~» означает лог. 0 или лог. 1.
Таблица 2.2 | ||||||
Таблицы переходов RS и SR триггеров | ||||||
Q1t-1 ® Q1t+1 | R1t | St | Q1t-1 ® Q1t+1 | Rt | S1t | |
0 ® 0 | ~ | 0 ® 0 | ~ | |||
0 ®1 | 0 ®1 | ~ | ||||
1 ® 1 | ~ | 1 ® 1 | ~ | |||
1 ® 0 | ~ | 1 ® 0 |
Группа элементарных функций «Comparison» - сравнение
В группу входят EF, выполняющие функцию сравнения входных данных типа ANY_ELEM (табл. 2.3). Количество входов в EF может варьироваться от 2 до 32. Если условие сравнения выполняется, то выходная переменная (типа BOOL) принимает значение лог. 1, иначе – лог. 0.
Таблица 2.3 | |||
Группа «Comparison» | |||
Имя функции | Условие сравнения | Описание функции сравнения | |
EQ_*** | = | OUT=1, если IN1=IN2 и IN2=IN3 и IN3=IN4… | |
GE_*** | ³ | OUT=1, если IN1³IN2 и IN2³IN3 и IN3³IN4… | |
LE_*** | £ | OUT=1, если IN1£IN2 и IN2£IN3 и IN3£IN4… | |
GT_*** | > | OUT=1, если IN1>IN2 и IN2>IN3 и IN3>IN4… | |
LT_*** | < | OUT=1, если IN1<IN2 и IN2<IN3 и IN3<IN4… | |
NE_*** | ¹ | OUT=1, если IN1¹IN2 и IN2¹IN3 и IN3¹IN4… | |
Группа элементарных функций «Converter» - преобразование типа данных
В группу входят EF (табл. 2.4), преобразующие тип данных.
При преобразовании типов данных выполняются условия:
- если входные данные имеет большую разрядность чем выходные, то значение выходных данных определяется младшими разрядами входных данных;
- если входные данные имеет меньшую разрядность чем выходные, то входные данные передаются в младшие разряды выходных данных, а старшие разряды обнуляются;
- при преобразовании знаковых переменных в незнаковые знак теряется.
На рис. 2.3 приведен пример преобразования переменной Sensor_Temperature типа UDINT в переменную Temperature типа REAL с помощью функции UDINT_TO_REAL:
Таблица 2.4 | |
Группа «Converter» | |
Имя функции | Действие |
BOOL_TO_*** | Преобразование данных типа BOOL в данные типа ANY_NUM, BYTE или WORD |
BYTE_TO_*** | Преобразование данных типа BYTE в данные типа ANY_NUM, BOOL или WORD |
DINT_TO_*** | Преобразование данных типа DINT в данные типа INT, ANY_BIT, UDINT, UINT, REAL, TIME |
INT_TO_*** | Преобразование данных типа INT в данные типа, ANY_BIT, DINT, UDINT, UINT, REAL или TIME.. |
REAL_TO_*** | Преобразование данных типа REAL в данные типа ANY_BIT или ANY_INT, или TIME. |
REAL_TRUNC_TO_*** | Преобразование данных типа REAL в данные типа ANY_INT с округлением в сторону нуля. |
TIME_TO_*** | Преобразование данных типа TIME в данные типа ANY_BIT или ANY_NUM |
UDINT_TO_*** | Преобразование данных типа UDINT в данные типа ANY_BIT, DINT, INT, UINT, REAL, TIME |
UINT_TO_*** | Преобразование данных типа UINT в данные типа ANY_BIT, DINT, INT, UDINT, REAL или TIME |
WORD_TO_*** | Преобразование данных типа WORD в данные типа ANY_NUM, BOOL, BYTE, или TIME. |
Группа элементарных функциональных блоков «Counter» - счетчики
В группу входят суммирующий – CTU (Up counter), вычитающий – CTD (Down counter) и реверсивный – CTUD (Up/Down counter) счетчики.
В суммирующем счетчике (рис. 2.4) для обнуления на вход R необходимо подать лог. 1. Изменение переменной на входе CD с лог. 0 к лог. 1 приводит к увеличению содержимого счетчика (выход CV) на 1. Выход Q становится равным лог. 1, если CV становится больше PV.
В вычитающем счетчике (рис. 2.5) при подаче на вход LD лог. 1 в счетчик (выход CV) записывается начальное значение, подаваемое на вход PV. Изменение переменной на входе CD с лог. 0 к лог. 1 приводит к уменьшению содержимого счетчика на 1. Выход Q становится равен лог. 1, если CV<=0.
В реверсивном счётчике (рис. 2.6) для обнуления на вход R необходимо подать лог. 1. При подаче на вход LD лог 1 в счетчик записывается начальное значение, подаваемое на вход PV. При одновременном приходе лог. 1 на входы LD и R, преимущество имеет вход R. Изменение значения на входе CU с лог. 0 к лог. 1 приводит к увеличению содержимого счетчика на 1. Такое же изменение на входе CD приводит к уменьшению содержимого счетчика. При одновременном изменении на входах CU и CD, вход CU имеет преимущество.
Выход CV предназначен для считывания содержимого счетчика. Выход QU=1, если CV>=PV. Выход QD=1, если CV<=0.
Группа элементарных функциональных блоков «Edge Detection» – обнаружение фронта/среза
В группу входят два EFB – R_TRIG и F_TRIG, имеющие вход CLK и выход Q. В R_TRIG на выходе Q появляется лог. 1 по фронту (переходу из лог. 0 к лог 1) на входе CLK. В F_TRIG на выходе Q появляется лог. 1 по срезу (переходу из лог. 1 к лог. 0) на входе CLK.
Группа элементарных функций «Logic» - логика
В группу входят EF, выполняющие поразрядные логические операции над данными типа ANY_BIT (табл. 2.5). Типы данных на входах и выходе должны быть одинаковыми.
Таблица 2.5 | |||
Группа «Logic» | |||
Действие | Примечание | ||
NOT_*** | Поразрядное логическое отрицание | ||
AND_*** | Поразрядное логическое умножение | Количество входов – до 32 | |
OR_*** | Поразрядное логическое сложение | Количество входов – до 32 | |
XOR_*** | Поразрядное сложение по модулю 2 | Количество входов – до 32 | |
ROL_*** | Циклический сдвиг влево | Количество разрядов для сдвига задается на входе N | |
ROR_*** | Циклический сдвиг вправо | Количество разрядов для сдвига задается на входе N | |
SHL_*** | Сдвиг влево | Количество разрядов для сдвига задается на входе N | |
SHR_*** | Сдвиг вправо | Количество разрядов для сдвига задается на входе N | |
Группа элементарных функций «Numerical» - вычисление функций
В группу входят EF, предназначенные для вычисления:
- тригонометрических функций – SIN_REAL, COS_REAL, TAN_REAL, ASIN_REAL, ACOS_REAL и ATAN_REAL;
- квадратного корня – SQRT_REAL);
- натурального и десятичного логарифмов – LN_REAL и LOG_REAL;
- экспоненты – EXP_REAL;
(для перечисленных EF входные и выходные переменные имеют тип – REAL);
- возведения в степень – ***_EXPT_REAL;
- модуля – ABS_***.
Здесь «***» - переменная типа ANY_NUM.
Группа элементарных функций «Selection» - селекция
В EF группы «Selection» (табл. 2.6) входные и выходные данные могут быть любого типа (ANY_ELEM).
Таблица 2.6 | |||
Группа «Selection» | |||
Имя функции | Действие | Примечание | |
LIMIT_*** | Передает на выход входное значение (вход IN), ограниченное сверху (вход MX) и снизу (вход MN) | ||
MAX_*** | Передает на выход максимальное значение из нескольких входных значений | Количество входов – до 32 | |
MIN_*** | Передает на выход минимальное значение из нескольких входных значений | Количество входов – до 32 | |
MUX_*** | Мультиплексор: соединяет заданный вход с выходом в зависимости от значения переменой на входе К | Количество входов – до 32 типа ANY, выбор входа переменной типа ANY_INT | |
SEL | Мультиплексор на два входа IN0 и IN1 типа ANY с переключателем логического типа | ||
Пример: Для элементарной функции LIMIT_REAL (рис. 2.7) выполняется:
P=SENSOR_P, если 4.0 ≤ SENSOR_P ≤ 5.0;
Р=4.0, если P < 4.0;
Р=5.0, если P > 5.0.
Группа элементарных функциональных блоков «Timer» - таймер
В эту группу входят ЕFB TOF, TON и TP.
Во всех таймерах вход PT предназначен для задания величины выдержки времени (переменная типа TIME), вход IN – для пуска таймера (переменная типа BOOL). На выходе Q (переменная типа BOOL) формируется лог. 1 в момент времени, определяемый типом таймера, а на выходе ET (переменная типа TIME) формируется код текущего времени с начала пуска таймера.
На рис. 2.8 приведены временные диаграммы функционирования таймера TOF.
В FFB TOF (рис. 2.8) в исходном состоянии IN=0 и Q=0. При изменении переменной на входе IN из лог. 0 в лог. 1 (моменты (1, 4)) переменная на выходе Q принимает значение лог. 1. Отсчет времени начинается при изменении на входе IN из лог. 1 в лог. 0, при этом значение переменной на выходе ET начинает линейно увеличиваться. По окончании времени выдержки на выходе Q формируется переход из лог. 1. в лог. 0. Сброс таймера осуществляется подачей лог. 1 на вход IN (момент (4)).
В EFB TON (рис. 2.9) в исходном состоянии IN=0 и Q=0. Отсчет времени начинается (момент (1)) при изменении значения переменной на входе IN из лог. 0 в лог. 1. По окончании времени выдержки (момент (2)) переменная на выходе Q принимает значение лог. 0. Сброс таймера (моменты (3, 4)) осуществляется изменением значения переменной на входе IN из лог. 1 в лог. 0.
В FFB TP (рис. 2.10) в исходном состоянии IN=0 и Q=0. Отсчет времени начинается (момент (1)) при изменении значения переменной на входе IN из лог. 0 в лог. 1. При этом на выходе Q формируется лог. 1. По окончании времени выдержки на выходе Q формируется переход из лог. 1. в лог. 0. Сброс таймера осуществляется подачей лог. 0 на вход IN независимо от состояния таймера (во время отсчета выдержки или после ее окончания).
Дата добавления: 2015-11-14; просмотров: 69 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ЯЗЫК ФУНКЦИОНАЛЬНЫХ БЛОК-СХЕМ - FBD | | | Пример программы на языке FBD |