Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: 19001030: Modbus TCP Master Read

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Helyx
    antwortet
    Hallo zusammen,

    ich bemühe mich schon seit längerem von meiner Wärmepumpe Daten über ModbusTCP zu erhalten (ist ne Heliotherm).
    Ich habe die Doku der WP und mit QModMaster kann ich auch alle Werte/Register wunderbar einlesen.
    Gerne würde ich auch direkt Werte schreiben um zB bei PV-Strom das Warmwasser zu produzieren etc.
    image_79282.png

    Der WP Hersteller schreibt:

    Lesezugriff
    Etwas weiter hinten befindet sich die Liste der auszulesenden Register. Diese können mit dem Funktions-
    code 04 (Read Input Registers) oder 03 (Read Holding Registers) ausgelesen werden.
    Bei Verbindungsproblemen mit Modbus RTU ist dafür Sorge zu tragen, dass das Abfrageintervall pro
    Register/Wert erhöht wird (z.B. auf 500ms pro Register/Wert). Bei einem Verbindungsabbruch muss der
    Modbus-Server / Master einen Re-Connect mit dem RCG X initialisieren.
    Schreibzugriff
    Über den Schreibzugriff kann die Wärmepumpe gesteuert werden. Etwas weiter hinten befindet sich die
    Liste der zu schreibenden Register. Diese können mit dem Funktionscode 06 (Write Single Register) be-
    schrieben oder mit dem Funktionscode 03 (Reas Holding Registers) gelesen werden.
    Bei einem Verbindungsabbruch muss der Modbus-Server / Master einen Re-Connect mit dem RCG X
    initialisieren. Die Register sollten prinzipiell zyklisch, aber nicht schneller als in einem 5 Sekunden- Intervall
    beschrieben werden.
    Im Anhang das logfile von PHPModbus. Leider schaffe ich es nicht die Werte einzulesen.
    LBS sieht so aus:
    lbs.PNG
    Das generierte Logfile hat den folgenden Inhalt:
    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
     	 		[TR]
     			[TD]Zeitstempel[/TD]
     			[TD]ms[/TD]
     			[TD]PID[/TD]
     			[TD]LogLevel[/TD]
     			[TD]Meldung[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]259565[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: START ModbusMaster Exec[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]260904[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: v3:9;13;17;21;25[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261169[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: inputs:[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261214[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: ================ ARRAY/OBJECT START ================[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261260[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: ["9","13","17","21","25"][/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261295[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: ================ ARRAY/OBJECT END ================[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261564[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: i:0; input:9; address:10; length:1; type:0[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]261820[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: Status:<pre></pre>[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]262068[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: i:1; input:13; address:12; length:1; type:0[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]262315[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: Status:<pre></pre>[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]262562[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: i:2; input:17; address:50; length:1; type:0[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]262808[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: Status:<pre></pre>[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]263058[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: i:3; input:21; address:14; length:1; type:0[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]263305[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: Status:<pre></pre>[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]263549[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: i:4; input:25; address:15; length:1; type:0[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]263793[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: Status:<pre></pre>[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]264234[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: end of delay[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:14[/TD]
     			[TD]264962[/TD]
     			[TD]28832[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: STOP ModbusMaster EXEC[/TD]
     		[/TR]
     		[TR]
     			[TD]2018-12-30 21:25:19[/TD]
     			[TD]324992[/TD]
     			[TD]28865[/TD]
     			[TD]debug[/TD]
     			[TD]EXE19001030 [v0.5]: START ModbusMaster Exec[/TD]
     		[/TR]
     	 [/TABLE]
    Vielen Dank und einen guten Rutsch ins neue Jahr vom Bodensee!

    Einen Kommentar schreiben:


  • powell
    antwortet
    Oh super. Vielen Dank!

    Gruß
    Patrick

    Einen Kommentar schreiben:


  • ruuud
    antwortet
    Hier die Videoanleitung dazu: (meine Erste ) powell


    MfG Rudi

    Einen Kommentar schreiben:


  • ruuud
    antwortet
    Danke für den Baustein, habe es gerade geschafft eine Siemens Logo 0BA8.FS4 damit an Edomi anzubinden.

    Bei Interesse kann ich eine Anleitung dazu machen.

    MfG Rudi

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    prima, danke, Thomas. V0.4 steht zum DL - und sollte auch erst einmal stabil bleiben, wenn es nicht weitere Bugs gibt.

    Einen Kommentar schreiben:


  • kobza
    antwortet
    Kürze Rückmeldung, alle Werte werden jetzt richtig umgewandelt.
    Grüße
    Thomas

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Zitat von uzi10 Beitrag anzeigen
    wir müssen in einigen Monaten weiter reden
    ..alles klar...hier werde hier sein...

    Zitat von kobza Beitrag anzeigen
    V0.3 läuft bei mir ohne Probleme (auch mit dem |-Delimiter), freue mich dass ich helfen konnte :-)
    Hey Thomas, das freut mich. Lass' uns beide morgen noch mal schauen, wenn die Geräte wieder messbare Energie abwerfen und dann am besten mal Register von jedem Typ. Wenn Das gut aussieht, dann dürfte V0.3 erst einmal passen...

    Viele Grüße,
    Carsten

    Einen Kommentar schreiben:


  • uzi10
    antwortet
    Zitat von saegefisch Beitrag anzeigen
    kannst Doku zuliefern?
    * Also Input (Register + Format + Datentyp) für einen/Deinen WR.
    * Ausgabe, also die dazugehröigen Infos, die ich in der Hilfe auch notiert habe, Länge, Nachkommastellen,..., um damit die Logik anzupassen.

    Wenn Du das halbwegs mundgerecht aufbereitest, schau ich mal... Vielleicht ist ja auch vieles ähnlcih und es ergäbe mehr Sinn, nur den Input vorab in Excel von Fronius -&gt; SMA umzusetzen. Dann wäre es doch gänzlich generisch...

    Also: Schau Dir mal die Beispiel-Input-Zeilen in der Hilfe an und suche mal bei Fronius das Gegenstück.

    -----
    Nachtrag: Hier scheint doch alles notwendige zu stehen:
    http://www.fronius.com/~/downloads/S...410%2C2049.pdf

    Zu den Datentypen steht was auf Seite 17.
    Und aus dieser Zeile auf Seite 30:
    40092 40093 2 R 0x03 W float32 W AC Power value

    würde ich mal den Aufruf mit meinem LBS zu Deinem Fronius WR an E9 mit dieser einen Zeile versuchen:
    40092;AC Power value;S32;FIX0;W;RO

    Vielleicht kommt schon was und im besten Fall sogar das richtige...

    Bitte gib' mir dann mal Rückmeldung. Wenn es am Ende nur eine etwas geänderte Eingangsstruktur und vielleicht etwas andere Zahlenformate/Datentypen sind...Am Ende könnte man noch einen EIngang E11 für den Hersteller ergänzen und vielleicht SMA, Fronius und andere damit abdecken. Denk' ich dann mal drüber nach, wenn wir die Unterschiede abschätzen können...
    hab den Wechselrichter noch nicht montiert und fürs Edomi dauerds auch noch ein bisschen... wir müssen in einigen Monaten weiter reden

    Einen Kommentar schreiben:


  • kobza
    antwortet
    V0.3 läuft bei mir ohne Probleme (auch mit dem |-Delimiter), freue mich dass ich helfen konnte :-)
    Und danke noch mal für den Baustein.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Lieben Dank, Thomas!
    Ich habe das mal in V0.3 eingebaut und meine Tests sahen damit gut aus (bei mir unverändert...), aber bei Dir und anderen wird es hoffentlich den gewünschten Fortschritt bringen. Vielleicht hatt eich mit meinen Regsitern und Werten bislang nur zufällig Glück... Auf jeden herzelichen Dank, ob ich auf diese Ursache/Lösung so schnell gekommen wäre, bezweifle ich mal...

    In V03 kann man nun auch E9 einzeilig bewirtschaften, wenn man den Zeilenumbruch durch den |-Delimiter ersetzt (z.B. via String-Verbinder). Ist auch in der Hilfe mit einem Beispiel notiert.

    --> V0.3 ist im DL-Bereich. Bitte mal prüfen und wenn Du positiv Rück meldest, hinterlasse ich auch zusätzlich im richtigen Thema eine "offizielle" Info über die neue Version V0.3

    Einen Kommentar schreiben:


  • kobza
    antwortet
    Ich konnte das Problem beheben

    Code:
    30535 | U32 | FIX0 | | [0,0,185,4] | HEX: 0000b904 | RAW: 47364 | Daily yield ==> 47364 | 47364Wh
    Jetzt werden auf die 1 Digit Zahlen mit einer führenden '0' umgewandelt.
    Das Problem ist die dechex Funktion diese wandelt ohne die '0'

    Hier meine Änderung in Deinem LBS (als Bsp. für U32)

    Code:
        
    //foreach($recData AS $p) { $hex .= dechex($p); }
      foreach($recData AS $p) { $hex .= sprintf('%02x', $p); }
    Gruß
    Thomas
    Zuletzt geändert von kobza; 11.05.2018, 15:51.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Das ist auf jeden Fall schon mal eine gute Nachricht, Danke!
    In Der Hoffnung, dass Michael (@gulp2k) irgendwann Zeit findet, den Include-Teil schlank und schön selber zu bauen, wird sich das leidige Thema hoffentlich gänzlich auflösen.

    Wegen der mehreren Werte...einfach mehrzeilig eingeben, also die drei Zeilen ob aus meiner #143 z.B. im LiveView in E9. Habe das allerdings bei mir über ein KO gelöst, die Werte aber letztlich genau so hinein kopiert. Dabei sind beide Formate (TAB oder ; ) erlaubt und auch Leerzeilen. Nur die Spaltenreihenfolge muss natürlich für alle gleich sein.

    1.PNG

    Zu deinem letzten Thema: Muss ich mir anschauen...

    Nachtrag zu "mehrere Register": Tatsächlich ist es so manchmal hakelig. Werde noch ein Zeichen ermöglichen als Zeilenumbruch, damit man es auch einfach einzeilig eingeben kann...
    Zuletzt geändert von saegefisch; 11.05.2018, 11:10. Grund: Nachtrag

    Einen Kommentar schreiben:


  • kobza
    antwortet
    Vielen Dank, jetzt klappt es wahrscheinlich lag es an dem ModBusMaster (damit ist das eine Problem behoben)

    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
    [TR]
    [TD]2018-05-11 10:23:42[/TD]
     			[TD]549305[/TD]
     			[TD]14468[/TD]
     			[TD]7-info |7[/TD]
     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,215] | HEX: 001dd7 | RAW: 7639 | Power ==> 7639 | 7639W (81)[/TD]
     		[/TR]
    [TR]
    [TD]2018-05-11 10:23:52[/TD]
     			[TD]625545[/TD]
     			[TD]14468[/TD]
     			[TD]7-info |7[/TD]
     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,216] | HEX: 001dd8 | RAW: 7640 | Power ==> 7640 | 7640W (81)[/TD]
     		[/TR]
    [TR]
    [TD]2018-05-11 10:24:02[/TD]
     			[TD]708920[/TD]
     			[TD]14468[/TD]
     			[TD]7-info |7[/TD]
     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,214] | HEX: 001dd6 | RAW: 7638 | Power ==> 7638 | 7638W (81)[/TD]
     		[/TR]
    [/TABLE]
    Was ich nicht nicht verstanden habe wie kriege ich mehrere (verschiedene) Register

    Code:
    30775;Power;S32;FIX0;W;RO;;30953;Internal temperature;S32;TEMP;°C;RO;;
    damit bekomme ich nur Power

    Ein Problem gibt es noch sehe ich gerade
    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
    [TR]
    [TD]018-05-11 10:29:21[/TD]
     			[TD]779345[/TD]
     			[TD]14939[/TD]
     			[TD]7-info |7[/TD]
     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,27,9] | HEX: 001b9 | RAW: 441 | Power ==> 441 | 441W (81)[/TD]
     		[/TR]
    [/TABLE]
    Wenn der Dez Wert nur ein Stellig ist ist die Umwandlung falsch
    ist 0x01b9 sollte sein 0x1b09.




    Gruß
    Thomas


    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    So, jetzt scheint die Sonne wieder...
    Hiermit teste ich mal (mit V0.2)
    Code:
    30529    Total yield    U32    FIX0    Wh    RO
    30535    Daily yield    U32    FIX0    Wh    RO
    30775;Power;S32;FIX0;W;RO;;
    und das kommt bei LogLevel 7 heraus:
    Code:
    EXE19001580 [v0.2]: WR-7000 | 30529 | U32 | FIX0 | 0 | [1,130,87,88] | HEX: 1825758 | RAW: 25319256 | Total yield ==> 25319256 | 25319256Wh (1643)
    EXE19001580 [v0.2]: WR-7000 | 30535 | U32 | FIX0 | 0 | [0,0,7,243] | HEX: 007f3 | RAW: 2035 | Daily yield ==> 2035 | 2035Wh (1643)
    EXE19001580 [v0.2]: WR-7000 | 30775 | S32 | FIX0 | | [0,0,7,148] | HEX: 00794 | RAW: 1940 | Power ==> 1940 | 1940W (1643)

    TotalYield passt mit SunnyPortal in der Größe überein (zu meinem 7000er):
    Geräteeigenschaften --> Zählerstand Gesamtertrag: 25.319,29 kWh (11.05.2018 09:05 Uhr)

    Sieht also erst einmal korrekt aus. Bin gespannt, was sich bei Dir mit dem anderen ModBusMaster-Include ergibt...

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Hm, bin ein wenig ratlos - weil mein 7000 liefert mir für
    Code:
    30529    Total yield    U32    FIX0    Wh    RO
    wunderbar Daten. Daily Yield ist nach 0:00 halt leer...
    Eigentlich kann es nur noch an der verwendeten Include-PHP-Datei liegen - dazu gesitern ja unterschiedliche Versionen herum. Da es eine Weil eher ist, dass ich die auf meinem edomi ablegte, kann ich Dir gerade gar nicht mehr sagen, aus welcher Quelle ich die damals holte (andere LBS vermutlich, aber 19001030 wohl nicht, den dort scheint es jetzt eine andere zu sein). Auf jeden Fall liefert sie bei mir Daten. Ein Test wär's wert oder? Vielleicht legst Du Sie einfach mal neben Deiner ab und änderst kurz im LBS den Include-Pfad für einen Test.

    Habe gerade eine V0.2 hoch geladen
    * Analyse nun besser, weil nun schon mit LogLevel 7 die Werte kommen und erst mit 6 nicht mehr. Da bei LogLevel 8 der ganze ERROR-Krams vom Include das log flutet, ist das jetzt besser nutzbar. 8 ist nur noch zur Not...
    * Zudem zwei Bugs entfernt. (die man aber nur mit logLevel 8 sah...)
    * Im ZIP ist jetzt die von mir verwendete ModBus-Include-Datei enthalten (sie ist rund 39kB groß)
    Zuletzt geändert von saegefisch; 11.05.2018, 01:01.

    Einen Kommentar schreiben:

Lädt...
X