Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 22 Aktuelle »

Die Einbindung von ETA Holzvergasern mittels Modbus ist leider mMn unzureichend dokumentiert - im Internet ist dazu kaum was zu finden, von ETA gibt es auf Anfrage auch nur eine veraltete Beschreibung zur Modbus Anbindung (beides siehe Weblinks) → Mein Loxone-Partner ist gemeinsam mit dem Loxone Support daran gescheitert, von ETA kam nur "es funktioniert anderswo auch".

Mittels Trial & Error habe ich es jetzt geschafft & mMn anfängertauglich dokumentiert - Bitte um Anmerkungen/Ergänzungen etc....

Voraussetzungen

Der ETA Holzvergaser muss im selben LAN eingebunden sein, wie die Loxone. Dazu haben die ETA Holzvergaser (zumindest mein SH30) einen LAN-Anschluss, der befindet sich beim SH30 unter der oberen Abdeckplatte - ACHTUNG - bis zum LAN-Anschluss im Gerät sind es noch ca. 80cm, das LAN-Kabel sollte also nicht zu kurz sein.

Der ETA Holzvergaser muss eine statische IP-Adresse haben. Das ist leicht am ETA-Touch-Display (bzw. über meinETA oder via VNC) unter den Systemeinstellungen (Icon links unten) einstellbar:

Tip

Ob der ETA Holzvergaser von der Loxone erreichbar ist, kann man leicht in der Loxone mit dem Loxone Ping-Modul testen.

1. ETA-Holzvergaser in Loxone einbinden

In der Loxone-Config unter Peripherie bei Miniserver / Miniserverkommunikation einen neuen Modbusserver anlegen. Als IP-Adresse die Adresse des ETA Holzvergasers mit Port 502 (= Standard-Port für Modbus) eintragen:

2. Aktoren / Sensoren am ETA freigeben

Am ETA Holzvergaser in den Servicemodus gehen. Dazu muss am ETA-Touch-Display unter Systemeinstellungen / Berechtigung die (allseits bekannte) Nummer 135 eingegeben werden. Am Display erscheint unten "Service" und man hat mehr Berechtigungen (z.B. mehr Möglichkeiten unter Systemeinstellungen):

Systemeinstellungen wieder verlassen (wieder klick auf das Icon links unten).

In den einzelnen Funktionsblöcken (FUBs = Karteireitern am ETA-Touch) sieht man im Textmodus (2tes Menü unter dem ETA-Symbol) im Servicemodus dann rechts kleine PC- Icons. Diese weisen darauf hin das hier (oder in einem Sub-Menü) Werte über Modbus gelesen / geschrieben werden können:

Jetzt wählt man in den einzelnen Funktionsblöcken die Werte aus, die man lesen / schreiben möchte.

Viele Werte sind nicht schreibbar, auch wenn es einem logisch erscheinen würde, dass sie schreibbar sein sollten (z.B. Heizkreispumpe oder Zirkulationspumpe) → beim ETA Kundendienst einmelden, vielleicht werden sie in einer zukünftigen Version dann ja schreibbar.


Mit einem Klick auf das PC-Icon des Wertes kommt man in das Modbus-Menü:

Ob ein Wert schreibbar / lesbar oder beides ist, sieht man hier links oben (in diesem Fall = Außentemperatur ist er klarerweise "nur lesbar")

Tip

Zuerst mal mit einfachten (= numerischen), auszulesenden (= Sensoren) anfangen. Schreiben und Umwandeln von z.B. Datum in Zahlen ist komplexer.

Mittels "Register zuweisen" weist man dem Wert das nächsten Register zu (eine Zahl zwischen 1000 und 65000). Dabei werden immer nur gerade Zahlen zugewiesen, da die ETA-Variablen 32bit lang sind und der Modbus dafür 2 Register (zuerst high, dann low) benötigt.

