Настройка параметров подключения по RS-485 для Modbus-устройств Wiren Board

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Другие языки:

Введение

Устройства Wiren Board управляются по протоколу Modbus RTU и на физическом уровне подключаются через интерфейс RS-485.

Параметры порта по умолчанию

Значение
по умолчанию
Название параметра
в веб-интерфейсе
Параметр
9600 Baud rate Скорость, бит/с
8 Data bits Количество битов данных
None Parity Бит чётности
2 Stop bits Количество стоповых битов

Изменение скорости обмена

Для ускорения отклика устройств на шине RS485 рекомендуем поднять скорость обмена до 115 200 бит/с.

Отметим, что низкая скорость обмена прощает многие ошибки построения шины, но на высоких скоростях выполнение рекомендаций по построению шины обязательно.

Смена уровня доступа к веб-интерфейсу

Уровень «Администратор»

Для изменения настроек контроллера вам нужен уровень доступа Администратор, который можно выставить в разделе НастройкиПрава доступа.

После завершения настроек рекомендуем поставить уровень доступа Пользователь или Оператор — это поможет не совершить случайных ошибок при ежедневной работе с веб-интерфейсом.

Настройка

Выбор желаемой скорости обмена в настройках устройства

Увеличим скорость обмена в Modbus-устройствах Wiren Board со значения по умолчанию до 115 200 бит/с:

  1. Подключите и настройте все устройства на скорости 9600 бит/с, которая стоит у них по умолчанию.
  2. Убедитесь, что все работает как надо: данные идут со всех устройств, каналы не горят красным, в системном журнале нет ошибок порта.
  3. Откройте веб-интерфейс контроллера и перейдите SettingsConfigsSerial Device Driver Configuration.
  4. Выберите нужный порт, в параметрах устройства в группе General поставьте флажок Baud rate и выберите желаемую скорость обмена: 115 200 бит/с. Скорость порта пока оставьте прежней.
  5. Вверху страницы нажмите на кнопку Save, это запустит запись нового значения скорости в устройство.
  6. Как только новое значение будет записано, каналы устройства на вкладке Devices станут красными. Если вы меняли настройки нескольких устройств, дождитесь, пока они все не «покраснеют». Драйвер пишет новые значения не моментально, а по очереди во все устройства с соблюдением таймаутов. Если на шине много устройств, для надёжности можно подождать 2-3 минуты перед следующим шагом.
  7. Укажите в настройках порта ту же скорость, которую вы выбрали в настройках устройства: 115 200 бит/с.
  8. Снова сохраните настройки. Теперь настройки устройств и порта совпадают, устройства должны начать отвечать.

Настройка параметров обмена

Чтобы изменить параметры подключения, нам понадобится:

Подготовка:

  1. Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где будете выполнять команды.
  2. Если вы выполняете команды на контроллере:
  3. Можно менять настройки устройств.

Допустим, у нас есть Modbus-устройство Wiren Board с заводскими параметрами подключения, Modbus-адресом 1 и подключённое к порту /dev/ttyRS485-1.

Изменим адрес устройства, для этого запишем в регистр 128 новый адрес, например 12:

modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a1 -t0x06 -r128 12

Теперь изменим скорость порта устройства с 9600 бит/с на 115 200 бит/с, для этого запишем в регистр 110 новое значение, формат которого можно посмотреть в таблице общих регистров:

modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyRS485-1 -a12 -t0x06 -r110 1152

Теперь устройство передаёт и принимает данные на скорости 115 200 бит/с.

Остальные параметры меняются аналогично: смотрите, в каком регистре хранится значение и записываете в него новое.

Если параметры подключения неизвестны

Если параметры подключения устройства неизвестны можно узнать их выполнив сканирование шины в веб-интерфейсе контроллера.

Крайний случай — сбросить настройки к заводским.

Если вы используете старое ПО контроллера, не поддерживающее сканирование, можно узнать настройки перебором, для этого загрузите на контроллер скрипт Perebor.sh.tar.gz и выполните его. Если адрес, к которому подключено устройство отличается от /dev/ttyRS485-1, измените его в теле скрипта.

Как это работает: мы обращаемся к регистру 128, в котором во всех modbus-устройствах Wiren Board хранится modbus-адрес. Вывод скрипта будет содержать строки, подобные этим:

Speed:9600      Stop bits:1     Parity:none     Modbus address:0x0001
Speed:9600      Stop bits:2     Parity:none     Modbus address:0x0001

Для стоп-битов, скорее всего, вы получите два значения: 1 и 2. Уточнить настройку можно считав значение из регистра 112 с уже известным адресом, скоростью, четностью:

modbus_client --debug -mrtu -b9600 -pnone -s2 /dev/ttyAPP1 -a0x01 -t0x03 -r112

или

modbus_client --debug -mrtu -b9600 -pnone -s1 /dev/ttyAPP1 -a0x01 -t0x03 -r112
   SUCCESS: read 1 of elements:
   Data: 0x0002

Если при чтении из регистра 112 вы получаете ошибку — устройство не поддерживает изменение параметров подключения. В этом случае для подключения используется значение по умолчанию,2 стоп-бита.