Здравствуйте! Сегодня выходной день, поэтому сотрудники техподдержки ответят вам в рабочий день.
Пока что я, автоматический помощник, проанализировал ваш вопрос и постарался найти решение:
Вы хотите заменить существующие Modbus TCP‑серверы (удалённые, которые сейчас опрашивают Beckhoff) на опрос ПЛК напрямую с Wiren Board 7 и сохраниться в MQTT‑структуре примерно так же, как сейчас описано в ваших JSON‑конфигах.
1. Что можно сделать на Wiren Board 7
WB7 может выступать Modbus TCP‑мастером и опрашивать любой Modbus‑Slave по сети (в т.ч. ПЛК Beckhoff), а результат публиковать в MQTT с произвольными именами контролов. Это как раз то, что вам нужно.
Основные моменты:
- В
/etc/wb-mqtt-modbus.conf описывается «устройство» типа tcp:{
"slave_id": 1,
"device_type": "beckhoff_plc",
"ip_address": "192.168.1.10",
"port": 502
}
- В отдельном файле типа
/etc/wb-mqtt-modbus.d/beckhoff.json описывается beckhoff_plc с регистрами и нужными MQTT‑топиками.
2. Настройка собственных путей (topic_name)
В драйвере wb-mqtt-modbus есть параметр topic (или name + channel), через который задаётся MQTT‑путь/имя контрола. Если вам нужно жёстко задать полный путь, делается это так (пример для coil/holding‑регистра):
{
"device_type": "beckhoff_plc",
"name": "Beckhoff PLC",
"channels": [
{
"name": "nK1_ACS_status",
"type": "switch",
"reg_type": "holding",
"address": 12295,
"bit": 2,
"topic": "/devices/bAf0r17_bAf0r17_06_nK1_ACS/controls/status"
},
{
"name": "nK1_ACS_fault",
"type": "switch",
"reg_type": "holding",
"address": 12295,
"bit": 0,
"topic": "/devices/bAf0r17_bAf0r17_06_nK1_ACS/controls/fault"
}
]
}
Далее WB сам будет публиковать/принимать значения по этим путям, как сейчас это делает ваш внешний Modbus TCP‑сервер.
Важно: синтаксис полей (topic, address, bit, reg_type) указывается по формату wb-mqtt-modbus. Похоже, ваши текущие JSON уже очень близки к нему — вероятно, вы сможете почти напрямую их адаптировать.
3. Что нужно уточнить по Beckhoff
Чтобы корректно перенести опрос, нужны:
- IP и порт Modbus‑сервиса Beckhoff.
- Slave ID (часто 1, но лучше проверить).
- Таблица регистров (coils / discrete inputs / holding / input registers) — адреса и типы.
Они в вашем скрине есть; просто сверить, верно ли, что это holding‑регистры с побитовой разборкой.
4. Алгоритм переноса
- На Beckhoff включить Modbus TCP‑Slave (если ещё не включен).
- На WB7:
- В MQTT (через
mosquitto_sub или веб‑интерфейс) проверить появление контролов по нужным путям.
Если вы приложите фрагмент вашего текущего рабочего конфига Modbus TCP‑сервера (который сейчас опрашивает Beckhoff) или выложите содержимое *_conf.json из поста текстом, можно будет прямо по пунктам переписать это в формат wb-mqtt-modbus под WB7.
Примечание: Я — искусственный интеллект, а не человек. В моих ответах могут быть неточности.