Seite 1 von 1

[V4 IP4] Modbuswert richtig decodieren

Verfasst: Mo Sep 11, 2023 7:46 pm
von Sunshinemaker
Moin zusammen,

es ist kein Problem mit dem TWS sondern ehr wie setzte ich ihn richtig ein :mrgreen:

Ich habe einen Daikin DCOM-LT/IO für meine Wärmepumpe. Die Anleitung im Anhang ist vom DCOM-LT/MB den dort steht der ModBus-Teil für den LT/IO drin. Keine Ahnung wieso die sowas machen. Ab Seite 8 ist der interessante Teil. Eigentlich läuft alles soweit super, bis auf die Decodierung des Fehlercodes. Da hab ich keine Ahnung wie das funktionieren soll. Das abfragen ist nicht das Problem.

Wenn ich mich nicht ganz täusche sind es jeweils die erste und die letzen 8-Bit. Aber wie geht es dann weiter? Es gibt ja jeweils pro 8-Bit, 21 dazugehörige ASCII-Zeichen (Tabelle in der Anleitung), die dann wieder zusammengesetzt den Fehlercode ergeben.
Was mit in den Sinn gekommen ist:

Bild

Aber dann müßte ich ja 42x das selbe register abfragen und ich wüßte dann immer noch nicht wie es wieder zu einem Fehlercode zusammensetze.
Hat jemand von euch eine Idee, wie ich dieses Problem lösen kann? Meine Erfahrungen mit Modbus halten sich sehr in Grenzen. Ich hab auch heute erstmal ein bisschen rum Probiert wie ich werte auf den ModBus senden kann :mrgreen:

Re: [V4 IP4] Modbuswert richtig decodieren

Verfasst: Mi Sep 13, 2023 6:51 am
von Sunshinemaker
Moin,

Hat wirklich niemand eine Idee wie sich das Problem lösen lässt?

Re: [V4 IP4] Modbuswert richtig decodieren

Verfasst: Mi Sep 13, 2023 11:45 am
von StefanW
Hi Sören,

ich habe nicht nur eine Idee, wir haben für diesen (blöden) Fall auch extra eine Einstellung im (anderen als hier abgebildeten) Assistenten vorgesehen, die das einfach möglich macht.

- Zwei Zeilen mit dem gleichen Register anlegen
- Bitmaskierungen einschalten
- In der einen Editorzeile die ersten 8 Bit auswählen und ASCII Dekodierung (ergibt im Objekt das Zeichen des MSB)
- In der zweiten Editorzeile die zweiten 8 Bit auswählen und ASCII Dekodierung (ergibt im Objekt das Zeichen des LSB)


==> Bei der Abfrage im Gerätemanager bekommst Du nun zwei Objekte mit jeweils einem String mit einem Zeichen für den Fehlercode.

Damit kannst nun die neue Konkatenierungslogik aus der IP nehmen und aus diesen beiden einzelnen Zeichenstrings einen String machen, der beide Zeichen enthält. Evt. Reihenfolge des Zusammenbaus vertauschen

Falls Du anschließend die Fehler noch dekodieren willst, dann sollte das mit einem Multiplexer-Baustein gehen.


lg

Stefan

PS: Es ist eine Pest, dass manche Modbus-Hersteller mehrere Werte in einem Register speichern. Wir haben das - nach dem Studieren von ca. vier Dutzend Datenblättern - bei zwei Herstellern (vor allem E3DC) so gesehen, die dies (ohne Not) machen und haben extra deswegen die Sache mit der Bitmaske eingeführt. Auf diese (leider verkannte) Funktion sind wir mächtig stolz. Wir haben das bei keinem uns bekannten Wettbewerbsprodukt gesehen, dass eine so einfache bitweise Extrahierung von Werten bei Modbus konfiguriert werden kann.
Beim Timberwolf Server funktioniert das bis 64 Bit, also bis vier zusammenhängenden Registern und funktioniert auch zusammen mit Byte und / oder Wordswop sowie allen Dekodierungs- / Kodierungen, womit die Anzahl der mit diesem Editor konfigurierbaren Möglichkeiten bei ca. 94 Trilliarden (sofern alle Varianten aus 64 Bit ausgeschöpft werden) liegt. War gar nicht einfach mit den Testcases dann.

Re: [V4 IP4] Modbuswert richtig decodieren

Verfasst: Mi Sep 13, 2023 11:49 am
von MrWilson
Evtl. ist es einfacher die Wertanpassung im Logikmanager durchzuführen. MSB, LSB und/oder Fehlercode Ganzzahl stellst du über Modbus zur Verfügung, vergleichst es mit einer Logik, fügst es dann zusammen und verknüpfst es mit dem Fehlertext.

Nachtrag: Stefan war schneller und gründlicher ;)