SignalsFilter — обработка аварий и предупреждений
SignalsFilter собирает сигналы аварий и предупреждений оборудования. Для каждой причины можно задать задержку, чтобы не реагировать на короткий сигнал, и выбрать, как снимать сообщение: автоматически или после сброса оператором. Один компонент обрабатывает до восьми причин — по одной на канал.
Используйте SignalsFilter, например, для аварии преобразователя, отсутствия расхода или сигнала пожара. Если нужно только подождать перед действием, без запоминания аварии, достаточно Delay.
Состав и связи
Выход фильтра подключается к нужным блокировкам и сообщениям. Один обработанный сигнал можно использовать в нескольких компонентах.
Первое подключение
Заполняйте пример в таблице «Параметры» (Params) добавленного компонента. Как добавить компонент и где искать настройки.
Перед генерацией выберите вариант работы с MetaLab: добавить готовые сценарии или пока отключить их создание.
У нас есть насос K31 с частотным преобразователем. При его неисправности вход DI_K31_VFD_FAULT становится TRUE. Нужно игнорировать короткий сигнал, но после 2 секунд неисправности остановить насос и сохранить аварию до сброса оператором.
1. Назовите фильтр
| Параметр | Значение для примера |
|---|---|
SgnlsFltrId |
K31_Flts |
SgnlsFltrComment |
Насос K31. Аварии |
SgnlsFltrParent |
CabinetController_Inst |
От CabinetController фильтр получает общую команду «Сброс аварий» через out_bFaultReset.
2. Заполните первый канал
| Параметр | Значение для примера |
|---|---|
SgnlsFltrSigId1 |
VFD_FAULT |
SgnlsFltrSigComment1 |
Неисправность частотного преобразователя |
SgnlsFltrIn1 |
DI_K31_VFD_FAULT |
SgnlsFltrEn1 |
true |
SgnlsFltrAutoReset1 |
false |
SgnlsFltrFlt1 |
true |
SgnlsFltrWrn1 |
Пусто |
SgnlsFltrAlm1 |
Пусто |
Каналы 2–8 оставьте незаполненными. Если исходный контакт сообщает исправность значением TRUE, в SgnlsFltrIn1 задайте инверсию, например NOT DI_K31_VFD_OK. Вход фильтра должен быть равен TRUE именно при наличии контролируемой причины.
3. Задайте задержку
| Настройка | Значение для примера |
|---|---|
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_diDelay |
2 с |
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_bBypass |
false |
4. Подключите результат к управлению
В компоненте Engine насоса K31 задайте:
| Параметр Engine | Значение |
|---|---|
EngExtFault |
K31_Flts_SgnlsFltr_Inst.out_bQ |
Если сработал любой используемый канал, общий выход фильтра становится TRUE. Для проверки только первой причины используйте K31_Flts_SgnlsFltr_Inst.out_Signal1_bQ.
Подключите исходный вход к фильтру один раз. Дальше во всех компонентах используйте выход его канала. Например, один и тот же обработанный сигнал пожара можно передать нескольким устройствам — задержка и сброс у него останутся общими.
Сначала в алгоритме должен выполняться SignalsFilter, затем компоненты, использующие его результаты.
5. Как это будет работать
- При появлении неисправности начинается отсчёт 2 секунд.
- Если вход исчезнет раньше, срабатывания не будет.
- Если неисправность сохраняется, включаются
out_Signal1_bQи общийout_bQ. - После исчезновения исходной неисправности выходы остаются включёнными.
- После сброса оператором причина снимается, если неисправность устранена.
В примере насос останавливается потому, что выход фильтра подключён к EngExtFault. Одного названия «Аварии» или выбора категории сообщения для остановки недостаточно.
Как работает канал
У каждой причины свои настройки: когда её проверять, сколько ждать перед срабатыванием и нужен ли сброс оператором. При необходимости проверку можно временно отключить шунтом.
| Условие | Результат |
|---|---|
| Вход активен, канал разрешён, шунт выключен | Начинается отсчёт задержки; после её окончания выход включается |
| Вход исчез до окончания задержки | Отсчёт обнуляется, выход не включается |
| Выход уже включён, автосброс выключен | Срабатывание сохраняется до допустимого сброса или включения шунта |
| Автосброс включён, вход исчез | Выход снимается без дополнительной задержки |
| Канал запрещён | Новые срабатывания не формируются, таймер сбрасывается |
| Включён шунт | Выход и таймер снимаются независимо от автосброса |
Ручной сброс и автосброс
Если автосброс выключен, после устранения неисправности оператор должен нажать «Сброс аварий». Сброс также сработает, если проверка этого канала уже запрещена. Пока неисправность сохраняется и канал продолжает её проверять, сброс аварию не снимет.
Если автосброс включён, сообщение исчезает само после устранения причины или выключения разрешения канала. Для такого поведения задайте SgnlsFltrAutoResetN = true. Это удобно для предупреждения, которое больше не нужно после восстановления нормального состояния.
Разрешение и шунт
Разрешение определяет, когда нужно контролировать причину. Например, падение давления можно контролировать только при работающем насосе.
Шунт временно отключает проверку и сразу убирает её срабатывание. Обычное разрешение действует иначе: если автосброс выключен, снятие разрешения прекращает проверку новых сигналов, но уже появившаяся авария остаётся до сброса.
После выключения шунта или повторного разрешения канала при активной причине начинается новый отсчёт задержки.
Имена фильтра, канала и выходного сигнала
| Обозначение | Значение в примере | Где используется |
|---|---|---|
ID фильтра SgnlsFltrId |
K31_Flts |
Имя экземпляра и префикс настроек |
ID канала SgnlsFltrSigId1 |
VFD_FAULT |
Имя настроек конкретной причины |
| Номер канала | 1 |
Имя выхода out_Signal1_bQ |
Полные имена для примера:
| Назначение | Имя |
|---|---|
| Экземпляр фильтра | K31_Flts_SgnlsFltr_Inst |
| Задержка канала | Conf.K31_Flts_SgnlsFltr_VFD_FAULT_diDelay |
| Шунт канала | Conf.K31_Flts_SgnlsFltr_VFD_FAULT_bBypass |
| Выход канала в алгоритме | K31_Flts_SgnlsFltr_Inst.out_Signal1_bQ |
| Выход канала в View | View.K31_Flts_SgnlsFltr_Inst_out_Signal1_bQ |
Имя VFD_FAULT обозначает канал, а Signal1 — его номер в компоненте. Для следующего канала используются параметры с суффиксом 2, а выход называется out_Signal2_bQ. Всего доступны номера от 1 до 8.
ID каналов внутри одного фильтра задавайте разными, чтобы настройки причин имели отдельные имена.
Аварии и предупреждения
Задержка, шунт и фиксация работают одинаково для аварий и предупреждений. Категория сообщения выбирается отдельно параметрами SgnlsFltrFltN, SgnlsFltrWrnN и SgnlsFltrAlmN.
| Задача | Flt | Wrn | Alm |
|---|---|---|---|
| Аварийное сообщение при срабатывании | true |
Пусто | Пусто |
| Предупреждение при срабатывании | Пусто | true |
Пусто |
| Только обработка сигнала без назначения категории сообщения | Пусто | Пусто | Пусто |
Эти поля задают условия сообщений для результата канала. Для неиспользуемой категории оставьте поле пустым: значение false не заменяет пустое поле.
Например, отдельный фильтр предупреждений можно назвать K31_Wrns. Его алгоритм будет таким же; правило сброса и категории сообщений задаются для каждого канала.
Параметры компонента — Params
Общие параметры
| Параметр | По умолчанию | Назначение |
|---|---|---|
$SgnlsFltr |
Аварии |
Название группы параметров |
SgnlsFltrId |
_ID_ |
ID фильтра. Для K31_Flts создаётся экземпляр K31_Flts_SgnlsFltr_Inst |
SgnlsFltrComment |
аварии |
Общее название группы причин |
SgnlsFltrParent |
CabinetController_Inst |
Родительский компонент, предоставляющий сброс out_bFaultReset |
Параметры каждого канала
В именах ниже замените N номером от 1 до 8: например, SgnlsFltrSigIdN для третьего канала — SgnlsFltrSigId3.
| Параметр | Канал 1 по умолчанию | Назначение |
|---|---|---|
SgnlsFltrSigIdN |
_ID_ |
ID канала в именах его настроек. Пустое поле исключает канал из обработки |
SgnlsFltrSigCommentN |
авария |
Название причины |
SgnlsFltrInN |
_DI_ |
Исходный логический сигнал или выражение; TRUE означает активную причину |
SgnlsFltrEnN |
true |
Логическое разрешение контроля канала |
SgnlsFltrAutoResetN |
false |
true — снимать срабатывание автоматически; false — сохранять до допустимого сброса |
SgnlsFltrFltN |
Пусто | Условие аварийного сообщения Flt для выхода канала |
SgnlsFltrWrnN |
Пусто | Условие предупредительного сообщения Wrn для выхода канала |
SgnlsFltrAlmN |
Пусто | Условие сообщения категории Alm для выхода канала |
Каналы 2–8 изначально не настроены. При добавлении канала заполните его ID, название, вход, разрешение и способ сброса; категории сообщений задайте по назначению причины. Для неиспользуемого канала оставьте ID пустым. Если первый канал не нужен, удалите его шаблонное значение _ID_.
Настройки во время работы — Conf
Для каждого используемого канала создаются две настройки. Полные имена ниже соответствуют фильтру K31_Flts и каналу VFD_FAULT.
| Настройка | Тип | Начальное значение | Назначение |
|---|---|---|---|
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_diDelay |
DINT |
0 |
Задержка срабатывания, с. При 0 дополнительная выдержка не применяется |
Conf.K31_Flts_SgnlsFltr_VFD_FAULT_bBypass |
BOOL |
false |
Шунт: при TRUE выход и таймер канала снимаются |
В именах настроек используются название фильтра и название причины. Например, для другой причины вместо VFD_FAULT будет её ID. Число в Signal1 указывает только номер выхода внутри фильтра.
Выходы компонента
| Результат для примера | Тип | Назначение |
|---|---|---|
K31_Flts_SgnlsFltr_Inst.out_bQ |
BOOL |
Сработал хотя бы один канал |
K31_Flts_SgnlsFltr_Inst.out_bBypass |
BOOL |
Включён шунт хотя бы одного канала |
K31_Flts_SgnlsFltr_Inst.out_Signal1_bQ |
BOOL |
Результат первого канала |
K31_Flts_SgnlsFltr_Inst.out_Signal2_bQ |
BOOL |
Результат второго канала |
K31_Flts_SgnlsFltr_Inst.out_Signal3_bQ |
BOOL |
Результат третьего канала |
K31_Flts_SgnlsFltr_Inst.out_Signal4_bQ |
BOOL |
Результат четвёртого канала |
K31_Flts_SgnlsFltr_Inst.out_Signal5_bQ |
BOOL |
Результат пятого канала |
K31_Flts_SgnlsFltr_Inst.out_Signal6_bQ |
BOOL |
Результат шестого канала |
K31_Flts_SgnlsFltr_Inst.out_Signal7_bQ |
BOOL |
Результат седьмого канала |
K31_Flts_SgnlsFltr_Inst.out_Signal8_bQ |
BOOL |
Результат восьмого канала |
У SignalsFilter нет отдельной команды сброса в View: используется общий сброс от родительского компонента. Настройки задержек и шунтов относятся к отдельным каналам.
Перед генерацией
Если сейчас нужна только программа, откройте у этого компонента область «Экспорт MetaLab» и удалите заполненные строки в своём проекте. После этого можно генерировать без сценариев.
Если будете выполнять виртуальную наладку, оставьте экспорт и импортируйте в раздел MetaLab следующие компоненты из полного архива MetaKit:
| Компонент MetaLab | Файл в архиве MetaKit |
|---|---|
SignalsFilter |
MetaLab/Lib Scenarios/SignalsFilter.yaml |
Один шаблон достаточно добавить один раз, даже если он нужен нескольким механизмам. Сохраните указанные имена: по ним MetaPlatform находит нужный сценарий. Сами значения для механизмов будут подставлены при генерации.
При заполненном экспорте отсутствие шаблона остановит генерацию. Этот шаг нужен для MetaCore, CODESYS 3.5 и Siemens TIA Portal; для CODESYS 2.3 сценарии MetaLab не создаются.