PDA

Просмотр полной версии : Alarm Configuration (Менеджер тревог)



ВладОвен
03.06.2022, 12:54
Привет.
Пытаюсь разобраться с менеджером тревог в CodeSys3.5.
Создал пробный проект. В нем 3 переключающих флага: "Info", "Warning" и "Error". Переключаются они по нажатию на кнопку. Текущее состояние флагов видно в соответствующих прямоугольниках.
На каждый из флагов подвешена одноименная тревога "Info", "Warning" и "Error". Она видна в таблице тревог при активировании.

61066

Но непонятно почему эти тревоги в таблице не накапливаются? Я 100500 раз нажимаю на флаг "Info" и строка в таблице "Info" активируется/деактивируется. А где история (лента событий)?
Что я делаю не так?

Евгений Кислов
03.06.2022, 13:31
Привет.
Пытаюсь разобраться с менеджером тревог в CodeSys3.5.
Создал пробный проект. В нем 3 переключающих флага: "Info", "Warning" и "Error". Переключаются они по нажатию на кнопку. Текущее состояние флагов видно в соответствующих прямоугольниках.
На каждый из флагов подвешена одноименная тревога "Info", "Warning" и "Error". Она видна в таблице тревог при активировании.

61066

Но непонятно почему эти тревоги в таблице не накапливаются? Я 100500 раз нажимаю на флаг "Info" и строка в таблице "Info" активируется/деактивируется. А где история (лента событий)?
Что я делаю не так?

Вам надо таблицу в режим просмотра истории переключить.

ПКМ на таблицу - команда Вставить элементы для подверждения тревог.

После запуска проекта нажать на кнопку История.

ВладОвен
03.06.2022, 13:59
Спасибо. Заработало.
А вот еще вопрос:
А как очистить таблицу (всю историю)?

Евгений Кислов
03.06.2022, 14:02
Спасибо. Заработало.
А вот еще вопрос:
А как очистить таблицу (всю историю)?

Какую версию CODESYS вы используете?

ВладОвен
03.06.2022, 14:09
Версия CodeSys - 3.5 SP17 Patch2 (64 bit).

Евгений Кислов
03.06.2022, 14:11
Версия CodeSys - 3.5 SP17 Patch2 (64 bit).



// очистка истории тревог из кода программы
VAR
itfAlarmConfiguration : AlarmManager.IAlarmConfiguration;
itfAlarmConfiguration7 : AlarmManager.IAlarmConfiguration7;
END_VAR
FOR i := 0 TO AlarmGlobals.g_AlarmHandler.AlarmConfigurationCoun t - 1 DO

itfAlarmConfiguration := AlarmGlobals.g_AlarmHandler.GetAlarmConfiguration( i);

IF __QUERYINTERFACE(itfAlarmConfiguration, itfAlarmConfiguration7) THEN

// сохраняем в журнале текущие тревоги
itfAlarmConfiguration7.ClearHistory(xKeepActiveAla rms := TRUE);
END_IF

END_FOR

ВладОвен
03.06.2022, 14:16
Ок. Спасибо.
Евгений, а подскажите, как правильнее сделать отметку в таблице о включении ПЛК в сеть? И так, чтобы эта запись была сразу же и подтверждена.
Предполагаю, что нужно настроить поле "Способ наблюдения" на тип "Событие".

Есть ли способ вручную создавать записи? Т.е. не методом наблюдения за переменными программы?

Евгений Кислов
03.06.2022, 14:18
Ок. Спасибо.
Евгений, а подскажите, как правильнее сделать отметку в таблице о включении ПЛК в сеть? И так, чтобы эта запись была сразу же и подтверждена.
Предполагаю, что нужно настроить поле "Способ наблюдения" на тип "Событие".

Можно сделать обычную дискретную тревогу, способ подтверждения - REP.
При старте контроллера сгенерируйте кратковременный импульс в переменной тревоги (длина импульса = 2 * время цикла задача тревог, этого хватит).
Тогда она сразу уйдет в историю, подтверждать ее не придется.

ВладОвен
03.06.2022, 15:37
Давайте еще раз:

REP - это события в таблице, не требующие подтверждения (гашения).
ACK - это события в таблице, которым необходимо подтверждение (гашение)

При это если включён режим "History", то мы видим все события всех типов подтвержденные и неподтверждённые.
Если режим "History" отключен, то видим только неподтвержденные события.

Это так?

ВладОвен
03.06.2022, 15:58
Написал код, который на 20 секунде работы устанавливает флаг bEventFlag, а еще через 20 секунд - его сбрасывает.


CASE uiSystemStatus OF


000: openPauseMain(20); // Задержка1 - 20 сек
005: closePauseMain();
010: bEventStart := TRUE; // Флаг, который создаст тревогу в таблице тревог
nextStepMain();
015: openPauseMain(20); // Задержка2 - 20 сек
020: closePauseMain();
025: bEventStart := FALSE; // Флаг больше не нужен. Сбрасываем его
nextStepMain();
030: gotoStepMain(030); // Постоянно крутимся тут


END_CASE


В единственной группе тревог "AlarmGroup1" создал наблюдение "Дискретный - (PLC_PRG.bEventFlag)=(TRUE)".
Это наблюдение создаст запись в таблице тревог класса "Info" с текстом "Съешь еще этих французских булок!".
Класс "Info" настроен с параметрами "REP", "Архивация" и "Подтверждать по отдельности".
Запускаю. Смотрю в таблицу тревог на экране визуализации. Режим "History" включен.

На 20 секунде создается запись в таблице "Съешь еще этих французских булок!". Запись неподтвержденная.
Подтверждать ее не будем.
На 40 секунде эта запись в таблице исчезает.
Как так? Что я сделал не так?

Евгений Кислов
03.06.2022, 21:11
Давайте еще раз:

REP - это события в таблице, не требующие подтверждения (гашения).
ACK - это события в таблице, которым необходимо подтверждение (гашение)

При это если включён режим "History", то мы видим все события всех типов подтвержденные и неподтверждённые.
Если режим "History" отключен, то видим только неподтвержденные события.

Это так?

Да, это так.

Евгений Кислов
03.06.2022, 21:16
Как так? Что я сделал не так?

По описанию ситуации - вы таблицу в режим истории не переключили (не смотря на ваши слова).
Уберите ваш код и просто воздействуйте на bEventFlag вручную. Если после переключения из TRUE в FALSE "запись в таблице исчезнет" (и при этом вы уверены, что таблица сейчас в режиме истории), то выкладывайте этот проект - я воспроизведу у себя и разберусь, в чем дело.
Если после удаления вашего кода проблема исчезнет - то вам нужно будет разобраться, как код влияет на эту ситуацию.

ВладОвен
04.06.2022, 12:56
А есть ли способ сделать сообщение об ошибке в таблице тревог не просто текстовое, а текстовое с переменными данными?
Например, "Водомер перестал отвечать. Прибор №1234567890". Вот этот номер берется из другой переменной. И он раз-от-раза меняется.

Евгений Кислов
04.06.2022, 13:00
А есть ли способ сделать сообщение об ошибке в таблице тревог не просто текстовое, а текстовое с переменными данными?
Например, "Водомер перестал отвечать. Прибор №1234567890". Вот этот номер берется из другой переменной. И он раз-от-раза меняется.

Да, это можно сделать с помощью latch-переменных.
https://help.codesys.com/webapp/_cds_obj_alarm_group;product=core_visualization;ve rsion=3.5.17.0

ВладОвен
04.06.2022, 18:19
... вам нужно будет разобраться, как код влияет на эту ситуацию.

Разобрался!
Таблица тревог работает нормально (так, как описано в документации и в ваших примерах) на ПЛК ОВЕН, Raspberry и CodeSysControlWinV3.
На RealLAb поведение таблицы тревог неправильное. В режиме истории таблица тревог не работает вообще.
Портировал код. Наблюдал.
Вот так!

Lenin
12.08.2022, 14:11
Здравствуйте.
Подскажите, как получить состояние класса тревог Error, а потом его обработать в коде?

Евгений Кислов
12.08.2022, 15:44
Здравствуйте.
Подскажите, как получить состояние класса тревог Error, а потом его обработать в коде?