Weiters erkennt man hier auch die Skalierung des Wertes. Eine Skalierung von 10 wie im Fall der Außentemperatur bedeutet dass man die Zahl durch 10 dividieren muss um auf den tatsächlichen Wert zu kommen (also ein Wert von 7 entspricht 0,7°C)

Bei schreibbaren Werten erkennt man auch die Minimal-, Maximal-, und Default-Werte des Wertes

Bei Textwerten erkennt man das Mapping vom Integer-Wert auf den Textwert unter "Zuordnung von Wert zu Text (für Textparameter)".

Mit dem "Register zuweisen" sind die Werte bereits mittels Loxone auslesbar / schreibbar.

Tip

Eine halbwegs lesbare XML Dokumentation aller gewählten Register (inkl. Nummer, Name, Skalierung, Einheit, Min, Max, Default-Wert) bekommt man, indem man in den Systemeinstellungen auf Export Protokolle geht.

3. Werte aus Loxone auslesen / schreiben

Unter dem bereits im Punkt 1. ETA-Holzvergaser in Loxone einbinden in der Loxone-Config angelegtem ETA-Holzvergaser werden die Werte unter Sensoren (lesende) oder Aktoren (schreibende) angelegt. Bei den Eigenschaften wird unter IO-Adresse das jeweilige Register der ETA-Variable gewählt, bei den Befehlen wird dann je nachdem ob lesend oder schreibend ein unterschiedlicher Befehl gewählt:

Lesen:

  • "3-Read holding register(4x)" bei schreib/lesbaren Registern, bei nur lesbaren "4-Read input register(3x)"
  • Immer 32-bit signed integer
  • Immer 2 Register, alle Register beim ETA belegen 2 Adressen (darum nur gerade Adressen)
  • Registerreihenfolge immer umdrehen (ETA schickt/verlangt HighWord/LowWord, Loxone schickt/holt defaultmäßig LowWord/HighWord)
  • Byte-Reihenfolge belassen


Der Abfragezyklus sollte je nach zu lesendem Wert eingestellt werden. Erlaubt ist 5 - 4095 Sekunden, was für die Kommunikation mit dem ETA-Heizkessel reicht. Bei der Abfrage der Außentemperatur reichen z.B. sicher 10 Minuten - also Abfragezyklus = 600

Mittels Korrektur kann man die Skalierung revidieren - z.B. lässt sich mittels folgender Korrektur eine Skalierung von 10 bei Temperaturwerten umsetzen:

Textwerte kommen als Zahlen rüber - diese könnte man in der Loxone Config z.B. mittels Status-Baustein wiederum in Text umwandeln. z.B. bei "Heizkreis" gilt folgendes (ist in der Loxone-Touch bzw. in der XML-Dokumentation nachlesbar, hier nur als Beispiel aufgeführt):

ZahlenwertText
2200Aus
2201Ein Tag
2202Ein Nacht
2203Ein Urlaub
......


Schreiben:

Tip

Zuerst mal versuchen das Register alle 5 sec. zu lesen und die Werte am ETA zu ändern. Damit erkennt man welche Werte erwartet werden, ob man auch das richtige Register erwischt hat etc.


  • Immer "16 - Preset multiple registers"
  • üblicherweise "32-bit signed integer", es gibt aber Spezialfälle wo es auch führende Bits gibt (s.u.), dann "32-bit unsigned integer"
  • immer 2 Register für 32-bit, darum sind die ETA Register ja auch alle geradzahlig
  • je Anwendungsfall u.U. nötig


Auch hier kann man mittels der Korrektur der Skalierung entsprechen - z.B. lässt sich mittels folgender Korrektur eine Skalierung von 10 bei Temperaturwerten umsetzen (genau umgekehrt wie beim Lesen):

Achtung

