Коллеги!
Никак не могу сообразить как обнаружить, что у меня в журнале тревог есть АКТИВНЫЕ, НЕ ПОДТВЕРЖНЕННЫЕ тревоги.
Способ подтверждения ACK_REP_ACK. Т.е. Тревога может быть активна и подтверждена и она не должна считаться за активную тревогу (нужно выключить сигнализацию).
Поясню в каком контексте я хочу чтобы это работало. К примеру, есть условный насос, который работает в режиме АВТО. Если его автоматический выключатель аварийно отключается (по перегрузу или кз), то по этому событию взводится SR-триггер. Сброс триггера происходит по приведению автомата насоса в рабочее положение. Выход Q1 SR-триггера формирует тревогу класса Alarm. Оператор должен иметь возможность подтвердить данную тревогу, которая все еще активна, т.к. SR-триггер не сброшен (автомат все еще отключен).
Просто отключить сигнализацию отдельной переменной не подойдет, т.к. если возникает другая авария сигнализация должна сработать.
Ковыряние с действиями "активация", "деактивация", "подтвердить" и "АСК" пока результатов не дали.
Дополнительный вопрос: можно как то обратиться к конкретной тревоги конкретной группы (по ее ID или т.п.) и посмотреть ее состояние (активна, активна и подтверждена, неактивна и ожидает подтверждения и т.д)?
Сделайте обработку аварий средствами программного кода. Это проще, по крайней мере я так делаю без всяких доп библиотек кодесиса.
//Обработка аварий
FOR i:= 1 TO 32 DO
IF TMP_MEC.ALA_CUR[i] THEN TMP_MEC.ALA_MEM[i]:= TRUE; END_IF //Взвод бита аварии в память
IF TMP_MEC.ALA_MEM[i] AND TMP_MEC.COM_RES THEN TMP_MEC.ALA_CON[i]:= TRUE; END_IF //Взвод бита подтветждения аварии
IF TMP_MEC.ALA_CON[i] AND NOT TMP_MEC.ALA_CUR[i] THEN
TMP_MEC.ALA_MEM[i]:= FALSE; //Сброс бита аварии из памяти при отсутствии аварии после подтверждения
TMP_MEC.ALA_CON[i]:= FALSE; //Сброс бита подтветждения аварии при отсутствии аварии после подтверждения
END_IF
IF NOT(NOT TMP_MEC.ALA_MEM[i] OR (TMP_MEC.PAR_DIS[i] AND TMP_MEC.COM_DIS[i])) THEN
TMP_MEC.STA_REA:= FALSE; //Сброс бита готовности
TMP_MEC.STA_ALA:= TRUE; //Взведение бита аварии
END_IF
END_FOR
Последний раз редактировалось МихаилГл; 29.09.2023 в 17:09.
Это последнее к чему придется прибегнуть в решении данной задачи. Просто кода написано и так уже очень много. Разных тревог тоже очень много, они уже разбиты по группам и классам. Собирать их теперь опять в отдельном куске кода не хочется, но похоже придется. Думал можно такой пустяк как "Наличие хотя бы одной активной неподтвержденной тревоги" вытянуть из журнала тревог.
Есть "действия уведомления" и там по активации тревоги данного класса можно можно назначить TRUE какой-нибудь переменной. Но переменная это не сбрасывается сама в FALSE если тревоги перестают быть активными.
Капаюсь в библиотеке AlarmManager, но пока ничего не нашел
Ну хоть бы сказала , что и где. Вроде как рекомедации с трендами выполнены, если в них дело. Редко но бывает. А так месяцами крутится. Обычно после смены проекта.
Задумкин Сергей Глянь вот эти темы:
https://owen.ru/forum/showthread.php?t=34145 - тут я отвечал про то, как получить доступ к инфе о тревоге при изменении её статуса (любого).
https://owen.ru/forum/showthread.php?t=36416 - тут примерно про то же
В теории можно сделать так: отслеживать изменение статуса нужной тревоги и менять нужную переменную при этом.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
После переноса с cs16 на cs17 остановились все тренды. Ошибок нет. Библиотеки, таргет обновлены. Методом тыка выяснилось если компонент "Селектор Диапазона дат" стоит по порядку сзади плоскости отображения тренда ,то тренд не отрисовывается, стоит на месте. Если переместить ВПЕРЕД, то начинает работать. На cs16 все работало. ЗЫ: сразу если вопрос зачем перемещать назад, отвечаю чтоб больше было рабочее поле тренда. ??? Прошивка 2.4...
Добрый день!
Как осуществить переключение экрана с внешней физической кнопки?
Переключение экрана требуется делать последовательно по кругу: Экран1-Экран2-Экран3-Экран1-....
Имеется: СПК107 CS3.5 SP17 P3 и подключенный к нему модуль DI
Добрый день.
См. п. 10.3.1 в данном документе:
https://ftp.owen.ru/CoDeSys3/11_Docu..._Visu_v3.0.pdf
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk