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

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

Автор Тема: Выборка данных из БД Simple-Scada во внешнюю БД  (Прочитано 3847 раз)

Eugene_

  • Пользователь
  • **
  • Сообщений: 95
    • Просмотр профиля
Добрый день!
SimpleScada сохраняет данные своим внутренним механизмом в свою базу не в хронологическом порядке, не в порядке увеличения timestamp. Так ли это ?

Может ли быть так (время упрощенно):
имя/время/значение

Тег1 - 18:00 - 0
Тег1 - 18:10 - 2
Тег1 - 18:05 - 1
Тег1 - 18:20 - 3

Суть вопроса в чем - как можно забрать (скопировать) эти данные, значения Тега1 во внешнюю базу influxDB, чтобы там они были в хронологическом порядке ? чтобы на influxDB уже прикручивать внешние графики/системы. Если "в лоб" брать последнюю запись, то во внешней базе данные будут неверные, тег1 не будет нарастать 0-1-2-3 и график будет неверный.
« Изменён: 31 Июля 2024, 11:40:12 от Simple_Scada »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 288
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Цитировать
SimpleScada сохраняет данные своим внутренним механизмом в свою базу не в хронологическом порядке, не в порядке увеличения timestamp. Так ли это ?
Данные архивируются в БД в хронологическом порядке. Обратите внимание, что при выборке трендов из стандартных таблиц нужно обязательно указывать слой, из которого требуется получить данные. 0 – основной слой, который содержит все данные тренда. Остальные слои содержат прореженные данные. Дополнительно, при выборке данных из БД можно выполнять сортировку по нужному столбцу – см. пример для MySQL.

Цитировать
Если "в лоб" брать последнюю запись, то во внешней базе данные будут неверные
При выборке данных из БД следует учитывать, что данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Поэтому получить текущие значения переменных из БД будет невозможно. Если требуется получать из БД текущие значения переменных, то см. статью по ссылке.


Eugene_

  • Пользователь
  • **
  • Сообщений: 95
    • Просмотр профиля
Требуется передать во внешнюю базу данные по факту их наличия в базе SCADA, то есть не текущее значение. В SCADA версия архивации v1.

То есть такое выражение (пример) - будет верно ? Но при условии, что выборка из базы SCADA (такой запрос) делается чаще, чем она успевает записать более 1й записи. При этом очевидная проблема,  что если выборка из SS делается чаще, чем она сохраняет в свою базу  - то будет дублирование записей во внешней базе, где и timestamp и value будут повторяющимися.

SELECT * FROM basename.trends_data  ORDER BY timestamp DESC LIMIT 1;
« Изменён: 31 Июля 2024, 15:50:33 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Выборка данных из БД Simple-Scada во внешнюю БД
« Ответ #3 : 04 Августа 2024, 12:42:47 »
Здравствуйте.

Цитировать
То есть такое выражение (пример) - будет верно ?  Но при условии, что выборка из базы SCADA (такой запрос) делается чаще, чем она успевает записать более 1й записи.
Такой способ нормально работать не будет, т.к. данные могут записаться в БД мгновенно (в пределах одной миллисекунды). Единственный надежный способ решения описанной задачи, это передача текущих значений через свою таблицу БД и их последующая архивация в сторонней БД. Другие возможные варианты обмена данными со сторонним ПО рассмотрены по ссылке.