Die zu setzenden Werte müssen vorher in das korrekte Format gebracht werden - anders als beim Lesen der Sensoren gibt es für Aktoren die Checkbox "Registerreihenfolge" nicht - d.h. die Werte werden als LowWord/HighWord geschickt aber vom ETA Holzkessel als HighWord/LowWord interpretiert (siehe Ticket bei Loxone). In den meisten Fällen (bei Werten bis +/-32768) geht das aber einfach mittels einer Multiplikation mit 65536 - z.B. mit dem Formel-Baustein.


Das Schreiben funktioniert meiner Erfahrung nach nicht immer zuverlässig (es ändert sich manchmal nichts) - es empfiehlt sich also (durch ein automatisches Lesen und automatische/manuelle Kontrolle) zu überprüfen, ob das Schreiben funktioniert hat.


Spezialfälle / Workarounds / Anwendungsbeispiele

Viele Werte sind nur lesbar, leider auch Werte, die man typischerweise mit einer Haussteuerung steuern möchte. Um sie dennoch zu ändern muss der Umweg über das Setzen anderer Werte gegangen werden. Hier dazu ein paar Workarounds:

  • Heizkreis ein- / ausschalten: Kann man über ein Setzen der Heizgrenze Tag (und) Heizgrenze Nacht erreichen. Setzt man beide auf das Maximum (50°C), so schaltet sich der Heizkreis ein (wenn es nicht andere Parameter, wie z.B. Mindesttemperatur des Puffers verhindern). Setzt man beide auf das Minimum (-50°C), so schaltet er sich aus.
  • Zirkulationspumpe ein- / ausschalten: Kann man über ein Setzen der Zirkulationszeiten erreichen: Setzt man die Zirkulationszeiten aller Wochentage (= 7 Register) oder die des aktuellen Wochentags auf 0-24 Uhr, so schaltet sie sich ein, setzt man sie auf 0-0 Uhr, so schaltet sie sich wieder aus. Die Zirkulationszeiten haben ein führendes bit und sind als Anzahl Viertelstunden codiert. Die Formel zum Setzen von Zirkulationszeiten lautet somit (statt dem reinen Multiplizieren mit 65536):

    (I1*256+I2)*65536+32768
    wobei I1=Startzeit in 15min. Schritten, I2=Endzeit in 15min. Schritten

    Das ganze in diesem Fall natürlich 32bit unsigned int und weiterhin 2 Register für 32bit.

  • Heizkreis lesen: Der Wert Heizkreispumpe liefert leider nicht den ein/aus Zustand der Pumpe, sondern die detailiertere Textwerte (Aus, Ein, Verriegelt, Sicherung defekt, Keine Klemme zugewiesen, Keine Antwort des CAN-Knotens). Diese können aber einfach über einen Status-Baustein in Text und 0/1 umgewandelt werden.
  • Weniger priore Räume mit gerinerer Priorität heizen: Weniger priore Räume wie z.B. WC, Windfang, Gang, ... könnte man erst dann heizen, wenn die anderen Räume vollständig aufgeheizt sind (z.B. via Loxone Betriebsmodus "Aufgeheizt", der gesetzt wird, wenn in prioren Räumen die Stellventile nicht mehr voll aufgedreht sind und setzen der Komforttemperatur in weniger prioren Räumen nur bei "Aufgeheizt"). Das führt aber zu einem unangenehmen Temperaturgefälle z.B. nach Urlaub ist das Wohnzimmer schön warm, aber der Gang noch bitterkalt.
    Besser ist es, die weniger prioren Räume schon dann zu heizen, wenn der Heizkreismischer noch Leistungsreserven hat. Das ist erst dann der Fall wenn der Rücklauf aus den prioren Räumen nicht mehr allzu kalt ist. Dazu prüft man, ob die die Position des Heizkreismischers z.B. kleiner als 80% ist und die Heizkreispumpe aufgedreht ist. Mittels Betriebsmodus können dann die weniger prioren Räume auch auf Komforttemperatur gebracht werden. 

Weblinks

  • Keine Stichwörter