Добрый день.
Что вы называете "состоянием класса тревог" и как вы планируете обрабатывать это в коде?

Lenin
13.08.2022, 09:23
Что вы называете "состоянием класса тревог" и как вы планируете обрабатывать это в коде?
Добрый день.
По умолчанию Конфигуратор тревог содержит четыре дочерних компонента: три класса тревог (Error, Info, Warning)и хранилище тревог Alarm Storage.
Под состоянием класса я подразумеваю переменную типа Boolean которая возвращает "true" если возникло одно из условий появления тревоги.
Имея данные о состоянии класса тревоги можно сделать обработку события.

Евгений Кислов
13.08.2022, 09:57
Добрый день.
По умолчанию Конфигуратор тревог содержит четыре дочерних компонента: три класса тревог (Error, Info, Warning)и хранилище тревог Alarm Storage.
Под состоянием класса я подразумеваю переменную типа Boolean которая возвращает "true" если возникло одно из условий появления тревоги.
Имея данные о состоянии класса тревоги можно сделать обработку события.

Возможно, этот пример окажется полезным:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_AlarmHandlerWithEmailNotification_3516v1.p rojectarchive

Cs-Cs
13.08.2022, 15:06
Lenin И от себя, присоединясь к Евгений Кислов, накину ссылку на эту тему: https://owen.ru/forum/showthread.php?t=34145
Там есть описание работы с тревогами от меня - со скориншотами.

Lenin
14.08.2022, 09:19
Спасибо, Евгению Кислову и Cs-Cs, разобрался)
В примере

Возможно, этот пример окажется полезным:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_AlarmHandlerWithEmailNotification_3516v1.p rojectarchive есть полезная ссылочка.
// См. подробнее в этом видео: https://youtu.be/dXH3jG0i1Kg?t=2125

Lenin
15.08.2022, 17:59
Здравствуйте.
Кто подскажет, по какому условию eCurrTransition : AlarmManager.AlarmStateTransition; возвращается к 0?
До первой сработки аварии eCurrTransition = 0
Выполнение условия в группе тревог eCurrTransition = 1
Возврат к предаварийной ситуации eCurrTransition = 2
Квитирование eCurrTransition = 4
Проблема в том, что в группе тревог есть условие задержки по времени.
Условие срабатывает один раз, когда eCurrTransition = 0. В дальнейшем срабатывание тревоги происходит без задержки по времени.

Евгений Кислов
15.08.2022, 18:08
Выложите простейший проект с одной тревогой, на котором это можно будет повторить.

Lenin
15.08.2022, 19:08
Выложите простейший проект с одной тревогой, на котором это можно будет повторить.


62145
eCurrTransition = 2 когда порог превышен, а время еще не вышло.

Евгений Кислов
16.08.2022, 08:22
С отработкой задержки не вижу проблем.
Появление сообщения в таблице и активация Crach_Pump у меня всегда происходит с задержкой:
https://ftp.owen.ru/CoDeSys3/95_Internal/LeninAlarms.mp4


eCurrTransition = 2 когда порог превышен, а время еще не вышло.

Вы ожидаете, что в этот момент eCurrTransition будет равно -1?
Но тут есть нюанс - блок вызывается событийно самим кодесисовским AlarmManager'ом.

В настройках класса тревог установлено 3 галочки - соответственно, вы можете "увидеть" 3 состояния (1, 2, 4) и еще 0 до первого срабатывания тревоги.

62147

Если поставить галочку ACK - то можно будет увидеть еще состояние 3.

Я могу предположить, что -1 (Pending) используется где-то внутри библиотеки AlarmManager, и в своем коде вы увидеть это значение не сможете.



Кто подскажет, по какому условию eCurrTransition : AlarmManager.AlarmStateTransition; возвращается к 0?

Думаю, что такого условия нет и переменная перейдет в 0 только после перезагрузки контроллера и будет в нем до тех пор, пока тревога еще ни разу не активируется.

Lenin
16.08.2022, 12:29
Евгений, спасибо за развернутый ответ.

