Подключение стороннего устройства RS485

Добрый день. Подскажите пожалуйста как подключить стороннее устройство по шине RS485? как определить номер стороннего устройства?

Добрый день,

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

Также могут быть полезны следующие статьи:

  1. Работа с помощью Modbus-клиента, понадобиться для перебора всех возможных адресов, если в документации не описано какой адрес.
  2. Также рекомендую ознакомиться с инструкцией по подключению сторонних устройств.

Добрый день, удалось ли решить вопрос?

К сожалению нет, так как я новичок в этом деле и пока не могу разобраться как этим пользоваться. у меня есть таблица регистров для опроса, но я пока не понимаю что с этим всем делать, так же есть контроллер управления вентиляторами JPF4828, но я не понимаю как все это объединить и управлять этим.

Если вы приложите (опубликуете) таблицу регистров, а лучше полный даташит на устройство, то скорее всего можно будет надеяться получить более конкретные ответы на ваши вопросы (как от ТП, так и от простых пользователей этого портала). Сейчас у вас “общий” вопрос, на который команда из ТП WirenBoard`а дала вам общий ответ с ссылкой на инструкцию “как это делать”.

Вот что у меня есть из описания. и пока я не понимаю что с этим делать.





Мне понятно какие адреса надо опрашивать, но я не понимаю как это все внести в контроллер, для того чтоб с контроллера можно было читать данные и управлять данным устройством.

Адрес (адрес по умолчанию. если вы его не меняли) устройства известен?
Параметры порта подключения известны (битрейт, контроль четности, количество стоповых бит) ?
Если да, то подключите устройство к контроллеру как указано выше и сделайте вот так Как писать шаблоны для сторонних Modbus-устройств — Wiren Board (ссылка ведет на раздел “подготовка”.
На этом этапе вам необходимо добиться чтение хотя бы одного-двух регистров, чтобы быть уверенным в том, что устройство подключено верно (физически) и что настройки взаимодействия (порт) также сделаны верно (логическая часть взаимодействия).

После успешной реализации этого шага можно будет переходить к следующему шагу - создание шаблона или прямое указание регистров для подключения/создания устройства в контроллере.

в том то все и дело что адреса устройства у меня нет. и я не понимаю как его узнать.
Скорость передачи данных 9600 бод, без проверки, 8 бит данных, 1 стоп-бит

Вы же сами опубликовали вот это:

Там на дисплее после А отобразится адрес устройства, который судя по всему, при необходимости можно поменять.
Как это сделать - должно быть указано в инструкции/даташите к устройству. Как впрочем и параметры связи.

9600, 8, N, 1 - это уже хорошо. Осталось дело за адресом и правильным физическим подключением вашего устройства к контроллеру.

Согласитесь, давать детальные (целевые) рекомендации крайне сложно или даже не возможно, не обладая достоверной информацией о вашем устройстве.

У меня же (как и у других пользователей этого портала) нет ни какой информации о вашем устройстве… Поэтому и ответы вида “читайте инструкцию к устройству” становятся не “отмазкой” и не нежеланием вам помочь, а вынужденными…

1 лайк

Для совешенно незнакомого устройства можно перебрать вообще все комбинации, например скриптом, так: Настройка параметров подключения по RS-485 для Modbus-устройств Wiren Board — Wiren Board
Но предварительно отредактировать на предмет точно существующего регистра.
Но, обычно, проще все ж узнать адрес.

Тогда что я делаю не так? На экране устройство показывает A01, значит должен быть адрес “1”


А как будет выполненяться настроенное? То есть какой именно запрос (байты) будет отправлен устройству, что (какой ответ) ожидается?
Отвечает ли вообще устройство на запросы?

С виду все правильно, только в качестве типа я бы установил value (интерпретация данных для регистра 0 не описана, скорее всего INT16, беззнаковое) и посмотрел бы на формат вывода

Ну и естественно, все это будет работать только в том случае, если на второй RS-485 ваше устройство подключено корректно (нет других устройств с адресом 1, а лучше чтобы ваше устройство было единственным на этой шине, А и В не перепутаны местами, есть общая “земля” (GND), линия связи короткая и исправная).

Поскольку в вэб интерфейсе нет обратной связи (не видно, что ушло на шину и какой ответ был получен и был ли он вообще получен), то причину “неработоспособности” приходится придумывать.

В данном случае (раз не заработало сразу) все же есть смысл пойти по пути указанному в ссылке (я давал выше) и прежде чем переходить в вэб интерфейс провести тестовое соединения из командной строки контроллера, как это описано по ссылке

1 лайк

Что получите в ответ на запрос (предварительно нужно остановить сервис wb-mqtt-serial если он использует/блокирует порт /dev/ttyRS485-2 см. Драйвер wb-mqtt-serial — Wiren Board )?

modbus_client --debug -mrtu -b9600 -d8 -pnone -s1 /dev/ttyRS485-2 -a1 -t0x03 -r0 -c1

где через порт /dev/ttyRS485-2 с параметрами 9600,8,N,1 в протоколе modBus RTU произойдет попытка прочитать (функция 3 - Read Holding Registers ) один регистр с адресом 0 из устройства с адресом 1

Речь о чтении:

Справочно Утилита «modbus_client» — Wiren Board :

Описание параметров командной строки утилиты modbus_client

Вот что в ответе. ничего не понятно для меня

Если порт /dev/ttyRS485-2 гарантировано свободен (не заблокирован другими программами/службами), то устройство вам не ответило.

Проверьте физику подключения, убедитесь, что устройство у вас включено и работоспособно, и что оно подключено именно к порту RS485-2
Иногда возникает путаница в обозначениях A и B (некоторые производители меняют их местами, лично я через это проходил) - попробуйте вместо A->A и B->B подключить провода между контроллером и устройством “наоборот” , т.е. A->B и B->A - это безопасно (не вызовет проблем, если до этого подключение было корректным)

2 лайка

вот что получилось

С огромной благодарностью и всем уважением. ОГРОМНОЕ СПАСИБО)))))


1 лайк

Отлично. Рад что у вас все получилось.
Если я правильно понимаю, то с остальными регистрами вы поступите “по образу и подобию” и проблем быть уже не должно.

Если не секрет, в чем все-таки была проблема (после чего удалось получить корректные значения)?

2 лайка