Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Anbindung mittels Modbus an Loxone. Im Beispiel durch einen ModbusTCP Server: Konverter von Ethernet auf Modbus RTU.

Anbindungsmöglichkeiten

In den meisten Fällen wird der Ethernetport des Controllers bereits belegt sein, weil die Fernwärmeanbieter diesen gerne für die Fernauslesung verwenden. Alle deren Werte können aber über Modbus RTU ebenfalls abgefragt werden. Welcher seinerseits bereits mit Loxone kompatibel wäre aber ebenfalls zu Modbus TCP konvertiert und mittels Ethernet weitertransportiert werden kann. Es bieten sich somit folgende beiden Möglichkeiten. 

"Danfoss ECL Comfort 210 / 310" → Modbus Extension → Loxone Link → Miniserver.
oder
"Danfoss ECL Comfort 210 / 310" → Modbus TCP Server (Konverter von RTU auf TCP) → Ethernet → Miniserver.

Im nachfolgenden wird letztere Methode beschreiben, große Teile davon sind jedoch auch für die erste Möglichkeit passend. 

ModbusTCP Server: Hardware

Da im gegebenen Fall keine Loxone Link Verbindung in den Heizraum vorhanden ist, wurde als Workaround ein ModbusTCP Server verwendet. Der Controller bietet so einen ModbusTCP-Server bereits an. Dieser wird in diesem Fall jedoch von der Fernwärmegegesellschaft bereits zum Auslesen verwendet und kann deshalb nicht verwendet werden. Als Anternative wird deshalb dieser Konverter von Modbus RTU auf ModbusTCP verwendet. Jegliche entsprechende Hardware kann dafür verwendet werden, solange sie sich an den Standard hält. Im Beispiel wird folgendes Gerät verwendet: USR-TCP232-410S. (Siehe dazu als Alternative auch: Modbus TCP zu Modbus RTU Gateway im Eigenbau) Das Gerät übernimmt die Übersetzung der Befehle von TCP/IP auf Modbus RTU. So kann für die Steuerung von Modbus Slaves ein Netzwerkkabel in den Heizraum verlegt werden und sogar die Kosten für die Modbus Extension und den Verkabelungsaufwand gespart werden. 

Modbus(TCP Server): Konfiguration

Die folgenden Einstellungen wurden am ModbusTCP-Server eingestellt sind aber auch für den Einsatz ohne den ModbusTCP-Server geeignet. 

Baud Rate: Dieser Wert ist variabel und muss mit dem Wert auf dem ECL Comfort übereinstimmen. 

ECL Comfort Controller: Einstellungen

Die Modbus Einstellungen sind etwas verborgen, müssen aber auch nur einmalig richtig einstellt werden.

  • Mit dem Rad nach links unten auf Menü navigieren. 
  • Im Menü mit dem Rad rechts oben auf die Heizkreise navigieren. Mit einem Druck den Punkt auswählen. 
  • Solange nach rechts drehen bis das Controllersymbol angezeigt wird. Anschließend mit einem Druck bestätigen. 
  • System
  • Kommunikation. Folgendes Menü erscheint (komplette Liste): 

Hier kann die Baudrate (Baud) eingestellt werden. Diese muss dieselbe sein, wie sie auf dem Bus und/oder auf dem Modbus TCP-Server/Loxone Modbus-Extension verwendet wird. 

Als "Modbus Adresse" kann eine Zahl zwischen 1 und 255 eingestellt werden. Diese muss auf dem Bus eindeutig sein, also kein anderes Gerät darf dieselbe Adresse besitzen. Wo möglich empfiehlt es sich den voreingestellten Wert beizubehalten (zwecks Fernauslesung des Fernwäremanbieters). 

Service Pin und Ext. Reset: dazu kann ich nicht sagen was damit gemeint ist. War im Beispiel 0 und kann 1 oder 0 (bool) sein. Weiß aber nicht was das macht und ob es eine Auswirkung auf Modbus hat oder sich dies nur auf ECL485 bezieht.

Der Wert ECL 485 addr. ist für die Auslesung mittels Modbus uninteressant. 

ECL Comfort Controller: Verkabelung

In der Bedienungsanleitung sind die Pins für die Modbus Verkabelung aufgeführt. (nicht zu verwechseln mit M-Bus). Zu beachten ist dabei der Punkt "RS-485 Bias/polarization" in der Bedienungsanleitung. Irgendwie sind die Pins für A und B vertauscht, d.h. Bus Draht für A muss an B am Controller und Bus Draht B am Controller bei A angeschlossen werden. Wenn der Controller das letzte Gerät auf dem Bus ist (wenn nur  der Controller auf dem Bus angeschlossen ist immer der Fall), dann muss ein Widerstand zwischen Pin A und B eingebaut werden. Loxone schlägt dafür vor einen 100 Ohm Widerstand. Man ließt, dass es auch ohne funktionieren soll. Im Beispiel wurde ein 680 Ohm Widerstand eingebaut, sogar das funktionierte. 

Pin NamePin Nummer auf ControllerBedienungsanleitungWirklichkeit
GND36GNDGND
A35A

B

B34BA

Öffnen der Controllers

