Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19001586 ModBus Read GENERIC

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

  • xsven80x
    antwortet
    Hallo zusammen,

    dem Problem aus dem vorheigem Post konnte ich leider noch nicht nachgehen, habe aber weiter ein wenig mit dem LBS gespielt.

    Nachdem die Anbindung meines SMA WR recht fix funktionierte, würde ich nun gern meine Strommesser anbinden.

    Hier habe ich bspw. einen SDM230 im Einsatz, die Verbindung erfolgt über einen Elfin EE11.

    Nun habe ich den LBS so konfiguriert:

    LBS.jpg

    Grundsätzlich sehe ich auch am EE11 und am SDM, dass eine Datenübertragung stattfindet. Aber leider bekomme ich es nicht hin, die Register sauber auszulesen.

    Ein Auszug aus der Beschreibung der Register liegt vor:

    Register.jpg
    Jetzt bin ich mir nicht sicher, ob für mich das rot eingerahmte eine Bedeutung hat. Ich wüsste gerade nicht, wie ich den LBS damit füttern sollte.

    Tatsache ist: Ich bekomme keine Werte geliefert.

    Der Log sagt folgendes:

    Log_LBS.jpg

    Hat hier jemand vielleicht ne Idee?

    Danke vorab und Grüße
    Sven
    Angehängte Dateien

    Einen Kommentar schreiben:


  • xsven80x
    antwortet
    Hallo zusammen,

    nach anfänglicher Euphorie nun nach rd. 7 Tagen Laufzeit, nun auf erstem Blick wieder der Fehler, welcher auch im SMA-LBS entstanden ist (Leider habe ich diesen Fehler nie wirklich untersucht, daher passt der Vergleich jetzt natürlich nicht).

    Im Fehlerlog finde ich folgenden Eintrag:

    2021-06-15_08h35_07.png
    Bei der IP-Adresse handelt es sich um den SMA-WR.

    Den Fehlerlog des LBS kann ich leider nicht öffnen, da ich ihn noch auf 8 stehen hatte und die Einträge zu viel sind (zu wenig Speicher zum Öffnen).

    Der LBS liest nun keine Werte mehr aus dem LBS. Das Problem hatten ja einige mit dem alten Baustein analog. Bin ich nun mit dem neuen Baustein der einzige mit dem Problem? Oder lohnt es, hier mal weiter nachzuforschen?

    Sobald ich das Projekt einmal neu aktiviert habe, funktioniert die Datenverbindung sofort wieder...

    Gruß
    Sven

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Das freut mich, zu hören, dass der LBS seine Funktion erfüllt und offenbar auch so leicht, wie erhofft.
    Lieben Dank für deine Rückmeldung!

    Einen Kommentar schreiben:


  • xsven80x
    antwortet
    Hallo zusammen,

    da ich hier reiner "Nutznießer" bin und nicht selbst in der Lage, LBSen zu erstellen, möchte ich an dieser Stelle mal DANKE sagen!

    Ich habe bis heute den LBS für den SMA-Modbus genutzt, welcher, wie bei einigen anderen auch, zwischendurch mal neu gestartet werden wollte, damit die Werte wieder ausgelesen werden.

    Nun habe ich den LBS19001586 installiert (übrigens völlig problemlos) und meine ModBus-Abfrage neu gestrickt. Ein bisschen musste ich herumprobieren, ich hatte hier irgendwie einen Fehler in meinem request... Dann... schwupps.... Alle benötigten Werte da!

    Also an dieser Stelle vielen Dank für die Erstellung dieses super LBS. Nächster Einsatzbereich für den LBS wird es sein, SDM230 (bzw. SDM630) über Elfin EE11 abzufragen (hier fehlt mir leider noch das Anschlußkabel, welches ich Trottel nicht mitbestellt habe).

    Gruß
    Sven

    Einen Kommentar schreiben:


  • WagoKlemme
    antwortet
    Ich lese einfach 40 Bytes aus, beginnend ab Register 40067. Das 1. Register gibt E3DC beginnend mit 40068 an. D.h. ich muss 1 Byte früher mit dem Lesen beginnen.

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    Zitat von WagoKlemme Beitrag anzeigen
    Ich habe das Problem vermutlich nicht richtig verstanden,
    Danke für die Screeenshots.

    Es geht darum, das mit dem LBS von saegefisch scheinbar ein offset in den Registeradressen des E3DC nötig ist um die richtigen Werte zu bekommen. Hattest du das Problem auch bei deinem Baustein auch, oder sitzt das Problem in meinem Fall vor dem Bildschirm?

    Einen Kommentar schreiben:


  • WagoKlemme
    antwortet
    Zitat von ChrisChros Beitrag anzeigen
    Momentan kann ich das leider nicht, verstehe es selbst nicht.
    Eventuell kann WagoKlemme etwas dazu sagen, er kann ja mit seinem LBS das E3DC erfolgreich auslesen.
    Sorry für die späte Antwort, ich bin zur Zeit viel unterwegs.
    Ich habe das Problem vermutlich nicht richtig verstanden, deshalb setze ich hier mal einen Screenshot rein, wie das Byte zerlegt wird:

    Bildschirmfoto 2021-06-06 um 14.03.29.png
    Angehängte Dateien

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    ChrisChros : Sorry, jetzt muss ich Dir das mal sagen: Ich weiß nicht, was Du mir wiederholt mit der Art Deinen Rückmeldungen sagen willst. Ist es Deine Gnade, dass Du es "aber" mal versuchen möchtest? Was willst Du mir beweisen, dass der Offset dort mit = 0 notiert ist bei der anderen Lösung ist? Habe ich schon am gleichen Tag nach Deinem Link gesehen. Nur weil eine Bahn nur einen Stromabnehmer hat, fährt sie dennoch mit einem Stromkreis... nur weil Du etwas nicht siehst, werden erforderliche Dinge wohl "irgendwie" da sein und irgendwann dort mal hingekommen sein. Diese Lernkurve gehen wir gerade erst. So werden offenbar alle Dir bekannten Lösungen, die mit Deinem ModBus-Gerät klar kommen, irgendwie "unter der Haube" diese Offsets einrechnen. Es scheint mir unlogisch zu glauben, sie täten es nicht. Weil eben alle mit dem gleichen Wasser kochen. Vielleicht arbeitet die Bibliothek anders. Egal, alles hat seinen Preis, sie hat andere Vorteile. Es ist doch auch völlig egal, wenn am Ende die Ergebnisse verlässlich stimmen, oder?!?

    Ich mache Dir und allen dieses Angebot. Und das sehr gerne! Und aus mehreren Gründen aus Überzeugung! Wenn Es Dir Mühe macht, meinen generischen LBS zu verwenden, dann verwende bitte unbedingt einen anderen. Wenn Du ehrlich Interesse hast, dann lass' uns positiv und gemeinsam weiter daran arbeiten, dass dieser generische LBS unterschiedliche Geräte abdeckt. Daher kann das Einrechnen von Offsets hier auch nicht "unter der Haube" geschehen, wie Du es gewohnt bist. Dies ist der Preis eines generischen Ansatzes. Und ich freue mich und danke Dir herzlich, wenn Du es bei Gelegenheit testest und mir eine Rückmeldung gibst. Das wäre klasse.

    VG,
    Carsten
    Zuletzt geändert von saegefisch; 05.06.2021, 01:04.

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    Zitat von saegefisch Beitrag anzeigen
    ChrisChros Dein Link hat ja weiter rechts auch eine Offset-Spalte. Aufgrund der gemachten Erfahrungen halte ich es für unwahrscheinlich, dass ioBrocker das anders macht, die waren nur schon weiter mit gemachten Erfahrungen wie andere spezifische LBS hier auch schon: Die kochen ja auch mit Wasser... Aber ist ja kein Ding. Es wäre halt spannend zu wissen, was mit den anderen Typen ist: xxxx32 = -2, xxxxx16 = -1, fraglich ist float, Byte, Bit. Bei Byte und Bit vermutlich = 0. Bei float, keine Ahnung, wie lang das ist
    Also ich habe mir die Liste mal aufbereitet und dabei ist aufgefallen, dass in der Liste zwar eine Spalte für einen Offset angegeben ist, aber alle Werte einen Offset = 0 haben.
    Ich werde aber dein Update am Wochenende mal test und Feedback geben.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Version V0.5 kommt mit neuem Eingang E19 zur Festlegung eines Register-Offsets entweder 0 oder statisch oder typ-basiert (Automatisch) oder eine Kombination von A und Wert sind möglich (Siehe folgendes Beispiel E19 = "A-10" mit 3x Register, davon 1 mit 16, 32 oder 64)

    Code:
    ...
    2021-06-03 23:59:17 841888 14827 debug EXE19001586 [v0.5]: Konstanter Offset angewendet: 30775 -> 30765 (150)
    2021-06-03 23:59:17 842389 14827 debug EXE19001586 [v0.5]: Konstanter Offset angewendet: 30517 -> 30507 (150)
    2021-06-03 23:59:17 842866 14827 debug EXE19001586 [v0.5]: Konstanter Offset angewendet: 30513 -> 30503 (150)
    2021-06-03 23:59:17 843369 14827 debug EXE19001586 [v0.5]: Typ Offset angewendet (int32): 30765 -> 30763 (150)
    ...
    h1as und ChrisChros : Bitte mal testen. Wenn erfolgreich gerne auch ergänzende Infos spezifisch für Eure Geräte für die LBS-Hilfe zuliefern. Nehme ich gerne auf.

    Für Typ "float" wird derzeit keine Typ-Offset gemacht: Ich wäre dankbar über Meinungen oder Fakten dazu. Kann ich rasch nachliefern, wenn erforderlich. Ebenso für byte oder bit, aber dort erwarte ich auch keinen Offset; bei float bin ich unsicher.
    Zuletzt geändert von saegefisch; 03.06.2021, 23:49.

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    Zitat von saegefisch Beitrag anzeigen
    Scheint Euch das plausibel und zielführend für Eure Gerätschaften? Oder anders! Lohnt der Einbau? Mit eurer Rückmeldung entscheide ich dann, ob und wie.
    Ich denke es wäre zumindest einen Versuch wert.
    Wenn du möchtest, kannst du mir auch eine Vorabversion schicken und ich teste das dann mal bei mir. E3DC scheint ja doch etwas spezieller zu sein.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    h1as : Danke für Deine Rückmeldungen zu FC3 und FC4, aber auch float. Damit funktioniert E18 offenbar gut und richtig, das freut mich. Den Typ float kann ich für mich dann auch als "getestet" abhaken.

    Zum Offset: Es scheint ja offenbar 3 verschiedene "Systeme" zu geben:
    • 1:1 kann ein Register aus der Doku verwendet werden (z.B. SMA) -> Kein Offset erforderlich
    • Offset abhängig vom Typ -> Je nach Registerlänge muss -1 oder -2 oder 0 abgezogen werden von den Registerangaben in der Doku des Herstellers
    • Fester Offset --> ein fester Offset z.B. -40001 ist abzuziehen von den Registerangaben in der Doku des Herstellers
    @h1as: Verstehe ich das richtig mit dem wählbaren, aber dann festen Offset? Oder gibt es bei Deinem Gerät auch den Bedarf, dass der Offset zusätzlich noch nach dem Typ adjustiert werden muss?

    ChrisChros Dein Link hat ja weiter rechts auch eine Offset-Spalte. Aufgrund der gemachten Erfahrungen halte ich es für unwahrscheinlich, dass ioBrocker das anders macht, die waren nur schon weiter mit gemachten Erfahrungen wie andere spezifische LBS hier auch schon: Die kochen ja auch mit Wasser... Aber ist ja kein Ding. Es wäre halt spannend zu wissen, was mit den anderen Typen ist: xxxx32 = -2, xxxxx16 = -1, fraglich ist float, Byte, Bit. Bei Byte und Bit vermutlich = 0. Bei float, keine Ahnung, wie lang das ist

    Wenn es keine Kombination aus festem Offset UND Typen-Abhängig, würde ich meinen letzten Vorschlag mal in eine V0.5 kippen mit E19:
    • E19 = 0 -> kein Offset
    • E19 = <+/-Wert> -> fester Offset
    • E19 = A -> Typ-abhängiger Offset -2, -1, 0
    • zur Not halt noch E19 = A<+/-Offset> für die Kombination
    Scheint Euch das plausibel und zielführend für Eure Gerätschaften? Oder anders! Lohnt der Einbau? Mit eurer Rückmeldung entscheide ich dann, ob und wie.

    Darf ich annehmen, dass jeder Offset IMMER negativ ist? Dann können wir uns die Vorzeichen sparen auch bei der Angabe E19.
    Zuletzt geändert von saegefisch; 01.06.2021, 20:30.

    Einen Kommentar schreiben:


  • h1as
    antwortet
    Hallo
    Zitat von saegefisch Beitrag anzeigen
    Ich habe eine neu Version 0.4 bereit gestellt. Mit dem neuen E18 kann man nun wählen, mit welcher Methode FC3 = HOLDING oder FC4 = INPUT gelesen werden soll. Bitte mal testen, ob damit Deine Register liefern (mit E18 = 4).
    Ich habe heute die V0.4 getestet. Sowohl die FC3 als auch die FC4 funktioniert perfekt. Danke dir! Bei meinem 2. Zähler sind alle Werte Datentyp float. Auch das funktioniert!

    Das mit dem Offset bei den Adressen ist so dass ich bei den Registern immer 40001 bzw. 30001 abziehen muss. Möchte ich also Register 40001 auslesen muss ich dem LBS Adresse 0 übergeben, 40007 wäre dann 6. Aber damit kann ich leben. Man muss es nur wissen

    Einen Kommentar schreiben:


  • ChrisChros
    antwortet
    saegefisch
    so ich habe mir mal den Spaß gemacht und die modbus Schnittstelle im ioBroker installiert und dort die ganzen Register eingetragen. Dort muss ich keinen Offset oder so beachten und bekomme die ganzen Daten.
    Hier mal die Liste mit den Registern, vlt. hilft das weiter.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Irgendwie bin ich von der Doku von SMA dazu verwöhnt, weil ich da die Werte alle 1:1 verwenden konnte; vielleicht hat SMA das bereits für die Kunden eingerechnet. Das scheinen andere Hersteller anders zu lösen. Aber ich kann und mag mir dazu kein Urteil erlauben, weil ich es aus der Ferne nicht beurteilen kann. Vielleicht hat das gute Gründe, die ich nicht kenne.

    Vielleicht kann Armin uns da tatsächlich helfen es besser zu verstehen. vielleicht kann man meinen LBS noch sinnvoll ergänzen, damit er das besser löst. Vielleicht einen Eingang E19 "Register Offset"
    • 0 --> kein Offset (z.B. SMA)
    • A --> Auto = Registerlänge wird vom Register abgezogen, also bei uint16/int16 mit "-1", bei uint32/int32 mit "-2" (z.B. E8 mit 40068 wird zu tatsächlich abgefragtem 40066). Für alle anderen Typen bräuchte ich noch das richtige Regelwerk für den Offset von Euch.
    Zuletzt geändert von saegefisch; 28.05.2021, 22:17.

    Einen Kommentar schreiben:

Lädt...
X