Skip to end of metadata
Go to start of metadata

Dieser Artikel beschreibt die Einrichtung einer Kommunikation zwischen Loxone-Miniserver und einer Siemens-Steuerung (programmiert im TIA-Protal) mittels Modbus TCP/IP.

Was man wissen sollte ...

Die Kommunikation erfolgt auf dem Server-Client-Prinzip. Zu beachten ist, dass die Loxone der Client, also der Master ist und die Siemens-SPS der Server, also der Slave ist. Das bedeutet, die zyklische Abfrage der Datenpunkte erfolgt durch den Loxone-Miniserver.

Schritt-für-Schritt-Anleitung

  1. Einrichten der Siemens Steuerung im TIA-Protal
  2. Einrichten des Loxone-Miniserver
  3. Aufbereiten der Daten für die Kommunikation

Einrichten der Siemens Steuerung im TIA-Portal

Anlegen eines Datenbausteins

Für das Halteregister der Datenkommunikation wird ein Array benötigt, dies beinhaltet später alle Informationen die von der Loxone abgefragt werden sollen.

Dazu muss zunächst ein Baustein angelegt werden. Als Datentyp sollte hier UINT verwendet werden. UINT besteht aus einem Datenwort (16Bit besteht) und ist im Debugging später gut auszuwerten, da im Watch die Darstellung dezimal erfolgt. Genauso würde natürlich auch ein anderer Datentyp mit 16Bit funktionieren. Bei einer kleinen Datenmenge kann auch direkt ein Merkwort (MW) verwendet werden. Aufgrund der besseren Skalierbarkeit empfehle ich hier den Datenbaustein. Die Länge des Array kann nach Bedarf dimensioniert werden.

In diesem Beispiel wird ein Array mit einer Länge von 10 UINTs erstellt.

Wichtig: TIA legt Datenbausteine in optimierter Form an. Diese Einstellung muss verändert werden, ansonsten startet der Modbus-Server später nicht!

Dazu Rechtsklick auf den Baustein → "Eigenschaften" → "Attribute" → Haken bei "Optimierter Bausteinzugriff" entfernen.

Nun ist der Datenbaustein soweit vorbereitet und kann von der Steuerung mit Daten befüllt werden. Um digitale Informationen (z.B. Statusinformationen, Steuersignale EIN/AUS) zu übertragen, sollten diese zusammen in ein Statuswort "verpackt" und in der Loxone mit dem Binärcodierer wieder "entpackt" werden. Das spart Datenpakete und verringert somit die Auslastung der Datenkommunikation.

Einrichten der Modbus-Server-Konfiguration

Für die Einrichtung der Modbus-Verbindung auf der Siemens-SPS wird der MB_SERVER-Baustein benötigt. Der Baustein kann im OB1 hinzugefügt werden.

In diesem Beispiel wurde ein weiterer Datenbaustein MBStat angelegt, um die Informationen des Modbus-Server zu speichern. Für die Funktionalität der Verbindung ist dies jedoch nicht erforderlich.


Baustein-EingangBeschreibung und Verwendung
CONNECT_IDSofern mehrere Modbus-Verbindungen verwendet werden, kann die CONNECT_ID entsprechend variiert werden. Auf dem Loxone-Miniserver ist die ID bei Modbus-Adresse einzustellen (siehe Einrichtung Loxone).
MB_HOLD_REGHier wird der Pointer auf den angelegten Datenbaustein eingetragen.
PORTAls Port sollte hier der Standardport 502 verwendet werden. Dieser ist entsprechend auf dem Loxone-Miniserver ebenfalls einzustellen.
DISCONNECTMit DISCONNECT = true kann die Modbusverbindung ausgeschaltet werden.

Das Projekt kann nun kompiliert und geladen werden. Am Bausteinausgang ERROR kann anschließend überprüft werden, ob es ein Konfigurationsfehler gibt. Dazu gibt es in der Hilfe eine Beschreibung zu den Fehlercodes.

Wenn der Modbus-Server auf der Steuerung problemlos läuft kann die Einrichtung auf der Loxone weiter gehen.

Die Funktionalität des Modbus-Server ist nicht abhängig von einer stehenden Datenverbindung. Also auch ohne eine Verbindung zur Loxone sollte der Server fehlerfrei laufen. Ist dies nicht der Fall kann eine fehlerfreie Kommunikation nicht erfolgen und der Fehler auf der Siemens-SPS muss zunächst beseitigt werden.

Einrichten des Loxone Miniservers

In der Loxone Config muss als Erstes ein neuer Modbus-Server angelegt werden. In den Einstellungen des Servers ist die IP-Adresse der Siemens-Steuerung und der Port über den die Kommunikation erfolgen soll einzutragen - in unserem Fall Port 502. Die Wartezeit nach Start gibt an, wann die Loxone beginnt den Modbus nach einen Neustart abzufragen.


Anschließen wird das Modbus-Gerät hinzugefügt. Hierzu den Modbusserver auswählen und im Menü Sensoren und AktorenModbus Gerät auswählen

Dem Modbusgerät kann dann ein beliebiger Name vergeben werden. Das Modbusgerät bekommt die Adresse die in der Siemens-Steuerung unter CONNECT_ID eingestellt wurde.

In dem Beispiel wäre das die 1.


Nun können nach Bedarf die Datenpunke konfiguriert werden.

Sensoren - Datenpunkte die von der Siemens-SPS gelesen werden

Als Lesebefehl sollte hier 3 - Read holding register verwendet werden, da der Loxone Miniserver aus einem Halteregister - in unserem Beispiel bestehend aus UINTs - lesen soll.

Um den Überblick zu behalten empfiehlt es sich hier eine klare Struktur in der Datenkommunikation zu wählen. Der Datenbaustein in der Siemens-SPS besteht aus einem Array of UINTs. Somit sollte drigend auch beim Lesen darauf geachtet werden, dass immer 16-Bit Variablen gelesen werden. Natürlich können hier theoretisch auch andere Lesebefehle verwendet werden. Diese haben als Ergebnis aber z.T. eine andere Datenlänge. Dies kann dazu führen, dass die Interpretation der Daten zu einem durcheinander führt.

Die IO-Adresse ist hier idealerweise die Nummer der Array Variable.


Im Abfragezyklus wird festgelegt, wie oft die Loxone diesen Sensorwert abfragt.

Aktoren - Datenpunkte die in das Halteregister der Siemens-SPS geschrieben werden

Hier wird genau wie beim Sensor in der IO-Adresse die Array-Nummer angegeben. Als Schreibe-Befehl ist die 6 - Preset Single Register zu verwenden

Warum macht ein Status-Wort einfach Sinn?

Ein Statuswort bestehend aus 16 Bit. Der Server richtet auf der Kommunikationsebene ein fortlaufendes Register ein, das in 16 Bit Datenblöcke unterteilt wird. Wenn nun ein Einzelstatus (1 Bit) übergeben werden soll, sind die anderen 15 Bit des Datenblocks ungenutzt, werden aber permanent mit übertragen.

Das hat zur Folge, dass die Datenmenge eines Modbustelegrams deutlich größer ist. Das widerum benötigt natürlich auch mehr Zeit für die Übertragung.

In unserem Beispiel spielt dies hier keine große Rolle, da die Abtastrate der Loxone nicht schneller als 5 Sekunden gewählt werden kann. Dennoch kann dies aber bei sehr großen Datenmengen zu Probleme führen und führt später nur zu einer aufwendigen Fehlersuche.



Verwandte Artikel