[Beantwortet] [V4 IP4] Modbuswert richtig decodieren

Wissen, Planung & Diskussion zur Modbus Unterstützung im Timberwolf Server.
Stellt uns hier Eure Modbus Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Sunshinemaker
Reactions:
Beiträge: 224
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 108 Mal
Danksagung erhalten: 132 Mal

[V4 IP4] Modbuswert richtig decodieren

#1

Beitrag 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:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
LG Sören

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache

Ersteller
Sunshinemaker
Reactions:
Beiträge: 224
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 108 Mal
Danksagung erhalten: 132 Mal

#2

Beitrag von Sunshinemaker »

Moin,

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

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache

StefanW
Elaborated Networks
Reactions:
Beiträge: 10169
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 5028 Mal
Danksagung erhalten: 8174 Mal
Kontaktdaten:

#3

Beitrag 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.
Zuletzt geändert von StefanW am Mi Sep 13, 2023 1:15 pm, insgesamt 2-mal geändert.
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

MrWilson
Reactions:
Beiträge: 264
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 46 Mal
Danksagung erhalten: 159 Mal

#4

Beitrag 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 ;)
Zuletzt geändert von MrWilson am Mi Sep 13, 2023 11:50 am, insgesamt 1-mal geändert.
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache
Antworten

Zurück zu „Modbus“