bg

ВКТ-7 (Теплоком). Автоматическое получение архивных и текущих данных. OPC сервер

Предварительные требования

Обычно, ВКТ-7, подключается к компьютеру через последовательный интерфейс RS-232 и передает данные, используя нестандартную версию протокола MODBUS RTU.

Вы также можете подключить этот прибор через преобразователь RS232 в Ethernet. В этом случае к прибору можно подключаться удаленно, по сети.

При использовании GSM модема совместно с этим прибором необходимо, чтобы модем мог автоматически устанавливать соединение с интернетом.

Установка

Если подключение осуществляется через последовательный порт RS-232 (COM порт), то необходимо установить Advanced Serial Data Logger (первая ссылка сверху).

Если подключение к прибору осуществляется по сети или через Интернет, то необходимо установить Advanced TCP/IP Data Logger (первая ссылка сверху).

В дополнение к основной программе необходимо установить модуль "Binary parsers". Этот модуль обеспечивает взаимодействие логгера и прибора ВКТ-7: отправляет запросы по расписанию, обрабатывает полученные ответы, подготавливает данные для экспорта.

Настройка связи

1. Настройте подключение к прибору (параметры COM порта или TCP соединения) (рис. 1 и 2).

Параметры COM порта (RS232)
Рис. 1.1 Параметры COM порта

Параметры TCP порта
Рис. 1.2 Параметры TCP порта

2. Выберите модуль-парсер для ВКТ-7 в настройках. Если прибор подключен к компьютеру через RS-232, то вы должны дополнительно выбрать такой же модуль запроса данных (на рисунке не показан) (рис. 3).

Выбор модуля парсера ВКТ-7
Рис. 1.3 Выбор модуля парсера ВКТ-7

Настройка чтения данных

Вы должны задать сетевой адрес прибора. Этот адрес используется при отправке запросов в прибор. Также, вы можете задать дополнительное описание прибора. Эти значения также можно будет использовать при экспорте данных и записывать в базу (рис. 1).

Настройка чтения данных
Рис. 2.1 Настройка чтения данных

В настройках модуля парсера укажите расписание чтения данных (рис. 2, 3). Вы можете настроить расписание для каждого типа данных (текущие, часовой, суточный или накопительный архив).

Настройка чтения текущих данных
Рис. 2.2 ВКТ-7. Текущие данные

Опрос архивных данных начинается с момента включения опроса. Если необходимо считать данные из имеющегося архива, то нужно нажать кнопку "Загрузить архивные данные начиная с даты" и задать начальную дату. При чтении архивных данных программа запоминает дату и время последнего считанного значения и возобновляет чтение с сохраненной даты. Вы можете повторно считать архив, задав новую дату начала чтения данных. Обратите внимание, что программа не проверяет наличие архивных данных в базе данных, что может привести к появлению дубликатов.

Настройка чтения архивных данных
Рис. 2.3 ВКТ-7. Архивные данные

Запись данных в базу данных

Для записи данных можно воспользоваться модулем экспорта данных "ODBC Database". Этот модуль может записывать данные в любую базу данных, для которой есть драйвер ODBC.

В одну таблицу базу данных можно собирать данные от нескольких устройств, поскольку каждая строчка данных будет содержать уникальный идентификатор прибора и номер порта.

1. Вручную создайте таблицу с нужной структурой в вашей базе данных. Рекомендуемые скрипты для создания таблиц приведены ниже.

