PDA

Просмотр полной версии : Проблема с архивацией Alarm Configurator



DmitriiAnyushin
06.12.2023, 09:00
Здравствуйте! В проекте использую СПК107 (v14) Codesys 3.5 SP17.
Создал архив (1500 событий, каждое привязано к элементу массива). В настройка архива указал Maximum number of records = 200. На экран добавил таблицу тревог, чтобы данный архив выводился (по типу журнала событий). Первые 200 событий фиксируются как положено, но когда начинается перезапись архива, то при одновременном появление событий (в массиве за один цикл срабатывает несколько бит) фиксируется только самый нижний элемент массива из сработанных.
Вызов AlarmManager циклический (200мс).
Когда убрал лимит с количества записей, то архив начал вестись стабильно, но ограничение же все равно же какое то должно быть и рано или поздно начнется перезапись (не нашел нигде документации на этот счет).
Подскажите пожалуйста, в чем может быть проблема и как с ней разобраться?
Спасибо!

72164

72165

72166

Евгений Кислов
06.12.2023, 09:08
Добрый день.


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

Если установить лимит, например, в 2000 записей - проблема повторяется?

DmitriiAnyushin
06.12.2023, 10:51
Установил лимит 2000
Для проверки подаю за раз 8 событий, но при времени вызова 200 мс, иногда не фиксировались события. Уменьшил время цикла сначала до 100, потом до 50 мс - хоть реже, но ситуация повторялась (до 2000 событий естественно не дощелкал, т.к. уже нестабильно работает).
Поставил лимит 500 при цикле 50мс - вроде стабильно работать стало (при переходе через 500 событий тоже).
А как связан размер лимита (причем он должен быть больше) со стабильностью ведения архива и какое время цикла является оптимальным?

Евгений Кислов
06.12.2023, 10:56
Установил лимит 2000
Для проверки подаю за раз 8 событий, но при времени вызова 200 мс, иногда не фиксировались события. Уменьшил время цикла сначала до 100, потом до 50 мс - хоть реже, но ситуация повторялась (до 2000 событий естественно не дощелкал, т.к. уже нестабильно работает).
Поставил лимит 500 при цикле 50мс - вроде стабильно работать стало (при переходе через 500 событий тоже).
А как связан размер лимита (причем он должен быть больше) со стабильностью ведения архива и какое время цикла является оптимальным?

Сложно сказать. Возможно, вы наблюдаете последствия этого бага:

72172

DmitriiAnyushin
06.12.2023, 11:34
Всё ясно. А это вообще лечится (новые версии какие-то) или только увеличением лимита событий?

Евгений Кислов
06.12.2023, 11:52
Всё ясно. А это вообще лечится (новые версии какие-то) или только увеличением лимита событий?

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

DmitriiAnyushin
06.12.2023, 14:33
При лимите в 500 событий ситуация повторилась, только когда уже архив достигает 500. При перезагрузке СПК (или переводе в СТОП - СТАРТ) все опять начинает работать как надо. Я Вам на почту ссылку на проект и описание отправил. Буду благодарен за помощь

DmitriiAnyushin
06.12.2023, 15:07
И при этом если экран, на котором ведется этот архив, я открываю в среде разработки Codesys3.5 (онлайн) - то там все в порядке, а на самом СПК отличается от этого (ситуация описанная мной ранее). Там нигде больше на какую-либо область памяти ссылаться не нужно?

Евгений Кислов
06.12.2023, 16:00
При лимите в 500 событий ситуация повторилась, только когда уже архив достигает 500. При перезагрузке СПК (или переводе в СТОП - СТАРТ) все опять начинает работать как надо. Я Вам на почту ссылку на проект и описание отправил. Буду благодарен за помощь

Спасибо. Я постараюсь выделить время на исследование этой проблемы.

Ни на какую область памяти ссылаться не нужно.

DmitriiAnyushin
07.12.2023, 09:00
Сегодня продолжил разбираться. Дал побольше времени на вызов AlarmManagerTask (1000ms) и лишние циклы из кода убрал - вроде работает стабильно - уже циклов 10 перезаписал.
Сильно нагружен проект поэтому, скорее всего, не укладывался в прежние временные интервалы. Понял, что при запущенном в онлайне проекте лучше архивы не проверять (в моем случае рассинхрон начался - на ноуте архивы хорошо велись, а в СПК в это время уже отвалились)
Посмотрю как на объекте будет работать.
Большое спасибо за помощь!

