7783
правки
(Отметить эту версию для перевода) |
Fizikdaos (обсуждение | вклад) |
||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
<languages/> | <languages/> | ||
{{DISPLAYTITLE:Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board}} | {{DISPLAYTITLE:Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board}} | ||
<translate> | <translate> | ||
== Регистры параметров обмена данными по RS-485 == <!--T:1--> | == Регистры параметров обмена данными по RS-485 == <!--T:1--> | ||
Строка 28: | Строка 24: | ||
|- | |- | ||
|} | |} | ||
== Изменение параметров обмена данными == <!--T:4--> | == Изменение параметров обмена данными == <!--T:4--> | ||
Строка 63: | Строка 58: | ||
При этом возникает парадоксальная ситуация: мы не можем узнать значение скорости, если мы заранее не укажем её значение при обращении к устройству! Поэтому стоит внимательно относиться к тому, какие коммуникационные параметры вы устанавливайте. Наклейте на устройство наклейку с новыми параметрами. В случае, если все коммуникационные параметры неизвестны, найти их можно только перебором: | При этом возникает парадоксальная ситуация: мы не можем узнать значение скорости, если мы заранее не укажем её значение при обращении к устройству! Поэтому стоит внимательно относиться к тому, какие коммуникационные параметры вы устанавливайте. Наклейте на устройство наклейку с новыми параметрами. В случае, если все коммуникационные параметры неизвестны, найти их можно только перебором: | ||
<!--T:15--> | |||
#/bin/bash | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | |||
for l in {1,2}; | |||
do | |||
for k in {none,odd,even}; | |||
do | |||
for j in {1200,2400,4800,9600,19200,38400,57600,115200}; | |||
do | do | ||
for i in {1..247}; do | |||
modbus_client -mrtu /dev/ttyAPP1 --debug -o 300 -a$i -t3 -r0x80 -b$j -s$l -p$k | |||
done 2>/dev/null | grep Data: | sed -e 's/ //g' -e 's/\n//' | xargs -I {} printf "Speed:$j\tStop bits:$l\tParity:$k\tModbus address:{}" | grep Data: | sed -e 's/Data://' | |||
done | done | ||
done | |||
done | |||
</syntaxhighlight> | |||
<!--T:16--> | <!--T:16--> | ||
В этом [[ | В этом [[Media:Perebor.sh.tar.gz|скрипте]] мы обращаемся к регистру 0x80, в котором во всех modbus-устройствах Wiren Board хранится modbus-адрес. Вывод скрипта будет содержать строки, подобные этим: | ||
Speed:9600 Stop bits:1 Parity:none Modbus address:0x0001 | Speed:9600 Stop bits:1 Parity:none Modbus address:0x0001 | ||
Speed:9600 Stop bits:2 Parity:none Modbus address:0x0001 | Speed:9600 Stop bits:2 Parity:none Modbus address:0x0001 |