Обновись с гита.
Обновился с гита. Не знаю как на serial (нет возможности проверить). А вот у TCP в запросе, ID устройства не меняется, всегда 00.
Да действительно. Обновись с гита. `
Спасибо! Заработало )
Обновись с гита.
Обновился с гита. Не знаю как на serial (нет возможности проверить). А вот у TCP в запросе, ID устройства не меняется, всегда 00.
Да действительно. Обновись с гита. `
Спасибо! Заработало )
Обновись с гита. `
Обновился с гита. Не знаю как на serial (нет возможности проверить). А вот у TCP в запросе, ID устройства не меняется, всегда 00.
В modbus есть два типа адресации. Прямые адреса от 0 до 65536 плюс тип регИстра или так называемые Aliases: например Coils от 1 до 1000
Потом есть устройства, где адреса перевернуты при Aliases, а где нет.
Вопрос: Aliases или нет. `
Посмотрел запросы, которые шлет IOB при опросе Coils и discreteinputs. Независимо от количества и адресов переменных. Запрос всегда выглядит одинаково - 10 регистров с нулевого адреса. `
Вопрос: Aliases или нет.В wireshark видны только прямые адреса. И iob перекодирует Aliases в прямые адреса при запросе. `
Попробую объяснить… например, в IOB, я задаю опрашивать три подряд Holding регистра начиная с адреса X (не важно aliases или нет), в запросе от IOB я вижу, что стартовый адрес X и длина запрашиваемых регистров равна трем. Если же я запрашиваю, например, три Coils регистра, то в запросе от IOB я всегда вижу, что стартовый адрес 00 и длина запрашиваемых регистров равна 10. Всегда!!! Даже если я добавлю 15 переменных в Coils, запрос всегда одинаковый.
Для каждого Slave надо свою инстанцию заводить в iob. Как настраивать esp я не знаю, но вижу, что это rtu over tcp, а это пока не поддерживается. `
Нет в ESP не rtu over tcp, там именно ModBus TCP. Драйвер ModBusTCP в IOB опрашивает ESP без проблем
Не стал дожидаться посылки из Китая. Сделал опрос по ModBus TCP из IOB (опрашивается программный ModBus Slave).
Первое на что обратил внимание, это смещение адресов в Coils и discreteinputs. Например в slave взвожу coil с адресом 3, а в IOB взводится coil с адресом 1 `
В modbus есть два типа адресации. Прямые адреса от 0 до 65536 плюс тип регИстра или так называемые Aliases: например Coils от 1 до 1000Потом есть устройства, где адреса перевернуты при Aliases, а где нет.
Вопрос: Aliases или нет. `
Посмотрел запросы, которые шлет IOB при опросе Coils и discreteinputs. Независимо от количества и адресов переменных. Запрос всегда выглядит одинаково - 10 регистров с нулевого адреса.
Не стал дожидаться посылки из Китая. Сделал опрос по ModBus TCP из IOB (опрашивается программный ModBus Slave).
Первое на что обратил внимание, это смещение адресов в Coils и discreteinputs. Например в slave взвожу coil с адресом 3, а в IOB взводится coil с адресом 1
У меня пока 2 устройства RTU c ID 5 и ID 10 у обоих только Holding 40001-40009. Опрос 2 раза секунду.
Подскажите, как правильно настроить ESP , что-бы можно было использовать 1 экземпляр драйвера на IOB.
И как тогда в IOB правильно прописать 2 устройства 5 и 10. `
Чтобы подсказать, нужно знать какие используются девайсы, какие у них настройки связи (скорость, четность, и т.д.).
Сразу скажу, что если эти два девайса сделаны на основе Arduino и используется стандартная библиотека ModBus slave, то в настройках ESP ставьте очень большое время ожидания ответа, потому как стандартная библиотека работает очень медленно и не соответствует стандарту в 3,5 символа.
Так же правильно настройте транзакторы. Подробное описание настройки ESP есть на соответствующем форуме.
Если кто то использует tcp: просьба протестить. `
Жду с Китая Orange PI Plus 2 и детали на очередной шлюз ESP8266 TCP/RTU.
Как все приедет, соберу и буду тестить )
Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.
Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.
Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.
А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер? `
Вы, видимо, не совсем разобрались в настройках и принципах работы самого шлюза. Шлюз, как бы, состоит из двух устройств:
ModBus RTU master -который опрашивает и управляет устройствами на линии 485 (я подключал 6 устройств). Причем опрос устройств на стороне RTU происходит независимо от запросов со стороны TCP(скорость опроса, сами запросы настраиваются в шлюзе) . Ответы от каждого устройства записываются в определенный участок памяти.
ModBus TCP slave - устройство, которое и должно отвечать вашему IOB, это устройство видит ту же область памяти что и ModBus RTU. Поэтому в IOB достаточно одного экземпляра драйвера ModBus TCP. Просто обращайтесь к определенному участку памяти где лежат данные от нужного устройства.
P.S. На стороне TCP данный шлюз, так же поддерживает GET запросы, которыми можно управлять и опрашивать устройства на стороне RTU.
Всем, спасибо за подсказки, установить получилось! Буду разбираться!