Вспомогательные ФБ
ФБ №56 «Чтение системной настройки»
ФБ нужен когда какую-либо из системных настроек или системных переменных статистики необ-ходимо использовать (учитывать) в логике конфигурации функциональных блоков.
Требования к типам входов и выходов и их количеству:
- Вход «Адрес настройки» типа uin16 (допускается uint8 и uint32) задаёт № системной настройки для чтения. Т.к. системные настройки представляют собой 2-байтовые значения, на вход ФБ нужно подавать номер такой 2-байтовой переменной – номера настроек совпадают с адресами MODBUS-регистров (см. Приложения
- Приложение А. Перечень системных настроек контроллера). Например, для чтения скорости порта COM0 модуля CPU32 нужно подать на вход «Адрес настройки» значение «30».
- Выход «Значение» - значение прочитанной настройки («0» если настройку прочитать не удалось). Тип значения – uint16, допускается также uint32.
- Выход «Код ошибки» - код ошибки операции чтения системного регистра. Тип uint8.
Перечень возможных кодов:
| Код | Значение |
| 0 | NO_ERRORS – нет ошибок при чтении |
| 2 | ILLEGAL_DATA_ADDRESS – неверный (несуществующий) адрес настройки |
ФБ №57 «Запись системной настройки»
ФБ нужен когда какую-либо из системных настроек необходимо задать (изменить) в логике конфигурации функциональных блоков.
Требования к типам входов и выходов и их количеству:
- Вход «Записать» - битовый вход, который даёт ФБ команду на запись настройки. Для запи-си достаточно одного положительного импульса на 1 такт исполнения цепочки ФБ.
Примечание: при записи сохраняемых системных настроек контроллера с помощью данного ФБ, контроллер будет производить их запись во flash-память модуля, что увеличит время исполнения цепочки ФБ. К тому же, ресурс flash-памяти ограничен 100000 циклов переза-писи. Поэтому не рекомендуется оставлять «1» на входе ФБ «Записать» более чем на 1 такт исполнения цепочки ФБ, а подача на вход «Записать» константы «1» может привести к повреждению страницы flash-памяти модуля из-за частых операций перезаписи.
- Вход «Адрес настройки» типа uin16 (допускается uint8 и uint32) задаёт № системной настройки для чтения. Т.к. системные настройки представляют собой 2-байтовые значения, на вход ФБ нужно подавать номер такой 2-байтовой переменной – номе-ра настроек совпадают с адресами MODBUS-регистров (см. Приложения
- Приложение А. Перечень системных настроек контроллера). Например, для записи скорости порта COM0 модуля CPU32 нужно подать на вход «Адрес настройки» значение «30».
- Выход «Значение» - значение настройки для записи.
- Выход «Код ошибки» - код ошибки операции чтения системного регистра. Тип uint8.
Перечень возможных кодов:
| Код | Значение |
| 0 | NO_ERRORS – нет ошибок при чтении |
| 2 | ILLEGAL_DATA_ADDRESS – неверный (несуществующий) адрес настройки |
| 3 | ILLEGAL_DATA_VALUE – недопустимое значение для записи |
ФБ №19 «Среднее за N тактов»
Требования к типам входов и выходов и их количеству:
- Входа 2: «Value» – входная величина, которую необходимо усреднять, «N» - размер выбор-ки для усреднения.
- Выход один – результат усреднения.
- Кроме того есть 2 внутренние переменные ФБ: «var_Summ» - накапливаемая сумма и «var_I» - кол-во просуммированных входных значений.
- Значения «N» и «var_I» - строго целочисленные.
- Значения «Value», «var_Summ» и «Среднее» должны быть одного типа (либо целочисленные uint8/16/32, либо float32). При выборе типов данных нужно избегать переполнения переменных.
ФБ №20 «Среднее за N секунд»
Требования к типам входов и выходов и их количеству:
- Входа 2: «Value» – входная величина, которую необходимо усреднять, «N» - кол-во секунд для усреднения.
- Выход один – результат усреднения.
- Кроме того есть 3 внутренние переменные ФБ: «var_Summ» - накапливаемая сумма и «var_I» - кол-во прошедших секунд и «var_StartTime» – time32-переменная начала времени начала периода усреднения.
- Значения «N» и «var_I» - строго целочисленные.
- Значение «var_StartTime» - time32 (работать будет и с uint32).
- Значения «Value», «var_Summ» и «Среднее» должны быть одного типа (либо целочисленные uint8/16/32, либо float32). При выборе типов данных нужно избегать переполнения переменных.
ФБ №21 «Компаратор»
Требования к типам входов и выходов и их количеству:
- Входа 3: «Value» - входная величина, «Верхний предел» и «Нижний предел».
- 2 дискретных выхода (тип строго bit).
- Все входы должны быть одинакового типа (либо целочисленные uint8/16/32, либо float32).
ФБ №22 «Мультиплексор (до 32 входов)»
Требования к типам входов и выходов и их количеству:
- Кол-во входов зависит от кол-ва необходимых входных каналов.
- Первый вход всегда – «№ входа» - строго целочисленный, нумерация с «0». Далее следуют входы (максимум 32 шт.). Тип входов и выхода должен быть одинаковым. Допускаются bit, uint8/16/32 или float32.
Примечание: если вход «№ входа» > «31», то на выход будет выдан «0».
ФБ №40 «Селектор (до 32 выходов)»
ФБ «Селектор» выдаёт на выход с номером «№ выхода» значение, поданное на вход «Вход». На остальные выходы ФБ выдаёт «0».
Требования к типам входов и выходов и их количеству:
- Кол-во выходов зависит от кол-ва необходимых выходных каналов.
- Первый вход – «№ входа» - строго целочисленный, нумерация с 0. Выходов может быть от 1 до 32. На все выходы кроме выбранного подаётся «0». Тип входов и выхода должен быть одинаковым. Допускаются bit, uint8/16/32 или float32.
ФБ №71 «Селектор без обнуления выходов (до 32 выходов)»
ФБ «Селектор без обнуления выходов» аналогичен ФБ «Селектор», за исключением того, что все выходы кроме выбранного сохраняют свои старые значения. ФБ триггеры
ФБ №41 «RS-триггер с приоритетным 0»
Требования к типам входов и выходов и их количеству:
- 2 битовых входа: «R» (reset) и «S» (set).
- 2 битовых выхода: «T» (прямой выход) и «неT» (инверсный выход).
Примечание: если одновременно «R» = «1» и «S» = «1» то триггер сбрасывается.
ФБ №42 «Триггер с автосбросом»
Триггер с автосбросом применяется для подачи команд функциональным блокам, т.е. когда нужно подать на вход ФБ лог. «1» на один такт исполнения цепочки ФБ, после чего сбросить его значение.
- 1 битовый вход, лог. «1» на котором инициирует выдачу положительного импульса на вы-ход «Out».
2 битовых выхода: «Out» для подачи на вход ФБ положительного импульса на 1 такт исполнения и «R_Out» - выход для сброса значения, поданного на вход «In». Для сброса входного значения, выход «R_Out» необходимо соединить с входом «In».
ФБ №69 «Детектор изменений»
Выдает импульс на выход Detected и записывает его в Output, если входное значение изменилось.
Типы переменных на входе и выходе должны совпадать.
ФБ №22 «Мультиплексор массив»
Выдает на выход значение соответствующее элементу массива Input с индексом Idx. Индексация начинается с нуля. Типы переменных на входе и выходе должны совпадать.
ФБ №43 «Одновибратор по фронту»
| Входы | Выходы |
| In | | Timer | Таймер |
| Tics | Тактов импульса | Out | Выход (импульс) |
При каждом положительном фронте на входе In выставляет «1» в Out на количество тактов равное Tics. Если во время удержания «1» на выходе, прошел еще один фронт на входе то время начинает отсчитывается с этого момента.
ФБ №29 «Триггер со сбросом через N тактов»
При «1» на входе In FB выставляет «1» в Out и сбрасывает по истечению тактов SetTime после спада на входе Input. Если момент времени при котором на входе «0» меньше чем SetTime, то на выходе «1» не сбросится.
ФБ №67 «Фильтр дискретный»
Выход изменяет свое состояние только в том случае если входное значение продержалось больше Ust тактов, тогда Dout == Din.
ФБ №84 «Запись в батарейный домен»
На вход подаются:
- EnWrite – тип bit. Разрешает запись
- Address – Адрес записи, тип uint16
- Value – Значение
Выход Ok = «1» в случае успешной записи.
ФБ №85 «Чтение из батарейного домена»
Вход Address – адрес чтения, тип uint16.
На выходе Value – прочитанное значение.
ФБ №94 «Фильтр DI длинный 0 остальные 1»
Входы:
- In – Тип bit
- Ust – Тип bit
- Period – Тип uint8
Выход Out = Ust, если In = Ust не менее Period секунд
ФБ №100 «Инертная задержка»
На вход подаются:
- Input – Положение задвижки
- dInput – Давление в системе
На выходе Output значение с задержкой.
ФБ №106 «Мультиплексор DI»
ФБ позволяет выделить состояние конкретного входа DI из множества каналов DI. Значения каналов DI могут быть получены путем чтения сетевых переменных у других контроллеров. Таким образом, в логике главного контроллера будет казаться, что у него больше 16 его собственных входов DI.
- Вход №DI. Номер DI.
- Вход Канал 1-16. Значение 16-ти входов DI контроллера Слейва.
- Выход OUT. Состояние DI.
- Выход Error. Ошибка. Номер DI больше 256 или равен 0.
ФБ №115 «Фильтр универсальный»
На вход подаются:
- Enable – Разрешает работу
- Reset – Перезагрузка логики ФБ
- Time – Время фильтрации
- Input – Входной сигнал
На выходе – Output
ФБ №116 «Мультиплексор 2.0»
В ФБ задается соответствие между входом и выходом. Тип входа и выхода должен быть одинаковым.
ФБ №117 «Вход – выход сквозной»
Каждый выход 0..15 соответствует входу 0..15.
ФБ №128 «Компоновщик в блоки»
ФБ реализует выбор элементов массива по маске
На вход подаются:
- BigEndian – Разрешает работу ФБ
- Mask_1-16 – Маска 1-16 битов
- Mask_ 17-32 – Маска 17-32 битов
- InArrays – Массив на вход
На выходе массив элементов Elements.