translator, wb_editors
4344
правки
Serbosh (обсуждение | вклад) |
Matveevrj (обсуждение | вклад) |
||
(не показано 25 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: МЭК 104}} | {{DISPLAYTITLE: Шлюз МЭК 104}} | ||
== Описание == | == Описание == | ||
МЭК 104 | МЭК 104 — протокол передачи данных в сетях телеметрии и телемеханики, соответствующий требованиям ГОСТ Р МЭК 60870-5-104. Применяется в системах контроля и управления территориально распределенных систем. | ||
Протокол функционирует на базе стека TCP/IP и использует для передачи данных локальные вычислительные сети (LAN) или глобальные вычислительные сети (WAN). | |||
Работает с контроллером Wiren Board 6. | |||
Для работы с протоколом МЭК 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. Если в конфигурационном файле есть включенный канал для адреса этого объекта информации, шлюз произведёт запись полученного значения в соответствующую тему канала, например, <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 update</syntaxhighlight> | ||
Устанавливаем командой: | Устанавливаем командой: | ||
<syntaxhighlight lang="bash">apt install wb-mqtt-iec104 | <syntaxhighlight lang="bash">apt install wb-mqtt-iec104</syntaxhighlight> | ||
При запуске шлюза происходит автоматическое создание конфигурационного файла | |||
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в файл. Активировать передачу данных конкретных каналов можно, редактируя файл | При запуске шлюза происходит автоматическое создание конфигурационного файла. | ||
При последующих запусках шлюз анализирует доступные MQTT каналы(контролы) и добавляет их в этот файл. Активировать передачу данных конкретных каналов можно, редактируя файл конфигурации, либо воспользовавшись онлайн-редактором настроек. | |||
Шлюз подключается к заданому MQTT брокеру и подписывается на сообщения от каналов, указанных в конфигурационном файле. В системах с поддержкой протокола МЭК 60870-5-104 шлюз выступает в роли контролируемой станции и принимает входящие TCP/IP соединения по указаному в конфигурационном файле локальному интерфейсу и порту. | Шлюз подключается к заданому 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. | |||
Ниже приведен пример преобразования напряжения в ток, аналогичным образом можно выполнить любые преобразования измеренного сигнала с датчика. | |||
<syntaxhighlight lang="bash"> | |||
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; //Преобразуем напряжение в ток | |||
} | |||
}); | |||
</syntaxhighlight> | |||
Доработав этот скрипт под свои нужды можно очень гибко обработать сигнал с датчика. | |||
Для создания временной зоны используется тот же механизм — создается виртуальный датчик, содержащий поля, с помощью которых можно задавать таймзону. | |||
== Полезные ссылки == | == Полезные ссылки == | ||
* [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] |