Projekt: Temperatur-Messsystem - Datenkommunikation


Kapitel 1: Überblick über das System
Kapitel 2: Sensormodul 1
Kapitel 3: Sensormodul 2/3
Kapitel 4: Anzeigemodul 1
Kapitel 5: Anzeigemodul 2
Kapitel 6: Anzeigemodul 3
Kapitel 7: Datenkommunikation
Kapitel 8: Software "TAnz"
Kapitel 9: Software "AnzKom"


Datenkommunikation zwischen den Modulen

Wenn man größere Pläne für das Temperatur-Messsystem hat, also z.B. den Anschluss eines PCs plant oder auch eigene Geräte integrieren möchte, dann sollte man wissen, wie die Kommunikation der Module untereinander funktioniert. Dieses Kapitel beschreibt die Datenkommunikation zwischen dem Sensor- und dem Anzeigemodul.

Die Daten zwischen Sensormodul und Anzeigemodul(en) bzw. PC werden über eine RS-232 Schnittstelle übertragen. Da die Daten nur in eine Richtung transportiert werden und auch keinerlei Handshaking verwendet wird, konnte die Schnittstelle auf genau eine Datenleitung reduziert werden: TXD des Sensormoduls führt auf RXD des Anzeigemoduls oder der PC-Schnittstelle. Der Vorteil ist eine einfachere Verkabelung und auch die Software vereinfacht sich. Es gibt natürlich auch Nachteile, denn der Empfänger muss jederzeit bereit sein, sonst gehen Daten verloren. Praktisch gibt es damit aber keine Probleme, da die Anzeigemodule interruptgesteuert arbeiten und auch die heute gebräuchlichen PCs sollten alle Daten fehlerfrei empfangen können.

Es gab übrigens auch Überlegungen, die RS-232 Verbindung über eine Funkstrecke zu realisieren, z.B. mittels fertigen Sende- und Empfangsmodulen, die es für das ISM-Band (433 oder 868 MHz) gibt. Ich habe das aber wieder verworfen, weil man die Kommunikation extrem sichern muss, damit die Daten fehlerfrei übermittelt werden können. Aber vielleicht greife ich das später wieder auf, denn es bietet auch einige Vorteile.

Die Datenübertragung erfolgt mit einer Geschwindigkeit von 9600 Baud, es werden 8 Datenbits und ein Stoppbit verwendet (ohne Parität). Alle Datenpakete bestehen aus ASCII-Text-Zeichen und werden mit <cr> (Carriage Return, ASCII 13) abgeschlossen. So bleiben die Daten überschaubar und man kann sie z.B. auf einem Terminalprogramm mitlesen. Insgesamt gibt es 5 Typen von Datenpaketen, welche folgendermaßen aufgebaut sind:

abcdefgh Typ 1 - Sensorbelegung 8 Zeichen + <cr>

a Anzahl der Sensoren an Bus 1
b Anzahl der Sensoren an Bus 2
c Anzahl der Sensoren an Bus 3
d Anzahl der Sensoren an Bus 4
e Anzahl der Sensoren an Bus 5
f Anzahl der Sensoren an Bus 6
g Anzahl der Sensoren an Bus 7
h Anzahl der Sensoren an Bus 8

Dieser Datentyp ist identisch mit der Anzeige auf dem LCD der Sensormodule während der Startprozedur und zeigt an, wie viele Sensoren an jedem 1-Wire-Bus angeschlossen sind. Jeder Buchstabe im Bild (a-h) entspricht einem Wert zwischen 0 und 27, wobei die Werte 0-9 direkt angezeigt und die Werte 10-27 durch die Buchstaben A-R repräsentiert werden. Folgende Anzeige ergibt sich, wenn man die im Kapitel "Sensormodul 2/3" angegebene Beispiel-Schaltung verwendet:

33000200   3 Sensoren befinden sich an Bus 1, weitere 3 an Bus 2 und nochmals 2 an Bus 6.

n:ttt.t Typ 2 - Temperatur 7 Zeichen + <cr>

n Sensorkennung
: Trennzeichen
ttt.t Temperaturwert

Mit diesem Datentyp wird ein Temperaturwert in der Einheit °C übermittelt. Die Sensorkennung n liegt im Bereich 1-8 oder a-s (entspricht Sensor 9-27), das Trennzeichen ist immer ein Doppelpunkt und der eigentliche Wert besteht immer aus 3 Dezimalstellen, einem Dezimalpunkt und einer Nachkommastelle. Der mögliche Temperaturbereich liegt zwischen -55°C und 125°C. Führende Nullen an der Hunderter- oder Zehnerstelle werden immer durch Leerzeichen ersetzt. Bei Temperaturen unter 0°C wird das Minuszeichen direkt vor den Wert gesetzt, also entweder an die Hunderter- oder an die Zehnerstelle. Hier sind einige Beispiele:

3: 22.6   Temperatursensor 3 übermittelt eine Temperatur von 22.6°C.
4:  8.7   Temperatursensor 4 übermittelt eine Temperatur von 8.7°C.
5: -4.2   Temperatursensor 5 übermittelt eine Temperatur von -4.2°C.
c:-21.0   Temperatursensor 11 übermittelt eine Temperatur von -21.0°C.