CREATE TABLE dbo.[DATA] (
   [ID] decimal(10,0)  IDENTITY(1,1) NOT NULL,
   [DATE_TIME_STAMP] datetime NULL,
   [DATA_SOURCE_NAME] nvarchar(32) NULL,
   [DEVICE_ID] nvarchar(32) NULL,
   [DEVICE_NAME] nvarchar(32) NULL,
   [DEVICE_DESC] nvarchar(32) NULL,
   [TIMESTAMP] datetime NULL,
   [TIMESTAMP_UTC] datetime NULL,
   [SERIAL_NO] nvarchar(32) NULL,
   [DATA_TYPE] int NULL,
   [EVENT_ID] int NULL,
   [DATABASE_NO] int NULL,
   [SYSTEM_NO] int NULL,
   [T1] real NULL,
   [T2] real NULL,
   [T3] real NULL,
   [V1] real NULL,
   [V2] real NULL,
   [V3] real NULL,
   [M1] real NULL,
   [M2] real NULL,
   [M3] real NULL,
   [P1] real NULL,
   [P2] real NULL,
   [Mg] real NULL,
   [QO] real NULL,
   [QG] real NULL,
   [DT] real NULL,
   [TX] real NULL,
   [TA] real NULL,
   [BHP] real NULL,
   [G1] real NULL,
   [G2] real NULL,
   [G3] real NULL,
   [EVENT] nvarchar(10) NULL,
   [EVENT_TIME] real NULL,
   [DI] real NULL,
CONSTRAINT [PK_DATA] PRIMARY KEY ([ID] ASC) 
WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE `DATA` (
   `ID` int(11) NOT NULL auto_increment,
   `DATE_TIME_STAMP` DATETIME NULL,
   `DATA_SOURCE_NAME` VARCHAR(32) NULL,
   `DEVICE_ID` VARCHAR(32) NULL,
   `DEVICE_NAME` VARCHAR(32) NULL,
   `DEVICE_DESC` VARCHAR(32) NULL,
   `TIMESTAMP` DATETIME NULL,
   `TIMESTAMP_UTC` DATETIME NULL,
   `SERIAL_NO` VARCHAR(32) NULL,
   `DATA_TYPE` INTEGER NULL,
   `EVENT_ID` INTEGER NULL,
   `DATABASE_NO` INTEGER NULL,
   `SYSTEM_NO` INTEGER NULL,
   `T1` DOUBLE NULL,
   `T2` DOUBLE NULL,
   `T3` DOUBLE NULL,
   `V1` DOUBLE NULL,
   `V2` DOUBLE NULL,
   `V3` DOUBLE NULL,
   `M1` DOUBLE NULL,
   `M2` DOUBLE NULL,
   `M3` DOUBLE NULL,
   `P1` DOUBLE NULL,
   `P2` DOUBLE NULL,
   `Mg` DOUBLE NULL,
   `QO` DOUBLE NULL,
   `QG` DOUBLE NULL,
   `DT` DOUBLE NULL,
   `TX` DOUBLE NULL,
   `TA` DOUBLE NULL,
   `BHP` DOUBLE NULL,
   `G1` DOUBLE NULL,
   `G2` DOUBLE NULL,
   `G3` DOUBLE NULL,
   `EVENT` VARCHAR(10) NULL,
   `EVENT_TIME` DOUBLE NULL,
   `DI` DOUBLE NULL,
PRIMARY KEY  (`ID`)
) ENGINE=InnoDB;

CREATE TABLE "DATA" (
   "ID" SERIAL,
   "DATE_TIME_STAMP" timestamp DEFAULT NULL,
   "DATA_SOURCE_NAME" varchar(32) DEFAULT NULL,
   "DEVICE_ID" varchar(32) DEFAULT NULL,
   "DEVICE_NAME" varchar(32) DEFAULT NULL,
   "DEVICE_DESC" varchar(32) DEFAULT NULL,
   "TIMESTAMP" timestamp DEFAULT NULL,
   "TIMESTAMP_UTC" timestamp DEFAULT NULL,
   "SERIAL_NO" varchar(32) DEFAULT NULL,
   "DATA_TYPE" integer DEFAULT NULL,
   "EVENT_ID" integer DEFAULT NULL,
   "DATABASE_NO" integer DEFAULT NULL,
   "SYSTEM_NO" integer DEFAULT NULL,
   "T1" real DEFAULT NULL,
   "T2" real DEFAULT NULL,
   "T3" real DEFAULT NULL,
   "V1" real DEFAULT NULL,
   "V2" real DEFAULT NULL,
   "V3" real DEFAULT NULL,
   "M1" real DEFAULT NULL,
   "M2" real DEFAULT NULL,
   "M3" real DEFAULT NULL,
   "P1" real DEFAULT NULL,
   "P2" real DEFAULT NULL,
   "Mg" real DEFAULT NULL,
   "QO" real DEFAULT NULL,
   "QG" real DEFAULT NULL,
   "DT" real DEFAULT NULL,
   "TX" real DEFAULT NULL,
   "TA" real DEFAULT NULL,
   "BHP" real DEFAULT NULL,
   "G1" real DEFAULT NULL,
   "G2" real DEFAULT NULL,
   "G3" real DEFAULT NULL,
   "EVENT" varchar(10) DEFAULT NULL,
   "EVENT_TIME" real DEFAULT NULL,
   "DI" real DEFAULT NULL,
PRIMARY KEY (ID)
);

Файл базы данных "database.mdb" можно скачать тут.

2. Откройте настройки модуля экспорта данных, включите запись в базу данных, перейдите к закладке "Соединение" и создайте подключение к вашей базе, кликнув на кнопке "Настроить" (рис. 1-3).

Выбор модуля экспорта данных
Рис. 3.1 Выбор модуля экспорта данных

Включение записи в базу данных
Рис. 3.2 Включение записи в базу данных

Настройка подключения к базе
Рис. 3.3 Настройка подключения к базе

3. На закладке "Связывание" импортируйте из базы структуру вашей таблицы и "привяжите" переменные парсера к соответствующим колонкам. Удалите из списка все колонки, для которых нет привязки и в скрипте создания таблицы задано значение по умолчанию (рис. 4 и 5).

Привязка переменных и колонок таблицы
Рис. 3.4 Привязка переменных и колонок таблицы

Импорт структуры таблицы
Рис. 3.5 Импорт структуры таблицы

Краткое описание колонок

Таблица в базе данных создана для хранения максимально возможного набора данных. Значения в некоторых колонках могут отсутствовать, поскольку это зависит от установленных датчиков, настроек прибора и типа данных.

ID - уникальный идентификатор записи;
DATE_TIME_STAMP - метка времени, когда логгер считал данные;
DATA_SOURCE_NAME - идентификатор источника данных (номер COM порта или IP адрес);
DEVICE_ID - сетевой адрес прибора, заданный в настройках программы;
DEVICE_NAME - зарезервировано;
DEVICE_DESC - описание прибора, заданное в настройках программы;
TIMESTAMP - метка времени данных из прибора в локальном часовом поясе;
TIMESTAMP_UTC - метка времени данных из прибора в часовом поясе UTC (рассчитывается программой);
SERIAL_NO - серийный номер прибора (считывается из прибора);
DATA_TYPE - тип данных (0 - часовой архив, 1 - дневной, 2 - месячный, 4 - текущие данные, 5 - накопительные данные);
EVENT_ID - код события в приборе, соответствующий этой строке данных;
DATABASE_NO - номер активной базы данных в приборе (считывается из прибора);
SYSTEM_NO - номер теплового контура (тепловой системы, 1 или 2);
T1, T2, T3 - температура по соответствующему датчику;
V1, V2, V3 - объем;
M1, M2, M3 - масса;
P1, P2 - избыточное давление;
Mg - масса воды, отобранной из системы;
QO - тепловая энергия полная;
QG - тепловая энергия в трубопроводе 3;
DT - разность температур воды t1 – t2;
TX - температура холодной воды;
TA - температура воздуха;
BHP - время нормальной работы;
G1, G2, G3 - объемный расход;
EVENT - признак наличия нештатной ситуации;
EVENT_TIME - длительность НС по параметрам;
DI - состояние цифровых входов.

Запись данных в текстовый лог файл

Наша программа может параллельно создавать текстовые лог файлы, в которые будет записывать все принятые и обработанные данные. Лог файл можно рассматривать как резервную копию данных, или использовать их для последующего анализа. Программа может автоматически создавать новый лог файл ежедневно, еженедельно или ежемесячно (рис. 1 и 2).

Настройка вида данных для ВКТ-7
Рис. 4.1 Настройка вида данных для ВКТ-7

Настройка лог файла для ВКТ-7
Рис. 4.2 Настройка лог файла для ВКТ-7

OPC сервер

Программа имеет встроенный OPC DA2, DA3 или OPC UA сервер, через который всегда можно получить и посмотреть последнее считанное текущее или архивное значение. Рекомендуемые настройки сервера OPC представлены на рис. 1 и 2.

Обратите внимание, что OPC сервер не позволяет получать архивные данные. Он хранит только последнее полученное значение, в том числе и для архивных данных.

Включение OPC сервера для ВКТ-7
Рис. 5.1 Включение OPC сервера для ВКТ-7

ВКТ-7. Пример принятых данных
Рис. 5.2 ВКТ-7. Пример принятых данных

Для удобства, можно поместить текущие и архивные данные в разные группы тегов. Для этого можно указать правило группировки данные в OPC сервере. В данном примере они группируются по серийному номеру и типу данных.

Группировка данных по типу
Рис. 5.3 Группировка данных по типу

Отчеты

Наша программа предназначена для чтения данных, и к сожалению, не имеет программы построения отчетов.

За дополнительную плату мы готовы:

  1. Разработать программу построения отчетов под ваши нужды.
  2. Адаптировать программу под вашу базу данных. Можно реализовать запись практически в любую базу данных.
  3. Сделать передачу данных на веб-сервер.
  4. Любая другая доработка под ваши нужды.

Сопутствующие статьи:

Запись данных NMEA в базу данных (на примере MS Access)
Запись данных AIS в базу данных
Экспорт всех принимаемых данных AIS или NMEA в XML, в тестовый файл
Экспорт данных NMEA или AIS в Excel, в CSV файл