This is topic Обработка одновременно пришедших тревожных сообщений in forum Редактор Базы Каналов (Математика) / Channel Base Editor at Форум TRACE MODE: техническая поддержка.
В моем проекте на 4 экрана выводятся значения сигналов (0 или 1), получаемых с УСО. Если какой-то сигнал получил критическое значение, его экран вылезает на передний план, и оператор его видит. А если одновременно с этим происходит еще несколько аварий на других экранах. Они остались позади, и оператор их может не увидеть. Можно сделать так, чтобы орала сирена, пока все не починят, но это нехорошо. Можно складывать все сигналы (инвертируя их) - тогда в безаварийной ситуации сумма равна 0 - иначе - больше 0. Тогда, квитирую аварию, можно вычитать их этой суммы по 1 - если стало 0 -все ОК. Но тоже кривовато, ведь квитировать один вигнал можно случайно дважды - произойдет ошибка
Можете ли Вы мне что-нибудь посоветовать?
Спасибо! Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Есть три варианта: 1) Все же звуковая сигнализация... 2) Событийный переход по остальным экранам, только по результату квитирования текущего аларма (что-то вроде стэка аварий). 3) Организовать вывод всех этих аварий и их квитирование на единый экран аварий, тогда и прыгать никуда не нужно. А чтобы всегда под рукой был этот экран - сделать его как ссылку на экран на всех рабочих экранах, на которых он должен быть доступен.
Posted by Olga Shabalina (Участник № / Member № 1126) on :
Можно подробнее о п.2? При квитировании аларма происходит переход на другой экран, где есть авария? А как это реализовать?
И где в ТМ хранится состояние канала - квитирован/неквитирован? Мне нужно обрабатывать информацию о квитировании - опустошать стек неквитированных алармов. Но оператор может сквитировать одну аварию дважды!!! - стек опустошится, а какая-нибудь авария окажется незамеченной!!! Нужно третье состояние канала - норма, неквит. аларм и квит. аларм. И в ТМ это, вероятно, есть, раз прекращается мигание. Как это добыть?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Это состояние недоступно, потому как в канале не хранится. Вам необходимо реализовать систему стэка аварий самим - это обычная очередь в которую помещаются коды аварий и статусы этих кодов, глобальные переменные могут вполне для этого подойти.