Skip to content

Scanner utility for extended Wiren Board Modbus protocol

License

Notifications You must be signed in to change notification settings

ad7718/wb-modbus-ext-scanner

This branch is 3 commits behind wirenboard/wb-modbus-ext-scanner:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wirenboard Modbus scanner tool

Репозиторий содержит описание расширения протокола Modbus Wiren Board и пример реализции утилиты для работы с ним.

Установка

apt update && apt install wb-modbus-ext-scanner

!!! Перед использованием убедитесь что последовательный порт не используется другим приложением. Остановите сервис wb-mqtt-serial

Параметры утилиты

Для вывода помощи вызовите утилиту без аргументов

# wb-modbus-scanner
Wirenboard modbus extension tool. version: 1.2.0
Usage: ./wb-modbus-scanner -d device [-b baud] [-s sn] [-i id] [-D]

Options:
    -d device      TTY serial device
    -b baud        Baudrate, default 9600
    -L             use 0x60 (deprecated) cmd instead of 0x46 in scan
    -s sn          device sn
    -i id          slave id
    -D             debug mode
    -l len         max len of event data field
    -e id          event request with confirm 0 for slave id
    -E id          event request with confirm 1 for slave id
    -r reg         event control reg
    -t type        event control type
    -c ctrl        event control value

For scan use:              ./wb-modbus-scanner -d device [-b baud] [-D]
For scan some old fw use:  ./wb-modbus-scanner -d device [-b baud] -L [-D]
For set slave id use:      ./wb-modbus-scanner -d device [-b baud] -s sn -i id [-D]
For setup event use:       ./wb-modbus-scanner -d device [-b baud] -i id -r reg -t type -c ctrl
Event request examples:
         ./wb-modbus-scanner -d device [-b baud] -e 0               (request + nothing to confirm)
         ./wb-modbus-scanner -d device [-b baud] -e 4               (request + confirm events from slave 4 flag 0)
         ./wb-modbus-scanner -d device [-b baud] -E 6               (request + confirm events from slave 6 flag 1)

Сканирование устройства на шине

Пример вызова:

# wb-modbus-scanner -d /dev/ttyRS485-1 -b 115200
Serial port: /dev/ttyRS485-1
Use baud 115200
Send SCAN INIT cmd
Found device ( 1) with serial   4262588889 [FE11F1D9]  modbus id:   1  model: MRPS6
Found device ( 2) with serial   4267937719 [FE638FB7]  modbus id:   1  model: WBMR6C                  [MODBUS ID REPEAT]
End SCAN

Утилита обнаружила 2 устройства, при этом у них повторяются адреса на шине modbus, очем свидетельствует надпись MODBUS ID REPEAT

Если не все устройства найдены попробуйте запустить утилиту с флагом -L

Изменения адреса на шине

Пример вызова:

# wb-modbus-scanner -d /dev/ttyRS485-1 -b 115200 -s 4267937719 -i 3
Serial port: /dev/ttyRS485-1
Use baud 115200
Chande ID for device with serial   4267937719 [FE638FB7] New ID: 3

Включение отправки событий modbus регистра

Пример вызова:

# wb-modbus-scanner -d /dev/ttyRS485-2 -D -i 62 -r0 -t 1 -c 1
Serial port: /dev/ttyRS485-2
Use baud 9600
    -> :  3E 46 18 05 01 00 00 01 01 F3 4F
    <- :  3E 46 18 01 01 58 DA

Здесь мы устройству с адресом 62 включили передачу события при изменении coil (type 1) регистра 0 с приоритетом 1

Запрос событий

Пример вызова:

# wb-modbus-scanner -d /dev/ttyRS485-2 -e 0
Serial port: /dev/ttyRS485-2
Use baud 9600
    send EVENT GET    -> :  FD 46 10 00 FF 00 00 C8 9A
    <- :  FF FF FF FF FF 3E 46 11 00 03 10 01 02 00 03 00 02 04 00 23 01 00 01 01 00 03 00 4F CF
    device:  62 - events:   3   flag: 0   event data len: 016   frame len: 024
Event type:   2   id:     3 [0003]   payload:          0   device 62
Event type:   4   id:    35 [0023]   payload:          1   device 62
Event type:   1   id:     3 [0003]   payload:          0   device 62

Здесь был отправлен запрос без подтверждения предыдущих событий

в ответ устройство с адресом 62 уведомило о трех событиях

discrete (тип 2) регистр 3 изменил значение, новое значение 0 input (тип 4) регистр 35 изменил значение, новое значение 1 coil (тип 1) регистр 3 изменил значение, новое значение 0

Также видим что флаг подтверждения имеет значение 0

Чтобы подтвердить события от данного устройства, и запросить следующие, нужно использовать ключ -e c адресом 62

# wb-modbus-scanner -d /dev/ttyRS485-2 -e 62 -D
Serial port: /dev/ttyRS485-2
Use baud 9600
    send EVENT GET    -> :  FD 46 10 00 FF 3E 00 D8 FA
    <- :  FF FF FF FD 46 12 52 5D
NO EVENTS

About

Scanner utility for extended Wiren Board Modbus protocol

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 98.9%
  • Makefile 1.1%