Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: 19001030: Modbus TCP Master Read

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

  • Ing-Dom
    antwortet
    Zitat von DerSeppel Beitrag anzeigen
    Bei meinem Fronius gehts jetzt auch, mit einer kleinen Modifikation am LBS.
    Das Array mit dem Rückgabewert von $modbus->readMultipleRegisters muss "gedreht" werden:

    Code:
    $recData = $modbus->readMultipleRegisters($E[5]['value'], $E[$inputs[$i]]['value'], $E[$inputs[$i]+1]['value']);
    [B]$recData = array_reverse($recData);[/B]
    Dann klappt es mit:
    - Endianess = 0 (standard)
    - Registeradressen aus der Sunspec - 1, also z.B. 40093 statt 40094 für die Netzfrequenz
    magst du mir vielleicht mal einen Screeshot deiner Beschaltung des LBS für das Auslesen eines Fronius (Symo ?) WR zeigen?

    Ich bekomme es irgendwie nicht hin... und welche Optionen hast du im WR eingestellt bzgl Modbus?

    Einen Kommentar schreiben:


  • eckiiiii
    antwortet
    Hallo, da im SunSpec LBS Thread sich niemand meldet, probiere ich es hier beim Modbus nochmal:
    Der Baustein macht eigentlich genau, was er soll, jedoch müllt er mir den Fehler-Log voll:

    Habe die modbus phps aus dem Helios LBS benutzt.
    Hier die Logik:

    solaredge.jpg

    Diese Fehler kommen alle 3 Sekunden in den Fehlerlog:

    Code:
     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
     	 		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]197527[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 477 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]198184[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 479 | Non-static method IecType::iecINT() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]198506[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 51 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]198734[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 52 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]199040[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 480 | Non-static method IecType::iecINT() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]199327[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 51 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]199613[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 52 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]199913[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 484 | Non-static method IecType::iecINT() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]200203[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 51 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]200480[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 52 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]200759[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 485 | Non-static method IecType::iecINT() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]201091[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 51 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]201366[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 52 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]201674[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 486 | Non-static method IecType::iecINT() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]201932[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 51 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]202260[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/IecType.php | Fehlercode: 2048 | Zeile: 52 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     		[TR]
     			[TD]2019-11-22 06:47:48[/TD]
     			[TD]202539[/TD]
     			[TD]?[/TD]
     			[TD]21771[/TD]
     			[TD]Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 2048 | Zeile: 487 | Non-static method IecType::iecBYTE() should not be called statically, assuming $this from incompatible context[/TD]
     			[TD]ERROR[/TD]
     		[/TR]
     	 [/TABLE]
    Jemand eine Idee?

    Einen Kommentar schreiben:


  • gulp2k
    antwortet
    versuchs mal mit address 13 und length 4

    Einen Kommentar schreiben:


  • dtk33d
    antwortet
    Hallo,
    ich versuche schon länger meinen Stromleser sdm230 über modbus auszulesen, hier die Einstellung in Edomi:

    edomilbs.JPG
    errorlog:

    errorlog.JPG

    mit dem programm modbus master simulator kommen die richtigen werte an:

    modbus.JPG


    woran kann das liegen ? Kann leider kein php....
    danke
    Angehängte Dateien

    Einen Kommentar schreiben:


  • mayokoe
    antwortet
    Hi, vielleicht hilft das weiter
    https://knx-user-forum.de/forum/projektforen/edomi/1403580-modbusmaster-für-php-7-unter-centos7?p=1403593#post1403593

    Einen Kommentar schreiben:


  • dtk33d
    antwortet
    Hallo,

    ich verwende den LBS um eien sdm230 eastron Stromleser auszulesen und erhalte folgende Fehler im system-log und lbs-log:
    2019-11-19 09:31:21 676342 ? 7293 Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 8192 | Zeile: 38 | Methods with the same name as their class will not be constructors in a future version of PHP; ModbusMaster has a deprecated constructor ERROR
    2019-11-19 09:31:21 771456 ? 7293 Datei: /usr/local/edomi/main/include/php/PhpType.php | Fehlercode: 0 | Zeile: 205 | The input data should be an array of 2 or 4 bytes.
    2019-11-19 09:32:17 303661 7396 notice EXE19001030 [v0.5]: File: /usr/local/edomi/main/include/php/IecType.php | Error: 8192 | Line: 52 | Non-static method IecType::iecBYTE() should not be called statically
    2019-11-19 09:32:17 305454 7396 notice EXE19001030 [v0.5]: File: /usr/local/edomi/main/include/php/ModbusMaster.php | Error: 8192 | Line: 487 | Non-static method IecType::iecBYTE() should not be called statically
    und kann auch leider keine Werte auslesen.
    Mein Setup:
    Centos 7, Edomi 2.0
    Raspberry mit usb-modbus - verbunden zum sdm230.
    Raspberry ist als Modbus-Master eingerichtet: https://github.com/3cky/mbusd

    abfragen funktionieren wenn ich z.bsp von einem windows host mit verschiedenen programmen abfrage....

    Centos 7, Edomi 2.0

    Einen Kommentar schreiben:


  • DerSeppel
    antwortet
    Bei meinem Fronius gehts jetzt auch, mit einer kleinen Modifikation am LBS.
    Das Array mit dem Rückgabewert von $modbus->readMultipleRegisters muss "gedreht" werden:

    Code:
    $recData = $modbus->readMultipleRegisters($E[5]['value'], $E[$inputs[$i]]['value'], $E[$inputs[$i]+1]['value']);
    [B]$recData = array_reverse($recData);[/B]
    Dann klappt es mit:
    - Endianess = 0 (standard)
    - Registeradressen aus der Sunspec - 1, also z.B. 40093 statt 40094 für die Netzfrequenz

    Einen Kommentar schreiben:


  • deRainer
    antwortet
    Kurze Rückmeldung,
    habe es hinbekommen. Habe zu kompliziert gedacht. Endianess muss nicht gedreht werden (also v4=0). Nur den Port "hart" im LBS auf 1502 setzten und die richtigen Typen wählen.

    Bekomme jetzt alle Daten aus dem Plenticore. Muss diese jetzt nur noch sinnvoll weiterverarbeiten und in die Visu einbinden...

    Aktuell sehen die LBS so bei mir aus:
    LBS.JPG

    Gruß

    Rainer

    Einen Kommentar schreiben:


  • DerSeppel
    antwortet
    Zitat von uzi10 Beitrag anzeigen
    Ein Modbus LBS für Fronius wäre interessant..
    wärs nicht leichter den Fronius per API LBS auszulesen oder kann das nicht alles?
    Per API gibts das schon:
    - http://service.knx-user-forum.de/?co...ad&id=19001640
    - http://service.knx-user-forum.de/?co...ad&id=19000182


    Da sind einige Werte nicht verfügbar (z.B. Stringspannung). Das liegt aber nicht an den LBS per se. Manche Daten gibt es nur über Modbus.

    Einen Kommentar schreiben:


  • uzi10
    antwortet
    Ein Modbus LBS für Fronius wäre interessant..
    wärs nicht leichter den Fronius per API LBS auszulesen oder kann das nicht alles?

    Einen Kommentar schreiben:


  • gulp2k
    antwortet
    Also das mit den Registeraddressen habe ich irgendwo auch schon mal geschrieben.
    Manchmal muss man +-1 auf die Addressen laut Beschreibung machen...

    Was die Endianess angeht wie oben beschrieben kann die im Code umgestellt werden.

    Einen Kommentar schreiben:


  • deRainer
    antwortet
    Die Sunspec unterstütz der Plenticore wohl auch. Damit könnte ich mich als nächstes beschäftigen wenn ich nicht über die Kostal Beschreibung an die Daten komme. Muss mir aber noch die Beschreibungen der einzelnen Layer zu Gemüte führen...
    Ist ein guter Hinweis damit mal rum zu spielen.
    Gruß

    Einen Kommentar schreiben:


  • DerSeppel
    antwortet
    Ich versuche auch gerade meinen Fronius mit dem LBS ans laufen zu bekommen.
    Ich denke ein guter Test ist das Auslesen des SunSpec registers "Manufacturer".

    Bei mir lieferte das Lesen von zwei Registern - bei mir laut Mapping ab 40005: noui
    Buchstaben stimmen schon mal so halbwegs, aber die Reihenfolge nicht.
    Im LBS die Endianess umgestellt, dann kommt das hier: oniu
    Daran konnte ich dann noch sehen, dass die Registeradresse eins niedriger sein muss, also vermutlich alle Angaben aus den SunSpec Tabellen.
    40004 statt 40005 liefert dann: Fron

    Registerindex und Endianess sollten also vor weiteren Versuchen bekannt sein.

    Nächster Punkt wäre dann der Scaling_Factor, der zu manchen Werten dazugehört. Der kann dann z.B. -1 sein.
    Bedeutet Wert = Registerwert * 10 ^ -1

    Da bin ich aber mangels Zeit noch nicht weiter.
    Zuletzt geändert von DerSeppel; 02.07.2019, 15:35. Grund: Rechtschreibung und so.

    Einen Kommentar schreiben:


  • deRainer
    antwortet
    Hallo Dirk,
    aufgrund von Gartenprojekten bin ich leider noch nicht soweit wie ich möchte
    Nachdem ich im LBS den Port und den Endianess angepasst habe stimmt z.B. die IP Adresse die ich zurück bekomme. Leider sind die eigentlichen Werte, die mich interessieren im Moment noch unplausibel.
    Da kommen immer noch "Daily Yield" Werte von 1.1947136558255E-16

    Ich denke da stimmt die Umrechnung der Werte noch nicht. Da ich den Endianess geändert habe stimmt jetzt evtl. die Konvertierung der Datentypen (Float?) nicht. Da bin ich aber noch nicht weiter gekommen.
    Vielleicht habe ich am WE mal wieder etwas Zeit...
    Gruß
    Rainer

    Einen Kommentar schreiben:


  • Dirk81
    antwortet
    Zitat von deRainer Beitrag anzeigen
    Ok,
    einen hab ich noch...
    Anscheinend kommen bei mir die Daten vom Plenticore in anderer Byte Reihenfolge...
    Gerade an der IP Adresse (die ich testweise mal ausgelesen habe) erkennt man das Highbyte und Lowbyte anscheinend vertauscht sind.
    Beispiel:
    Soll: 199.199.199.199
    Ist: 91.991.991.9919
    Hi Rainer,

    hast d die Problematik schon gelöst?

    bei mir wird demnächst auch ein Plenticore werkeln.

    Danke
    Grüße
    Dirk

    Einen Kommentar schreiben:

Lädt...
X