Irgendwie hat es mir das Thema Modbus angetan. Jedenfalls wollte ich noch eine weitere Lösung zum synchronen Modbus TCP lesen aus der Loxone Config heraus vorstellen. In Teil 1 bin ich bereits auf eine „kleine“ Lösung eingegangen. In diesem Beispiel stelle ich ein Stück picoC Code zur Verfügung, mit dem man blockweise Modbus-Werte auslesen kann.
Generell bleiben wir bei dem Beispiel von Teil 1: Das Auslesen der Registeradresse ab 40206 eines Solaredge Wechselrichters. Das Auslesen von z.B. 10 Registern ab 40206 würde dann so aussehen:

Offensichtlich liegt die Limitierung des Lesens von Modbus-Registern also nur noch an Loxone Config selbst. Es gibt maximal 13 Ausgabekanäle. Wer mehr benötigt muss eben eine Restmenge von Werten an andere Bausteine übergeben und dort weiterrechnen und ausgeben.
Wie kommt man also nun zum blockweisen Lesen?
- Einen Programm-Baustein in Loxone Config einfügen (Achtung: derzeit werden seitens Loxone max. 8 solche Bausteine unterstützt).
- Ausgäbekanäle anzeigen lassen.
- Den zur Verfügung gestellten picoC Code in den Baustein kopieren.
Die notwendige Konfiguration im Code beschreibe ich nachstehend. Das sind lediglich zu Beginn des Codes ein paar Zeilen. Das „hübsch“ machen über entsprechende visuelle Input-Werte überlasse ich anderen. 🙂
Nun also zur Konfiguration
Natürlich muss zunächst das anzusprechende Device konfiguriert werden. Hierzu findet sich zu Beginn des Code folgender Abschnitt:

Ich denke, die Konfiguration ist hier selbsterklärend…
Als weitere Vorarbeit muss jetzt noch der Datentyp der zu lesenden Werte festgelegt werden. Innerhalb eines gelesenen Blocks wird im mitgelieferten Code nur ein und derselbe Datentyp unterstützt. Welcher Datentyp relevant ist, steht in der Herstellerdoku zu den Registern. Mein Code unterstützt:

Das sollte in den meisten Fällen ausreichen.
Zu guter letzt muss noch die Ausgangsregister-Adresse definiert werden – in Hex-Schreibweise. Es gibt diverse Rechner im Netz, die von Dezimal nach Hex und umgekehrt rechnen können.
Nun bringen wie die ganzen Informationen zusammen und erhalten einen Konfigurationsblock, der z.B. so aussehen kann (Adresse hier ist 40206 des Solaredge Wechselrichters):

Das wars dann auch schon. Im Normalfall sollten nun nach einem „Speichern auf dem Server“ die Werte auf den Ausgabekanälen angezeigt werden.
Da es doch einiges an Arbeit gekostet hat, die ganzen Dinge zusammenzutragen, wollte ich andere nicht in die gleichen Probleme laufen lassen. Viel Spaß damit!
