Цель этого актива Flux

Основная цель этого актива — обеспечить поток данных топиков или топиков JSON с ведомого устройства Modbus на брокера MQTT.

Глоссарий параметров (конфигурация)

Параметры можно настроить следующими способами:

Адрес сервера брокера MQTT

В этом параметре мы указываем адрес брокера MQTT для подключения.

Порт сервера брокера MQTT

Порт MQTT обычно 1883, но вы можете изменить его на тот, который используете.

Где публиковать ценности

Эта конфигурация предоставляет значения базовой темы. Таким образом, каждая переменная будет иметь Base Topic + Var Topic. Пример: пользователь устанавливает это свойство с помощью «Coreflux/Modbus2MQTT/Data», а имя переменной — «VoltagePhase1», тогда полная тема переменной — «Coreflux/Modbus2MQTT/Data/VoltagePhase1».

Опубликовать в формате JSON в теме

Этот параметр предоставляет всю информацию в теме JSON. Это позволяет системе определять объекты в mqtt и превращать ваше решение в объектно-ориентированное решение IoT.

Где публиковать ошибки

В случае сбоя подключения к устройству, невозможности получения определенного регистра памяти или даже внезапного отключения вы можете получить лог в этой теме.

Сохранять сообщения MQTT

Этот параметр определяет, что все действия публикации сохраняются.

Уровень QOS MQTT

Качество обслуживания публикации/подписки актива.

Адрес устройства Modbus

TCP/IP-адрес устройства. Пример: 192.168.1.100

TCP-порт Modbus-сервера

Порт TCP/IP обычно 502.

Интервал опроса Modbus (мс)

Это интервал опроса, используйте его с умом, поскольку некоторые устройства могут использовать одну и ту же задачу/поток для обработки и связи. Обычно интервала в 50 мс должно быть достаточно. Но в зависимости от ваших устройств, сети вы можете получать обновления от 4 до 6 мс.

Coreflux ниже версии 1.2.0

Перейдите к своему установочному активу Coreflux, вы должны найти файл конфигурации актива.

Перейдите в раздел ниже, где вы можете найти SlaveId и массив данных.

Идентификатор подчиненного устройства

Проверьте идентификатор ведомого устройства, для которого вы хотите собирать данные. Если у вас есть сборщик Modbus, у вас может быть больше, чем устройство в одном и том же подчиненном устройстве. В любом случае уточните у своего поставщика, если это только подключение устройства, в большинстве случаев этот параметр должен быть 1.

Массив данных

Для переменных вы должны найти XML с этим в конфигурации:

‹ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd=»http://www.w3.org/2001/XMLSchema'›
‹string›varName=first|memPosition=540|type=Signed|length=0|functionToUse=ReadHoldingRegisters|direction=modbus2mqtt‹/string›
‹/ArrayOfString›

Добавьте следующее между разделителем ‹ArrayOfString› ‹/ArrayofString›:

‹string›varName=first|memPosition=540|type=Signed|длина=0|functionToUse=ReadHoldingRegisters|direction=modbus2mqtt‹/string›

И изменить в соответствии с вашими потребностями. Вы можете добавить несколько, как в этом примере:

‹ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd=»http://www.w3.org/2001/XMLSchema'›
‹string›varName=first|memPosition=540|type=Signed|length=0|functionToUse=ReadHoldingRegisters|direction=modbus2mqtt‹/string›‹string›varName=second|memPosition=640|type=Signed|length=0| functionToUse=ReadHoldingRegisters|direction=modbus2mqtt‹/string›
‹/ArrayOfString›

VarName

Это обеспечивает тему переменной . Пример: пользователь задает свойство Где публиковать значения с помощью «Coreflux/Modbus2MQTT/Data», а имя переменной — «VoltagePhase1», тогда полная тема переменной — «Coreflux/Modbus2MQTT/Data/VoltagePhase1». ».

memPosition

Это адрес памяти устройства Modbus. Вы должны проверить у своего поставщика регистры и значения, которые они содержат.

Тип

Float — размер 2 в регистре памяти обычно 32 бита. (диапазон 3,4E +/- 38)

Двойной — размер регистра памяти 4 дюйма, обычно 64 бита (диапазон 1,7E +/- 308)

Ulong — размер 2 в регистре памяти обычно 32 бита. (диапазон от 0 до 4 294 967 295)

Bool — размер 1 в регистре памяти обычно записывает/читает 16 бит, чтобы изменить 1 бит

Uint16 — размер 1 в регистре памяти обычно 16 бит

Знаковый — размер 2 в регистре памяти обычно 32 бита. (+/-2 147 483 648)

Байт — размер 1 в регистре памяти обычно записывает/читает 16 бит, чтобы изменить 8 бит.

Агрегированный — размер 1 в памяти, но использует длину для выборки других значений.

Длина

Когда переменная агрегирована (строка или массив), вам нужно использовать это значение, чтобы получить полный размер переменной.

Функция для использования

В modbus у нас есть разные функции для загрузки или сохранения данных.

ReadCoilStatus — считывает одиночный виток, соответствующий true/false (обычно функция 1)

ReadInputStatus — считывает дискретные входы с полевого устройства (обычно функция 2).

ReadHoldingRegisters — Извлекает содержимое регистров хранения из полевого устройства (обычно функция 3).

ReadInputRegisters — извлекает содержимое входных регистров из полевого устройства (обычно функция 4).

ForceSingleCoil - Изменить статус одной логической катушки на true/false (обычно функция 5)

PresetSingleRegister — Измените содержимое одного регистра временного хранения (обычно функция 6)

ForceMultipleCoils — Изменяет статус включения/выключения нескольких катушек (обычно функция 15)

PresetMultipleRegistersExample — изменяет содержимое множественного регистра временного хранения. (не забудьте значение длины)

Направление

При установке значения modbus2mqtt регистр копируется из modbus в mqtt. Его можно использовать с функциями ReadCoilStatus, ReadInputStatus, ReadHoldingRegisters и ReadInputRegisters.

При установке значения mqtt2modbus регистр копируется из mqtt в modbus. Его можно использовать с функциями ForceSingleCoil, PresetSingleRegister, ForceMultipleCoils и PresetMultipleRegistersExample.

Заключение

Вот и все, что нужно для настройки актива Mosbus 2 Mqtt Coreflux.

Попробуйте проверить следующие ссылки:

Ознакомьтесь с этим примером приложения с использованием Coreflux MQTT Asset и Modbus 2 MQTT-актива -›Мониторинг энергии

Для пользователей С# проверьте:

https://github.com/CorefluxCommunity/CorefluxMQTTcSharpAPI