С отработкой задержки не вижу проблем.
Появление сообщения в таблице и активация Crach_Pump у меня всегда происходит с задержкой:
https://ftp.owen.ru/CoDeSys3/95_Internal/LeninAlarms.mp4
Не совсем согласен с такой логикой работы, т.к. если по условию "Авария" - это два параметра "Величина" и "Время", то "Квититрование" не должно изменять это условие.
Но имеем то, что имеем.
С остальным согласен. Еще раз спасибо.

Александр Новиков
24.03.2023, 12:52
Добрый день!

Возможно у кого-то возникала такая проблема: Тревога "поднимается" по списку, хотя имеет время идущее дальше по таблице(Проблема повторяется неоднократно). В чем может быть причина такой ошибки?

На скриншоте Веб-визуализация. Работаю в CoDeSys 3.5 SP17 Patch 3 +
Прибор СПК107.

Заранее спасибо за ответ!

66719

Евгений Кислов
24.03.2023, 12:58
Добрый день!

Возможно у кого-то возникала такая проблема: Тревога "поднимается" по списку, хотя имеет время идущее дальше по таблице(Проблема повторяется неоднократно). В чем может быть причина такой ошибки?

На скриншоте Веб-визуализация. Работаю в CoDeSys 3.5 SP17 Patch 3 +
Прибор СПК107.

Заранее спасибо за ответ!

66719

Добрый день.
Не помню, чтобы мы наблюдали такие ситуации.
У вас таблица в режиме истории отображается?
Если выложите ваш проект - посмотрим настройки, может, это даст дополнительную информацию.

twit
25.09.2023, 12:05
Евгений, Здравствуйте. Просьба подсказать в чем может быть проблема. Codesys 3.5 SP17 проект для СПК110.
Ситуация. Открываю вкладку AlarmGroup там пусто, должен там увидеть список ошибок, но70444 пусто... Нет возможности добавить заново. Screen прилагаю.
Группа ошибок привязана к списку текстов. Список текстов, заполнен 70445 (см. screen).

Евгений Кислов
25.09.2023, 12:06
Добрый день.
Выложите ваш проект - посмотрим, в чем дело.

twit
25.09.2023, 12:25
Проблема не в проекте. Что то изменилось в Codesys...
Создал чистый проект для СПК110. Добавил Alarm Configuration, Создал группу тревог Alarm Group.
Открываю созданную группу, там ни чего. Не могу добавить сообщения, выбрать дискретный или аналоговый вид инициализации ошибки...
На компьютере стоят SP14 и SP16 там все на месте, в SP17 пусто на экране группы тревог. Если, залить в панель, ошибки отображаются... Аномалия какая то... Несколько дней назад все работало. Что случилось не могу понять.
70446

twit
25.09.2023, 12:40
в SP16 экран AlarmGroup выглядит вот так. Все на месте, можно добавлять сообщения об авариях...70447

twit
25.09.2023, 12:44
Пока думаю. Преждевременно написал. не помогло

twit
25.09.2023, 13:10
Человеческий фактор. Ларчик просто открывался. Каким то макаром, сдвинул окно Детали, вверх, т.е. все было на месте, но не отображалось. навел мышку на линию
70449
Смутило отсутствие хоть каких то намеков что есть разделение экрана, стрелочки или треугольнички как в менеджере визуализации.
и получил курсор со стрелочками, вот оно счастье))) может кому поможет. Скрины прилагаю. Честное пионерское, первый раз такой казус. Думал все пропало, а на месте аварии)
70450

Арсений Аксенов
30.11.2023, 11:54
Здравствуйте! Подскажите пожалуйста, как в истории сделать так, чтоб отображались только события, когда переменная переходит в значение TRUE? А то сейчас, когда переменная переходит в значение FALSE, она так же отображается в журнале истории, только без красного фона. Из-за этого не понятно, когда что ключалось или отключалось.72010

Евгений Кислов
30.11.2023, 11:57
Здравствуйте! Подскажите пожалуйста, как в истории сделать так, чтоб отображались только события, когда переменная переходит в значение TRUE? А то сейчас, когда переменная переходит в значение FALSE, она так же отображается в журнале истории, только без красного фона. Из-за этого не понятно, когда что ключалось или отключалось.72010

