Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. ioBroker драйвера
    5. Драйвер ModBus

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Драйвер ModBus

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MSapogov last edited by

      @Bluefox:

      Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP. `
      Я то и подавно не понимаю… А как-же
      @dito85:

      Так как проблема с отсутствием в ioBroker ModBus RTU так и не решилась, вот один из вариантов как подключать устройства с RTU и интерфейсом 485 к ioBroker по ModBus TCP. Может кому пригодится. http://esp8266.ru/forum/threads/modbus- … erver.911/ `
      И там и там порт 502 по умолчанию и упоминается Modbus TCP, может это все-же оно?

      Хоть кусочек примера дайте… куда вписывать ID от Slave устройства, номер регистра...

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        @MSapogov:

        @Bluefox:

        Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP. `
        Я то и подавно не понимаю… А как-же
        @dito85:

        Так как проблема с отсутствием в ioBroker ModBus RTU так и не решилась, вот один из вариантов как подключать устройства с RTU и интерфейсом 485 к ioBroker по ModBus TCP. Может кому пригодится. http://esp8266.ru/forum/threads/modbus- … erver.911/ `
        И там и там порт 502 по умолчанию и упоминается Modbus TCP, может это все-же оно?

        Хоть кусочек примера дайте… куда вписывать ID от Slave устройства, номер регистра... `
        А ты можешь к своему устройству напрямую через serial порт подключится?

        Тогда можно попробовать https://www.npmjs.com/package/jsmodbus

        ` > MODBUS TCP is a protocol that has a specification.

        MODBUS RTU and MODBUS ASCII are protocols that have specifications.

        TCP/IP is a protocol that has a specification.

        MODBUS over TCP means a MODBUS RTU packet wrapped in a TCP packet. (A)

        MODBUS TCP means a MODBUS TCP packet wrapped in a TCP packet. (B)

        A and B are not compatible. They transfer like data but have different structures. `
        Здесь можно посмотреть структуру пакетов:

        http://www.simplymodbus.ca/TCP.htm
        48_adu_pdu.png

        1 Reply Last reply Reply Quote 0
        • M
          MSapogov last edited by

          @Bluefox:

          Тогда можно попробовать https://www.npmjs.com/package/jsmodbus `
          Для меня это непосильный труд… Я мало что понимаю в том, куда я должен это поставить?

          Есть виртуалка с IOB,

          Есть Win10 c USB-COM-портом к которому подключен RS-485

          Есть ESP8266 c RS-485 ( Modbus TCP to RTU)

          Есть Ардуинка с RS-485 (могу залить любой скетч).

          Если постараться, то могу прокинуть USB-COM с RS485 внутрь IOB на виртуалку.

          1 Reply Last reply Reply Quote 0
          • M
            MSapogov last edited by

            Немного продвинулся…

            При помощи все того-же переходника на ESP8266 - Modbus TCP to Modbus RTU получилось прочитать данные. Значит переходник работает!!!

            Делал так: в IOB в конфигурации modbus установил следующее:

            IP адрес партнера: 192.168.11.205

            Порт: 502

            ID устройства: 5

            Тип: Slave

            Еще были созданы Holding регистры 40001-40009. При записи значений в эти регистры, я могу их прочитать при помощи все тойже QModBus.

            Получается что я создал эмулятор slave устройства!!!

            А теперь вопросы:

            1. Как сделать так, чтобы IOB был как мастер? (Что нужно указать в конфиге)

            2. Опрос slave устройства с номером 6 2 раза в секунду?

            3. Драйверов modbus должно быть столько-же, сколько и Slave устройств?

            4. На каждый slave свой драйвер?

            PS: Отвечаю сам.

            1. Выбрать IP адрес партнера: 192.168.11.205

            Порт: 502

            ID устройства: 6

            Тип: Master.

            2. Интервал опроса: 500

            Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.

            Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.

            Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.

            А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер?

            1 Reply Last reply Reply Quote 0
            • D
              dito85 last edited by

              @MSapogov:

              Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.

              Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.

              Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.

              А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер? `

              Вы, видимо, не совсем разобрались в настройках и принципах работы самого шлюза. Шлюз, как бы, состоит из двух устройств:

              1. ModBus RTU master -который опрашивает и управляет устройствами на линии 485 (я подключал 6 устройств). Причем опрос устройств на стороне RTU происходит независимо от запросов со стороны TCP(скорость опроса, сами запросы настраиваются в шлюзе) . Ответы от каждого устройства записываются в определенный участок памяти.

              2. ModBus TCP slave - устройство, которое и должно отвечать вашему IOB, это устройство видит ту же область памяти что и ModBus RTU. Поэтому в IOB достаточно одного экземпляра драйвера ModBus TCP. Просто обращайтесь к определенному участку памяти где лежат данные от нужного устройства.

              P.S. На стороне TCP данный шлюз, так же поддерживает GET запросы, которыми можно управлять и опрашивать устройства на стороне RTU.

              1 Reply Last reply Reply Quote 0
              • H
                Haus last edited by

                Bluefox анонсировал доработку Modbus, версия на git

                Bluefox:
                Допилил Modbus RTU
                
                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  На гите лежит версия, которая поддерживает rtu по rs485.

                  Пришлось, правда, поменять код и для tcp мастера и слейва. Так же поменяна адресация при использовании alias.

                  Если кто то использует tcp: просьба протестить.

                  И пути назад нет. Надо что бы новая библиотека заработала, т.к. прошлый используемый пакет был в зачаточном состоянии и не изменялся уже 2 года.

                  1 Reply Last reply Reply Quote 0
                  • D
                    dito85 last edited by

                    @Bluefox:

                    Если кто то использует tcp: просьба протестить. `

                    Жду с Китая Orange PI Plus 2 и детали на очередной шлюз ESP8266 TCP/RTU.

                    Как все приедет, соберу и буду тестить )

                    1 Reply Last reply Reply Quote 0
                    • M
                      MSapogov last edited by

                      @dito85:

                      @Bluefox:

                      Если кто то использует tcp: просьба протестить. `

                      Жду с Китая Orange PI Plus 2 и детали на очередной шлюз ESP8266 TCP/RTU.

                      Как все приедет, соберу и буду тестить ) `
                      У меня все это есть и ESP8266 и Orange PI PC :

                      Шлюз ESP8266 TCP/RTU делаю по верхней схеме http://esp8266.ru/forum/threads/modbus- … erver.911/

                      На странице Modbus setting в ESP8266 что прописать, что-бы протестировать?

                      Драйвер поставил 0.4.0.

                      1 Reply Last reply Reply Quote 0
                      • M
                        MSapogov last edited by

                        Что-то покраснел modbus при выборе TCP и master.

                        host-Bee-IoT	2016-10-18 21:07:39.679	info	Restart adapter system.adapter.modbus.0 because enabled
                        host-Bee-IoT	2016-10-18 21:07:39.679	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                        modbus-0	2016-10-18 21:07:39.671	info	terminating
                        RangeError:	2016-10-18 21:07:39.651	error	at Socket.Readable.push (_stream_readable.js:111:10)
                        RangeError:	2016-10-18 21:07:39.651	error	at readableAddChunk (_stream_readable.js:153:18)
                        RangeError:	2016-10-18 21:07:39.651	error	at Socket.emit (events.js:169:7)
                        RangeError:	2016-10-18 21:07:39.651	error	at emitOne (events.js:77:13)
                        RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-tcp-client.js:129:22)
                        RangeError:	2016-10-18 21:07:39.651	error	at Object.emit (/opt/iobroker/node_modules/iobroker.modbus/node_modules/stampit-event-bus/src/stampit-event-bus.js:20:38)
                        RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:135:17)
                        RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:91:33)
                        RangeError:	2016-10-18 21:07:39.651	error	at Buffer.readUInt8 (buffer.js:718:5)
                        RangeError:	2016-10-18 21:07:39.651	error	at checkOffset (buffer.js:680:11)
                        RangeError:	2016-10-18 21:07:39.651	error	index out of range
                        uncaught	2016-10-18 21:07:39.651	error	exception: index out of range
                        modbus-0	2016-10-18 21:07:39.620	info	Connected to slave 192.168.11.205
                        modbus-0	2016-10-18 21:07:39.565	warn	Serial is not available
                        modbus-0	2016-10-18 21:07:39.561	info	starting. Version 0.4.0 in /opt/iobroker/node_modules/iobroker.modbus
                        host-Bee-IoT	2016-10-18 21:07:39.136	info	instance system.adapter.modbus.0 started with pid 23265
                        host-Bee-IoT	2016-10-18 21:07:26.437	info	Restart adapter system.adapter.modbus.0 because enabled
                        host-Bee-IoT	2016-10-18 21:07:26.437	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                        uncaught	2016-10-18 21:07:26.423	error	exception: index out of range
                        modbus-0	2016-10-18 21:07:26.403	info	Connected to slave 192.168.11.205
                        modbus-0	2016-10-18 21:07:26.353	warn	Serial is not available
                        
                        1 Reply Last reply Reply Quote 0
                        • Bluefox
                          Bluefox last edited by

                          @MSapogov:

                          Что-то покраснел modbus при выборе TCP и master.

                          host-Bee-IoT	2016-10-18 21:07:39.679	info	Restart adapter system.adapter.modbus.0 because enabled
                          host-Bee-IoT	2016-10-18 21:07:39.679	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                          modbus-0	2016-10-18 21:07:39.671	info	terminating
                          RangeError:	2016-10-18 21:07:39.651	error	at Socket.Readable.push (_stream_readable.js:111:10)
                          RangeError:	2016-10-18 21:07:39.651	error	at readableAddChunk (_stream_readable.js:153:18)
                          RangeError:	2016-10-18 21:07:39.651	error	at Socket.emit (events.js:169:7)
                          RangeError:	2016-10-18 21:07:39.651	error	at emitOne (events.js:77:13)
                          RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-tcp-client.js:129:22)
                          RangeError:	2016-10-18 21:07:39.651	error	at Object.emit (/opt/iobroker/node_modules/iobroker.modbus/node_modules/stampit-event-bus/src/stampit-event-bus.js:20:38)
                          RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:135:17)
                          RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:91:33)
                          RangeError:	2016-10-18 21:07:39.651	error	at Buffer.readUInt8 (buffer.js:718:5)
                          RangeError:	2016-10-18 21:07:39.651	error	at checkOffset (buffer.js:680:11)
                          RangeError:	2016-10-18 21:07:39.651	error	index out of range
                          uncaught	2016-10-18 21:07:39.651	error	exception: index out of range
                          modbus-0	2016-10-18 21:07:39.620	info	Connected to slave 192.168.11.205
                          modbus-0	2016-10-18 21:07:39.565	warn	Serial is not available
                          modbus-0	2016-10-18 21:07:39.561	info	starting. Version 0.4.0 in /opt/iobroker/node_modules/iobroker.modbus
                          host-Bee-IoT	2016-10-18 21:07:39.136	info	instance system.adapter.modbus.0 started with pid 23265
                          host-Bee-IoT	2016-10-18 21:07:26.437	info	Restart adapter system.adapter.modbus.0 because enabled
                          host-Bee-IoT	2016-10-18 21:07:26.437	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                          uncaught	2016-10-18 21:07:26.423	error	exception: index out of range
                          modbus-0	2016-10-18 21:07:26.403	info	Connected to slave 192.168.11.205
                          modbus-0	2016-10-18 21:07:26.353	warn	Serial is not available
                          ```` `  
                          

                          А настройки? Адреса? Тип адресов?

                          1 Reply Last reply Reply Quote 0
                          • M
                            MSapogov last edited by

                            @Bluefox:

                            @MSapogov:

                            Что-то покраснел modbus при выборе TCP и master.

                            host-Bee-IoT	2016-10-18 21:07:39.679	info	Restart adapter system.adapter.modbus.0 because enabled
                            host-Bee-IoT	2016-10-18 21:07:39.679	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                            modbus-0	2016-10-18 21:07:39.671	info	terminating
                            RangeError:	2016-10-18 21:07:39.651	error	at Socket.Readable.push (_stream_readable.js:111:10)
                            RangeError:	2016-10-18 21:07:39.651	error	at readableAddChunk (_stream_readable.js:153:18)
                            RangeError:	2016-10-18 21:07:39.651	error	at Socket.emit (events.js:169:7)
                            RangeError:	2016-10-18 21:07:39.651	error	at emitOne (events.js:77:13)
                            RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-tcp-client.js:129:22)
                            RangeError:	2016-10-18 21:07:39.651	error	at Object.emit (/opt/iobroker/node_modules/iobroker.modbus/node_modules/stampit-event-bus/src/stampit-event-bus.js:20:38)
                            RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:135:17)
                            RangeError:	2016-10-18 21:07:39.651	error	at Object. (/opt/iobroker/node_modules/iobroker.modbus/node_modules/jsmodbus/src/modbus-client-core.js:91:33)
                            RangeError:	2016-10-18 21:07:39.651	error	at Buffer.readUInt8 (buffer.js:718:5)
                            RangeError:	2016-10-18 21:07:39.651	error	at checkOffset (buffer.js:680:11)
                            RangeError:	2016-10-18 21:07:39.651	error	index out of range
                            uncaught	2016-10-18 21:07:39.651	error	exception: index out of range
                            modbus-0	2016-10-18 21:07:39.620	info	Connected to slave 192.168.11.205
                            modbus-0	2016-10-18 21:07:39.565	warn	Serial is not available
                            modbus-0	2016-10-18 21:07:39.561	info	starting. Version 0.4.0 in /opt/iobroker/node_modules/iobroker.modbus
                            host-Bee-IoT	2016-10-18 21:07:39.136	info	instance system.adapter.modbus.0 started with pid 23265
                            host-Bee-IoT	2016-10-18 21:07:26.437	info	Restart adapter system.adapter.modbus.0 because enabled
                            host-Bee-IoT	2016-10-18 21:07:26.437	error	instance system.adapter.modbus.0 terminated with code 0 (OK)
                            uncaught	2016-10-18 21:07:26.423	error	exception: index out of range
                            modbus-0	2016-10-18 21:07:26.403	info	Connected to slave 192.168.11.205
                            modbus-0	2016-10-18 21:07:26.353	warn	Serial is not available
                            ```` `  
                            

                            А настройки? Адреса? Тип адресов? `
                            IP адрес партнера: 192.168.11.205

                            Порт: 502

                            ID устройства: 5

                            Тип: Master

                            В шлюзе ничего не менялось.

                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @MSapogov:

                              IP адрес партнера: 192.168.11.205

                              Порт: 502

                              ID устройства: 5

                              Тип: Master

                              В шлюзе ничего не менялось. `
                              Какой адрес и какой тип регистра. Какой максимальный и какой минимальный адреса для данного типа регистра?

                              1 Reply Last reply Reply Quote 0
                              • M
                                MSapogov last edited by

                                @Bluefox:

                                @MSapogov:

                                IP адрес партнера: 192.168.11.205

                                Порт: 502

                                ID устройства: 5

                                Тип: Master

                                В шлюзе ничего не менялось. Какой адрес и какой тип регистра. Какой максимальный и какой минимальный адреса для данного типа регистра?
                                ??? Только Holding (40001-40009)

                                Опрос 200 мс.

                                1 Reply Last reply Reply Quote 0
                                • Bluefox
                                  Bluefox last edited by

                                  @MSapogov:

                                  @Bluefox:

                                  @MSapogov:

                                  IP адрес партнера: 192.168.11.205

                                  Порт: 502

                                  ID устройства: 5

                                  Тип: Master

                                  В шлюзе ничего не менялось. Какой адрес и какой тип регистра. Какой максимальный и какой минимальный адреса для данного типа регистра?
                                  ??? Только Holding (40001-40009)

                                  Опрос 200 мс. `
                                  Я надеюсь с Aliases?

                                  А лучше скрин настроек и страницы с регистрами

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MSapogov last edited by

                                    @Bluefox:

                                    @MSapogov:

                                    @Bluefox:

                                    Какой адрес и какой тип регистра. Какой максимальный и какой минимальный адреса для данного типа регистра? `
                                    ??? Только Holding (40001-40009)

                                    Опрос 200 мс. `
                                    Я надеюсь с Aliases?

                                    А лучше скрин настроек и страницы с регистрами `

                                    Да с ними.

                                    Может я в настройках что не учел…

                                    ! 643_iobroker.admin.png
                                    643_iobroker.admin_1_.png
                                    643_esp8266ex_modbus_tcp_rtu_rs_485_1_.png
                                    643_qmodbus.png

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      MSapogov last edited by

                                      @dito85:

                                      @MSapogov:

                                      Правильно ли я понял, что в этой связке я не подключу еще устройства на шину RS-485.

                                      Даже создав новый драйвер modbus.1 и указав в нем то-же IP 192.168.11.205, только изменив ID устройства например на 10, у меня уже неполучается считать данный с 10-го устройства.

                                      Выходит что для каждого устройства нужен свой Modbus TCP to Modbus RTU шлюз.

                                      А если в качестве мастера будет Modbus TCP to Modbus RTU шлюз, то как в этом случае настраивать драйвер? `

                                      Вы, видимо, не совсем разобрались в настройках и принципах работы самого шлюза. Шлюз, как бы, состоит из двух устройств:

                                      1. ModBus RTU master -который опрашивает и управляет устройствами на линии 485 (я подключал 6 устройств). Причем опрос устройств на стороне RTU происходит независимо от запросов со стороны TCP(скорость опроса, сами запросы настраиваются в шлюзе) . Ответы от каждого устройства записываются в определенный участок памяти.

                                      2. ModBus TCP slave - устройство, которое и должно отвечать вашему IOB, это устройство видит ту же область памяти что и ModBus RTU. Поэтому в IOB достаточно одного экземпляра драйвера ModBus TCP. Просто обращайтесь к определенному участку памяти где лежат данные от нужного устройства.

                                      P.S. На стороне TCP данный шлюз, так же поддерживает GET запросы, которыми можно управлять и опрашивать устройства на стороне RTU. `
                                      У меня пока 2 устройства RTU c ID 5 и ID 10 у обоих только Holding 40001-40009. Опрос 2 раза секунду.

                                      Подскажите, как правильно настроить ESP , что-бы можно было использовать 1 экземпляр драйвера на IOB.

                                      И как тогда в IOB правильно прописать 2 устройства 5 и 10.

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        dito85 last edited by

                                        @MSapogov:

                                        У меня пока 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 есть на соответствующем форуме.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          dito85 last edited by

                                          Не стал дожидаться посылки из Китая. Сделал опрос по ModBus TCP из IOB (опрашивается программный ModBus Slave).

                                          Первое на что обратил внимание, это смещение адресов в Coils и discreteinputs. Например в slave взвожу coil с адресом 3, а в IOB взводится coil с адресом 1

                                          1 Reply Last reply Reply Quote 0
                                          • Bluefox
                                            Bluefox last edited by

                                            @dito85:

                                            Не стал дожидаться посылки из Китая. Сделал опрос по ModBus TCP из IOB (опрашивается программный ModBus Slave).

                                            Первое на что обратил внимание, это смещение адресов в Coils и discreteinputs. Например в slave взвожу coil с адресом 3, а в IOB взводится coil с адресом 1 `
                                            В modbus есть два типа адресации. Прямые адреса от 0 до 65536 плюс тип регИстра или так называемые Aliases: например Coils от 1 до 1000

                                            Потом есть устройства, где адреса перевернуты при Aliases, а где нет.

                                            Вопрос: Aliases или нет.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            438
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            25
                                            174
                                            49364
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo