Пожалуйста, включите JavaScript для просмотра этого сайта.

Скрипты Simple-Scada

История: Примеры скриптов > Работа с БД

Передача значений переменных через БД

Пред. Вверх След. Еще

Иногда требуется передавать текущие значения переменных из скада-системы в сторонние приложения. Обычно для этого используется встроенный UA-сервер, который можно включить в проекте Simple-Scada, а затем подключиться к нему любым UA-клиентом и получать значения переменных. Но некоторые приложения не могут работать как UA-клиент и такой способ не подойдет. В данной статье рассмотрим обмен данными через СУБД MySQL. Cкада-система будет сохранять текущие значения переменных в отдельную таблицу БД, а стороннее приложение будет читать эти значения. Сначала нужно создать в БД отдельную таблицу для хранения значений. Запускаем MySQL Workbench, находим БД в которую наш проект сохраняет архивные данные, кликаем ПКМ строку "Tables" и в раскрывшемся меню выбираем "Create Table":

 

Назовем таблицу "current_values", добавим в нее два столбца:

id - тип данных INT, включаем флажки PK (Primary Key), NN (Not Null), UN (Unsigned);

value - тип данных DOUBLE, включаем флажок NN (Not Null);

и нажмем кнопку "Apply":

 

Откроется окно с SQL-кодом, в нем также нажимаем кнопку "Apply", а затем "Finish". Теперь таблица "current_values" создана. Затем перейдем в редактор скриптов и создадим новый скрипт с типом события "Изменились переменные". Добавим в список скрипта все переменные, значения которых нужно передавать в БД и нажмем кнопку "Создать":

Напишем скрипт:

var
  aQuery: string;
begin
  aQuery := 
    'INSERT INTO `current_values` (`id`, `value`) VALUES (' +
      IntToStr(Variable.ID) + ',' +
      FloatToStr(Variable.AsFloat, 8) +
    ') ON DUPLICATE KEY UPDATE `value`=' + FloatToStr(Variable.AsFloat, 8);
 
  RunSQL(aQuery);
end.

 

Во время работы проекта в таблицу "current_values" будут записываться текущие значения выбранных переменных. Значение в колонке "id" будет соответствовать ID-переменной (ID любой переменной можно посмотреть в редакторе переменных(колонка ID)). При необходимости, через меню "Проект -> Настройки -> База данных -> Другие действия -> Создать таблицу переменных" можно создать в БД таблицу переменных, которая будет содержать список всех переменных проекта. Теперь стороннее приложение может подключиться к БД и считывать значения нужных ему переменных. Пример запроса на выборку:

SELECT `value` FROM `demo_base`.`current_values` WHERE (`id` = 27);

Данный запрос считает из таблицы "current_values" текущее значение переменной с ID = 27.