16 578
правок
Kilpio (обсуждение | вклад) |
|||
(не показана 51 промежуточная версия 6 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: | <languages/> | ||
{{DISPLAYTITLE:Настройка параметров подключения по RS-485 для Modbus-устройств Wiren Board}} | |||
<translate> | |||
== Введение == | |||
Устройства Wiren Board управляются по протоколу Modbus RTU и на физическом уровне подключаются через интерфейс [[RS-485]]. | |||
{{Wbincludes:Modbus Default Settings}} | |||
== | == Изменение скорости обмена == | ||
{{Anchor|baud-rate}} | |||
Для ускорения отклика устройств на шине RS485 рекомендуем поднять скорость обмена до 115 200 бит/с. | |||
Отметим, что низкая скорость обмена прощает многие ошибки построения шины, но на высоких скоростях выполнение [[RS-485:Физическое подключение | рекомендаций по построению шины]] обязательно. | |||
=== Смена уровня доступа к веб-интерфейсу === | |||
{{Wbincludes:WebUI Change Access Level}} | |||
== | === Настройка === | ||
{{YouTube | |||
|link= https://www.youtube.com/watch?v=d_olK15Xhkw | |||
|text= Смена скорости устройства через веб-интерфейс (12:59) | |||
|start=779 | |||
}} | |||
[[Image: WebUI Change Baud Rate.png |250px|thumb|right| Выбор желаемой скорости обмена в настройках устройства ]] | |||
Увеличим скорость обмена в Modbus-устройствах Wiren Board со значения по умолчанию до 115 200 бит/с: | |||
# Подключите и настройте все устройства на скорости 9600 бит/с, которая стоит у них по умолчанию. | |||
# Убедитесь, что все работает как надо: данные идут со всех устройств, каналы не горят красным, в системном журнале нет ошибок порта. | |||
# Откройте [[Wiren_Board_Web_Interface | веб-интерфейс]] контроллера и перейдите '''Settings''' → '''Configs''' → '''Serial Device Driver Configuration'''. | |||
# Выберите нужный порт, в параметрах устройства в группе '''General''' поставьте флажок '''Baud rate''' и выберите желаемую скорость обмена: 115 200 бит/с. Скорость порта пока оставьте прежней. | |||
# Вверху страницы нажмите на кнопку '''Save''', это запустит запись нового значения скорости в устройство. | |||
# Как только новое значение будет записано, каналы устройства на вкладке '''Devices''' станут красными. Если вы меняли настройки нескольких устройств, дождитесь, пока они все не «покраснеют». Драйвер пишет новые значения не моментально, а по очереди во все устройства с соблюдением таймаутов. Если на шине много устройств, для надёжности можно подождать 2-3 минуты перед следующим шагом. | |||
# Укажите в настройках порта ту же скорость, которую вы выбрали в настройках устройства: 115 200 бит/с. | |||
# Снова сохраните настройки. Теперь настройки устройств и порта совпадают, устройства должны начать отвечать. | |||
== Настройка параметров обмена == | |||
Чтобы изменить параметры подключения, нам понадобится: | |||
* знать текущие настройки подключения устройства; | |||
* контроллер с утилитой [[modbus_client]] или компьютер с адаптером USB-RS485 и [[Working_with_WB_devices_without_a_controller | программой для работы с Modbus]]; | |||
* номера регистров, которые описаны в [[Common_Modbus_Registers | таблице общих регистров]]. | |||
Подготовка: | |||
# Подключите устройство по [[RS-485 | шине RS-485]] к контроллеру или другому оборудованию, где будете выполнять команды. | |||
# Если вы выполняете команды на контроллере, вместо '''modbus_client''' можно использовать '''modbus_client_rpc''' — вторая утилита не требует остановки драйвера [[wb-mqtt-serial]]. Синтаксис утилит одинаков, просто добавьте <code>_rpc</code> к командам ниже. | |||
# Можно менять настройки устройств. | |||
Допустим, у нас есть Modbus-устройство Wiren Board с заводскими параметрами подключения, Modbus-адресом <code>1</code> и подключённое к порту <code>/dev/ttyRS485-1</code>. | |||
Изменим адрес устройства, для этого запишем в регистр <code>128</code> новый адрес, например <code>12</code>: | |||
<syntaxhighlight lang="bash"> | |||
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r128 12 | |||
</syntaxhighlight> | |||
Теперь изменим скорость порта устройства с 9600 бит/с на 115 200 бит/с, для этого запишем в регистр <code>110</code> новое значение, формат которого можно посмотреть в таблице общих регистров: | |||
<syntaxhighlight lang="bash"> | |||
modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a12 -t0x06 -r110 1152 | |||
</syntaxhighlight> | |||
Теперь устройство передаёт и принимает данные на скорости 115 200 бит/с. | |||
Остальные параметры меняются аналогично: смотрите, в каком регистре хранится значение и записываете в него новое. | |||
== Если параметры подключения неизвестны == | |||
{{Anchor|unknown-params}} | |||
<!--T:14--> | |||
Если параметры подключения устройства неизвестны можно узнать их выполнив [[Fast_Modbus#Сканирование_устройств_на_шине |сканирование шины]] в веб-интерфейсе контроллера. | |||
Крайний случай — [[Wiren_Board_Device_Modbus_Address#Восстановление доступа| сбросить настройки к заводским]]. | |||
Если вы используете старое ПО контроллера, не поддерживающее сканирование, можно узнать настройки перебором, для этого загрузите на контроллер скрипт [[Media:Perebor.sh.tar.gz|Perebor.sh.tar.gz]] и выполните его. Если адрес, к которому подключено устройство отличается от <code>/dev/ttyRS485-1</code>, измените его в теле скрипта. | |||
<!--T:16--> | |||
Как это работает: мы обращаемся к регистру <code>128</code>, в котором во всех modbus-устройствах Wiren Board хранится modbus-адрес. Вывод скрипта будет содержать строки, подобные этим: | |||
Speed:9600 Stop bits:1 Parity:none Modbus address:0x0001 | |||
Speed:9600 Stop bits:2 Parity:none Modbus address:0x0001 | |||
<!--T:17--> | |||
Для стоп-битов, скорее всего, вы получите два значения: 1 и 2. Уточнить настройку можно считав значение из регистра <code>112</code> с уже известным адресом, скоростью, четностью: | |||
<!--T:18--> | |||
modbus_client --debug -mrtu -b'''9600''' -p'''none''' -s'''2''' /dev/ttyAPP1 -a'''0x01''' -t0x03 -r112 | |||
<!--T:19--> | |||
или | |||
<!--T:20--> | |||
modbus_client --debug -mrtu -b'''9600''' -p'''none''' -s'''1''' /dev/ttyAPP1 -a'''0x01''' -t0x03 -r112 | |||
<!--T:21--> | |||
SUCCESS: read 1 of elements: | |||
Data: 0x0002 | |||
<!--T:22--> | |||
Если при чтении из регистра 112 вы получаете ошибку — устройство не поддерживает изменение параметров подключения. В этом случае для подключения используется значение по умолчанию,2 стоп-бита. | |||
</translate> |