Вспомогательные ФБ

ФБ №56 «Чтение системной настройки»

ФБ нужен когда какую-либо из системных настроек или системных переменных статистики необходимо использовать (учитывать) в логике конфигурации функциональных блоков.

Вх/ВыхИмяТипНазначение
ВходАдрес настройкиuint16 (uint8/uint32)№ настройки = адресу MODBUS-регистра (Прил. В)
ВыходЗначениеuint16 (uint32)Прочитанное значение; «0», если не удалось
ВыходКод ошибкиuint80 — NO_ERRORS; 2 — ILLEGAL_DATA_ADDRESS

ФБ №57 «Запись системной настройки»

ФБ нужен когда какую-либо из системных настроек необходимо задать (изменить) в логике конфигурации функциональных блоков.

При записи сохраняемых системных настроек контроллера с помощью данного ФБ, контроллер будет производить их запись во flash-память модуля, что увеличит время исполнения цепочки ФБ. К тому же, ресурс flash-памяти ограничен 100000 циклов перезаписи. Поэтому не рекомендуется оставлять «1» на входе ФБ «Записать» более чем на 1 такт исполнения цепочки ФБ, а подача на вход «Записать» константы «1» может привести к повреждению страницы flash-памяти модуля из-за частых операций перезаписи.

Вх/ВыхИмяТипНазначение
ВходЗаписатьbitИмпульс на 1 такт исполнения цепочки
ВходАдрес настройкиuint16 (uint8/uint32)№ настройки (адрес MODBUS)
ВходЗначениеuint16Значение для записи
ВыходКод ошибкиuint80 — NO_ERRORS; 2 — ILLEGAL_ADDR; 3 — ILLEGAL_VALUE

ФБ №19 «Среднее за N тактов»

Требования к типам входов и выходов и их количеству:

Вх/ВыхИмяТипНазначение
ВходValueuint8/16/32/float32Усредняемая величина
ВходNuintРазмер выборки
ВыходСреднеекак у Value
Внутр.var_Summ, var_IцелочисленныеНакапливаемая сумма; счётчик значений

ФБ №20 «Среднее за N секунд»

Кроме того есть 3 внутренние переменные ФБ: «var_Summ»- накапливаемая сумма и «var_I»- количество прошедших секунд и «var_StartTime»– time32-переменная начала времени начала периода усреднения.

Вх/ВыхИмяТипНазначение
ВходValueuint8/16/32/float32Усредняемая величина
ВходNuintКоличество секунд
ВыходСреднеекак у Value
Внутр.var_Summ, var_I, var_StartTimevar_I: uint, var_Summ: как Value, time32Сумма; счётчик секунд; время начала

ФБ №21 «Компаратор»

«Value»- входная величина, «Верхний предел» и «Нижний предел». Оба дискретных выхода типа bit. Все входы должны быть одинакового типа (либо целочисленные uint8/16/32, либо float32).

ФБ №22 «Мультиплексор (до 32 входов)»

Вх/ВыхИмяТипНазначение
Вход№ входаuintНумерация с «0»; >31 → выход «0»
ВходВход 0…N-1 (≤32)одинаковыйВходные каналы
ВыходВыходкак у входовЗначение выбранного входа

ФБ №40 «Селектор (до 32 выходов)»

ФБ «Селектор» выдаёт на выход с номером «№ выхода» значение, поданное на вход «Вход». На остальные выходы ФБ выдаёт «0».

Количество выходов зависит от количества необходимых выходных каналов.

На все выходы кроме выбранного подаётся «0». Тип входов и выхода должен быть одинаковым. Допускаются bit, uint8/16/32 или float32.

Вх/ВыхИмяТипНазначение
Вход№ выходаuintНумерация с 0
ВходВхододинаковыйЗначение
ВыходВыход 0…N-1 (1…32)как у входаВыбранному — «Вход», остальным — «0»

ФБ №71 «Селектор без обнуления выходов (до 32 выходов)»

ФБ «Селектор без обнуления выходов» аналогичен ФБ «Селектор», за исключением того, что все выходы кроме выбранного сохраняют свои старые значения.

Вх/ВыхИмяТипНазначение
Вход№ выходаuintНумерация с 0
ВходВхододинаковыйЗначение
ВыходВыход 0…N-1 (1…32)как у входаВыбранному — «Вход», остальным — «0»

ФБ №41 «RS-триггер с приоритетным 0»

Примечание: если одновременно «R» = «1» и «S» = «1» то триггер сбрасывается.

Вх/ВыхИмяТипНазначение
ВходRbitСброс
ВходSbitУстановка
ВыходTbitПрямой выход
Выходне TbitИнверсный выход; R=S=1 → сброс

ФБ №42 «Триггер с автосбросом»

Триггер с автосбросом применяется для подачи команд функциональным блокам, т. е. когда нужно подать на вход ФБ логическую «1» на один такт исполнения цепочки ФБ, после чего сбросить его значение.