w:_dddd Typ 3 - Luftdruck 7 Zeichen + <cr>

w Sensorkennung
: Trennzeichen
_ Leerzeichen
dddd Luftdruckwert

Mit diesem Datentyp wird der Luftdruckwert in der Einheit hPa (Hektopascal) übermittelt. Da es nur einen Luftdrucksensor im System gibt, wird diesem die feste Sensorkennung w zugeordnet. Das Trennzeichen ist immer ein Doppelpunkt, dem sich ein Leerzeichen anschließt. Der Luftdruckwert ist grundsätzlich 4-stellig und bei Werten unter 1000hPa wird die Tausenderstelle durch ein Leerzeichen ersetzt. Der Luftdruckwert kann im Bereich zwischen 150hPa und 1150hPa liegen. Auch für diesen Datentyp möchte ich 2 Beispiele zeigen:

w: 1014   Der Luftdruck beträgt 1014hPa.
w:  997   Der Luftdruck beträgt 997hPa.

n:__fff Typ 4 - Luftfeuchtigkeit 7 Zeichen + <cr>

n Sensorkennung
: Trennzeichen
__ 2 Leerzeichen
fff Luftfeuchtigkeitswert

Mit diesem Datentyp wird der Luftfeuchtigkeitswert in der Einheit %RH (Relative Humidity = relative Luftfeuchtigkeit) übermittelt. Die Sensorkennung n liegt im Bereich x-z (entspricht Luftfeuchtigkeitssensor 1-3). Nach dem Doppelpunkt als Trennzeichen folgen immer 2 feste Leerzeichen. Diesen schließt sich der 3-stellige Luftfeuchtigkeitswert im Bereich von 0% bis 100% an. Ist der Wert kleiner als 100 oder kleiner als 10, dann werden weitere Leerzeichen eingefügt. Auch für diesen Datentyp möchte ich 2 Beispiele zeigen:

x:   64   Der Luftfeuchtigkeitssensor 1 übermittelt eine Luftfeuchtigkeit von 64%RH.
y:    9   Der Luftfeuchtigkeitssensor 2 übermittelt eine Luftfeuchtigkeit von 9%RH.

n:a Typ 5 - Alarm 3 Zeichen + <cr>

n Alarmkennung
: Trennzeichen
a Alarmwert

Mit diesem Datentyp wird eine Alarmmeldung übermittelt. Die Alarmkennung n ist ein Buchstabe im Bereich A-D, wobei A für den Alarm 1 verwendet wird, B für den Alarm 2 usw. Das Trennzeichen ist immer ein Doppelpunkt und der Alarmwert ist entweder 0 oder 1, wobei 0 hier "Alarmkontakt geöffnet" und 1 "Alarmkontakt geschlossen" bedeutet. Auch hier noch 2 Beispiele:

B:1   Alarmkontakt 2 wurde geschlossen.
C:0   Alarmkontakt 3 wurde geöffnet.

PC-Anschluss

Der Anschluss des Sensormoduls an einen PC oder ein anderes Computersystem mit RS-232 Schnittstelle kann mit dem abgebildeten Adapter hergestellt werden. Dieser Anschluss kann auch parallel zum Anzeigemodul erfolgen, d.h. die Daten vom Sensormodul werden dann sowohl am Anzeigemodul als auch auf dem PC angezeigt. Die Schnittstelle am PC ist folgendermaßen einzustellen:

Baudrate: 9600, Datenbits: 8, Stoppbits: 1, Parität: keine, Protokoll: keins

Es ist auch ein Anschluss über USB möglich, hier wird zusätzlich ein USB-RS232-Wandler benötigt. Das hier beschriebene USB-RS232 Interface eignet sich sehr gut für diesen Zweck.

Zum Test des Datenempfangs kann ein Terminalprogramm verwendet werden. Das Bild links zeigt das HyperTerminal beim Empfang der Daten des Sensormoduls. Damit die Daten richtig angezeigt werden, sind folgende Parameter einzustellen:

Direktverbindung über COM1, COM2, ..., COMx (Schnittstellen-Parametern wie oben), Emulation: ANSI, ASCII-Konfiguration: "bei Empfang Zeilenvorschub am Zeilenende anhängen" aktivieren

Zur komfortablen Anzeige aller Messwerte und Alarmmeldungen und zum Aufzeichnen der Daten kann die im folgenden Kapitel beschriebene Software "TAnz" verwendet werden.


Kapitel 1: Überblick über das System
Kapitel 2: Sensormodul 1
Kapitel 3: Sensormodul 2/3
Kapitel 4: Anzeigemodul 1
Kapitel 5: Anzeigemodul 2
Kapitel 6: Anzeigemodul 3
Kapitel 7: Datenkommunikation
Kapitel 8: Software "TAnz"
Kapitel 9: Software "AnzKom"


Allgemeines - Projekt-Überblick - Links, Software - Neuigkeiten - "Klassiker" - Galerie - Impressum
AVR-Programmierung - AVR-Bootloader - Multifunktionsuhr - Tischuhr - Wohnraumuhr - Wecker - Zahnputzuhr - BigBen-Türgong - Fahrtregler - EPROM-Programmiergerät - Temperaturmesssystem - USB-RS232 Interface - Kleine Projekte