UART Communication Settings: различия между версиями
(нет различий)
|
Текущая версия на 20:50, 26 августа 2024
Введение
Устройства 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 бит/с:
- Подключите и настройте все устройства на скорости 9600 бит/с, которая стоит у них по умолчанию.
- Убедитесь, что все работает как надо: данные идут со всех устройств, каналы не горят красным, в системном журнале нет ошибок порта.
- Откройте веб-интерфейс контроллера и перейдите Settings → Configs → Serial Device Driver Configuration.
- Выберите нужный порт, в параметрах устройства в группе General поставьте флажок Baud rate и выберите желаемую скорость обмена: 115 200 бит/с. Скорость порта пока оставьте прежней.
- Вверху страницы нажмите на кнопку Save, это запустит запись нового значения скорости в устройство.
- Как только новое значение будет записано, каналы устройства на вкладке Devices станут красными. Если вы меняли настройки нескольких устройств, дождитесь, пока они все не «покраснеют». Драйвер пишет новые значения не моментально, а по очереди во все устройства с соблюдением таймаутов. Если на шине много устройств, для надёжности можно подождать 2-3 минуты перед следующим шагом.
- Укажите в настройках порта ту же скорость, которую вы выбрали в настройках устройства: 115 200 бит/с.
- Снова сохраните настройки. Теперь настройки устройств и порта совпадают, устройства должны начать отвечать.
Настройка параметров обмена
Чтобы изменить параметры подключения, нам понадобится:
- знать текущие настройки подключения устройства;
- контроллер с утилитой modbus_client или компьютер с адаптером USB-RS485 и программой для работы с Modbus;
- номера регистров, которые описаны в таблице общих регистров.
Подготовка:
- Подключите устройство по шине RS-485 к контроллеру или другому оборудованию, где будете выполнять команды.
- Если вы выполняете команды на контроллере, вместо modbus_client можно использовать modbus_client_rpc — вторая утилита не требует остановки драйвера wb-mqtt-serial. Синтаксис утилит одинаков, просто добавьте
_rpc
к командам ниже. - Можно менять настройки устройств.
Допустим, у нас есть 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 стоп-бита.