3690
правок
Fizikdaos (обсуждение | вклад) |
|||
Строка 17: | Строка 17: | ||
<syntaxhighlight lang="bash">root@wirenboard:~# service wb-mqtt-serial stop</syntaxhighlight> | <syntaxhighlight lang="bash">root@wirenboard:~# service wb-mqtt-serial stop</syntaxhighlight> | ||
Попробуем определить текущий адрес модуля. Для этого в командной строке выполним циклическую команду опроса регистра 0x80 устройств с адресами с 1 по 247: | Попробуем определить текущий адрес модуля. Для этого в командной строке выполним циклическую команду опроса регистра 0x80 устройств с адресами с 1 по 247: | ||
<syntaxhighlight lang="bash">root@wirenboard:~# for i in {1..247}; do modbus_client -mrtu /dev/ttyRS485-1 --debug -a$i -t3 - | <syntaxhighlight lang="bash">root@wirenboard:~# for i in {1..247}; do echo -n "$i - "; D=`modbus_client -mrtu /dev/ttyRS485-1 --debug -a$i -t3 -r200 -s2 -c6 -pnone 2>/dev/null | grep Data: | awk 'gsub("Data:","")' | sed -e 's/0x00/\\\x/g' -e 's/\s//g'`; echo -e $D; done | ||
1 - | |||
Результат: | 2 - | ||
3 - | |||
4 - | |||
5 - | |||
6 - | |||
7 - | |||
8 - | |||
9 - | |||
10 - | |||
11 - | |||
12 - | |||
13 - MRPS6 | |||
... | |||
</syntaxhighlight> | |||
Результат: найдено устройство WB-MRPS6 с адресом 13 (десятичным). Перебор всех адресов от 1 до 247 занимает чуть больше 2 минут. В параметрах вызова команды modbus_client мы указываем 2 стоп-бита( -s2), отсутствие контроля четности ( -pnone), скорость 9600 бит/с устанавливается автоматически. Чтение выполняем командой READ_HOLDING_REGISTERS с кодом 3 (-t3) из регистра с адресом 0x80 ( -r0x80), адрес меняется в цикле от 1 до 247 ( -a$i). | |||
На некоторых устройствах при обмене с ними данными мигает индикатор. | На некоторых устройствах при обмене с ними данными мигает индикатор. | ||