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