Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Драйвер ModBus

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

      @Bluefox:

      Есть ещё такой пакет:

      https://www.npmjs.com/package/modbus-rtu

      Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port? `
      Bluefox, а для ModBUS RTU есть варианты? Он вроде только через RS485/RS232 не?

      А еще в документации к https://www.npmjs.com/package/modbus-rtu указано: NOTE! node-serialport doesn't support node 0.11.11+

      Т.е. с версией ноды 0.12.7 уже не будет работать…

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

        @electric69:

        @Bluefox:

        Есть ещё такой пакет:

        https://www.npmjs.com/package/modbus-rtu

        Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port? `
        Bluefox, а для ModBUS RTU есть варианты? Он вроде только через RS485/RS232 не?

        А еще в документации к https://www.npmjs.com/package/modbus-rtu указано: NOTE! node-serialport doesn't support node 0.11.11+

        Т.е. с версией ноды 0.12.7 уже не будет работать… `
        Я не углублялся, гдето читал что стабильной считают node 0.10… и даже вроде с установкой iobroker в node 0.12 были warning

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

          @electric69:

          @Bluefox:

          Есть ещё такой пакет:

          https://www.npmjs.com/package/modbus-rtu

          Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port? ****Bluefox****, а для ModBUS RTU есть варианты?
          Вроде как, ModBUS RTU over TCP (не путать с ModBUS TCP)

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

            @Bluefox:

            Есть ещё такой пакет:

            https://www.npmjs.com/package/modbus-rtu

            Но он только по последовательному порту. Я бы мог его прикрутить. У тебя RS485 на serial port `

            Bluefox, если есть возможность прикрути, очень нужная вещь. Конечно слать запросы RTU по TCP было бы удобнее, но и с COM портом пойдет. Можно преобразователь на крайний случай поставить.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            558
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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