Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Modbus Lesen und Schreiben auf Wago 750-881 [Gelöst]

    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 Lesen und Schreiben auf Wago 750-881 [Gelöst]

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

      Hallo

      ich bin ganz neu auf IoBroker gestossen. Inzwischen habe ich bereits auch schon so einige Sachen ausprobiert und bin nach einigen Ausprobieren auch erfolgreich gewesen. So habe ich zum Beispiel ESP8266 mit ESPMega per MQTT Protokoll auslesen können. Außerdem kann ich einen Sentron Pac Meßgerät per Modbus ausgelesen.

      Allerdings bin ich jetzt auf ein Problem gestoßen das ich bisher einfach nicht lösen kann.

      Ich habe bei mir Zuhause mehrere Wago Steuerungen 750-881 in Betrieb. Die Steuerungen kommunizieren untereinander per Modbus.

      Jetzt zu meinem Problem:

      • Wie kann ich einen Temperaturwert, den ich per MQTT mit IoBroker auslese per Modbus auf eine WagoSteuerung in die Adresse %MD100 schreiben?

      • Wie kann ich einen Binären Zustand aus der Wago auslesen, z.B. Die Adresse %MX0.4 ?

      Ich betreibe den IoBroker auf einem Raspberry 3b+

      Plattform: linux

      Die Architektur: arm

      CPUs: 4

      Geschwindigkeit: 1400 MHz

      Modell: ARMv7 Processor rev 4 (v7l)

      RAM: 927.1 MB

      System uptime: 1 T. 23:31:10

      Node.js: v8.12.0

      NPM: 4.6.1

      Adapter zählen: 228

      Uptime: 1 T. 23:31:06

      Als Adapter benutze ich :

      ModBus Version 2.09

      MQTT Version 2.03

      Es wäre schön wenn mir hier jemand helfen könnte.

      Schon mal vielen Dank im Voraus.

      Z 1 Reply Last reply Reply Quote 0
      • Dolomiti
        Dolomiti last edited by

        Hallo,

        ich gehe mal davon aus, dass die Temperatur via MQTT als Datenpunkt vorliegt. Ich habe mich mit MQTT noch nicht beschäftigt. Als nächstes musst du im Modbus-Adapter unter Holding-Register die Adresse in der Wago anlegen. Das Handbuch listet im Kapitel 12 die Registerbelegung auf. Wenn du also %MD100 beschreiben willst, musst die im ioBroker die Adresse 12488 bei Holding-Register anlegen. Erklärung hierzu:

        Laut Handbuch Merker ab 12288 beschreibbar. Da du Double-Werte schreiben willst sind dies immer 2 Register -> MD100 = 200 Register (Word) -> 12288+200 = 12488.

        Lesen ist ähnlich: Bei diskrete Eingänge die Adresse 12292 anlegen. Startadresse wieder 12288 + 4 (Merker 0.4).

        Man muss hier auf passen, da der Merkerbereich immer bei 12288 anfängt, also %MX0.1 ist ein binärer Merker ist aber genauso im %MW0 und %MD0 vorhanden. Dazu habe ich irgendwo mal eine Exceltabelle gefunden, die ich mal anhänge.

        Wenn du alle Datenpunkte angelegt hast musst du dir noch ein Skript schreiben welches bei Änderung der Temperatur diese auf das entsprechende Register schreibt. Geht vielleicht auch eleganter, aber ich bin nicht so der Skriptspezialist. Im https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#on–-subscribe-on-changes-or-updates-of-some-state steht etwas von

        To simply connect two states with each other, write:
        
        on('stateId1', 'stateId2');
        
        All changes of stateId1 will be written to stateId2.
        

        Gruß

        Thomas
        2411_wago-modbus-adressen.xlsx

        1 Reply Last reply Reply Quote 0
        • S
          stromer66 last edited by

          Vielen Dank für deine Tipps.

          Das mit dem Lesen klappt auch soweit jetzt, nur mit dem Schreiben hapert es noch.

          Das Skript mit dem der wert von MQTT in das Modbus Register geschrieben wird funktioniert, das habe ich mit Blockly erstellt.

          IoBroker scheint auch auf das richtige Register in Codesys zuzugreifen, nur überträgt er einfach nicht den Wert obwohl der Wert in der Objektliste auftaucht der geschrieben werden soll.

          Vielleicht kann mir ja jemand helfen.

          1 Reply Last reply Reply Quote 0
          • S
            stromer66 last edited by

            Hallo

            mal wieder ein Update.

            Lesen klappt eigentlich wunderbar, nur Schreiben bereitet mir immer mehr Probleme.

            Wenn ich die Adresse 12306 einfach händisch beschreibe wird der Wert sauber übertragen. Lasse ich mein Skript laufen wird mir zwar in der Objektansicht der Wert angezeigt und auch entsprechend aktualisiert (Ansicht Objekte) aber nicht zur Wago übertragen. Es passiert einfach nichts.Der zuletzt händisch übertragene Wert bleibt einfach stehen.

            Habe ich einen Denkfehler in meinem Skript (die Multiplikation mit 100 mache ich um die Kommastellen in eine ganze Zahl umzuwandeln, damit ich mit dem Datenformat klarkomme) oder liegt hier ein genereller Fehler vor.

            Außerdem kommt bei mir immer mehr die Frage auf was die ganzen Werte die ich in der Spalte "Rolle" einstellen kann für einen Sinn haben?

            Also Fragen über Fragen, ich hoffe mir kann jemand helfen.
            9326_codesys.jpg
            9326_iobroker_instanz.jpg
            9326_iobroker.jpg
            9326_iobroker_skript.jpg

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

              Nimm mal den Haken bei CW beim Register 12304 raus.

              1 Reply Last reply Reply Quote 0
              • S
                stromer66 last edited by

                Hallo das hat leider nichts gebracht.

                Ich habe jetzt mal alle Adressen auf die ich lesend zugegriffen habe auch mal gelöscht. Auch dann klappt es nicht.

                Langsam bin ich am Ende :?

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

                  Kannst du mal dein Blockly exportieren und hier posten. Ich probier das mal an meinem Testsystem aus.

                  Gruß

                  Thomas

                  1 Reply Last reply Reply Quote 0
                  • S
                    stromer66 last edited by

                    Also wenn ich den automatisch eingetragenen Wert in der Objektliste anklicke, so das ich ihn editieren könnte, wird er übertragen.

                    Also sieht es so aus als wenn ich die Übertragung aktivieren müsste.aber wie?????????

                    1 Reply Last reply Reply Quote 0
                    • S
                      stromer66 last edited by

                      Hallo

                      ich habe den Blockly exportiert.

                      <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">

                      <block type="on_ext" id="W0As]a,[q5I,{{RNGICx" x="-312" y="13"><mutation items="1"></mutation>

                      <field name="CONDITION">ne</field>

                      <value name="OID0"><shadow type="field_oid" id="K?bn+]ZoWWW]7WdJ,ITS"><field name="oid">mqtt.0.Bad_unten.Bad_unten.Luftfeuchtigkeit</field></shadow></value>

                      <statement name="STATEMENT"><block type="update" id="RNH(k;~btRWeOed(}lN}"><mutation delay_input="false"></mutation>

                      <field name="OID">modbus.2.holdingRegisters.12306_test</field>

                      <field name="WITH_DELAY">FALSE</field>

                      <value name="VALUE"><block type="math_arithmetic" id="|XBX5G581KA.nBxSoIH4"><field name="OP">MULTIPLY</field>

                      <value name="A"><shadow type="math_number" id="SRq./}*,tmVXrHBL?1CB"><field name="NUM">1</field></shadow>

                      <block type="get_value" id="c9mFy}GzM7deCQX5T`~n"><field name="ATTR">val</field>

                      <field name="OID">mqtt.0.Bad_unten.Bad_unten.Luftfeuchtigkeit</field></block></value>

                      <value name="B"><shadow type="math_number" id="@JW}_lm|{yc-mk]=I%"><field name="NUM">100</field></shadow></value></block></value></block></statement></block>

                      <block type="variables_get" id="a,:_/cb)XP]Xo#~c5RYs" x="-13" y="63"><field name="VAR">umrechnung</field></block></xml>

                      1 Reply Last reply Reply Quote 0
                      • S
                        stromer66 last edited by

                        Und hier nochmal als Screenshot
                        9326_blockly.jpg

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

                          So, es funktioniert. Habe mir mal den Code vom Blockly anzeigen lassen und den auf mein Testsystem angepasst.

                          on({id: 'modbus.0.inputRegisters.0_T_WZ_AI', change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            setState("modbus.1.holdingRegisters.770_ID129", (getState("modbus.0.inputRegisters.0_T_WZ_AI").val * 1), true);
                          });
                          

                          Mir ist aufgefallen, dass beim setState ein "true" dranhängt. Das ist lt. Doku der ack-Wert. Wenn ich das richtig verstehe denkt ioBroker, das der Wert geschrieben wurde. Habe den Code also als neues Skript angelegt und ",true" gelöscht. Damit funktioniert es.

                          Du musst nicht den Blockly-System-Baustein "aktualisiere" nehmern sondern "steuere". Damit geht es. Ich weiß nicht genau den Unterschied, da kann vllt. einer der anderen Experten weiterhelfen.

                          Gruß

                          Thomas

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

                            Habe die Erklärung für "steuere" und aktualisiere" gefunden

                            viewtopic.php?t=6902#p71565

                            1 Reply Last reply Reply Quote 0
                            • S
                              stromer66 last edited by

                              Vielen Dank für deine Bemühungen!!!!!!

                              Genau das war es. 😄

                              viele Grüße aus dem Norden

                              Uwe

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

                                Gern geschehen.

                                Kannst du den Titel noch um ein [Gelöst] vorne ergänzen.

                                Gruß aus dem Rheinland

                                Thomas

                                1 Reply Last reply Reply Quote 0
                                • Z
                                  Zimbl @stromer66 last edited by

                                  @stromer66 kannst du mir sagen, welche Konfiguration du genommen hast....bei der Wago und beim IOBroker ? Ich bekomme keine Verbindung zustande...von der Wago aus dem IOBroker kann ich lesen. Aber ich kann nichts auf die Wago schreiben...

                                  Vielen Dank

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  434
                                  Online

                                  31.9k
                                  Users

                                  80.3k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  3457
                                  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