Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: vladka767 от 30 Апреля 2024, 13:00:58

Название: Историческая таблица
Отправлено: vladka767 от 30 Апреля 2024, 13:00:58
Добрый день.
Заказчик хочет чтобы на одном из окон скады можно было просматривать таблицу с архивными данными процесса за определенный период.
Подскажите как можно реализовать это средствами Simple Scada ?
Название: Re: Историческая таблица
Отправлено: Simple-Scada от 02 Мая 2024, 10:23:09
Здравствуйте.

Для этого можно использовать систему отчетов (https://simple-scada.com/help/report/index.html). Примеры можно найти по ссылке (https://simple-scada.com/help/report/sample-reports.html).

Если обязательно требуется, чтобы данные отображались в таблице на мнемосхеме, то их можно получать с помощью SQL-запроса (https://simple-scada.com/help/script/workbd.html) к стандартным таблицам БД. Подробные примеры работы с БД можно найти в демо-проекте на странице "Скрипты" -> "Работа с БД", а также в разделе "Примеры скриптов (https://simple-scada.com/help/script/dbscripts.html)". У компонента "Таблица (https://simple-scada.com/help/manual/table.html)" есть свой внутренний метод RunSQL (https://simple-scada.com/help/script/trunsql.html), который удобно использовать для того, чтобы отобразить результат выполнения SQL-запроса в таблице на мнемосхеме.

При выборке трендов из стандартных таблиц (https://simple-scada.com/help/manual/tablestruct.html) нужно обязательно указывать слой, из которого требуется получить данные. 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-переменных можно просмотреть в меню "Переменные" (https://simple-scada.com/help/manual/variable-editor.html). Следует учитывать, что данные изначально накапливаются в оперативной памяти и периодически сбрасываются в БД. Чем реже меняется переменная, тем реже данные попадают в БД. Поэтому получить текущее значение переменной из БД будет невозможно.
Название: Re: Историческая таблица
Отправлено: pan2000 от 04 Мая 2024, 02:53:17
   Здравствуйте.

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