Добрый день.
Установите в классе тревог способ подтверждения REP и не переключайте таблицу в режим просмотра истории.

Timpod
12.02.2024, 21:47
Добрый вечер.
Получаю события по сети вместе с временным штампом. Используется схема ACK_REP_ACK. Надо всунуть получаемое время в Менеджер тревог. Попробовал через Latch, но возникла проблема. Если ACK не сделан после того как событие ушло, то Latch не обновляется... И даже если ACK сделан до того как событие ушло, Latch не обновляется также. Есть ли вариант обойти это (чтобы при активации события Latch обновлялся) не меняя схемы на REP?
73531
Спасибо.

Евгений Кислов
13.02.2024, 13:35
Добрый вечер.
Получаю события по сети вместе с временным штампом. Используется схема ACK_REP_ACK. Надо всунуть получаемое время в Менеджер тревог. Попробовал через Latch, но возникла проблема. Если ACK не сделан после того как событие ушло, то Latch не обновляется... И даже если ACK сделан до того как событие ушло, Latch не обновляется также. Есть ли вариант обойти это (чтобы при активации события Latch обновлялся) не меняя схемы на REP?
73531
Спасибо.

Добрый день.
Думаю, нет.
Цитата из документации:
"As a result, in the alarm message the operator also gets the additional information which is written in the latch variables when the alarm becomes active"
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_extending_alarm_messages_with_latch_variable s.html

СладкийБубалех
04.03.2025, 12:26
Добрый день.
Если кто-то знает, поделитесь информацией, пожалуйста.

1. Есть ли стандартные функции в библиотеке которые возвращают объем занятых данных под архив, а так же установленный лимит? Хотелось бы в проект добавить визуализацию с информацией о заполненности архива.
2. Есть ли возможность экспорта архивных данных?

Евгений Кислов
04.03.2025, 12:32
Добрый день.
Если кто-то знает, поделитесь информацией, пожалуйста.

1. Есть ли стандартные функции в библиотеке которые возвращают объем занятых данных под архив, а так же установленный лимит? Хотелось бы в проект добавить визуализацию с информацией о заполненности архива.
2. Есть ли возможность экспорта архивных данных?

Добрый день.

1. Насколько я понимаю, определить в коде установленный лимит не получится.
Для определения текущего размера файла тревог можно воспользоваться стандартной функцией SysFileGetPos из библиотеки SysFile:
https://content.helpme-codesys.com/en/libs/SysFile/Current/SysFileGetPos.html

2. Экспортировать в "читаемом" формате (.csv) можно только при подключении из среды CODESYS.
Экспортировать в формате sqlite не проблема - но конвертер придется писать самостоятельно, и это будет нетривиальной задачей.

СладкийБубалех
04.03.2025, 13:06
Евгений, спасибо за ответы.

artem287
17.03.2025, 01:31
Добрый вечер. Можно ли реализовать такое: будет окошко со входом в систему (ФИО, пароль) - пользователь вводит, система запоминает - датчик отключился, появляется тревога, записывается в таблицу тревог - оператор нажимает на кнопку (отдельно созданную), информация со временем нажатия и ФИО заносится в 2 столбца?

Евгений Кислов
17.03.2025, 08:37
Добрый вечер. Можно ли реализовать такое: будет окошко со входом в систему (ФИО, пароль) - пользователь вводит, система запоминает - датчик отключился, появляется тревога, записывается в таблицу тревог - оператор нажимает на кнопку (отдельно созданную), информация со временем нажатия и ФИО заносится в 2 столбца?

Добрый день. Можно.

artem287
17.03.2025, 15:29
Добрый день. Настроил AlarmGroup, переменную (при наступлении True она сигнализирует об ошибке), деактивация (при наступлении true переменная деактивируется) + сообщения.82507.
При объявлении нужных переменных в TRUE, ошибки отображаются в таблице, но у одной по какой-то причине нет сообщения + когда деактивирую (с помощью отдельных кнопок отключить, они не деактивируются). 82509
Когда изначальные переменные снова переходят в False, ошибки пропадают но при этом в истории не отображаются.82508

