PhocusBase
Сохранение данных Phocus в MS SQL или MySQL
В компании НАУЦИЛУС разработано программное средство (опция) PhocusBase, позволяющее сохранить в БД MS SQL или MySQL и автоматически поддерживать в актуальном состоянии данные (точки, предыстория, тревоги/события), получаемые по сети с сервера Opus/Phocus.
PhocusBase функционально представляет собой службу MS Windows. Пользователь определяет данные Phocus, которые нужно хранить в БД MS SQL или MySQL, а также период, через который PhocusBase будет забирать с сервера эти данные. (Примечание. По умолчанию сохраняются данные всех точек, а также предыстория тех точек, для которых установлен флаг "предыстория".)
PhocusBase состоит из трёх частей:
- Opc Administrator – эта часть расположена на узле сети, где работает сервер Phocus/Opus (резидент ОС QNX);
- PhdbService - служба MS Windows, работающая на узле сети, на котором установлен сервер MS SQL;
- 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’