Ethernet в RS-485

Не могу найти в описании как сделать следующее в wb-rules

  1. читать ethernet-порт,
  2. получить значения, и втавить их в runShellCommand("/usr/bin/printf…
  3. запускать команду,
  4. получить ответ RS-485-2 порта,
  5. аналогичной командой отправить ответ в ethernet-порт.

Прошу дать ссылку где почитать или всё же написать как это выглядит примерно.
Спасибо

Asu, добрый день! Напишите, пожалуйста, подробнее, какую задачу и с каким оборудованием вы решаете?

Теплосчётчик ВКТ-9. У него RS-485. Есть WB6 и хочется по Ethernet его опрашивать.

Из ответа не понятно, что требуется опрашивать по Ethernet? WB6?
Если BKT-9 поддерживает полноценный Modbus RTU, то причем тут Ethernet?
Просто подключаете ВКТ-9 к WB6 по линии связи RS-485 напрямую и считываете со счетчика данные. Далее их пишете в базу данных или передаете куда вам требуется.

У ВКТ-9 Modbus подобный протокол. Не получиться его опрашивать по Modbus-RTU. Поэтому и возник такой вопрос - Можно ли использовать WB6 как преобразователь интерфейсов Ethernet в RS-485. Опрашивать WB6 тут планируется косвенно, только как конвертор

Все-равно Ethernet в этой связке мне представляется пока лишний.
Соединяйте WB6 и ВКТ-9 по RS-485, в скриптах или еще как-то формируете команды с помощью Shell, получаете ответ, обрабатываете его, а дальше уже передаете каким угодно способом и куда-угодно. Можно и MQTT через Ethernet использовать, можно и SCADA подключить…
Только в связке WB6 и ВКТ-9 Ethernet не нужен.

Вы наверно просто не представляете объём работ, которые надо проделать чтобы описать всё это в скриптах, родной ОРС-сервер считывает архивы на приборе более 3х минут на скорости 115200 и логика там совсем не простая в обработке (по-моему скрипты это для простой логики, но могу и ошибаться) Кажется, что намного легче написать программу на Go, но тут другая проблема - скомпилировать под WB6 не получилось (очень плохо знаком с linux, что и где набирать не понимаю)

https://wirenboard.com/wiki/index.php/Как_разрабатывать_ПО_для_Wiren_Board

Подскажите пож-та, какие должны быть настройки на WB для подключения через ethernet to rs-485 адаптер?
Родная программа считывает https://prntscr.com/104vbt6
С такими не работает
{
“address”: “192.168.100.168”,
“port”: 8899,
“port_type”: “modbus tcp”,
“devices”: [
{
“slave_id”: “844175”,
“device_type”: “Mercury 200.02”
}
],
“guard_interval_us”: 1000,
“poll_interval”: 500
}

а так же пробовал “port_type”: “tcp”

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

поправил, но тишина
лог:

Feb 25 12:31:00 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [tcp port] <192.168.100.168:8899 5000ms, 2>: connection reset
Feb 25 12:31:00 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] 636440: Wait until 644339
Feb 25 12:31:07 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Sleep 0 us
Feb 25 12:31:07 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Write: 00 0c e1 8f 63 53 7f
Feb 25 12:31:08 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [serial device] TSerialDevice::ReadRegisterRange(): Serial protocol error: request timed out [slave_id is mercury200:844175]
Feb 25 12:31:08 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: INFO: [serial device] device mercury200:844175 disconnected
Feb 25 12:31:08 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] 645353: Wait until 654339
Feb 25 12:31:17 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Sleep 0 us
Feb 25 12:31:17 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Write: 00 0c e1 8f 63 53 7f
Feb 25 12:31:18 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [serial device] TSerialDevice::ReadRegisterRange(): Serial protocol error: request timed out [slave_id is mercury200:844175]
Feb 25 12:31:18 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: INFO: [serial device] device mercury200:844175 disconnected
Feb 25 12:31:18 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [tcp port] <192.168.100.168:8899 5000ms, 2>: connection reset
Feb 25 12:31:18 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] 655349: Wait until 664339
Feb 25 12:31:27 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Sleep 0 us
Feb 25 12:31:27 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Write: 00 0c e1 8f 63 53 7f
Feb 25 12:31:28 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [serial device] TSerialDevice::ReadRegisterRange(): Serial protocol error: request timed out [slave_id is mercury200:844175]
Feb 25 12:31:28 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: INFO: [serial device] device mercury200:844175 disconnected
Feb 25 12:31:28 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] 665343: Wait until 674339
Feb 25 12:31:37 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Sleep 0 us
Feb 25 12:31:37 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] Write: 00 0c e1 8f 63 53 7f
Feb 25 12:31:38 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [serial device] TSerialDevice::ReadRegisterRange(): Serial protocol error: request timed out [slave_id is mercury200:844175]
Feb 25 12:31:38 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: INFO: [serial device] device mercury200:844175 disconnected
Feb 25 12:31:38 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: WARNING: [tcp port] <192.168.100.168:8899 5000ms, 2>: connection reset
Feb 25 12:31:38 wirenboard-ARTDX42Y wb-mqtt-serial[5228]: DEBUG: [port] 675351: Wait until 684339

конфиг:
{
“address”: “192.168.100.168”,
“port”: 8899,
“port_type”: “tcp”,
“devices”: [
{
“slave_id”: “844175”,
“device_type”: “Mercury 200.02”,
“enabled”: true,
“poll_interval”: 10000,
“protocol”: “mercury200”
}
]
}

что еще мог упустить?

Это не требуется указывать, если выбираете device_type.

в чем еще может быть проблема?

Судя по логу:

не устанавливается соединение на указанный порт вообще. С контроллнра преобразователь доступен? Какая модель устройства?

Разобрался, скорость была 115200, а на 9600 завелось.
Устройство elfin-ew11.
Спасибо.

1 Like

Благодарю, рад что получилось.