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.
    • E
      electric69 last edited by

      @dito85:

      Bluefox, если есть возможность прикрути, очень нужная вещь. `
      +1

      Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU…

      1 Reply Last reply Reply Quote 0
      • V
        vtec last edited by

        @electric69:

        Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU… `
        По случаю достался? Или покупался. Если покупался, то для каких целей?

        1 Reply Last reply Reply Quote 0
        • E
          electric69 last edited by

          @vtec:

          @electric69:

          Через некоторое время планирую подключать в систему ПЛК63 ОВЕН, там только RS485/RS232 и ModBUS RTU… По случаю достался? Или покупался. Если покупался, то для каких целей?
          По случаю мне досталось много чего - типа ПЛК-100, сименс лого и прочего, но мне ничего не понадобилось пока((

          ПЛК-63 хочу использовать для управления отоплением в квартире.

          Корпус под модульку (у меня шкаф из http://cs-cs.net/shhity-dlya-elektriki-edf -панелей).

          Аналоговые входы 8 шт. - подключение термометров сопротивления (в теплые полы, на обратку, температура воздуха в помещении и пр.)

          Дискретные входы/выходы - управление насосами/задвижками.

          Аналоговые выходы - управление задвижками и приводами.

          Порта Ethernet нету.

          Но это только в планах))

          А пока есть железки с которыми можно потренироваться…
          4531_zwischenablage01.jpg

          1 Reply Last reply Reply Quote 0
          • F
            ford7 last edited by

            @electric69:

            По случаю мне досталось много чего - типа ПЛК-100, сименс лого и прочего, но мне ничего не понадобилось пока(( `
            Вот про сименс очень интересно что там "досталось", мне сейчас не хватает портов ввода для s7-1200, вдруг у вас без дела пылится?

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

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

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

                Всем привет!

                А есть хоть какая нибудь инструкция, как пользоваться этим драйвером? Никак не пойму.

                Есть шлюз MODBUS TCP - MODBUS RTU.

                Как передать значение 500 на устройство с ID 10 во 2 регистр?

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

                  Есть 4 типа регистров:

                  • бинарные read only

                  • бинарные read/write

                  • аналоговые регистры входа

                  • holding регистры.

                  О каких идёт речь? И какого типа аналоговый регистр: short, int32, float?

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

                    @Bluefox:

                    Есть 4 типа регистров:

                    • бинарные read only

                    • бинарные read/write

                    • аналоговые регистры входа

                    • holding регистры.

                    О каких идёт речь? И какого типа аналоговый регистр: short, int32, float? `

                    holding регистры.

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

                      @dimon:

                      @Bluefox:

                      Есть 4 типа регистров:

                      • бинарные read only

                      • бинарные read/write

                      • аналоговые регистры входа

                      • holding регистры.

                      О каких идёт речь? И какого типа аналоговый регистр: short, int32, float? `

                      holding регистры. `
                      Да… мини инструкции не хватает.

                      Собрал переходник Modbus TCP RTU RS-485 http://esp8266.ru/forum/threads/modbus- … erver.911/

                      Тоже думал осилю настройку драйвера методом тыка, но увы 😞

                      Программой QModBus подаю запрос (Подсмотрел тут http://www.iobroker.net/?page_id=4643&l … ModBus_RTU)

                      05 03 00 00 00 09

                      В ответ получаю 9 строк со значением состояний входов и датчиков.

                      При записи новых значений

                      05 06 00 02 значения, меняются.

                      Как теперь из запихнуть в IOB?

                      Вот кусок кода из arduin-ки

                      ! ````
                      #include <simplemodbusslave.h>
                      ! //////////////////// Макроопределения портов и настройки программы ///////////////////
                      #define TxEnablePin 13 // Tx/Rx пин RS485
                      #define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART)
                      #define Slave_ID 5 // Адрес Slave устройсва
                      ! enum
                      {
                      // just add or remove registers and your good to go...
                      // The first register starts at address 0
                      P0,
                      P1,
                      P2,
                      P3,
                      P4,
                      P5,
                      P6,
                      P7,
                      P8,
                      HOLDING_REGS_SIZE /// Это не удалять размер массива HOLDING_REGS.
                      //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров
                      //т.е. то же самое адресное пространство
                      };
                      !
                      unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array</simplemodbusslave.h>

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

                        @MSapogov:

                        @dimon:

                        @Bluefox:

                        Есть 4 типа регистров:

                        • бинарные read only

                        • бинарные read/write

                        • аналоговые регистры входа

                        • holding регистры.

                        О каких идёт речь? И какого типа аналоговый регистр: short, int32, float? `

                        holding регистры. `
                        Да… мини инструкции не хватает.

                        Собрал переходник Modbus TCP RTU RS-485 http://esp8266.ru/forum/threads/modbus- … erver.911/

                        Тоже думал осилю настройку драйвера методом тыка, но увы 😞

                        Программой QModBus подаю запрос (Подсмотрел тут http://www.iobroker.net/?page_id=4643&l … ModBus_RTU)

                        05 03 00 00 00 09

                        В ответ получаю 9 строк со значением состояний входов и датчиков.

                        При записи новых значений

                        05 06 00 02 значения, меняются.

                        Как теперь из запихнуть в IOB?

                        Вот кусок кода из arduin-ки

                        ! #include <simplemodbusslave.h> ! //////////////////// Макроопределения портов и настройки программы /////////////////// #define TxEnablePin 13 // Tx/Rx пин RS485 #define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART) #define Slave_ID 5 // Адрес Slave устройсва ! enum { // just add or remove registers and your good to go... // The first register starts at address 0 P0, P1, P2, P3, P4, P5, P6, P7, P8, HOLDING_REGS_SIZE /// Это не удалять размер массива HOLDING_REGS. //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров //т.е. то же самое адресное пространство }; ! unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array</simplemodbusslave.h> `
                        Если я правильно понимаю Modbus TCP RTU и Modbus over TCP разные протоколы. Драйвер поддерживает только Modbus over TCP.

                        1 Reply Last reply Reply Quote 0
                        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            886
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            25
                                            174
                                            49305
                                            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