|
|
(не показано 29 промежуточных версий 3 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Шлюз МЭК 104}} | | {{DISPLAYTITLE: МЭК 104}} |
| == Описание == | | == Описание == |
| МЭК 104 — протокол передачи данных в сетях телеметрии и телемеханики, соответствующий требованиям ГОСТ Р МЭК 60870-5-104. Применяется в системах контроля и управления территориально распределенных систем. | | МЭК 104, 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. Если в конфигурационном файле есть включенный канал для адреса этого объекта информации, шлюз произведёт запись полученного значения в соответствующую тему канала, например, <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.
| |
| | |
| Ниже приведен пример преобразования напряжения в ток, аналогичным образом можно выполнить любые преобразования измеренного сигнала с датчика.
| |
| | |
| <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]
| |