Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Gerät R4AVA07 Modbus mit Waveshare eibninden

    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

    Gerät R4AVA07 Modbus mit Waveshare eibninden

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

      Hallo zusammen,

      habe mit Modbus noch nie etwas gemacht und bekomme es einfach nicht ans laufen...
      Ich möchte das R4AVA07 in den iobroker bekommen.

      Ich habe eine Waveshare RS232/485 to ETH im Netzwerk.
      71c406b3-4473-42d4-b8a8-870509884c51-grafik.png

      Die Iobroker Modbus einstellung sieht so aus.
      311fe145-967d-47e2-83f7-391c80f3eadf-grafik.png

      Das Gerät hat soweit eine Verbindung, habe dies auch mittels einem Modbus Tool getestet, das R4AVA07 antwortet in dem Modbus Tool auch.

      Es scheitert einfach an den Eingangsregister Einstellungen im Modbus Adapter.
      Vom R4AVA07 gibt es eine Anleitung, dort sind die ganzen Register wie es scheint in HEX.
      Link zur Anleitung

      Ich habe keine Ahnung was ich bei den Eingangsregistern eingeben muss.

      Function code 0x03
      Register address:0x0000-0x0006, Indicates 1-7 channel value
      Read number:0x0001-0x0007
      The return of the Voltage value is two bytes,High-bit in the former and low-bit
      in the post,convert it to decimal and divided by 100, is the Voltage value, Unit
      0.01V; for example:
      

      Habe schon viel gelesen, gesucht und probiert.
      Komme einfach nicht drauf wie man das umlegt.
      Vor allem weiß ich auch nicht ob ich dann unsigned16bit (big endian), float, string,double oä. einstellen muss...

      Vielleicht kennt sich hier jemand mit Modbus so Gut aus dass er es einem Modbus Laien auch Laienhaft erklären kann damit ich mit komme und für die Zukunft etwas schlauer bin 😊

      Danke!
      LG Alex

      K 1 Reply Last reply Reply Quote 0
      • K
        KampfHund @KampfHund last edited by

        Servus!

        Wirklich niemand der helfen kann? 😩

        1 Reply Last reply Reply Quote 0
        • K
          KampfHund last edited by

          😧

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active last edited by mickym

            Schau mal - ich glaube ich habe hier sowas ähnliches mit NodeRed unterstützt.

            Auch wenn Du den modbus Adapter verwendest - kannst Du evtl NodeRed als Logikmaschine nutzen. Ich selbst habe kein Modbus und kenne weder die Nodes noch den Modbus Adapter. Aber hier war zum Beispiel wie man einen Float Wert umwandeln muss, dass es Modbus versteht.

            Ansonsten hat Steve (ist zwar Node Red Guru) auch in JS gezeigt, wie Du Werte über die Zerlegung in das high und low Array in Modbus schreibst.
            6517b566-b035-41a7-8c82-4db693032fdd-image.png

            Deswegen schau Dir mal diesen Thread an: https://forum.iobroker.net/topic/65273/node-red-modbus und dann das Javascript von Steve: https://stevesnoderedguide.com/modbus-writing-data

            Der hat ein paar Beispiele, wie Du bestimmte Werte konvertieren musst.

            Für mich sieht das so aus:

            The return of the Voltage value is two bytes,High-bit in the former and low-bit
            in the post,convert it to decimal and divided by 100, is the Voltage value, Unit
            

            dass Du hier genau den Weg rückwärts machen mußt.

            Ich hab hier mal einen Flow der Konvertierung vor und rückwärts gemacht:
            1012a9e6-6fd3-4f91-8d0f-e3eadca9728c-image.png

            Sprich Du musst die beiden Bytes wieder in einen Buffer umwandeln.

            Ich hab mal das was in dem Flow rückkonvertiert wurde in JS umgesetzt:

            var highByte = 17096;
            var lowByte = 0;
            var buf0 = Buffer.alloc(2);
            var buf1 = Buffer.alloc(2);
            buf0.writeUint16BE(highByte);
            buf1.writeUint16BE(lowByte);
            
            var buf = Buffer.concat([buf0,buf1]);
            
            console.log (buf);
            var n = buf.readFloatBE(0);
            
            console.log (n);
            

            97d55b45-2101-4e61-a2fe-902069919271-image.png

            Damit hast du dann die Dezimalzahl die Du durch 100 teilen musst - oder was auch immer.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            970
            Online

            31.9k
            Users

            80.2k
            Topics

            1.3m
            Posts

            2
            4
            290
            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