1 битовый вход, лог. «1» на котором инициирует выдачу положительного импульса на вы-ход «Out».

2 битовых выхода: «Out» для подачи на вход ФБ положительного импульса на 1 такт исполнения и «R_Out»- выход для сброса значения, поданного на вход «In». Для сброса входного значения, выход «R_Out» необходимо соединить с входом «In».

Вх/ВыхИмяТипНазначение
ВходInbit«1» — импульс на выходе Out
ВыходOutbitПоложительный импульс на 1 такт
ВыходR_OutbitВыход сброса; соединить с In

ФБ №69 «Детектор изменений»

Выдает импульс на выход Detected и записывает его в Output, если входное значение изменилось.

Типы переменных на входе и выходе должны совпадать.

Вх/ВыхИмяТипНазначение
ВходInputлюбойКонтролируемое значение
ВыходDetectedbitИмпульс при изменении Input
ВыходOutputкак InputТекущее значение

ФБ №43 «Одновибратор по фронту»

При каждом положительном фронте на входе In выставляет «1» в Out на количество тактов, равное Tics. Если во время удержания «1» на выходе, прошёл ещё один фронт на входе, то время начинает отсчитываться с этого момента.

Вх/ВыхИмяТипНазначение
ВходInbit
ВходTicsuintДлительность импульса, тактов
ВыходTimeruintТекущее значение таймера
ВыходOutbitИмпульс на каждый фронт In

ФБ №29 «Триггер со сбросом через N тактов»

При «1» на входе In FB выставляет «1» в Out и сбрасывает по истечению тактов SetTime после спада на входе Input. Если момент времени, при котором на входе «0» меньше чем SetTime, то на выходе «1» не сбросится.

Вх/ВыхИмяТипНазначение
ВходInputbit
ВходSetTimeuintЗадержка сброса, тактов
ВыходOutbit

ФБ №67 «Фильтр дискретный»

Выход изменяет свое состояние только в том случае если входное значение продержалось больше Ust тактов, тогда Dout == Din.

Вх/ВыхИмяТипНазначение
ВходDinbit
ВходUstuintВремя удержания, тактов
ВыходDoutbitМеняется, если Din продержался >= Ust

ФБ №84 «Запись в батарейный домен»

Вх/ВыхИмяТипНазначение
ВходEnWritebitРазрешение записи
ВходAddressuint16Адрес записи
ВходValueлюбойЗначение
ВыходOkbit«1» — запись успешна

ФБ №85 «Чтение из батарейного домена»

Вход Address – адрес чтения, тип uint16. На выходе Value – прочитанное значение.

ФБ №94 «Фильтр DI длинный 0 остальные 1»

Вх/ВыхИмяТипНазначение
ВходInbit
ВходUstbitТребуемое состояние
ВходPerioduint8Время, с
ВыходOutbit= Ust, если In = Ust не менее Period секунд

ФБ №100 «Инертная задержка»

На вход подаются:

Input– Положение задвижки
dInput– Давление в системе

На выходе Output значение с задержкой.

ФБ №106 «Мультиплексор DI»

ФБ позволяет выделить состояние конкретного входа DI из множества каналов DI. Значения каналов DI могут быть получены путем чтения сетевых переменных у других контроллеров. Таким образом, в логике главного контроллера будет казаться, что у него больше 16 его собственных входов DI.

Вх/ВыхИмяТипНазначение
Вход№DIuintНомер DI, 1…256
ВходКанал 1-16 … Канал 241-25616 x bitЗначения DI слейва (по 16 шт.)
ВыходOUTbitСостояние выбранного DI
ВыходErrorbit«1» — №DI=0 или >256

ФБ №115 «Фильтр универсальный»

Вх/ВыхИмяТипНазначение
ВходEnablebitРазрешение работы
ВходResetbitПерезагрузка логики
ВходTimeВремя фильтрации
ВходInputВходной сигнал
ВыходOutput

ФБ №116 «Мультиплексор 2.0»

В ФБ задаётся соответствие между входом и выходом. Тип входа и выхода должен быть одинаковым.

Вх/ВыхИмяТипНазначение
ВходIn1…In32одинаковыйВходы
ВходIn(x)→Out1…In32(x)bitПризнак связывания входа с выходом
ВыходOut1…Out32как у входов

ФБ №117 «Вход – выход сквозной»

Каждый выход 0..15 соответствует входу 0..15.

Вх/ВыхИмяНазначение
Вход0…15
Выход0…15Прозрачное соответствие вход ↔ выход

ФБ №128 «Компоновщик в блоки»

ФБ реализует выбор элементов массива по маске.

Вх/ВыхИмяТипНазначение
ВходBigEndianbitПорядок байт
ВходMask_1-16uint16Маска битов 1-16
ВходMask_17-32uint16Маска битов 17-32
ВходInArraysмассивВходной массив
ВыходElementsмассивЭлементы, выбранные по маске