Перейти к содержанию

Навигация

UART Communication Settings: различия между версиями

Нет описания правки
(Отметить эту версию для перевода)
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
<languages/>
<languages/>
<translate>
</translate>
{{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-->
<!--T:15-->
#/bin/bash
<syntaxhighlight lang="bash">
    for l in {1,2};
#!/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 k in {none,odd,even};
         for i in {1..247}; do  
    do
                    modbus_client -mrtu /dev/ttyAPP1 --debug -o 300 -a$i -t3 -r0x80 -b$j -s$l -p$k  
         for j in {1200,2400,4800,9600,19200,38400,57600,115200};
        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://'
        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
done
done
</syntaxhighlight>


<!--T:16-->
<!--T:16-->
В этом [[Special:MyLanguage/Media:Perebor.sh.tar.gz|скрипте]] мы обращаемся к регистру 0x80, в котором во всех modbus-устройствах Wiren Board хранится modbus-адрес. Вывод скрипта будет содержать строки, подобные этим:
В этом [[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