г. Москва, ул. Азовская, 14
+7 (495) 310-97-15
Пн-пт: с 9.00 до 18.00
Заказать звонок
Обратный звонок
Ваше имя *
Ваш телефон *
Ваш Email *
Перезвоните мне
Определение первопричины останова комплексной системы

Первопричина останова

Определение первопричины останова оборудования (FIRST_OUT)

Цель статьи: поделиться опытом решения задачи информирования оператора о факте события. Причем так, что бы у оператора системы, следящим за экраном SCADA не осталась и доли сомнения в дифференцировании причины останова оборудования. 

Возьмем относительно крупную установку, в которой процессы протекают достаточно быстро и параметры работы по технологии плотно связаны друг с другом.
Например, при нажатии рукой на физическую кнопку отключения (грибок) гаснет горелка котла, следом за ней начинает падать температура, давление или любые другие параметры, связанные с остановом и также способные остановить котел. Процессы происходят динамически, то есть приход сигналов может быть разделен всего на 50мс. Какой-либо HMI работает с каким-то более медленным циклом опроса (например 500мс и обновляет информацию массивами). Ошибиться в выборе какое из нарушений оказалось именно первым по АРМ оператора не всегда возможно, да и даты нарушений (что раньше, что позже) могут наоборот вводить в заблуждение.

Было несколько подобных показательных примеров когда это требовалось: осушка и обжиг кирпича, системы безопасности щелоковых котлов, переработка твердых радиоактивных отходов.
Возникает вопрос: как возможно определить, какая из причин была первой из всех тех, что остановили установку и вывести это на экран?

SCADA должна продемонстрировать оператору, что именно послужило причиной остановки оборудования. Для этого потребуется организовать программный блок, который будет отлавливать момент срабатывания отключения установки (триповое событие) и одновременно ловить то событие, которое было первопричиной отключения. Данный функциональный блок предназначен для индикации первопричины останова оборудования в течение первой минуты после фактического останова, далее первопричины сбрасываются вне зависимости от наличия причин (блок уже выполнил свою функцию).
Выглядит вызов такого блока приблизительно так:

Первопричина останова

 
Для примера у функционального блока присутствует 16 дискретных входов (причин), каждый вход данного FB подключается к переменной, которая может инициировать отключение агрегата или остается свободным. Обязательно заводится переменная «OUT», которая является фактом срабатывания (триповым событием) отключения установки.

Первопричина останова

В данной конструкции расположено 16 цепей нормально-закрытых контактов. Каждая строка контактов предназначена для выявления одной из 16 причин. То есть один из контактов в каждой цепи является нормально-разомкнутым. В конце цепи стоят две катушки-защелки, одна из которых взводит переменную Trip в 1 (общее событие) и причину R* для последующей обработки. Сама переменная Trip также участвует в каждой цепи, что исключает возможность одновременной установке двух и более причин.

Функциональный блок TON, размещенный ниже, предназначен для сброса причины через минуту после ее появления.

Первопричина останова 
Данная связка как раз предназначена для сброса любой из первопричин R* и переменной факта события Trip.

Первопричина останова

 
Данная конструкция предназначена для обработки первопричины и передачи значения в целочисленную переменную REASON. Значения от 1 до 16 указывают на номер причины. Если значение 0, то, следовательно, причины отсутствуют.

Выше был приведен пример на языке LAD, который используется в программе Unity Pro XL от Schneider Electric. Ниже рассмотрим, как реализовать аналогичную конструкцию на языке Structured Text, например, для Codesys.

Первопричина останова

Первопричина останова 

Прикладываю образец данного функционального блока

FIRST_OUT.TXT

#Первопричинаостановапечи, #каквыявитьпричинуостанова, #Firstout
20

05.04.2023

В каждой ветви этой большой проверки - НЗ контакты проверки входов - лишние, без этих проверок всё тоже будет работать _точно также_

16.11.2022

В общем на других применениях делал так. Каждое событие использует стэк и пишет в него свой id. Скада/панель разбирает этот стэк, добавляя метку времени автоматически. В итоге метка времени немного врет, но порядок событий верен. В ответственных и быстрых применениях добавлял метку уже на плк. Т.е. плк увидел аварию, вызвал функцию которая приняла на вход id, приписала метку и сдвинула стэк, смотрим на следующий вход и т.д. Но главный принцип на котлах, это конечно привязка АБ к стадии работы. И если на стадии стабилизации горелки у меня падает пламя, то это моментально приводит к стадии поствентиляции, и упавшее давление топлива из-за закрытой арматуры уже игнорится в принципе

15.11.2022

Регистрируйте события вызывающие бэд трип. Блинкеры, программные защёлки, алармы с тайм штампами. Графики с кольцевыми буферами.

15.11.2022

у меня стандартный модуль вход, задержка, тип реакции. Пришел вход, отсчитали задержку, подняли сигнал стопа или варнинга, записали в журнал по индексу

15.11.2022

юзаю сегнетикс, линуксовые плк, в лоджике есть исторические блоки - запись события по фронту, условию и т.д. пишу все подряд на достаточную глубину по времени. по аварийному/аварийным событиям включаю генерацию отчета за последние ХХХ минут/часов всего, что записано в историю. помогает разбираться с причинами.

15.11.2022

Я делаю по фронту аварии на set катушки. А уже эти set катушки на остановив аварийные. И эти же set катушки в журнал тревог. Сброс их только кнопкой ресет если причина устранена. Таким Макаром все трипы не остаются незамеченными и при анализе журнала тревог видно кто первопричина останова аварийного

Vyacheslav Lapshin

15.11.2022

В тех задачах, которые я решал так не работало. Поясню. SCADA будет разбирать пакет сообщений, особенно пришедших почти одновременно, ну допустим с разницей в 100мс. Были ошибки в интерпретации событий, а это не допускалось. Scada если обмен большой, то работает пакетами и цикл там значительно больше 100мс

15.11.2022

Скада и так покажет, какая авария сработала первой т.к. эта авария будет в логе первой... А что бы остальные следом не тарабанили - их сработку можно завязать на 1 общий флаг, тогда в теории не будет таких заборов
Ваш комментарий добавлен