Skip to content

Westaflex WAC Treiber

westaflex edited this page Mar 8, 2014 · 36 revisions

ENGLISH Version

Table of Contents

Einleitung

Für unseren Modbus-fähigen Wohnungslüftungs-Zentralgeräte (Temperatur und Feuchte) steht eine netzwerkfähige Raumbedieneinheit zur Verfügung. Das WAC-Gerät erfasst beispielsweise die Zimmertemperatur und Feuchtigkeit durch integrierte Fühler und ein externer Temperatureingang kann für die Erfassung einer zusätzlichen Temperatur verwendet werden. Das Raumbediengerät (iPhone, Android Client) kann über eine galvanisch getrennte RS485-Kommunikationsschnittstelle (Modbus RTU) mit dem openHAB System verbunden werden. In der SHK Industrie hat sich das bereits seit 1979 bekannte Modbus-Protokoll deshalb zu einem De-Facto-Standard entwickelt, da es sich um ein offenes Protokoll handelt. Es wird keine Binärfolge, sondern ASCII-Code übertragen, die direkt klarschriftlich lesbar ist. Es gibt prinzipiell zwei Ausführungen: Eine über die serielle Schnittstelle (asynchrone Übertragung nach EIA-232 oder EIA-485) und eine für das Ethernet. Bei unseren WAC Zentralgeräten kommt nur die EIA-485 Ausführung alias RS-485 zum Einsatz.

Treiber Konzept

Das serielle MODBUS Protokoll ist ein Master - Slave Protokoll. Immer nur ein Master ist mit ein oder mehreren Slaves ( maximal 247 ) an den gleichen seriellen Bus angeschlossen. Der Master selbst hat keine bestimmte Adresse. Nur Slaves müssen an diesem seriellen Bus eine eindeutige Adresse haben. Der Master spricht gezielt einen Slave an, indem er die Adresse dieses Slaves einer PDU voranstellt. Ebenso sendet der Slave seine Adresse in der Rückmeldung an den Master, um den Absender der Nachricht anzuzeigen. Im RTU-Modus steht am Telegrammende ein Prüfsummenfeld, das anhand der "Cyclical Redundancy Checking ( CRC )-Methode" über den Inhalt der Nachricht ermittelt wird. Wenn die beiden Werte nicht gleich sind, führt das zu einer Fehlermeldung. Das Telemetrie-Protokoll Modbus RTU arbeitet auf Anfrage-Antwort-Basis und bietet verschiedene Dienste, die durch Funktions-Codes spezifiziert werden. Hat der Server (Arduino oder Varianten, wie Rasberry PI) den Lesebefehl korrekt empfangen, dann werden die gewünschten Eingangsdaten im Response-Telegramm an den Client übertragen. Grundsätzlich liegen dabei die Buszykluszeiten erheblich über dem KNX/EIB Feldbus-Klassiker. Insofern kann unsere E/A-Lösung mit ModbusRTU als erheblich leistungsfähiger angesehen werden. Im ASCII-Modus beginnen Nachrichten mit einem vorangestellten Doppelpunkt, das Ende der Nachricht wird durch den Zeilenumbruch markiert.

Treiber Konfiguration

Das Datenmodell ist einfach strukturiert und unterscheidet 4 Grundtypen: Discrete Inputs (Eingänge), Coils (Ausgänge), Input Register (Eingangsdaten) und Holding Register (Ausgangsdaten). Unser Definition enthält folgende Bestandteile: Geräteadresse: 1 Byte, dann Function Code: 1 Byte. Mit diesem Function Code wird festgelegt, welche Operation auf Grund eines Requests durch den Arduino Server ausgeführt werden soll, sowie letztendlich für die Datensicherung mit CRC: 2 Bytes. Jeder Busteilnehmer besitzt eine eindeutige Adresse, wobei die Adresse 0 für einen Broadcast reserviert ist.

