Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Функции и функциональные блоки

ОСНОВНЫЕ ОСОБЕННОСТИ | ЯЗЫКОВ ПРОГРАММИРОВАНИЯ | Задания для самостоятельной работы | Нормально разомкнутый контакт | Альтернативное ответвление (Alternative branch). | Задание свойств шага | Задание действий | Объявление действий | Пример программы на языке SFC | Примеры использования операторов в простых инструкциях |


Читайте также:
  1. III. B. Функции слова ONE
  2. Other Functions of Money. Другие функции денег
  3. V) Массивы и функции
  4. Абстрактные базовые классы и чисто виртуальные функции
  5. Абстрактные базовые классы и чисто виртуальные функции.
  6. Аппроксимация 1s –функции электрона в атоме водорода двумя гауссовыми функциями
  7. Банковская система, ее структура. Функции коммерческих банков.

В разделе кратко описаны некоторые простейшие 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

mybiblioteka.su - 2015-2024 год. (0.012 сек.)