Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Русский
  3. ioBroker
  4. ioBroker драйвера
  5. Драйвер ModBus

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Драйвер ModBus

Geplant Angeheftet Gesperrt Verschoben ioBroker драйвера
174 Beiträge 25 Kommentatoren 54.5k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • aurodionovA Offline
    aurodionovA Offline
    aurodionov
    schrieb am zuletzt editiert von
    #129

    Тогда возможно не хватает прав, у меня иоброкер бегает от рута

    Пишу с пульта….

    Пишу с пульта….

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      sv102
      schrieb am zuletzt editiert von
      #130

      @aurodionov:

      Тогда возможно не хватает прав, у меня иоброкер бегает от рута

      Пишу с пульта…. `
      Не безопасно конечно, но запущено от рута. Как же заставить ioBroker видеть usb? :roll: :cry:
      2244_2017-02-26_00-04-30.jpg

      1 Antwort Letzte Antwort
      0
      • aurodionovA Offline
        aurodionovA Offline
        aurodionov
        schrieb am zuletzt editiert von
        #131

        Попробуй подключиться к этому порту терминалом, может порт чем-то занят

        Пишу с пульта….

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          MSapogov
          schrieb am zuletzt editiert von
          #132

          Попробуй перезапустить драйвер…

          У меня разрешает выбор COM порта только когда драйвер запущен.

          А на Опельсинке вообще никогда проблем не было с выбором COM порта (Armbian 5.20)

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            Adav
            schrieb am zuletzt editiert von
            #133

            При попытке установить драйвер вылетает ошибка в логе:

            ` > ERR!

            Tried to download: https://github.com/voodootikigod/node-s … a32.tar.gz `

            По данной ссылке действительно ничего нет, при этом в более новой версии node-serialport (4.0.7) присутствует архив ia32. Что с этим можно сделать?

            1 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #134

              @Adav:

              При попытке установить драйвер вылетает ошибка в логе:

              ` > ERR!

              Tried to download: https://github.com/voodootikigod/node-s … a32.tar.gz `

              По данной ссылке действительно ничего нет, при этом в более новой версии node-serialport (4.0.7) присутствует архив ia32. Что с этим можно сделать? `
              Это стандартный метод установки. Сначала установщик пытается скачать предкомпилированную версию для системы. И если система экзотическая, то пытается собрать из исходников сам.

              Для этого нужно установить соответсвующие apt-get пакеты.

              Исходя из того что для windows бинарные версии существуют, то значит у тебя linux.

              Нужно сначала установить

              sudo apt-get install build-essential

              и потом установить iob драйвер от рута.

              И запускать его тоже надо от рута

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                Adav
                schrieb am zuletzt editiert von
                #135

                Да, Debian 8 32-bit.

                build-essential уже стоял, использую root, других пользователей не заводил, драйвера наверное тоже запускаются от root, или я что-то не так понимаю? В admin интерфейсе просто пытаюсь ставить modbus… или надо как-то принудительно из командной строки?

                1 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #136

                  @Adav:

                  Да, Debian 8 32-bit.

                  build-essential уже стоял, использую root, других пользователей не заводил, драйвера наверное тоже запускаются от root, или я что-то не так понимаю? В admin интерфейсе просто пытаюсь ставить modbus… или надо как-то принудительно из командной строки? `
                  Ну в целях эксперимента попробуй установить из командной строки

                  cd /opt/iobroker
                  sudo npm i iobroker.modbus
                  

                  При ошибке должен появится npm-debug.log в /opt/iobroker. Было бы интересно его посмотреть.

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    Adav
                    schrieb am zuletzt editiert von
                    #137

                    Попробовал. Cначала удалил в админе старую установку modbus, потом установил из строки. Вроде установилось. Никаких сообщений об ошибках в консоли не увидел, в логах админа вообще пусто, npm-debug.log не появился. Но… захожу в админ - закладки "драйвера" - вижу установленный modbus adapter, захожу в закладку "настройки драйверов" - там нет modbus. Когда до этого игрался с этим делом - обнаружил, что именно так и бывает с версией 0.5.2, а вот если поставить ее поверх 0.5.0 - то нормально. Видимо в свежей версии есть в этой части ошибки.

                    Пробую еще раз, но теперь из админа. Удаляю драйвер, ставлю 0.5.2 с github - установилось на этот раз без ошибок (node-serialport сохранился от установки через консоль?), но с настройками драйвера все та же беда. Еще раз удаляю драйвер и на этот раз ставлю в админе версию 0.5.0 - повторяется ошибка с node-serialport-ia32 (разные версии modbus смотрят в разные каталоги?), но при этом а настройках драйверов появляется modbus. Ставлю через админ (обновляю) драйвер с github на версию 0.5.2 - ошибок с ia32 нет (в этот раз увидела сохраненное от установки через строку?), в настройках драйверов modbus сохранился.

                    Надеюсь, что заработает, проверить смогу не скоро, когда прибудет из Китая новое modbus устройство, те что есть не хочу отключать пока от существующего контроллера. Будут проблемы - отпишусь. А пока на лицо помимо ошибки с ia32 (как видим преодолимо через строку), так и ошибки в новой версии с настройками драйверов.

                    Кстати, node-serialport используется не совсем свежий по каким-то важным причинам?

                    1 Antwort Letzte Antwort
                    0
                    • BluefoxB Offline
                      BluefoxB Offline
                      Bluefox
                      schrieb am zuletzt editiert von
                      #138

                      @Adav:

                      Попробовал. Cначала удалил в админе старую установку modbus, потом установил из строки. Вроде установилось. Никаких сообщений об ошибках в консоли не увидел, в логах админа вообще пусто, npm-debug.log не появился. Но… захожу в админ - закладки "драйвера" - вижу установленный modbus adapter, захожу в закладку "настройки драйверов" - там нет modbus. Когда до этого игрался с этим делом - обнаружил, что именно так и бывает с версией 0.5.2, а вот если поставить ее поверх 0.5.0 - то нормально. Видимо в свежей версии есть в этой части ошибки. `
                      Надо просто выполнить

                      iobroker upload modbus
                      iobroker add modbus
                      

                      @Adav:

                      Пробую еще раз, но теперь из админа. Удаляю драйвер, ставлю 0.5.2 с github - установилось на этот раз без ошибок (node-serialport сохранился от установки через консоль?), но с настройками драйвера все та же беда. Еще раз удаляю драйвер и на этот раз ставлю в админе версию 0.5.0 - повторяется ошибка с node-serialport-ia32 (разные версии modbus смотрят в разные каталоги?), но при этом а настройках драйверов появляется modbus. Ставлю через админ (обновляю) драйвер с github на версию 0.5.2 - ошибок с ia32 нет (в этот раз увидела сохраненное от установки через строку?), в настройках драйверов modbus сохранился.

                      Надеюсь, что заработает, проверить смогу не скоро, когда прибудет из Китая новое modbus устройство, те что есть не хочу отключать пока от существующего контроллера. Будут проблемы - отпишусь. А пока на лицо помимо ошибки с ia32 (как видим преодолимо через строку), так и ошибки в новой версии с настройками драйверов. `
                      @Adav:

                      Кстати, node-serialport используется не совсем свежий по каким-то важным причинам? `
                      Новый serialport ломает поддержку 0.12.x node.js версий

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        Adav
                        schrieb am zuletzt editiert von
                        #139

                        Был немного занят другими делами…

                        @Bluefox:

                        Надо просто выполнить

                        iobroker upload modbus
                        iobroker add modbus
                        ```` `  
                        

                        После этого действительно появляется modbus последней версии в настройках, но вот в процессе опять появляется та же ошибка:

                        root@ioBroker:/opt/iobroker# iobroker add modbus

                        host.ioBroker install adapter modbus

                        npm install –production (System call) in "/opt/iobroker/node_modules/iobroker.modbus"

                        node-pre-gyp ERR! Tried to download: https://github.com/voodootikigod/node-s ... a32.tar.gz

                        node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                        Я правильно понимаю, что в итоге node-serialport так и не ставится на моей версии linux?

                        Попробовал еще на Orange Pi Zero с Armbian - та же проблема:

                        ERR! Tried to download(404): https://github.com/EmergingTechnologyAd ... arm.tar.gz node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.7 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                        Но вот почему-то лезет уже к свежей версии. Хотя Вы говорили выше, что нужна старая... ничего не понимаю :(

                        build-essential здесь также установлен.

                        1 Antwort Letzte Antwort
                        0
                        • BluefoxB Offline
                          BluefoxB Offline
                          Bluefox
                          schrieb am zuletzt editiert von
                          #140

                          @Adav:

                          Был немного занят другими делами…

                          @Bluefox:

                          Надо просто выполнить

                          iobroker upload modbus
                          iobroker add modbus
                          ```` `  
                          

                          После этого действительно появляется modbus последней версии в настройках, но вот в процессе опять появляется та же ошибка:

                          root@ioBroker:/opt/iobroker# iobroker add modbus

                          host.ioBroker install adapter modbus

                          npm install –production (System call) in "/opt/iobroker/node_modules/iobroker.modbus"

                          node-pre-gyp ERR! Tried to download: https://github.com/voodootikigod/node-s ... a32.tar.gz

                          node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                          Я правильно понимаю, что в итоге node-serialport так и не ставится на моей версии linux?

                          Попробовал еще на Orange Pi Zero с Armbian - та же проблема:

                          ERR! Tried to download(404): https://github.com/EmergingTechnologyAd ... arm.tar.gz node-pre-gyp ERR! Pre-built binaries not found for serialport@4.0.7 and node@4.8.1 (node-v46 ABI) (falling back to source compile with node-gyp)

                          Но вот почему-то лезет уже к свежей версии. Хотя Вы говорили выше, что нужна старая... ничего не понимаю :(

                          build-essential здесь также установлен. `
                          Это только надпись. А устанавливать все равно должен.

                          1 Antwort Letzte Antwort
                          0
                          • A Offline
                            A Offline
                            Adav
                            schrieb am zuletzt editiert von
                            #141

                            @Bluefox:

                            Это только надпись. А устанавливать все равно должен. `

                            Понятно. Надеюсь заработает, когда будет с чем попробовать. А что на счет версий? Почему на разных железках пытается ставиться разные версии? Как это соответствует Вашему утверждению, что нужна старая?

                            1 Antwort Letzte Antwort
                            0
                            • K Offline
                              K Offline
                              kab1561
                              schrieb am zuletzt editiert von
                              #142

                              Доброго времени суток всем!

                              Пытаюсь использовать драйвер Modbus для работы с самосборным контроллером, работающим по протоколу Modbus RTU.

                              Настроил драйвер на опрос holdingRegisters. Опрос ведется, данные с контроллера принимаются - проблем нет. Как я понимаю, здесь драйвер использует функцию 03 (Read Holding Registers) протокола Modbus.

                              Но, я пока так и не понял, как записать из ioBroker какие-нибудь данные в единичный регистр контроллера.

                              Это вообще возможно?

                              Сейчас драйвер Modbus каким-либо образом может использовать функции 06 (Preset Single Register) и 16 (Preset Multiple Regs)? Если может, то как?

                              1 Antwort Letzte Antwort
                              0
                              • BluefoxB Offline
                                BluefoxB Offline
                                Bluefox
                                schrieb am zuletzt editiert von
                                #143

                                @kab1561:

                                Доброго времени суток всем!

                                Пытаюсь использовать драйвер Modbus для работы с самосборным контроллером, работающим по протоколу Modbus RTU.

                                Настроил драйвер на опрос holdingRegisters. Опрос ведется, данные с контроллера принимаются - проблем нет. Как я понимаю, здесь драйвер использует функцию 03 (Read Holding Registers) протокола Modbus.

                                Но, я пока так и не понял, как записать из ioBroker какие-нибудь данные в единичный регистр контроллера.

                                Это вообще возможно?

                                Сейчас драйвер Modbus каким-либо образом может использовать функции 06 (Preset Single Register) и 16 (Preset Multiple Regs)? Если может, то как? `
                                Для записи используется 16 если длина адресов больше 1 и

                                6 если нужно считать только один адрес.

                                А что не работает?

                                1 Antwort Letzte Antwort
                                0
                                • K Offline
                                  K Offline
                                  kab1561
                                  schrieb am zuletzt editiert von
                                  #144

                                  @Bluefox:

                                  Для записи используется 16 если длина адресов больше 1 и

                                  6 если нужно считать только один адрес.

                                  А что не работает? `

                                  Я понимаю, что для Вас это "азы", но я просто не могу "въехать" в логику обработки событий ioBroker.

                                  В моем случае ioBroker получает от удаленного контроллера данные из 17 Holding Registers (в драйвере Modbus они описаны как 40001 … 40017). У этого контроллера есть один входной регистр (Preset Single Register), если записать в него какое-либо шестнадцатиричное число, то он исполняет сооветствующие команды.

                                  К примеру, я хочу, чтобы при появлении значения 280 в 40002 Holding Registers ioBroker отправлял значение 4 (0x4) в указанный Single Register контроллера посредством функции 06 (Preset Single Register) протокола Modbus. Как мне это реализовать в ioBroker?

                                  Какие драйверы кроме Modbus необходимо установить для реализации этого?

                                  И, если подобную логику кто-то делал - то где можно об этом почитать?

                                  1 Antwort Letzte Antwort
                                  0
                                  • BluefoxB Offline
                                    BluefoxB Offline
                                    Bluefox
                                    schrieb am zuletzt editiert von
                                    #145

                                    @kab1561:

                                    @Bluefox:

                                    Для записи используется 16 если длина адресов больше 1 и

                                    6 если нужно считать только один адрес.

                                    А что не работает? `

                                    Я понимаю, что для Вас это "азы", но я просто не могу "въехать" в логику обработки событий ioBroker.

                                    В моем случае ioBroker получает от удаленного контроллера данные из 17 Holding Registers (в драйвере Modbus они описаны как 40001 … 40017). У этого контроллера есть один входной регистр (Preset Single Register), если записать в него какое-либо шестнадцатиричное число, то он исполняет сооветствующие команды.

                                    К примеру, я хочу, чтобы при появлении значения 280 в 40002 Holding Registers ioBroker отправлял значение 4 (0x4) в указанный Single Register контроллера посредством функции 06 (Preset Single Register) протокола Modbus. Как мне это реализовать в ioBroker?

                                    Какие драйверы кроме Modbus необходимо установить для реализации этого?

                                    И, если подобную логику кто-то делал - то где можно об этом почитать? `
                                    Понятно, что было не понятно :D

                                    Тебе нужен Javascript драйвер и твой случай будет выглядеть так:
                                    48_2017-04-20_00_00_27-iobroker.admin.png

                                    Для этого можешь импортировать код отсюда.

                                    ! ````
                                    <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="6o:Z)o={6z!yNYw2%Q!u" x="63" y="63"><mutation items="1"></mutation>
                                    <field name="CONDITION">any</field>

                                    <value name="OID0"><shadow type="field_oid" id=";R*F2k/]wqu#aGAZo8d*"><field name="oid">modbus.0.holdingRegisters.1</field></shadow></value> 
                                    <statement name="STATEMENT"><block type="controls_if" id="WVf9W,,C2j?,BMc{mWKU"><value name="IF0"><block type="logic_compare" id="1,b~SR78igB..=oouJ5y"><field name="OP">EQ</field>
                                            <value name="A"><block type="on_source" id="9hE-J`4B{`*Xh^By3sZC"><field name="ATTR">state.val</field></block></value> 
                                            <value name="B"><block type="math_number" id="%n0=RkQG]^IJ=MjnabbD"><field name="NUM">280</field></block></value></block></value> 
                                        <statement name="DO0"><block type="control" id="-CL55G=Hr[UyJ5_p/xI]"><mutation delay_input="false"></mutation>
                                            <field name="OID">modbus.0.holdingRegisters.2</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE"><block type="math_number" id="T%[O)Rm:B`Uz=HGuP7W("><field name="NUM">4</field></block></value></block></statement></block></statement></block></xml> 
                                    
                                     ![48_2017-04-20_00_01_48-iobroker.admin.png](/assets/uploads/files/48_2017-04-20_00_01_48-iobroker.admin.png) 
                                    
                                    В моём примере читается регистр с адресом 1 и если там появляется 280, то пишется в регистр с адресом 2 значение 4.
                                    
                                    Или можно javascript:
                                    
                                    

                                    on({id: 'modbus.0.holdingRegisters.1', change: "any"}, function (obj) {
                                    if (obj.state.val === 280) setState("modbus.0.holdingRegisters.2", 4);
                                    });

                                    1 Antwort Letzte Antwort
                                    0
                                    • K Offline
                                      K Offline
                                      kab1561
                                      schrieb am zuletzt editiert von
                                      #146

                                      @Bluefox:

                                      Понятно, что было не понятно :D

                                      Или можно javascript:

                                      on({id: 'modbus.0.holdingRegisters.1', change: "any"}, function (obj) {
                                        if (obj.state.val === 280) setState("modbus.0.holdingRegisters.2", 4);
                                      });
                                      ```` `  
                                      

                                      Большое спасибо за пинок в нужном направлении!

                                      Никогда бы не подумал, что здесь необходимо для отправки контроллеру числа в его входной регистр указывать адрес Holding Registers. У меня была твердая убежденность, что это и логически и физически разные ячейки памяти Modbus контроллера. По крайней мере я в прошивке своего контроллера сделал именно такое разделение.

                                      Кстати, в моем случае Ваш скрипт не сработает совсем из-за неверной адресации регистров. Но работает следующий код, который и обрабатывает мой пример :

                                      on({id: 'modbus.0.holdingRegisters.40002', change: "any"}, function (obj) {
                                        if (obj.state.val == 280) setState("modbus.0.holdingRegisters.40001", 4);
                                      });
                                      
                                      1 Antwort Letzte Antwort
                                      0
                                      • A Offline
                                        A Offline
                                        Adav
                                        schrieb am zuletzt editiert von
                                        #147

                                        Добрался наконец попробовать modbus напрямую с ioBroker. Девайс имеет набор разных входов - AO-AI-DO-DI и подключен через TCP. Настройки драйвера оставлены по умолчанию. Адреса регистров девайса совпадают с адресами, назначаемыми драйвером ioBroker по умолчанию.

                                        ~~![](</s><URL url=)<link_text text="http://www.strict-con.com/product/pics/ ... 659916.jpg">http://www.strict-con.com/product/pics/20170131/201701311485849659916.jpg</link_text>" />

                                        Аналоговые входы-выходы (AI-AO), они же регистры входа и holding работают. А вот дискретные входы и выходы (регистры флагов) - никак не удалось заставить работать. Не отрабатываются изменения. Настроек там совсем мало, пробовал менять роль - никакой реакции. Что еще и где можно подкрутить?

                                        С контроллером WB5 сей девайс через 485 работает по всем входам-выходам нормально.

                                        И еще заметил странность - может работать довольно долго и стабильно, потом начинают в логах идти сообщения вроде

                                        warn Poll error count: 1 code: {"err":"timeout"}

                                        причем понять причину с чего вдруг это начинает происходить не удается, перезапуск драйвера помогает. Отчего может происходить такой сбой?~~

                                        1 Antwort Letzte Antwort
                                        0
                                        • A Offline
                                          A Offline
                                          Adav
                                          schrieb am zuletzt editiert von
                                          #148

                                          Разобрался с дискретными входами-выходами. Надо было поставить галку "использовать прямые адреса при alias". После этого увидел что адреса созданных ранее дискретных регистров уползли вверх на 8, адреса аналоговых - не изменились. После этого удалил то, что уползло и создал заново с правильными адресами. После чего дискретные входы-выходы заработали. Не понял в чем смысл alias и почему при этом изменяются адреса регистров, причем только дискретных.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          906

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe