PLC_Library
Библиотека функций (FUNCTION) и функциональных блоков (FUNCTION_BLOCK) на языке Structured Text (ST) для CoDeSys 3.5.
Библиотека содержит фильтры сигналов, обработку кнопок и дискретных сигналов, работу со статусами и авариями аналоговых величин, преобразование типов данных, драйверы модулей Fastwel и вспомогательные структуры/алгоритмы.
Структура
Filters — Фильтры
| Имя |
Тип |
Описание |
ExpRunAverage |
FUNCTION (REAL) |
Экспоненциальное скользящее среднее с постоянным коэффициентом K. |
ExpRunAverageAdaptive |
FUNCTION (REAL) |
Экспоненциальное скользящее среднее с адаптивным коэффициентом: если изменение входа превышает Delta, используется увеличенный коэффициент K2 вместо K1 (быстрая реакция на резкие изменения). |
RunMiddleArifm |
FUNCTION_BLOCK |
Скользящее среднее арифметическое по кольцевому буферу размером до 32 отсчётов (N), с возможностью сброса/переинициализации (RST). |
MultipleClick |
FUNCTION_BLOCK |
Детектор серии нажатий кнопки (одиночный/двойной/тройной клик) по паузе между нажатиями TimeToWait, с удержанием результата на TimeRelease. |
Fastwel — Модули ввода/вывода Fastwel
Функции перевода "сырых" значений АЦП/кодов модулей Fastwel в физические единицы (мА, В, Гц) и обратно (ЦАП), а также формирование статуса аналогового канала.
| Имя |
Тип |
Описание |
AIM721_AI |
FUNCTION (REAL) |
АЦП → 0…20 мА. |
AIM722_AI |
FUNCTION (REAL) |
АЦП → 0…20 мА (свой коэффициент модуля). |
AIM723_AI |
FUNCTION (REAL) |
АЦП → 4…20 мА. |
AIM726_AI |
FUNCTION (REAL) |
АЦП (DWORD) → 0…40 В. |
AIM727_AI |
FUNCTION (REAL) |
АЦП (DINT) → 0…40 В. |
AIM791_AI |
FUNCTION (REAL) |
АЦП → 0…5 мА / 0…20 мА / 4…20 мА (выбор диапазона через RANGE). |
AIM730_AO |
FUNCTION (WORD) |
мА (0…20 или 4…20, выбор RANGE) → код ЦАП модуля AIM730. |
AIM731_AO |
FUNCTION (WORD) |
В (±10 или 0…10, выбор RANGE) → код ЦАП модуля AIM731. |
DIM764_DI |
FUNCTION (REAL) |
Период/интервал импульсного входа модуля → частота в Гц (выбор режима RANGE). |
AIM725_Status |
FUNCTION_BLOCK |
Формирование статуса аналогового канала (AnalogValueState): аварии/предупреждения по верхнему и нижнему порогам с гистерезисом и выдержками времени, а также диагностика обрыва связи по битам Modul_status конкретного канала (Chanel_num). Дополнительно выдаёт T_mod — значение, приведённое к INT. |
Преобразование значений — Conversions
| Имя |
Тип |
Описание |
DW_TO_REAL |
FUNCTION (REAL) |
Побитовая реинтерпретация DWORD как REAL (без изменения значения, через указатель). |
REAL_TO_DW |
FUNCTION (DWORD) |
Побитовая реинтерпретация REAL как DWORD (обратное преобразование). |
DWORD_OF_2WORD |
FUNCTION (DWORD) |
Сборка DWORD из двух WORD (старшее + младшее слово). |
WORD_OF_DWORD |
FUNCTION (WORD) |
Извлечение младшего или старшего слова (WORD) из DWORD по флагу N. |
Norm_real |
FUNCTION (REAL) |
Линейная нормировка значения X по двум точкам (X1,Y1)–(X2,Y2) (масштабирование диапазона). |
NTC_termistor_T |
FUNCTION (REAL) |
Перевод сопротивления NTC-термистора в температуру по уравнению Бета (R0, T0, b). |
Общие — Common
Дискретные сигналы / кнопки / таймеры
| Имя |
Тип |
Описание |
Button_acceleration |
FUNCTION_BLOCK |
Ускоренное изменение значения (Out, VAR_IN_OUT) при удержании кнопки: одиночный клик даёт приращение D_0, короткое удержание — приращения D_1 с шагом T_D_1 после T_W_1, длительное удержание — D_2 с шагом T_D_2 после T_W_2. Есть опция обнуления Zeroes. |
Pulse_Switch |
FUNCTION_BLOCK |
Формирует импульсы по 500 мс по переднему (Switch_on) и заднему (Switch_off) фронтам управляющего сигнала. |
TONOF |
FUNCTION_BLOCK |
Комбинированная задержка включения/выключения (TON + TOF) для одного сигнала. |
TOF_RST |
FUNCTION_BLOCK |
Таймер выключения (TOF) с принудительным сбросом RST. |
TP_RST |
FUNCTION_BLOCK |
Одиночный импульс (TP) с принудительным сбросом RST; повторный фронт во время импульса игнорируется. |
BLINK_LMP |
FUNCTION_BLOCK |
Управление лампой по коду состояния State (выкл/вкл/мигание с одной из 3 частот, задаваемых внешними пульсарами). |
BUZZER_CTRL |
FUNCTION_BLOCK |
Управление звонком/зуммером по коду состояния, с возможностью временного и перманентного отключения звука (Sound_off, PermanentOFF_Enable). |
CONFIRMATION |
FUNCTION_BLOCK |
Логика квитирования аварии: формирует сигналы ламп аварии/квитирования и управления звонком. |
Пороговые сигналы / гистерезис
| Имя |
Тип |
Описание |
HYST |
FUNCTION_BLOCK |
Гистерезисный компаратор с раздельными порогами включения (ON) и выключения (OFF); поддерживает прямую и обратную логику. |
ALARM_1 |
FUNCTION_BLOCK |
Контроль значения X на выход за один диапазон [LO_1…HI_1] с гистерезисом HYS. |
ALARM_2 |
FUNCTION_BLOCK |
То же для двух диапазонов одновременно. |
ALARM_3 |
FUNCTION_BLOCK |
То же для трёх диапазонов одновременно. |
Статус аналоговых сигналов
| Имя |
Тип |
Описание |
STATUS_ANALOG_M |
FUNCTION_BLOCK |
Формирование статуса аналогового значения REAL (AnalogValueState) с гистерезисом возврата и задержками срабатывания по каждому из уровней (fail/warn hi/low, no_signal); поддерживает принудительную установку каждого статуса извне. |
STATUS_ANALOG_M_I |
FUNCTION_BLOCK |
Аналог STATUS_ANALOG_M, но для входа типа INT. |
Диагностика связи
| Имя |
Тип |
Описание |
Status_SU_Connect |
FUNCTION_BLOCK |
Контроль связи по "сердцебиению" (HeartBit): авария, если сигнал не меняет состояние дольше T_Pulse. |
Status_Connect_Counter |
FUNCTION_BLOCK |
Контроль связи по счётчику Counter от удалённого устройства: авария, если счётчик не меняется дольше T_Error. |
Регулирование
| Имя |
Тип |
Описание |
PIDcontrol |
FUNCTION_BLOCK |
ПИД-регулятор с фильтрацией дифференциальной составляющей, зоной нечувствительности (DBmin/DBmax), ограничением выхода, антивиндапом и ручным режимом (ManOn/Manual). |
Структуры данных
| Имя |
Тип |
Описание |
QUEUE_I16 |
FUNCTION_BLOCK |
Кольцевая очередь FIFO на 16 элементов типа INT (PUSH/POP, флаги EMPTY/FULL, сброс RST). |
QUEUE_I32 |
FUNCTION_BLOCK |
Кольцевая очередь FIFO на 32 элемента типа INT (PUSH/POP, флаги EMPTY/FULL, сброс RST). |
STACK_I16 |
FUNCTION_BLOCK |
Стек LIFO на 16 элементов типа INT (PUSH/POP, флаги EMPTY/FULL, сброс RST). |
STACK_I32 |
FUNCTION_BLOCK |
Стек LIFO на 32 элемента типа INT (PUSH/POP, флаги EMPTY/FULL, сброс RST). |
Иное — Other
| Имя |
Тип |
Описание |
DFS |
PROGRAM |
Обход графа в глубину (Depth-First Search) по матрице смежности graph фиксированного размера (12 вершин); использует STACK_I16. Возвращает список посещённых из Start вершин в массиве connected. Предназначен для копирования в пользовательскую программу. |
Structs — Пользовательские типы
| Имя |
Тип |
Описание |
AnalogValueState |
DUT (перечисление, qualified_only, strict) |
Статус аналогового значения: undefined(0), normal(1), warn_low(2), fail_low(3), warn_hi(4), fail_hi(5), no_signal(-1). Используется в AIM725_Status, STATUS_ANALOG_M, STATUS_ANALOG_M_I. |
Замечания по использованию
- Функции
DW_TO_REAL / REAL_TO_DW выполняют побитовую реинтерпретацию через указатель (ADR), а не преобразование значения — использовать осторожно, с учётом платформозависимости работы с указателями.
- Блоки
STATUS_ANALOG_M[_I] и AIM725_Status используют единый тип AnalogValueState и схожую логику приоритетов статусов: no_signal > fail_hi > fail_low > warn_hi > warn_low > normal.
TOF_RST и TP_RST — версии стандартных МЭК-таймеров TOF/TP с добавленным входом принудительного сброса RST.
QUEUE_I16 и STACK_I16 имеют фиксированный размер 16 элементов (константа n:=15); для изменения размера нужно менять константу n и размер массива.
DFS рассчитан на графы фиксированного размера (константа n:=12) и предназначен для копирования кода в пользовательскую программу, а не для использования "как есть" в виде библиотечного вызова.