Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19001586 ModBus Read GENERIC

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

  • ChrisChros
    antwortet
    Endian scheint keinen Einfluss bei mir zu haben

    Zitat von saegefisch Beitrag anzeigen
    Was sagt den die Doku zu Deinem Gerät zum richtigen Endian?
    Bezüglich Endian ist in meiner Doku nichts erwähnt. Es wird nur erwähnt da je nach Abfragesoftware es einen Offset geben kann.
    Bildschirmfoto 2021-05-24 um 15.14.37.png
    Zuletzt geändert von ChrisChros; 24.05.2021, 14:25.

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    Mit dem endian habe ich bisher noch nicht experimentiert. Was bewirkt E9 eigentlich, die Anleitung ist für mich als Laie nicht selbsterklärend. Werde ich aber mal testen.
    Bin grade dabei zu testen einen uint16-Wert in bit-Werte zu zerlegen. Mal schauen ob das klappt.

    UPDATE:
    bezüglich den bit-Werte habe ich noch so mein Problem. Der Json-String sieht wie folgt bei mir aus:
    Code:
    [ { "address" : "40084", "type" : "bit", "bit":"00" "name" : "EMS-Status Bit 0" },{ "address" : "40084", "type" : "bit", "bit":"01" "name" : "EMS-Status Bit 1" },{ "address" : "40084", "type" : "bit", "bit":"02" "name" : "EMS-Status Bit 2" },{ "address" : "40084", "type" : "bit", "bit":"03" "name" : "EMS-Status Bit 3" },{ "address" : "40084", "type" : "bit", "bit":"04" "name" : "EMS-Status Bit 4" },{ "address" : "40084", "type" : "bit", "bit":"05" "name" : "EMS-Status Bit 5" },{ "address" : "40084", "type" : "bit", "bit":"06" "name" : "EMS-Status Bit 6" },{ "address" : "40084", "type" : "bit", "bit":"07" "name" : "EMS-Status Bit 7" } ]
    Wenn ich das Register 40084 als unit16 auslesen bekomme ich den Wert 132 ausgeben, was auch korrekt zusein scheint. Beim Versuch dieses Register in seine bits zu zerlegen, bekomme ich bei deinem LBS keinen Json-Sting an A1 ausgegeben.
    Zuletzt geändert von ChrisChros; 24.05.2021, 13:52.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Spannend. Lieben Dank für's testen und für Deine Rückmeldung. Und immerhin sprechen Sie schon mal miteinander... Den Rest bekommen wir auch noch zum Laufen.

    Wie sieht denn E8 bei Dir aus für Register 40068?
    Du bekommst mit 40066 richtige Werte? Hast Du mal mit dem Endian an E9 experimentiert mit Werten 0..3 (und richtigem Register). Sollte auch im LIveView gehen: E 1= 0. E9 setzen, E1 = 1. Da sind die 4 Optionen schnell probiert.
    Wäre mir auch plausibel bei dem Fehlerbild. Was sagt den die Doku zu Deinem Gerät zum richtigen Endian?
    Zuletzt geändert von saegefisch; 24.05.2021, 13:29.

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    saegefisch
    ich habe deinen LBS auch mal installiert um mein E3/DC auszulesen. Verbindung wird soweit aufgebaut, nur kann ich aktuell mit den Werten nicht wirklich was anfangen.
    Zu Testzwecken versuche ich aktuell nur einen Wert auszulesen, PV-Leistung, Register 40068
    Bildschirmfoto 2021-05-24 um 10.55.08.png
    Dabei wird ein Wert ausgegeben der nicht richtig sein kann. Vergleichen tuhe ich die Werte, die ich von dem E3/DC-LBS ausgegeben bekomme.
    Bildschirmfoto 2021-05-24 um 11.05.29.png
    Eigentlich sollte der Wert 6997 sein, bei deinem wird aber nur 603 ausgegeben.

    ​Ein Programm wir qModMaster kann ich von meinem Rechner nicht verwenden, da sich dieser in einem anderen Subnet befindet und das E3DC dann keine Verbindung zulässt.

    Kannst du mir eventuell Hilfestellung geben wie ich mit deinem LBS an die richtigen Werte ran komme?

    UPDATE:
    Irgendwie scheine ich einen Offset von -2 zu haben. Ich muss bisher alle Registerwerte -2 nehmen um den richtigen wert zu bekommen.
    Zuletzt geändert von ChrisChros; 24.05.2021, 12:20.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Hi Jann,

    klasse! Danke für Deine Rückmeldung. Mittlerweile ist übrigens V0.3 da und hat die wunden Punkte hoffentlich nachhaltig geheilt, auf die Du mich gestupst hast. Funktional ist's aber egal, wenn E8 korrekt gefüllt wird.

    Zur Systemlast: In der Tat war das fast meine größte Motivation, nach einer anderen Bibliothek zu suchen. Ich konnte nicht verstehen warum ein so banaler Prozess mir vergleichsweise auffällige "Sägezähne" ins CPU-Diagramm geschossen hat. Ich sehe dort auch den größten Vorteil, aber war zunächst unsicher, ob mein Eindruck sich auch in anderen Systemen so zeigt und habe es bewusst nicht so heraus gestellt bei der Vorstellung. Schön, dass es so auffällig war, dass es Dir ohne Hinweis auffiel! Das freut mich ganz besonders, dieses Ziel offenbar erreicht zu haben. Tatsächlich ist der Prozess kaum zu spüren, sofern man die Zeit an E4 nicht über Gebühr klein wählt.

    Die andere Motivation war, dass ModBus eigentlich ein Standard ist und - wie z.B. MQTT - eigentlich (SW-architektonisch) keine spezifischen LBS brauchen sollte. Wenn es den unbedingt spezifisch sein soll, dann dahinter. Aber die größte Freiheit hat man, mit ein paar eigenen nach gelagerten "Division/Konstante" und "Wenn-dann-sonst VARIABEL", denn...

    ... ich wollte im LiveView so flexibel sein, "mal eben kurz" und so einfach wie möglich neue Register zu versuchen, die man in der Doku findet. Denn die meisten Geräte haben eine Info-Schatz, den man sonst nicht hebt - siehe z.B. die ganzen Status-Infos des SMA-SI zum Zustand von System und Netz.

    Viel Spaß mit Deiner Register-Doku!

    Einen Kommentar schreiben:


  • Janncsi
    antwortet
    Funktioniert erstklassig! Die geringe CPU-Last ist, meiner Meinung nach, das absolute Highlight!

    Jetzt gehts dran alle Modbus-Register die interessant sind, aus dem Wechselrichter zu extrahieren

    Screenshot 2021-05-22 123530.png

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Wie immer: Sehr gerne!
    Du hast mir gestern und heute ein paar Mal ein Lächeln damit geschenkt.

    Ich bin dankbar für die Challenge. Hat die ein oder andere Unschärfe ans Licht gebracht und vor allem die beiden Code-Ergänzungen.

    Aber noch cooler ist, wenn Du jetzt auch Werte hast. Bin sehr gespannt auf Deine Rückmeldungen der nächsten Tagen zu Stabilität, Robustheit oder auch Änderungswünschen.

    Nachtrag: V0.2 ist online - geändert sind nur die Prüfungen auf E8. Funktional kein Unterschied, wenn E8 korrekt versorgt wird. Daher keine Not für ein Update.
    Zuletzt geändert von saegefisch; 20.05.2021, 17:54. Grund: Nachtrag

    Einen Kommentar schreiben:


  • Janncsi
    antwortet
    Ich liebe deine Doku und deinen vielen Text, das weißt du

    Der Inhalt ist super, nur die Struktur für jemanden, der nicht im Thema ist, ist bei dem LBS echt "ungewöhnlich" im Vergleich zu anderen LBS. Ich denke das war der Hauptgrund, wieso ich einiges übersprang. Und ja, manchmal ist meine Euphorie zu extrem und unbedacht

    Aber ich habe ihn nun am Laufen den Baustein Gerade einen ersten Output generiert!

    Werde ihn morgen weiter ausbauen auf alle relevanten Werte

    Danke bis hierhin

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Die Installationsanleitung ist sehr bewusst von mir ganz hinten. Weil die brauche ich nur ein Mal oder ganz selten. Die stört vorne - zumindest geht mir das so. Ich find's schon okay, dass man mal ganz durch scrollt und beim Wort Installation zuckt. Ich strukturiere ja schon viel mit Formatierung. Werde aber mal vorne eine Hinweis auf die Installation machen... guter Hinweis

    Tatsächlich gebe ich mir bei meiner Doku stets viel Mühe, um Fragen durch bereits gelieferte Antworten und Informationen vermeiden zu helfen. Diese Dinge sind bei mir nie grundlos. Ich mag Doku und Transparenz. Ja, okay, ich mach vielleicht öfter ein wenig zu viel Text... Aber ich bin für umfassende Anleitungen stets dankbar und gebe nur, was ich selber schätze. Was Du willst zu lesen haben, das füge auch anderen zu...

    Is' jetzt wirklich nicht bös' gemeint, aber das Lesen meiner Anleitung ist zumindest dieses Mal nicht Deine Stärke gewesen... Du hättest Dir viel Zeit erspart und schnellen Erfolg geschenkt. Es gibt ein eigenes Kapitel für Typen-Definition. Entweder hast Du nicht gut gelesen oder ich habe nicht gut erklärt. Bitte lass' mich wissen, wenn es missverständlich ist:

    Jetzt aber zur Sache: Typ "u32"? --> versuch mal "uint32" wie oben auch in meinem Beispiel

    PS: Oh, da ist tatsächlich ein Buchstabendreher in der Anleitung, dort steht fälschlich "unit32"... danke auch für den Hinweis! Wird in V0.2 korrigiert

    Nachtrag: Mit V0.2 werden Exceptions bei der Register-Parametrisierung auch abgefangen. Daher gut, dass Du darauf gestoßen bist, dass macht den LBS robuster. Das Script oben habe ich auch ergänzt. Bei einem falschen Typ kommt jetzt
    Code:
    FEHLER: empty or unknown type for address given
    Zuletzt geändert von saegefisch; 19.05.2021, 22:03. Grund: Nachtrag

    Einen Kommentar schreiben:


  • Janncsi
    antwortet
    So,

    habe dann endlich in dem LBS die Anleitung zur Installation gefunden Verbesserungstipp saegefisch : Pack den Teil der Installation unbedingt an den Anfang des LBS, man übersieht dies sonst sofort.
    Ich habe das Testscript mal probiert und bekomme diese Ausgabe:
    Code:
    [root@edomi php]# php /usr/local/edomi/main/include/php/modbus-tcp-client/test.php
    Array
    (
    [0] => Array
    (
    [address] => 40000
    [type] => u32
    [name] => Date&Time
    [uri] => 10.0.20.101:502
    [unitId] => 2
    )
    
    )
    PHP Fatal error: Uncaught ModbusTcpClient\Exception\InvalidArgumentException : empty or unknown type for address given in /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php:110
    Stack trace:
    #0 /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php(77): ModbusTcpClient\Composer\Read\ReadRegistersBuilder->fromArray(Array)
    #1 /usr/local/edomi/main/include/php/modbus-tcp-client/test.php(32): ModbusTcpClient\Composer\Read\ReadRegistersBuilder->allFromArray(Array)
    #2 {main}
    thrown in /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php on line 110
    Mein Modbus-Gerät ist über andere Wege erreichbar, daher kann ich dies auf jeden Fall als Fehler ausschließen.

    LG

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Zitat von Janncsi Beitrag anzeigen
    wenn ich nun den composer starte, läuft er durch und erstellt auch den Ordner vendor, aber nicht den Ordner modbus-tcp-client....
    Zu Deiner Nachricht von vorhin... mir scheint weiterhin, dass Du von meiner Installationsanleitung in der Hilfe des LBS abgewichen bist. Denn den Ordner bekommt man automatisch mit
    Code:
    [...]
    cd /usr/local/edomi/main/include/php
    git clone https://github.com/aldas/modbus-tcp-client
    [...]
    erst DANACH bemüht man den Composer mit der Library. Erst ab dann ist alles da und dem Composer bekannt.

    Ab dann könne alle künftigen Updates erfolgen mit composer require aldas/modbus-tcp-client (einzeln) oder composer update (alle installierten; sofern es denn mehrere sind). Mir scheint, Du hast eine Abkürzung versucht...
    Zuletzt geändert von saegefisch; 18.05.2021, 23:55.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Deine Fehlermeldung kann ich reproduzieren, wenn ich E8 leer lasse. Im V0.2 wird das abgefangen werden.
    Zuletzt geändert von saegefisch; 18.05.2021, 22:07.

    Einen Kommentar schreiben:


  • Janncsi
    antwortet
    Okay!

    Lass mich das morgen prüfen, klingt plausibel!!!

    Bekommst noch eine Rückmeldung

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Naja, irgendwie ist E8 schon IMPORTANT...

    Leer an E8 habe ich ganz offensichtlich noch nicht abgefangen (guter Hinweis -> todo für mich), aber Du musst schon irgend was zum Futter geben.

    Zumindest 1...
    Register (zu Deinem Gerät passend),
    Name(beliebig),
    Format (passend zum Register laut Doku Deines Geräts --> siehe hierzu LBS-HIlfe zu den Typen)

    z.B:
    Code:
    30775;"Leistung [W]";int32
    Wenn Dein Gerät ein SMA ist, kann mein Krams passen, aber für jedes andere Gerät wird's andere Register brauchen - vermute ich. Doku des Herstellers...

    Einen Kommentar schreiben:


  • Janncsi
    antwortet
    Ursprünglich das, was im LBS stand. Habe E8 mal geleert, danach kam dieses Ergebnis:

    Code:
    [TR]
    [TD]2021-05-18 22:28:46[/TD]
    [TD]667079[/TD]
    [TD]?[/TD]
    [TD]17371[/TD]
    [TD]Datei: /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php | Fehlercode: 0 | Zeile: 110 | empty or unknown type for address given[/TD]
    [TD]EXCEPTION[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]328428[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 123 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]329144[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 123 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]329644[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 127 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]329862[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 127 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]330164[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 131 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]330619[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 131 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]330851[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 136 | Undefined offset: 1[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]331123[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001586.php | Fehlercode: 8 | Zeile: 136 | Undefined offset: 2[/TD]
    [TD]ERROR[/TD]
    [/TR]
    [TR]
    [TD]2021-05-18 22:41:43[/TD]
    [TD]340306[/TD]
    [TD]?[/TD]
    [TD]23738[/TD]
    [TD]Datei: /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php | Fehlercode: 0 | Zeile: 110 | empty or unknown type for address given[/TD]
    [TD]EXCEPTION[/TD]
    [/TR]

    Einen Kommentar schreiben:

Lädt...
X