Евгений Кислов
17.03.2025, 15:49
Добрый день.
Тестировать тревоги в эмуляции - сомнительная идея.
Напишите мне завтра утром в телеграм (см. в подписи) - обсудим вашу задачу.

MiB
01.10.2025, 08:24
Добрый день.

1. Насколько я понимаю, определить в коде установленный лимит не получится.
Для определения текущего размера файла тревог можно воспользоваться стандартной функцией SysFileGetPos из библиотеки SysFile:
https://content.helpme-codesys.com/en/libs/SysFile/Current/SysFileGetPos.html

2. Экспортировать в "читаемом" формате (.csv) можно только при подключении из среды CODESYS.
Экспортировать в формате sqlite не проблема - но конвертер придется писать самостоятельно, и это будет нетривиальной задачей.

Евгений, добрый день.
Вопрос по экспорту в csv. Можно ли существующий в CODESYS функционал по выгрузке в csv как то перенести на ПЛК в проект? Что бы использовать его, а не писать конвертор, для начинающего это сложновато. Или подскажите, может есть подобное решение?

Евгений Кислов
01.10.2025, 09:10
Евгений, добрый день.
Вопрос по экспорту в csv. Можно ли существующий в CODESYS функционал по выгрузке в csv как то перенести на ПЛК в проект? Что бы использовать его, а не писать конвертор, для начинающего это сложновато. Или подскажите, может есть подобное решение?

Добрый день.
Использовать этот функционал внутри проекта ПЛК не получится.
Готовых решений в публичном доступе, насколько мне известно, нет.

MiB
06.10.2025, 12:31
Добрый день.
Использовать этот функционал внутри проекта ПЛК не получится.
Готовых решений в публичном доступе, насколько мне известно, нет.

Добрый день.
Подскажите пожалуйста, а есть какое-нибудь готовое решение на подобии Менеджера тревог, в котором можно программно реализовать сохранение на накопители в удобочитаемом формате?

Евгений Кислов
06.10.2025, 13:06
Добрый день.
Подскажите пожалуйста, а есть какое-нибудь готовое решение на подобии Менеджера тревог, в котором можно программно реализовать сохранение на накопители в удобочитаемом формате?

Добрый день.
Готового решения нет.
В качестве точки отсчета для создания собственной реализации можно взять этот документ:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Archives_v3.1.pdf

MiB
09.10.2025, 10:12
Добрый день.
Готового решения нет.
В качестве точки отсчета для создания собственной реализации можно взять этот документ:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Archives_v3.1.pdf

Спасибо!
Изучил, принцип действия понятен.

Подскажите, пожалуйста, как получить:
1. Количество записей из журнала событий;
2. Текст сообщения и временные метки n-ной записи библиотеки AlarmManager?

Евгений Кислов
09.10.2025, 10:38
Спасибо!
Изучил, принцип действия понятен.

Подскажите, пожалуйста, как получить:
1. Количество записей из журнала событий;
2. Текст сообщения и временные метки n-ной записи библиотеки AlarmManager?

Попробуйте изучить этот пример:
https://forge.codesys.com/prj/codesys-example/alarm-manager/home/Home/

Кнопка Download находится справа вверху.

MiB
14.10.2025, 07:20
Попробуйте изучить этот пример:
https://forge.codesys.com/prj/codesys-example/alarm-manager/home/Home/

Кнопка Download находится справа вверху.

Пример скачал.
Подскажите, пожалуйста, почему в нём столько ошибок. Я использую codesys 3.5 sp17 patch 3.
Все недостающие библиотеки скачал. Возможно не хватает какого то таргет файла?

Версию Codesys и скриншот приложил 86161

kondor3000
14.10.2025, 07:43
Пример скачал.
Подскажите, пожалуйста, почему в нём столько ошибок. Я использую codesys 3.5 sp17 patch 3.
Все недостающие библиотеки скачал. Возможно не хватает какого то таргет файла?

Версию Codesys и скриншот приложил

64 битный виртуальный ПЛК не поддержан, на сайте выложена 32 битная версия, вот и подключайте обычный Control WIN V3

