Seite 1 von 1

V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 8:26 am
von mclb
Hallo zusammen,

ich arbeite gerade am Modbus-Profil meiner Wallbox (Schrack i-charge Semipublic), an sich ist das ja alles relativ einfach und schnell zusammengeklickt.
Allerdings habe ich jetzt ein Modbus-Register (1 Wort), bei dem in jedem Bit ein anderer Status geliefert wird, z.B. Kommunikationsfehler, Ladekabel angeschlossen, usw. Das würde ich nun gern auf einzelne Kommunikationsobjekte aufdröseln. Mein Ansatz wäre das einfach in einer Logik zu machen, oder gibt es da einen einfacheren/direkteren Weg?

Danke
Marcus

Re: V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 9:11 am
von StefanW
Guten Morgen Marcus,
mclb hat geschrieben: Do Nov 24, 2022 8:26 amich arbeite gerade am Modbus-Profil meiner Wallbox (Schrack i-charge Semipublic), an sich ist das ja alles relativ einfach und schnell zusammengeklickt.
Jep. Wir haben es so einfach wie möglich gemacht. ich denke, es ist die beste und am einfachsten einzurichtende Modbus Implementierung am Markt.

mclb hat geschrieben: Do Nov 24, 2022 8:26 amAllerdings habe ich jetzt ein Modbus-Register (1 Wort), bei dem in jedem Bit ein anderer Status geliefert wird, z.B. Kommunikationsfehler, Ladekabel angeschlossen, usw.
Ja, das findet man häufig

mclb hat geschrieben: Do Nov 24, 2022 8:26 amDas würde ich nun gern auf einzelne Kommunikationsobjekte aufdröseln. Mein Ansatz wäre das einfach in einer Logik zu machen, oder gibt es da einen einfacheren/direkteren Weg?
Jep. Einfach Bitmaske aktivieren im Formatassistenten und das Register achtmal hintereinander anlegen, jeweils mit einem anderen maskierten Bit und schon hast Du acht, fertig vom Modbus Daemon dekodierte, vereinzelte Objekte.


Hinweis: Sowas geht auch mit anderen Bitmustern. E3DC kam auf die (wenig schlaue) Idee, zwei 8 Bit Integer Werte in ein 16 Bit Register zu quetschen (anstatt einfach ein anderes, der 65.536 im Standard verfügbaren 16-Bit Register zu nutzen). Mit anderen Modbus Implementierungen steht man da schnell am Schlauch.

Beim Timberwolf Server kannst nun zweimal das gleiche Register anlegen, im einen mit der Bitmaske die einen 8 Bit und im anderen die anderen 8 Bit maskieren und dann jeweils einuzeln zu Integer wandeln (was übrigens von 1 - 32 Bit mit Integer funktioniert). Das klappt auch über mehrere Register hinweg. Man könnte also zwei 16 Bit Register nehmen und vom einen drei Bit und vom anderen 5 Bit ausmaskieren und dann diese 8 Bit als Integer dekodieren lassen. Alles in einem Assistenten. Mit ein paar Klicks.


lg

Stefan

Re: V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 11:47 am
von mclb
Hi Stefan,

danke für die rasche Antwort, das werde ich dann gleich mal versuchen, wenn ich heute Nachmittag daheim bin.

LG
Marcus

Re: V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 4:47 pm
von mclb
So, gerade heim gekommen und das gleich versucht ... ist wirklich extrem einfach! :-) Nur halt viel Klickerei, aber dafür könnt ihr ja nichts.

Danke für die tolle Umsetzung!

Re: V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 4:52 pm
von StefanW
Hi Marcus,

wunderbar. Ein Screenshot von dem Assistenten wäre schön, für alle anderen.

lg

Stefan

Re: V3.5.1: Modbus-Wort auf mehrere Booleans dekodieren

Verfasst: Do Nov 24, 2022 10:28 pm
von mclb
OK, also hier ein Screenshot, wie ich für das Register 700 das erste Bit herausfiltere.
Bild

Mittlerweile hab ich alle Register im Profil angelegt. Jetzt muss ich mal sehen, ob ich den Zähler auf denselben Bus legen kann, die auswählbaren Baudraten am Zähler enden bei 38400, die Wallbox ist auf 57600 eingestellt. Gerade nochmal den Kontakt beim Hersteller angeschrieben, auf welche Baudraten ich die Wallbox noch einstellen kann, ein beschreibbares Modbus-Register dazu gäbe es ja. Der Rest (also Stoppbits und Parität) sind gleich, das sollte dann also passen.