MEK 104: различия между версиями

Материал из Wiren Board
(не показаны 24 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Шлюз МЭК 104}}
{{DISPLAYTITLE: МЭК 104}}
== Описание ==
== Описание ==
МЭК 104 — протокол передачи данных в сетях телеметрии и телемеханики, соответствующий требованиям ГОСТ Р МЭК 60870-5-104. Применяется в системах контроля и управления территориально распределенных систем.
МЭК 104, 104-ый — протокол по ГОСТ Р МЭК 60870-5-104


Протокол функционирует на базе стека TCP/IP и использует для передачи данных локальные вычислительные сети (LAN) или глобальные вычислительные сети (WAN).
Разработан шлюз для трансляции сообщений между MQTT-брокером и системами c поддержкой протокола МЭК 60870-5-104.
Работает с контроллером Wiren Board 6.


Для работы с протоколом МЭК 104 в контроллере Wiren Board используется шлюз для трансляции сообщений между MQTT-брокером и системами c поддержкой протокола МЭК 60870-5-104.
== Установка ==
Подключаем репозиторий <code>experimantal</code> командой:
<syntaxhighlight lang="bash">echo 'deb http://releases.contactless.ru/experimental/stretch stretch main' > /etc/apt/sources.list.d/contactless-experimental.list</syntaxhighlight>
Обновляем список пакетов командой:
<syntaxhighlight lang="bash">apt update</syntaxhighlight>
Устанавливаем командой:
<syntaxhighlight lang="bash">apt install wb-mqtt-iec104=0.3.0~feature+first-release+0+64a7c63</syntaxhighlight>
При запуске шлюза происходит автоматическое создание конфигурационного файла <code>/etc/wb-mqtt-iec104.conf</code>.
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в файл. Активировать передачу данных конкретных каналов можно, редактируя файл <code>/etc/wb-mqtt-serial.conf</code>, либо воспользовавшись онлайн-редактором настроек.
Структура конфигурационного файла описана [https://wirenboard.com тут].


Работает с контроллером Wiren Board 6 и 7.
Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту.


== Принцип работы ==
== Передача сообщений из MQTT в МЭК 60870-5-104 ==
=== Передача сообщений из MQTT в МЭК 60870-5-104 ===
Сообщения MQTT передаются в МЭК 60870-5-104 блоками данных (ASDU) с причиной передачи “спорадически”(3). При подключении нового контролирующего устройства, шлюз автоматически высылает последние известные значения всех включенных каналов. В дальнейшем каждое новое MQTT-сообщение сразу же передаётся в МЭК 60870-5-104.
Сообщения MQTT передаются в МЭК 60870-5-104 блоками данных (ASDU) с причиной передачи “спорадически”(3). При подключении нового контролирующего устройства, шлюз автоматически высылает последние известные значения всех включенных каналов. В дальнейшем каждое новое MQTT-сообщение сразу же передаётся в МЭК 60870-5-104.


=== Передача команд МЭК 60870-5-104 в MQTT ===
== Передача команд МЭК 60870-5-104 в MQTT ==
Шлюз поддерживает ASDU с типами:
Шлюз поддерживает ASDU с типами:
* одноэлементная команда (C_SC_NA_1);
* одноэлементная команда (C_SC_NA_1);
* команда уставки, масштабированное значение (C_SE_NB_1);
* команда уставки, масштабированное значение (C_SE_NB_1);
* команда уставки, короткое число с плавающей запятой (C_SE_NC_1).
* команда уставки, короткое число с плавающей запятой (C_SE_NC_1).
Обрабатывается первый объект информации в ASDU. Если в конфигурационном файле есть включенный канал для адреса этого объекта информации, шлюз произведёт запись полученного значения в соответствующую тему канала, например, <code>/devices/wb-gpio/controls/5V_OUT/on</code>. Также поддерживается команда общего опроса станции (C_IC_NA_1, QOI равный 20), прочие команды не поддерживаются.
Обрабатывается первый объект информации в ASDU. Если в конфигурационном файле есть включенный канал для адреса этого объекта информации, шлюз произведёт запись полученного значения в соответствующую тему канала, например <code>/devices/wb-gpio/controls/5V_OUT/on</code>). Также поддерживается команда общего опроса станции (C_IC_NA_1, QOI равный 20), прочие команды не поддерживаются.
 
== Установка ==
Обновляем список пакетов командой:
<syntaxhighlight lang="bash">apt update</syntaxhighlight>
Устанавливаем командой:
<syntaxhighlight lang="bash">apt install wb-mqtt-iec104</syntaxhighlight>
 
При запуске шлюза происходит автоматическое создание конфигурационного файла.
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в этот файл. Активировать передачу данных конкретных каналов можно, редактируя файл конфигурации, либо воспользовавшись онлайн-редактором настроек.
 
Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту.
 
