PhocusBase

Сохранение данных Phocus в MS SQL или MySQL

В компании НАУЦИЛУС разработано программное средство (опция) PhocusBase, позволяющее сохранить в БД MS SQL или MySQL и автоматически поддерживать в актуальном состоянии данные (точки, предыстория, тревоги/события), получаемые по сети с сервера Opus/Phocus.

PhocusBase функционально представляет собой службу MS Windows. Пользователь определяет данные Phocus, которые нужно хранить в БД MS SQL или MySQL, а также период, через который PhocusBase будет забирать с сервера эти данные. (Примечание. По умолчанию сохраняются данные всех точек, а также предыстория тех точек, для которых установлен флаг "предыстория".)

PhocusBase состоит из трёх частей:

  1. Opc Administrator – эта часть расположена на узле сети, где работает сервер Phocus/Opus (резидент ОС QNX);
  2. PhdbService - служба MS Windows, работающая на узле сети, на котором установлен сервер MS SQL;
  3. PhdbServiceControl – это утилита, позволяющая пользователю производить настройку службы PhdbService.

Opc Administrator

Opc Administrator представляет собой программный сервер в QNX, к которому обращаются по сети с запросами данных внешние программы (например, OPC сервер для Phocus). Для работы с PhdbService в него были добавлены функции, обрабатывающие запросы PhocusBase.

PhdbService

PhdbService регистрируется в MS Windows как служба. Как любая служба в Windows, PhocusBase имеет ключ в реестре:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPhdb].В подключе Configuration хранятся настройки службы. Параметры этого подключа отвечают за настройки связи с Opc Administrator, задаются из утилиты PhdbServiceControl и включают Интервал обновления, IP-адрес, Имя хоста, Порт и др.

PhdbServiceControl

Утилита PhdbServiceControl обеспечивает пользовательский интерфейс для работы с PhocusBase. С ее помощью через вкладку "Настройки" задаются:

  • "Имя хоста" - имя машины с сервером Phocus/Opus, напр.: phocus.server.su
  • "IP" - ip адрес с сервера Phocus/Opus, напр.: 192.168.0.1
  • "Порт" – порт, на котором в системе с Phocus/Opus висит Opc Administrator, напр.:6000
  • "Интервал обновления" – интервал (в секундах) пересылки данных с Phocus/Opus;
  • "Точки" - определение точек, для которых предыстория будет передаваться в MS SQL.

Помимо этого, утилита PhdbServiceControl отображает данные о текущей работе PhocusBase. На вкладке "Информация" доступны следующие данные:

  • "Количество полученных групп" - при каждом обновлении, PhocusBase сначала проверяет соответствие групп и точек в mssql(mysql) объектам в Phocus. Таким образом, данное поле показывает, сколько групп точек было в Phocus (и, соответственно, если это число отлично от кол-ва групп в PhocusBase, стало в PhocusBase) на момент последнего обновления.
  • "Количество полученных точек" - сколько точек было получено в момент последнего обновления.
  • "Количество полученных записей истории" - сколько записей предыстории было получено для всех точек во время последнего обновления.
  • "Количество записей истории в БД" - сколько всего записей предыстории для всех точек на данный момент хранится в PhocusBase.
  • "Время последнего обновления" - когда последний раз произошло обновление. Это время берётся с машины PhocusBase.
  • Строка с сообщением о текущем статусе обновления и различных ошибках.
  • Кнопка "Обновить" - для того, чтобы можно было вручную запустить процесс обновления, не дожидаясь таймера (затем, после завершения обновления, таймер сбрасывается, и в следующий раз обновление произойдёт через время, равное периоду обновления ).

Структура БД

В результате работы PhocusBase создается и поддерживается база данных, доступная для SQL-запросов. На рисунке представлена структура этой БД.

Как видно, она включает данные точек предыстории: числовые (numeric), логические (logical), текстовые (text), интегральные (accumulator) и статусные (status), их логические группы (groups), а также события (различного типа).

Работа с БД

При работе в стандартной системе MS Windows SQL-запросы можно отправлять через утилиту консольного клиента БД osql.exe. Кроме того, в MS Excel можно импортировать данные из MS SQL. Команда на получение данных использует стандартные операторы языка SQL. В качестве примеров запросов можно привести следующие:

1. Получение данных предыстории для всех точек:

select numeric.name as 'точка', groups.name as 'группа',
history.time as 'дата', history.value as 'значение'
from numeric, groups, history
where groups.group_id = history.group_id
and numeric.tag_id = history.tag_id

2. Получение данных предыстории для точки C1_LEVEL:

select numeric.name as 'точка', groups.name as 'группа',
history.time as 'дата', history.value as 'значение'
from numeric, groups, history
where groups.group_id = history.group_id
and numeric.tag_id = history.tag_id
and numeric.name = ‘C1_LEVEL’