DmitriiAnyushin
07.12.2023, 14:00
Евгений, еще вопрос возник.
Времена выполнения как я опытным путем выяснил тут особо не причем. Архив ведется, просто таблица тревог не всегда его подтягивает. Если СПК перезагрузить, то все сообщения которые изначально не отображались - покажутся. То ли таблица тревог не успевает эти события обрабатывать, то ли еще что. Есть ли какие-то настройки на этот счет?

Евгений Кислов
07.12.2023, 14:01
Евгений, еще вопрос возник.
Времена выполнения как я опытным путем выяснил тут особо не причем. Архив ведется, просто таблица тревог не всегда его подтягивает. Если СПК перезагрузить, то все сообщения которые изначально не отображались - покажутся. То ли таблица тревог не успевает эти события обрабатывать, то ли еще что. Есть ли какие-то настройки на этот счет?

Насколько я знаю - нет.

DmitriiAnyushin
07.12.2023, 14:06
Насколько я знаю - нет.

То есть у данной проблемы как такового решения нет?

Евгений Кислов
07.12.2023, 14:10
То есть у данной проблемы как такового решения нет?

По крайней мере, в данный момент я его не вижу.
Но вы можете продолжить ее исследовать и, возможно, найдете какие-то новые особенности ее проявления.

DmitriiAnyushin
07.12.2023, 14:19
По крайней мере, в данный момент я его не вижу.
Но вы можете продолжить ее исследовать и, возможно, найдете какие-то новые особенности ее проявления.

Ну особенности проявления я сегодня нашел к обеду - последовательно подавая по одному или несколько событий за цикл (не пакетом за раз как я тестировал) таблица тревог по истечению лимита архива перестает отображать данные архива (если архив уже перед прошивкой СПК был заполнен, то сразу же). Не все конечно, но частично (какие именно отображает и не отображает, я в первом сообщении темы описал - при появлении за цикл нескольких событий в таблице тревог отобразится только нижестоящее по массиву где формируются биты событий). Сам архив при этом ведется. Если СПК перезагрузить, то все события из архива подтянутся.
Евгений, я уже задавал данный вопрос, если в настройках архива выбрать No limit, то каким размером будет ограничен журнал (архив) и не зависнит ли при этом (при исчерпании лимита) проект?

DmitriiAnyushin
07.12.2023, 15:14
Нашел информацию на сайте Codesys
https://help.codesys.com/api-content/2/codesys/3.5.14.0/en/_cds_setting_up_an_alarm_configuration/

1. Select the Alarm Storage object in the device tree.
2. To change the name, select the Properties command in the context menu.
Change the name from “AlarmStorage” (example: “DatabaseFileAlarmStorage”) and click OK.
3. Double-click the DatabaseFileAlarmStorage object in the device tree to open the editor.
4. Configure as follows:
Subdirectory: Leave this field blank. Specifying a directory is optional only on the PLC where the alarm storage file will be saved.
Limit group: Select the No limit check box.
⇒ The alarm storage is configured. In this case, CODESYS saves the alarms internally in an unlimited buffer.

То есть полуяается сам разработчик говорит ставить No limt? (в таком случае вывод архива стабильно работает, но фраза unlimited buffer немного смущает)

Евгений Кислов
07.12.2023, 16:01
не зависнит ли при этом (при исчерпании лимита) проект?

В данной ситуации зависнет.

DmitriiAnyushin
07.12.2023, 16:20
А вы не знаете, что тогда имеется ввиду под unlimited buffer (если дословно, то получается неограниченный буфер) и почему на сайте CODESYS именно этот пункт говорят выбирать?

Евгений Кислов
07.12.2023, 16:45
А вы не знаете, что тогда имеется ввиду под unlimited buffer (если дословно, то получается неограниченный буфер) и почему на сайте CODESYS именно этот пункт говорят выбирать?

Имеется в виду, что на размер файла тревог не будет накладываться никаких ограничений со стороны CODESYS.
Почему в справке в примере предлагают выбрать его - ну, вероятно, потому что это значение по умолчанию, а пример настройки тревог - это просто пример, а не универсальное решение.