Перейти к основному содержимому

Библиотека функциональных блоков

Справочник стандартных FB, доступных в Type Library 4diac IDE.

Event FB (управление событиями)

FBОписаниеВходыВыходы
E_CYCLEГенерация периодических событийSTART, STOP; DT (TIME)EO
E_DELAYЗадержка событияSTART, STOP; DT (TIME)EO
E_SWITCHМаршрутизация события по условиюEI; G (BOOL)EO0, EO1
E_SRТриггер Set/ResetS, REO; Q (BOOL)
E_PERMITПропуск события по условиюEI; PERMIT (BOOL)EO
E_SPLITРазделение одного события на дваEIEO1, EO2
E_MERGEОбъединение двух событий в одноEI1, EI2EO
E_RESTARTГенерация COLD/WARM/STOP событийCOLD, WARM, STOP
E_CTUСчётчик событий (вверх)CU, R; PV (UINT)CUO, RO; CV (UINT), Q (BOOL)
E_CTDСчётчик событий (вниз)CD, LD; PV (UINT)CDO, LDO; CV (UINT), Q (BOOL)
E_CTUDДвунаправленный счётчикCU, CD, R, LD; PV (UINT)CUO, CDO, RO, LDO; CV (UINT), QU, QD (BOOL)
E_SELECTВыбор одного из двух событийEI0, EI1; G (BOOL)EO
E_RENDРандеву — синхронизация двух событийEI1, EI2; R (BOOL)EO
E_TABLEГенерация последовательности событийSTART, STOP; DT (ARRAY OF TIME)EO; CV (UINT)

Communication FB (коммуникация)

PUBLISH/SUBSCRIBE схема

FBОписаниеПротоколПараметры ID
PUBLISH_NПубликация данных (отправка)UDP multicast, MQTT239.0.0.1:61000 или mqtt://broker#topic
SUBSCRIBE_NПодписка на данные (приём)UDP multicast, MQTT239.0.0.1:61000 или mqtt://broker#topic
CLIENT_N_MКлиент запрос-ответModbus TCP, OPC UA, HTTPЗависит от протокола
SERVER_N_MСервер запрос-ответModbus TCP, OPC UA, HTTPЗависит от протокола

N — количество входных данных (SD), M — количество выходных данных (RD).

Синтаксис ID для PUBLISH/SUBSCRIBE

# UDP multicast
PUBLISH_1.ID = "239.0.0.1:61000"

# MQTT
PUBLISH_1.ID = "raw[].mqtt[tcp://broker:1883, topic_name]"

# MQTT с QoS
PUBLISH_1.ID = "raw[].mqtt[tcp://broker:1883, topic_name, 1]"

CLIENT/SERVER схема

Синтаксис ID для CLIENT (Modbus TCP)

CLIENT_1_0.ID = "modbus[IP:502, unit_id, function, start_addr, count]"

# Пример: чтение 8 holding registers с адреса 0
CLIENT_1_0.ID = "modbus[192.168.1.100:502, 1, 3, 0, 8]"

Синтаксис ID для CLIENT (OPC UA)

# Чтение переменной
CLIENT_1_0.ID = "opc_ua[opc.tcp://server:4840#;ns=2;s=TagName]"

# Локальный OPC UA сервер
SERVER_1_0.ID = "opc_ua[#;ns=2;s=MyVariable]"

I/O FB (ввод/вывод)

FBТип I/OОписаниеПример PARAMS
IXDigital InputЧтение дискретного входаgpio17
QXDigital OutputЗапись дискретного выходаgpio18
IWWord InputЧтение 16-бит значенияspi0.0
QWWord OutputЗапись 16-бит значенияspi0.1
IDDouble Word InputЧтение 32-бит значения
QDDouble Word OutputЗапись 32-бит значения
ILLong Word InputЧтение 64-бит значения
QLLong Word OutputЗапись 64-бит значения

Общий интерфейс I/O FB

Events:  INIT → INITO    (инициализация)
REQ → CNF (запрос → подтверждение)
IND (индикация, только для входов)
Data: QI (BOOL) — разрешение
PARAMS (STRING) — конфигурация
STATUS (STRING) — статус
IN / OUT — значение

Conversion FB (преобразование типов)

FBОписание
INT_TO_REALЦелое → вещественное
REAL_TO_INTВещественное → целое (округление)
BOOL_TO_INTЛогическое → целое (0/1)
INT_TO_STRINGЦелое → строку
STRING_TO_INTСтроку → целое
*_TO_*Полный набор конверсий между элементарными типами

Math FB (математика)

FBОписаниеФормула
F_ADDСложениеOUT = IN1 + IN2
F_SUBВычитаниеOUT = IN1 - IN2
F_MULУмножениеOUT = IN1 × IN2
F_DIVДелениеOUT = IN1 / IN2
F_MODОстаток от деленияOUT = IN1 MOD IN2
F_ABSМодульOUT =
F_SQRTКвадратный кореньOUT = √IN
F_MINМинимумOUT = MIN(IN1, IN2)
F_MAXМаксимумOUT = MAX(IN1, IN2)
F_LIMITОграничение диапазонаOUT = LIMIT(MN, IN, MX)

Comparison FB (сравнение)

FBОписаниеУсловие
F_EQРавноIN1 = IN2
F_NEНе равноIN1 ≠ IN2
F_GTБольшеIN1 > IN2
F_GEБольше или равноIN1 ≥ IN2
F_LTМеньшеIN1 < IN2
F_LEМеньше или равноIN1 ≤ IN2

Logic FB (логика)

FBОписание
F_ANDЛогическое И
F_ORЛогическое ИЛИ
F_XORИсключающее ИЛИ
F_NOTЛогическое НЕ

String FB (строки)

FBОписание
F_CONCATКонкатенация строк
F_LENДлина строки
F_LEFTЛевая подстрока
F_RIGHTПравая подстрока
F_MIDПодстрока из середины
F_FINDПоиск подстроки
F_REPLACEЗамена подстроки

Специализированные FB

FBОписаниеПрименение
FB_RANDOMГенератор случайных чиселТестирование, симуляция
FB_SELМультиплексор (выбор 1 из 2)Резервирование
FB_MUX_2Мультиплексор 2 входаПереключение источников

Использование в Ларус-100

Наиболее востребованные FB при работе с Ларус-100:

ЗадачаFBПример
Периодический опрос датчиковE_CYCLEDT = T#500ms
Чтение Modbus регистровCLIENT_1_0modbus[ip:502,...]
Публикация в MQTTPUBLISH_1mqtt://broker#topic
Управление DOQXgpio pin
Фильтрация по условиюE_SWITCH + F_GTПорог температуры
Задержка реакцииE_DELAYDT = T#5s
Счётчик импульсовE_CTUPV = 100

Следующие шаги