== Настройка в веб-интерфейсе контроллера Wiren Board ==
[[Файл:online-interface.png|300px|thumb|right|Настройка шлюза МЭК-104 в веб-интерфейсе контроллера 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>.
 
В настройках можно указать параметры подключения к MQTT-брокеру и выбрать локальный IP и порт, по которым шлюз будет ожидать подключения. Нажав на кнопку '''«Properties»''' можно добавить дополнительные параметры подключения.
 
Описание структуры конфигурационного файла смотрите '''[https://github.com/wirenboard/wb-mqtt-iec104 в репозитории на Github]'''.
 
По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп можно редактировать.
 
[[Файл:edit-interface.png|300px|thumb|right|Список каналов]]
 
Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце '''Unique IEC information object address'''. Также можно поменять тип объекта информации.
 
== Обработка значения измеряемого параметра ==
С помощью [[Wb-rules | правил]] в контроллере можно реализовать передачу значений параметров различных типов, а также задание апертуры измеренного параметра. Апертура — величина изменения параметра для инициализации передачи этого параметра на верхний уровень спорадически (спонтанно при изменении параметра, не по таймеру).  


Для реализации этих функций создается виртуальный датчик который принимает измеренное значение, обрабатывает его и передает уже обработанное значение в шлюз МЭК104.
== Интерфейс онлайн-конфигуратора ==
После установки шлюза его можно настроить в интерфейсе [https://wirenboard.com/wiki/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>.


Ниже приведен пример преобразования напряжения в ток, аналогичным образом можно выполнить любые преобразования измеренного сигнала с датчика.
Онлайн-конфигуратор позволяет указать параметры подключения к MQTT-брокеру (дополнительные параметры можно выбрать, нажав на кнопку “Properties”) и выбрать локальный IP и порт, по которым шлюз будет ожидать подключения.


<syntaxhighlight lang="bash">
[[Image: online-interface.png |500px]]
var v_input78 = "wb-adc/EXT1_A7_A8"; //Пишем сюда строку-источник НАПРЯЖЕНИЯ с шунта


defineVirtualDevice("CurrentValue", {
Ниже показан интерфейс редактирования списка групп и каналов для трансляции из MQTT в МЭК 60870-5-104. По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп расположен слева, его можно самостоятельно редактировать.
    title: "currentvalue",
    cells: {
current: {
    type: "value",
    value: 0,
        forceDefault: true // при каждой загрузке сценария поле будет получать значение 10
},
    }
});


defineRule("ChangeVoltage", {
[[Image: edit-interface.png |700px]]
  whenChanged: v_input78,
  then: function (newValue, devName, cellName)  {
dev["CurrentValue/current"] = newValue/0,0015; //Преобразуем напряжение в ток
  }
});
</syntaxhighlight>
Доработав этот скрипт под свои нужды можно очень гибко обработать сигнал с датчика.


Для создания временной зоны используется тот же механизм — создается виртуальный датчик, содержащий поля, с помощью которых можно задавать таймзону.
При выборе конкретной группы в правой части появится список входящих в неё каналов. Каналы так же можно создавать, удалять и редактировать. Столбец '''MQTT device and control''' указывает конкретный канал MQTT. Он формируется из названия устройства и канала. Для первого в списке канала соответствующий топик MQTT будет <code>/devices/wb-m1w2_107/controls/External Sensor 1</code> . Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце '''Unique IEC information object address'''. Также можно поменять тип объекта информации.


== Полезные ссылки ==
== Полезные ссылки ==
* [https://support.wirenboard.com/t/podderzhka-mek-60870-5-104/6465 Тема на портале поддержки]
* [https://support.wirenboard.com/t/podderzhka-mek-60870-5-104/6465 Тема на форуме]
* [https://github.com/wirenboard/wb-mqtt-iec104 Репозиторий wb-mqtt-iec104]

Версия 10:46, 4 февраля 2022

Описание

МЭК 104, 104-ый — протокол по ГОСТ Р МЭК 60870-5-104

Разработан шлюз для трансляции сообщений между MQTT-брокером и системами c поддержкой протокола МЭК 60870-5-104. Работает с контроллером Wiren Board 6.

Установка

Подключаем репозиторий experimantal командой:

echo 'deb http://releases.contactless.ru/experimental/stretch stretch main' > /etc/apt/sources.list.d/contactless-experimental.list

Обновляем список пакетов командой:

apt update

Устанавливаем командой:

apt install wb-mqtt-iec104=0.3.0~feature+first-release+0+64a7c63

При запуске шлюза происходит автоматическое создание конфигурационного файла /etc/wb-mqtt-iec104.conf. При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в файл. Активировать передачу данных конкретных каналов можно, редактируя файл /etc/wb-mqtt-serial.conf, либо воспользовавшись онлайн-редактором настроек. Структура конфигурационного файла описана тут.

Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту.

Передача сообщений из 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), прочие команды не поддерживаются.

Интерфейс онлайн-конфигуратора

После установки шлюза его можно настроить в интерфейсе онлайн-конфигуратора, выбрав из списка файл /etc/wb-mqtt-iec104.conf.

Онлайн-конфигуратор позволяет указать параметры подключения к MQTT-брокеру (дополнительные параметры можно выбрать, нажав на кнопку “Properties”) и выбрать локальный IP и порт, по которым шлюз будет ожидать подключения.

Online-interface.png

Ниже показан интерфейс редактирования списка групп и каналов для трансляции из MQTT в МЭК 60870-5-104. По умолчанию шлюз создаёт отдельную группу для каждого устройства. Список групп расположен слева, его можно самостоятельно редактировать.

Edit-interface.png

При выборе конкретной группы в правой части появится список входящих в неё каналов. Каналы так же можно создавать, удалять и редактировать. Столбец MQTT device and control указывает конкретный канал MQTT. Он формируется из названия устройства и канала. Для первого в списке канала соответствующий топик MQTT будет /devices/wb-m1w2_107/controls/External Sensor 1 . Уникальный адрес объекта информации согласно МЭК генерируется при старте сервиса, его можно изменить в столбце Unique IEC information object address. Также можно поменять тип объекта информации.

Полезные ссылки