skozirev@yandex.ru
31.10.2025, 12:53
Добрый день.
Была поставлена задача отследить время включения/выключения компрессоров с разных пультов.
Сделал это через менеджер тревог.
Вот только не пойму почему записи в таблице строки "задваиваются" - появляется одновременно запись с ON и OFF ????

86514
86515

Евгений Кислов
31.10.2025, 12:55
Добрый день.
Была поставлена задача отследить время включения/выключения компрессоров с разных пультов.
Сделал это через менеджер тревог.
Вот только не пойму почему записи в таблице строки "задваиваются" - появляется одновременно запись с ON и OFF ????

86514
86515

Добрый день.
А каковы настройки класса тревог Info? В частности, важен "способ подтверждения".
И как настроена таблица тревог, что время чего именно отображается в первом столбце?

skozirev@yandex.ru
31.10.2025, 13:03
Добрый день.
А каковы настройки класса тревог Info? В частности, важен "способ подтверждения".
И как настроена таблица тревог, что время чего именно отображается в первом столбце?

86516
86517

Евгений Кислов
31.10.2025, 13:20
86516
86517

Попробуйте в таблице установить тип "Временная отметка активна" (что на русском означает "Метка времени возникновения тревоги).

skozirev@yandex.ru
31.10.2025, 13:46
Спасибо Евгений - помогло )))))

Есть еще одна проблема : при попытке экспорта хранилища в CSV появляется ошибка "Чтение тревог прервано с кодом ошибки 30402", можно ли и как побороть?

Евгений Кислов
31.10.2025, 16:02
Спасибо Евгений - помогло )))))

Есть еще одна проблема : при попытке экспорта хранилища в CSV появляется ошибка "Чтение тревог прервано с кодом ошибки 30402", можно ли и как побороть?

Попробуйте при подключении к ПЛК нажать ПКМ на узел Device и использовать команду Сброс заводской устройства, чтобы удалить текущую БД тревог.
После этого сгенерируйте новых тревог и повторно проверьте экспорт.
Если это не решит проблему - напишите завтра утром мне в телеграм, пожалуйста (см. в подписи).

MiB
01.11.2025, 13:09
Попробуйте при подключении к ПЛК нажать ПКМ на узел Device и использовать команду Сброс заводской устройства, чтобы удалить текущую БД тревог.
После этого сгенерируйте новых тревог и повторно проверьте экспорт.
Если это не решит проблему - напишите завтра утром мне в телеграм, пожалуйста (см. в подписи).

Евгений, спасибо, во всём разобрался.
Следуя Вашим примерам, получилось сделать импорт журнала событий из хранилища AlarmManager в CSV.

skozirev@yandex.ru
11.12.2025, 10:10
// очистка истории тревог из кода программы
VAR
itfAlarmConfiguration : AlarmManager.IAlarmConfiguration;
itfAlarmConfiguration7 : AlarmManager.IAlarmConfiguration7;
END_VAR
FOR i := 0 TO AlarmGlobals.g_AlarmHandler.AlarmConfigurationCoun t - 1 DO

itfAlarmConfiguration := AlarmGlobals.g_AlarmHandler.GetAlarmConfiguration( i);

IF __QUERYINTERFACE(itfAlarmConfiguration, itfAlarmConfiguration7) THEN

// сохраняем в журнале текущие тревоги
itfAlarmConfiguration7.ClearHistory(xKeepActiveAla rms := TRUE);
END_IF

END_FOR


Добрый день.
А можно попросить код полного удаления сообщений из базы ?
CodeSys 3.5 SP17 Patch 3 + (32-bit)

Евгений Кислов
11.12.2025, 10:22
Добрый день.
А можно попросить код полного удаления сообщений из базы ?
CodeSys 3.5 SP17 Patch 3 + (32-bit)

Добрый день.
В процитированном сообщении и приведен "полный код".

Чтобы удалить тревоги, которые в данный момент являются активными - надо в вызове сделать "(xKeepActiveAlarms := FALSE)"

skozirev@yandex.ru
11.12.2025, 11:01
Добрый день.
В процитированном сообщении и приведен "полный код".

Чтобы удалить тревоги, которые в данный момент являются активными - надо в вызове сделать "(xKeepActiveAlarms := FALSE)"

Спасибо ...