Библиотека функциональных блоков
Справочник стандартных 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/Reset | S, R | EO; Q (BOOL) |
E_PERMIT | Пропуск события по условию | EI; PERMIT (BOOL) | EO |
E_SPLIT | Разделение одного события на два | EI | EO1, EO2 |
E_MERGE | Объединение двух событий в одно | EI1, EI2 | EO |
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 (коммуникация)

| FB | Описание | Протокол | Параметры ID |
|---|---|---|---|
PUBLISH_N | Публикация данных (отправка) | UDP multicast, MQTT | 239.0.0.1:61000 или mqtt://broker#topic |
SUBSCRIBE_N | Подписка на данные (приём) | UDP multicast, MQTT | 239.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]"

Синтаксис 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 |
|---|---|---|---|
IX | Digital Input | Чтение дискретного входа | gpio17 |
QX | Digital Output | Запись дискретного выхода | gpio18 |
IW | Word Input | Чтение 16-бит значения | spi0.0 |
QW | Word Output | Запись 16-бит значения | spi0.1 |
ID | Double Word Input | Чтение 32-бит значения | — |
QD | Double Word Output | Запись 32-бит значения | — |
IL | Long Word Input | Чтение 64-бит значения | — |
QL | Long 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 |