Zum zugänglich machen der Pins muss der Controller geöffnet werden. Dabei einfach den Strom vom Gerät nehmen und mit einem kleinen Schraubendreher den dunkelgrauen Pin auf der Hinterseite etwas nach außen ziehen. Gleichzeitig mit leichtem Druck den Controller etwas anheben. So lässt er sich von seinem Sockel entfernen. Bilder dazu stehen in der Bedienungsanleitung auf der letzten Seite.

Dann sieht man folgende Pins offenliegen: 

Quelle des Fotos.

Loxone: Einbindung in die Programmierung

Im Beispiel wird die Programmierung in Loxone mittels Modbus TCP gemacht, weil ein Modbus TCP-Server eingesetzt wird. Wir der Bus direkt auf einer Modbus Extension aufgebaut ist die Programmierung ähnlich und eigentlich selbsterklärend. 

  • Peripheriepunkt "Miniserverkommunikation" anklicken. 
  • Menüpunkt "Modbusserver" anklicken. 
  • Neu erstellten Mudbusserver anklicken und Werte richtig einstellen. 
    • Adresse: IP-Adresse des Modbus-Servers gefolgt von einem Doppelpunkt und dem verwendeten Port.
      Bspw. 10.0.0.1:502
    • Über die Parameter Wartezeit und Timeout kann ich leider keine verlässliche Aussage treffen. Habe 5 Sekunden als Wartezeit und 100ms als Timeout eingestellt. 
  • "Sensoren und Aktoren"/"Modbus Gerät" anklicken. Ein Gerät wird erstellt. 
  • Gerät anklicken und die Parameter richtig einstellen:
    • Modbus-Adresse: Das ist jene Zahl welche auf dem Controller zuvor beim Punkt "ECL Comfort Controller: Einstellungen" für "Modbus Adresse" eingestellt wurde. 

Loxone: Sensoren und Aktoren

Alle Register (das sind die einzelnen Werte die gelesen und geschrieben werden könne) die zur Verfügung stehen sind im offiziellen Dokument von Danfoss  aufgelistet und größtenteils auch erklärt. Dabei ist jedoch folgendes zu beachten:

Registerverschiebung

Die Register im offiziellen Dokument sind im Vergleich zu Loxone um eins (1) verschoben. D.h. aus 4201 (Mode circuit 1) im offiziellen Dokument wird in Loxone 4200.

Lesen von Werten

Gelesen werden kann mit

  • 4 - Read input register (3x)
  • 3 - Read holding register (4x)

Im Falle von Loxone ist es eigentlich egal welcher Befehl von beiden verwendet wird. Der Datentyp ist jeweils 16-bit unsigned integer. [

Schreiben von Werten 

Geschrieben werden kann ausschließlich mit: 

  • 6 - Preset single register (0x06) 

Der Datentyp ist jeweils "16-bit unsigned integer". 

Eventuell macht es noch Sinn die Werte zyklisch zu senden, dass der Status nach einem Stromausfall nach ein paar Sekunden erneut geschrieben wird. 

 

Auslesen des Verbrauchs in Loxone

Im konkreten Beispiel konnte die Verbrauchsmessung des Fernwärmelieferanten ohne zusätzliche Hardware umgesetzt werden. Der Lieferant nutzt auf dem Controller einen M-Bus (nicht Modbus) Verbrauchszähler, welcher die Daten dem Controller zur Verfügung stellt. Letzterer hält diese Daten als Modbus Register vorrätig und zwar im Modbus-Registerblock für verbundene M-Bus-Geräte ab Register 6000. Jeder M-Bus-Zähler bekommt 50 Adressen. Im konkreten Beispiel verwendet der Verbrauchszähler den ersten 50er Block. Im Handbuch (siehe Link im Eingang dieses Artikels) sind diese Register jeweils genau erklärt: Übersicht auf Seite 40 und detaillierter auf Seite 32.

Die Übersicht ist gültig für den ersten Sensor:

Alle werte können als Standard 16 bit unsinged integer gelesen werden. Zu beachten ist wieder die Verschiebung - siehe Hinweis weiter oben. Eine Außnahme bilden jene Werte, welche zwei Register verwenden. Das sind jene, bei denen in der darauffolgenden Zeile steht "- low part". Da ist folgende Einstellung zu verwenden:

Hier am Beispiel ist das Register 6014 (Acc. Energy) gezeigt, welches auch das nachfolgende Register 6015 verwendet. Also einfach einen analogen Sensor mit der Adresse der ersten Registers erstellen und die Häckchen für "2 Register für 32-bit" und "Registerreihenfolge" und Datentyp "32-bit unsingned integer" setzen. Dies gilt wie gesagt nur für die Werte die 2 Register verwenden. Dieses Vorgehen gilt auch für den Momentanverbrauch ("Power"), "Flow", "Accumulated Volume", ... 

Im konrekten Anwendungsfall war der Wert unter "Accumulated Energy" exakt der Wert, welcher für die Verrechnung verwendet wird und auf die Rechnung drauf kommt. Der Lieferant nimmt also einfach diesen Wert her, bildet die Differenz zum Wert der letzen Rechnung und verrechnet diese Differenz. 

Dokumente

Offizielle Modbus Referenz von Danfoss

Mirror:
 

Bedienungsanleitung

Mirror:  

Ähnlicher Artikel (russisch)

 

 

  • Keine Stichwörter