DIY Temperatur-Controller


[ HOME ] - [ SUPPLY & SENSOR ] - [ RS232 & MB & PC ] - [ MCU ] - [ TIMER RAMP ] - [ PID PWR ] - [ ... ]

3. RS232 - Serielle Schnittstelle

Für die Kommunikation mit dem PC ist eine Serielle Schnittstelle unverzichtbar. Zum Glück ist diese immer noch Standardmäßig auf vielen PC-Mainboards verfügbar und zur Not gibt es auch noch USB-to-RS232 Adapter.

Um die Serielle-Schnittstelle auf einem Mikrocontroller benutzen zu können müssen im wesentlichen nur die üblichen Parameter spezifiziert werden: Baudrate (z.B. 9600), Anzahl der Datenbits pro wort (üblicherweise 8), Parität/Art der Parität (z.B. keine, oder gerade), Anazahl der Stopbits (z.B. eins).

Wichtig ist, dass Mikrocontroller und PC die gleichen Parameter für die Verbindung spezifiziert haben. Einzig ein Teiler für die Baudrate muss berechnet werden, so dass die Taktfrequenz dividert durch diesen Teiler die Baudrate ergibt. Normalerweise wird der Teiler noch mit einem einstellbaren Vorfaktor/prescaler multipliziert, um effektiv größere Teiler zu bekommen, dieser Prescaler muss auch mitbetrachtet werden bei der Auswahl des Teilers - Hilfe bietet i.A. das Datenblatt des Mikrocontrollers.

Auf der Hardwareseite müssen noch die Logikpegel der Transmit- und Receive-Leitungen angepasst werden. Hierbei hilft ein MAX232: Er wandelt den Low-Pegel (~0V) des MC auf +15V und den High-Pegel (~5V) auf -15V und auch in umgekehrte Richtung. Die genauen Spannungen können variieren und der PC ist i.A. tollerant, tatsächlich können PCs auch schon die logisch-invertierten Signale des MCs akzeptieren - andersrum kann der MC aber zerstört werden.

Der MAX232 sorgt also für ein invertiertes, verstärktes und gespaltenes Signal.

4. FreeMODBUS - Modbus (über RS232)

Modbus ist ein Industriestandard, der sehr verbreitet ist in der Welt der Speicher-Programmierbaren-Steuerungen (SPSen). Entscheidend bei Modbus ist, dass es ein recht applikations-unspezifisches Protokoll ist und sich weitgehend Transparent in die Applikation einfügt, ohne den Programmablauf zu diktieren. Modbus dient im wesentlichem der Kommunikation und Manipulation von Speicherzuständen. Dazu benötigt man ein Mapping zwischen Speicherarten+Adressen zu realen Speicheradressen. Dieses Mapping kann von Applikation zu Applikation unterschiedlich sein und wird nicht vom Protokoll vorgeschrieben.

FreeMODBUS bietet eine Open-Source Solution mit Portierungen für viele Mikrocontroller. In FreeMODBUS wird das Mapping durch benutzerdefinierte Callbacks implementiert. Das Benutzerprogramm erfährt so, welcher Speicherblock gelesen oder geschrieben werden soll und kann diese Aktion entsprechend ausführen, wenn es sich um eine (für diese Applikation) zulässige Operationen handelt. Der FreeMODBUS Modbus-Protocol-Layer selber führt keinerlei Schreib-/Lese-Operationen durch, sondern vermittelt entsprechende Anfragen und Antworten nur.

Im Temperatur-Controller ist der gesamte Controller-Zustand (alle Zustandsvariablen) gemapped, insbesondere auch die Konfigurationsparameter, die Sensordaten, die Geglätteten Sensordaten und die Debugvariablen. Das heißt, alle relevanten System-Variablen und -Parameter sind von außen über das Modbus-Protokoll einsehbar und manipulierbar. Für die Systementwicklung und -debugging stehen also alle Mittel zur Verfügung.

Natürlich ließe sich der Zugriff auch aus Sicherheitsgründen für eine Release-Version einschränken. Für den Verfälschungsschutz bei der Datenübertragung sorgt ein 16 bit Cyclical-Redundancy-Check, mit dem Polynom: 0xA001 (1010000000000001). FreeMODBUS verfügt standardmäßig über einen Tabellengetriebenen CRC, zur Speichereinsparung wurde dieser aber, für den Temperatur-Controler, gegen einen algorithmischen ausgetauscht. Insbesondere könnte das gesamte Modbus-Protokoll auch entfernt werden, ohne dass dies sich auf das restliche Programm auswirken würde. --- Modbus ist, als hätte man Akkupunkturnadeln im Speicher der Anwendung; man kann PEEKen und POKEn wie man will.

Modbus erlaubt ein sehr einfaches In-Circuit-Debugging.

Die Modbus Implementierung benötigt nicht unwesentlich viel Programmspeicher, wodurch die Controllerauswahl bei größeren Nutzlast-Programmen eingeschrängt wird.

Zur Debugging-Zeit kann ein Größerer Mikrocontroller notwendig sein - wahrend eine Release-Version ohne Modbus noch in einen kleineren passt.

5. Modbus-Client PC-Software

Damit man Modbus nutzen kann, benötigt man ein entsprechendes Client-Programm auf dem PC, denn einfache Terminal-Programme bieten nur rohe Datenübertragung über RS232 ohne besondere Protokolle - auch die Berechnung der CRC-Prüfsumme und das eintippen eines Modbus-Paketes von Hand sind mindestens unpraktisch. Es mag aber sinnvoll sein bestimmte Pakete in Dateien zu speichern, die dann über das Terminal-Programm verschickt werden können - aber auch hierbei empfiehlt es sich ein Programm zum Schnüren der Modbus-Pakete zu schreiben.

Deutlich angenehmer wird es aber, wenn man ein extra Modbus-Tool benutzt oder eines Schreibt. Die Dokumentation des Modbus-Protokolls hilft hierbei weiter, auch findet man dabei Beispielcode für den verwendeten CRC. Zum aktuellem Zeitpunkt verfügt das Temperatur-Controller-PC-Programm über eine simple Textausgabe, über die der gesamte Speicherbereich ausgegeben wird. Mittels Tastendruck lässt es sich hierbei zwischen verschiedenen Speicherbereichen wechseln.

Die vollständige Auflistung des internen Zustand des MC hilft beim Debuggen sehr, sie verwandelt die Blackbox in eine Whitebox.

In einer späteren Version sollte es eine angemessene Menüführung geben, außerdem sollte es auch Ansichten geben, die die für einen Endbenutzer benötigte Information bieten und ihm erlaubt Configurationsparameter zu Ändern.

Insgesamt hat sich das Modbus-Protokoll für die MC-Entwicklung bewährt.

Anbieterkennzeichnung / Service Provider