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

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

Автор Тема: Историческая таблица  (Прочитано 1776 раз)

vladka767

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Историческая таблица
« : 30 Апреля 2024, 13:00:58 »
Добрый день.
Заказчик хочет чтобы на одном из окон скады можно было просматривать таблицу с архивными данными процесса за определенный период.
Подскажите как можно реализовать это средствами Simple Scada ?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3160
    • Просмотр профиля
    • Simple-Scada
Re: Историческая таблица
« Ответ #1 : 02 Мая 2024, 10:23:09 »
Здравствуйте.

Для этого можно использовать систему отчетов. Примеры можно найти по ссылке.

Если обязательно требуется, чтобы данные отображались в таблице на мнемосхеме, то их можно получать с помощью SQL-запроса к стандартным таблицам БД. Подробные примеры работы с БД можно найти в демо-проекте на странице "Скрипты" -> "Работа с БД", а также в разделе "Примеры скриптов". У компонента "Таблица" есть свой внутренний метод RunSQL, который удобно использовать для того, чтобы отобразить результат выполнения SQL-запроса в таблице на мнемосхеме.

При выборке трендов из стандартных таблиц нужно обязательно указывать слой, из которого требуется получить данные. 0 - основной слой, который содержит все данные тренда. Остальные слои содержат прореженные данные. Пример стандартного запроса на выборку из основного слоя для MySQL:
Код: (delphi)
var
  aQuery: string;
begin
  // формируем запрос на выборку из БД
  aQuery := 'SELECT * FROM `trends` WHERE ' +
    '(`id` = 68) AND ' +
    '(`t` >= ''2024-05-02 10:00:00.000'') AND ' +
    '(`t` <= ''2024-05-03 12:00:00.000'') AND ' +
    '(`l` = 0);';

  // выполняем запрос от таблицы, результат автоматически отобразится в ней
  Table1.RunSQL(aQuery, tsAll);
end.
ID-переменных можно просмотреть в меню "Переменные". Следует учитывать, что данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Поэтому получить текущее значение переменной из БД будет невозможно.
« Изменён: 02 Мая 2024, 11:05:49 от Simple_Scada »

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Историческая таблица
« Ответ #2 : 04 Мая 2024, 02:53:17 »
   Здравствуйте.

  Если под исторической таблицей Вы понимаете что-то похожее на "Периодический отчет", но непосредственно на клиенте, то построение такой таблицы требует заметного времени.
  Задаются период просмотра и число интервалов. Копия исторической таблицы предварительно накапливается в БД при циклическом обращении к стандартным функциям извлечения значений переменной из архива.
  Пример небольшой статической таблицы (в смысле фиксированного набора переменных для которого не требуется горизонтальный скролл) во вложении.
  Для удобства просмотра можно добавить возможности выбора переменных, перестановку столбцов, горизонтальный скролл и вычисление значения переменной в интервале по своим правилам.