Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Чтение архивных данных с устройства.  (Прочитано 381 раз)

Hello_Arduino

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Чтение архивных данных с устройства.
« : 18 Сентября 2026, 10:26:22 »
Доброго времени всем!
Возможно эту тему уже поднимали.
Есть устройство работающие по протоколу Modbus
в нем есть архив аварий. 100 записей.
есть соотведствующие регистры.
- год события
- месяц события
- день.
 - час.
- минута
- секунда
- номер события.
- показания 1
- -//-
- показания 10

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

Вот прошу помощи, как мне с помощью скада читать эти архивные данные?

Как происходит чтение из устройства.
Устройство полностью Китай, настолько Китай что инструкция на китайском.
Пореводчик мне помог понять следующие.
Для чтения архива создаем теги.
который соотведствует параметру или дате.
отправляем команду на регистр 4000 с номером события из архива. Соотведственно от 1 до 100
то есть, когда связь возобновилась мне нужно перебрать массив событий, получить все новые события и их сохранить.
Естественно мне нужен массив в который я обновлю события.
Было бы хорошо получить готове решение. думаю раньше уже были похожие проблемы у других
« Изменён: 18 Сентября 2026, 10:40:37 от Hello_Arduino »

pan2000

  • Постоялец
  • ***
  • Сообщений: 239
    • Просмотр профиля
Re: Чтение архивных данных с устройства.
« Ответ #1 : 21 Сентября 2026, 06:35:30 »
   Здравствуйте.

Во вложении карта памяти [Modbus] устройства РС83-В1 с журналом аварий на 100 событий. Структура ошибки очень похожа, но способ чтения совершенно другой.
1. Для начала нужно получить доступ к данным. Вам необходимо построить (пытая китайское устройство) или подсмотреть в китайском руководстве (цифры-то арабские) аналогичную карту.
2. Определить критерий, когда приняты все данные ошибки, особенно если линии связи с прибором медленные.
3. Из Вашего сообщения и документа на РС83-В1 можно предположить:
 - чтение журнала ведется из очереди аварий по одной аварии через буфер, который заполняется при записи в регистр (4000) смещения относительно начала очереди;
 - аварии последовательно заполняют очередь, и при её переполнении новая авария вытесняет первую аварию из очереди. Скорее всего для контроля этой ситуации используется возвращаемое значение "номер аварии" - порядковое число 0..65535;
 - в незаполненной очереди признаком конца очереди является авария с нулевыми данными;
 - полностью заполненная очередь создаёт еще одну ошибку: если между чтением двух аварий вклинится новая запись аварии-события, то произойдет сдвиг аварий в очереди, что нарушит всю последовательность чтения по номеру аварии.
4. Что ещё следует поискать в китайском устройстве и что, по моему мнению, крайне необходимо. так это удаление прочитанной ошибки из очереди, что даёт возможность (если не зевать с удалением ошибок) исключить переполнение очереди.
5. Самое простое китайское решение - НЕ ДЕЛАТЬ НИЧЕГО ВООБЩЕ, т.е. считать что есть только кольцевой буфер аварий, с началом индексации от самой старой сохранившейся аварии.  В этом случае алгоритм на основе анализа возвращаемого значения "номер аварии" пытается упорядочить прочитанные аварии в порядке последовательного возрастания номеров аварий.
  Пример из вложения содержит модель "Китайского устройства" (генерация ошибки/серии, очистка очереди) и окно получения данных (чтение ошибки по смещению, чтение списка аварий, очистка окна). Пример только для иллюстрации алгоритма, тщательно проверять его нет смысла пока не будут решены вопрос п.1 и п.2.
Для ввода повторного значения используйте лидирующий 0.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1425
    • Просмотр профиля
Re: Чтение архивных данных с устройства.
« Ответ #2 : 21 Сентября 2026, 10:48:53 »
Здравствуйте.

Обычно, архивные данные с приборов доступны для чтения по OPC-HDA. Но в Simple-Scada нет поддержки OPC-HDA, поэтому считать архивные данные не получится. В Simple-Scada можно работать только с текущими данными, поступающими от OPC-сервера.
 
Если каким-то способом у Вас получится передать нужные данные в Simple-Scada, то записать эти данные в штатные таблицы БД будет невозможно. В штатные таблицы архивируются только текущие данные, поступающие в скада-систему (если у переменной включена архивация).