MEK 104: различия между версиями
Matveevrj (обсуждение | вклад) |
Matveevrj (обсуждение | вклад) |
||
(не показано 7 промежуточных версий 2 участников) | |||
Строка 26: | Строка 26: | ||
<syntaxhighlight lang="bash">apt install wb-mqtt-iec104</syntaxhighlight> | <syntaxhighlight lang="bash">apt install wb-mqtt-iec104</syntaxhighlight> | ||
При запуске шлюза происходит автоматическое создание конфигурационного файла. | При запуске шлюза происходит автоматическое создание конфигурационного файла <code>/etc/wb-mqtt-iec104.conf</code>. | ||
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в | При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в файл. Активировать передачу данных конкретных каналов можно, редактируя файл <code>/etc/wb-mqtt-iec104.conf</code>, либо воспользовавшись онлайн-редактором настроек. | ||
Структура конфигурационного файла описана [https://github.com/wirenboard/wb-mqtt-iec104 тут]. | |||
Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту. | Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту. | ||
== Настройка в веб-интерфейсе контроллера Wiren Board == | == Настройка в веб-интерфейсе контроллера Wiren Board == | ||
После установки шлюза его можно настроить в интерфейсе [[Wiren_Board_Web_Interface#Settings_-.3E_Configs_.28.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_-.3E_.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5.29 | онлайн-конфигуратора]], выбрав из списка файл <code>/etc/wb-mqtt-iec104.conf</code>. | |||
После установки шлюза его можно настроить в [[Wiren_Board_Web_Interface#Settings_-.3E_Configs_.28.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_-.3E_.D0.9A.D0.BE.D0.BD.D1.84.D0.B8.D0.B3.D1.83.D1.80.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5.29 | | |||
Онлайн-конфигуратор позволяет указать параметры подключения к MQTT-брокеру и выбрать локальный IP и порт, по которым шлюз будет ожидать подключения. Нажав на кнопку '''«Properties»''' можно добавить дополнительные параметры подключения. | |||
[[Image: online-interface.png |500px]] | |||
По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп можно редактировать. | Ниже показан интерфейс редактирования списка групп и каналов для трансляции из MQTT в МЭК 60870-5-104. По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп расположен слева, его можно самостоятельно редактировать. | ||
[[ | [[Image: edit-interface.png |700px]] | ||
Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце '''Unique IEC information object address'''. Также можно поменять тип объекта информации. | При выборе конкретной группы в правой части появится список входящих в неё каналов. Каналы так же можно создавать, удалять и редактировать. Столбец '''MQTT device and control''' указывает конкретный канал MQTT. Он формируется из названия устройства и канала. Для первого в списке канала соответствующий топик MQTT будет <code>/devices/wb-m1w2_107/controls/External Sensor 1</code> . Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце '''Unique IEC information object address'''. Также можно поменять тип объекта информации. | ||
== Обработка значения измеряемого параметра == | == Обработка значения измеряемого параметра == | ||
Строка 69: | Строка 69: | ||
whenChanged: v_input78, | whenChanged: v_input78, | ||
then: function (newValue, devName, cellName) { | then: function (newValue, devName, cellName) { | ||
dev["CurrentValue | dev["CurrentValue"]["current"] = newValue/0,0015; //Преобразуем напряжение в ток | ||
} | } | ||
}); | }); | ||
Строка 78: | Строка 78: | ||
== Полезные ссылки == | == Полезные ссылки == | ||
* [https://support.wirenboard.com/t/podderzhka-mek-60870-5-104/6465 Тема на | * [https://support.wirenboard.com/t/podderzhka-mek-60870-5-104/6465 Тема на форуме] | ||
Версия 17:56, 25 июля 2022
Описание
МЭК 104 — протокол передачи данных в сетях телеметрии и телемеханики, соответствующий требованиям ГОСТ Р МЭК 60870-5-104. Применяется в системах контроля и управления территориально распределенных систем.
Протокол функционирует на базе стека TCP/IP и использует для передачи данных локальные вычислительные сети (LAN) или глобальные вычислительные сети (WAN).
Для работы с протоколом МЭК 104 в контроллере Wiren Board используется шлюз для трансляции сообщений между MQTT-брокером и системами c поддержкой протокола МЭК 60870-5-104.
Работает с контроллером Wiren Board 6 и 7.
Принцип работы
Передача сообщений из MQTT в МЭК 60870-5-104
Сообщения MQTT передаются в МЭК 60870-5-104 блоками данных (ASDU) с причиной передачи “спорадически”(3). При подключении нового контролирующего устройства, шлюз автоматически высылает последние известные значения всех включенных каналов. В дальнейшем каждое новое MQTT-сообщение сразу же передаётся в МЭК 60870-5-104.
Передача команд МЭК 60870-5-104 в MQTT
Шлюз поддерживает ASDU с типами:
- одноэлементная команда (C_SC_NA_1);
- команда уставки, масштабированное значение (C_SE_NB_1);
- команда уставки, короткое число с плавающей запятой (C_SE_NC_1).
Обрабатывается первый объект информации в ASDU. Если в конфигурационном файле есть включенный канал для адреса этого объекта информации, шлюз произведёт запись полученного значения в соответствующую тему канала, например, /devices/wb-gpio/controls/5V_OUT/on
. Также поддерживается команда общего опроса станции (C_IC_NA_1, QOI равный 20), прочие команды не поддерживаются.
Установка
Обновляем список пакетов командой:
apt update
Устанавливаем командой:
apt install wb-mqtt-iec104
При запуске шлюза происходит автоматическое создание конфигурационного файла /etc/wb-mqtt-iec104.conf
.
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в файл. Активировать передачу данных конкретных каналов можно, редактируя файл /etc/wb-mqtt-iec104.conf
, либо воспользовавшись онлайн-редактором настроек.
Структура конфигурационного файла описана тут.
Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту.
Настройка в веб-интерфейсе контроллера Wiren Board
После установки шлюза его можно настроить в интерфейсе онлайн-конфигуратора, выбрав из списка файл /etc/wb-mqtt-iec104.conf
.
Онлайн-конфигуратор позволяет указать параметры подключения к MQTT-брокеру и выбрать локальный IP и порт, по которым шлюз будет ожидать подключения. Нажав на кнопку «Properties» можно добавить дополнительные параметры подключения.
Ниже показан интерфейс редактирования списка групп и каналов для трансляции из MQTT в МЭК 60870-5-104. По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп расположен слева, его можно самостоятельно редактировать.
При выборе конкретной группы в правой части появится список входящих в неё каналов. Каналы так же можно создавать, удалять и редактировать. Столбец MQTT device and control указывает конкретный канал MQTT. Он формируется из названия устройства и канала. Для первого в списке канала соответствующий топик MQTT будет /devices/wb-m1w2_107/controls/External Sensor 1
. Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце Unique IEC information object address. Также можно поменять тип объекта информации.
Обработка значения измеряемого параметра
С помощью правил в контроллере можно реализовать передачу значений параметров различных типов, а также задание апертуры измеренного параметра. Апертура — величина изменения параметра для инициализации передачи этого параметра на верхний уровень спорадически (спонтанно при изменении параметра, не по таймеру).
Для реализации этих функций создается виртуальный датчик который принимает измеренное значение, обрабатывает его и передает уже обработанное значение в шлюз МЭК104.
Ниже приведен пример преобразования напряжения в ток, аналогичным образом можно выполнить любые преобразования измеренного сигнала с датчика.
var v_input78 = "wb-adc/EXT1_A7_A8"; //Пишем сюда строку-источник НАПРЯЖЕНИЯ с шунта
defineVirtualDevice("CurrentValue", {
title: "currentvalue",
cells: {
current: {
type: "value",
value: 0,
forceDefault: true // при каждой загрузке сценария поле будет получать значение 10
},
}
});
defineRule("ChangeVoltage", {
whenChanged: v_input78,
then: function (newValue, devName, cellName) {
dev["CurrentValue"]["current"] = newValue/0,0015; //Преобразуем напряжение в ток
}
});
Доработав этот скрипт под свои нужды можно очень гибко обработать сигнал с датчика.
Для создания временной зоны используется тот же механизм — создается виртуальный датчик, содержащий поля, с помощью которых можно задавать таймзону.