Kennzeichnung Modbus Variable Datenadresse Werte
Frostschutz 01h_Read_Coils 0 1-aktiv, 0-passiv
Frostschutzfunktion des Plattenwärmetauschers
Feuer 01h_Read_Coils 1 1-aktiv, 0-passiv
Überhitzungsalarm Anzeige
Filtertausch 01h_Read_Coils 2 1-aktiv, 0-passiv
Filter verschmutzt, Austausch Signal
Ventilation 01h_Read_Coils 3 1-aktiv, 0-passiv
Lüfteralarm Fehlfunktions-Anzeige
Spannung 01h_Read_Coils 5 1-aktiv, 0-passiv
Niedrige Stromspannung Hinweis
Temperatur 01h_Read_Coils 6 1-aktiv, 0-passiv
Sensor Temperatur Alarmmeldung
Abluftwärme 01h_Read_Coils 7 1-aktiv, 0-passiv
Hinweisgeber zur Abluft-Temperatur
Zuluftwärme 01h_Read_Coils 8 1-aktiv, 0-passiv
Hinweissignal des Zuluft-Temperatursensors
Feuchtigkeit 01h_Read_Coils 9 1-aktiv, 0-passiv
DTJ(100) Feuchtigkeits-Alarm (Sensormeldung ab einer Sättigung von 70%)
Wasserrücklauf 01h_Read_Coils 10 1-aktiv, 0-passiv
Wassertemperatur-Sensor im Rücklauf
Außentemperatur 01h_Read_Coils 11 1-aktiv, 0-passiv
Außentemperaturfühler mit Alarm (Geräteabschaltung bei Temperaturen unter dem Gefrierpunkt)
Lüfterstatus 01h_Read_Coils 12 1-aktiv, 0-passiv
Lüftermotoren Status eingeschaltet
Klappenantrieb Status 04h_Read_Input 13 0-90
Antrieb und Status der Außenluftklappe
Vorheizregister 01h_Read_Coils 14 1-aktiv, 0-passiv
Anzeige vom Status des Vorheizregisters
Heizelement 01h_Read_Coils 15 1-aktiv, 0-passiv
Monitor zur Heizleistung
Geschwindigkeit 06h_Write_Holding_Register 16 0, 1, 2, 3
Einstellbereich der Lüfter-Geschwindigkeit
Zuluft-Temperatur 06h_Write_Holding_Register 17 0-30
Einstellbereich der Zuluft-Temperatur
Feuchtigkeitssensor 04h_Read_Input 18 0-99
DTJ(100) Wertebereich des Feuchtigkeitssensors
Zuluft-Motor 04h_Read_Input 19 0-3
Geschwindigkeit des Zuluft-Motors
Abluft-Motor 04h_Read_Input 20 0-3
Geschwindigkeit des Abluft-Motors
Temperatur-Anzeige 04h_Read_Input 21 Hex: E0
Anzeige der Temperatursensoren Zuluftstrecke
Temperatursensor 04h_Read_Input 22 Hex: E0
DTJ(100) Anzeige des Temperatur Wertebereiches
Abluft-Temperatur 04h_Read_Input 23 Hex: E0
Wert des Abluft-Temperatursensors
Außenluft-Sensor 04h_Read_Input 24 Hex: FFEC
Anzeige und Wertebereich des Außenluft-Temperatursensors
Kondensat 04h_Read_Input 25 Hex: FFEC
Anzeige der Kondensattemperatur

Beispiele

die klassische Modbus-RTU (asynchrone Übertragung über RS-232 oder RS-485)

modbus_t *mb;

  uint16_t tab_reg[32];
  mb = modbus_new_tcp("127.0.0.1", 1502);
  modbus_connect(mb);
  /* Read 5 registers from the address 0 */
  modbus_read_registers(mb, 0, 5, tab_reg);
  modbus_close(mb);
  modbus_free(mb);

Hinweise

Auf der WAC Steuerungsplatine befinden sich zwei Dip-Switches für die Terminierungswiderstände. Bei Anschluss eines Modbus-Gerätes soltten beide auf ON eingestellt sein. Achtung: vor Öffnen der Gehäuseklappe das WAC Geräte komplett vom Stromnetz trennen. Inspiration gefällig?! →Original Westaflex Apps...

Installation

Community

Features

Samples

Release Notes

Clone this wiki locally