Модуль предназначен для обмена данными между OPC UX и MQTT брокерами. Модуль написан на языке C++ и может работать под любой ОС.
Имя модуля : opc_drive
Модуль опрашивает заданные в конфиге параметры OPC UX сервера и публикует в топик MQTT следующего вида:
/devices/<код устройства>/controls/<имя параметра> <значение>
opc_drive
принимает данные для установки в параметр в топик MQTT следующего вида:
/devices/<код устройства>/controls/<имя параметра>/on <значение>
opc_drive входит в поставку контроллеров INSPARL PRO, СЭМ ПРО.S.
Ниже дано описание по установке модуля и настройке конфигурационного файла обмена с устройствами.
Добавить следующие фиды в конфиг обновления ОС:
src/gz smart_metrix_base http://releases.inspark.ru/smart-metrix/base
src/gz smart_metrix_packages http://releases.inspark.ru/smart-metrix/packages
src/gz smart_metrix_routing http://releases.inspark.ru/smart-metrix/routing
src/gz smart_metrix_onion http://releases.inspark.ru/smart-metrix/onion
src/gz smart_metrix_telephony http://releases.inspark.ru/smart-metrix/telephony
В репозитории размещены DEB-пакеты драйверов, монитора, планировщика, библиотек.
Добавить в сорслисты строки, соответствующие требуемой ОС
Для установки стабильных версий пакетов:
deb http://release.inspark.ru/debian/stable/ main
для установки тестовых версий пакетов:
deb http://release.inspark.ru/debian/testing/ dev
где OS - версия ОС, допустимы:
Для приватного репозитария(конфиги/сертификаты/…), независимо от платформы:
deb [arch=all] http://release.inspark.ru:8880/ non-free config
Параметры запуска
-c - используется указанный файл конфигурации (полный путь) вместо файла по умолчанию
-d - выводить в журнал отладочную информацию
-l - выводить логи в указанный файл вместо файла по умолчанию
-v - выводить логирование в указанный файл вместо файла по умолчанию
Пример запуска с параметрами
./_bin/opc_driver -d -v -c /etc/opc_driver/config/opc_driver.json
Структура конфигурационного файла точно такая же, как описана в п.3.1 Универсального драйвера.
Основные требования к оформлению данных следующие:
Обязательно type: "opc.ua"
. Другие типы игнорируются.
Обязательно tcp:
. Авторизация пока не реализована
enabled:
по умолчанию true. Если false, порт игнорируется.
poll_interval:
по умолчанию 1000. Интервал опроса в мссек.
Пример:
"connection": {
"enabled": true,
"poll_interval": 1000,
"rto": 2000,
"sto": 2000,
"type": "opc.ua",
"tcp": {
"url": "opc.tcp://10.4.2.115",
"port": 54000
}
}
Обязательна. Содержит описания устройств ОРС сервера.
name:
обязательна. Используется в топике сообщений.
cname:
обязательна. По ней ищется набор параметров.
sid:
обязательна. Идентификатор пространства имен параметров ОРС сервера.
enabled:
по умолчанию true. Если false, игнорируется.
Пример:
{
"name": "PD_SIMULATOR",
"sid": 1,
"cname": "simulator"
}
Обязательна. Содержит описания параметров ОРС сервера и связь с устройствами.
cname:
обязательна. По ней ищется связь с устройствами.
channels:
обязательна. Содержит описания параметров.
Массив параметров. Каждый параметр описывается следующими атрибутами.
name:
обязательно. Используется в топике сообщений.
node_id:
обязательно. Имя узла на ОРС сервере.
enabled:
по умолчанию true. Если false, игнорируется.
value_type:
не обязательно, если не планируется писать данные в параметр OPC-сервера. При чтении используются метаданные с сервера. В дальнейшем, при смене типа опроса на бинарный, может быть востребовано.
В настоящее время используются типы: bit, i8, u8, i16, u16, i32, u32, i64, u64, str, float32, float64, date_time
Использование других стандартных атрибутов пока не реализовано.
Пример:
{
"name": "Saw",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Saw",
"value_type": "float32"
}
{
"log": {
"is_debug": true,
"max_size": 2
},
"mqtt": {
"port": 1883,
"url": "localhost"
},
"ports": [
{
"connection": {
"enabled": true,
"poll_interval": 5000,
"rto": 2000,
"sto": 2000,
"type": "opc.ua",
"tcp": {
"url": "opc.tcp://10.4.2.115",
"port": 54000
}
},
"devices": [
{
"name": "PD_SIMULATOR",
"sid": 1,
"cname": "simulator"
},
{
"name": "emulator",
"sid": 1,
"cname": "emulator"
}
],
"parameters": [
{
"config": {
"channels": [
{
"name": "Saw",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Saw",
"scale": 1.0,
"value_type": "float32"
},
{
"name": "Sin",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Sin",
"scale": 1.0,
"value_type": "float32"
},
{
"name": "Time",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Time",
"scale": 1.0,
"value_type": "str"
},
{
"name": "Vibrator",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.Vibrator",
"scale": 1.0,
"value_type": "bit"
},
{
"name": "DigitConst",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.DigitConst",
"scale": 1.0,
"value_type": "bit"
},
{
"name": "PollDevice",
"node_id": "PN_SIMULATOR.PD_SIMULATOR.PollDevice",
"scale": 1.0,
"value_type": "bit"
}
]
},
"cname": "simulator"
},
{
"config": {
"channels": [
{
"name": "Tag1",
"node_id": "Modbus TCP emul.emulator.Tag1",
"scale": 1.0,
"value_type": "i32"
},
{
"name": "Tag2",
"node_id": "Modbus TCP emul.emulator.Tag2",
"scale": 1.0,
"value_type": "i32"
},
{
"name": "Tag3",
"node_id": "Modbus TCP emul.emulator.Tag3",
"scale": 1.0,
"value_type": "i32"
}
]
},
"cname": "emulator"
}
]
}
]
}