Der Controller

Autor: Hubert Hoegl <Hubert.Hoegl@hs-augsburg.de>
Datum: 2008-01-07
URL:http://hhoegl.informatik.hs-augsburg.de/doc/die-steuerung/controller.html

Inhalt

1   Glossar

img/uebersicht.png
Lizenz
Die komplette Software wird unter der GNU General Public License (GPL) veröffentlicht. Siehe http://www.gnu.org/licenses/gpl.html.

Controller

Auf dem Controller läuft das Steuerungsprogramm. Wesentliche Teile sind

  • Tasks (parallele Programmteile)
  • Menüsteuerung
  • Kommunikation über UART, SPI und CAN
  • Bibliothek aus vordefinierten Komponenten

Die konkrete Implementierbarkeit des Controllers soll so offen wie möglich sein. Da bei der Heizungssteuerung nur relativ träge Reaktionen im Sekunden- bis Minutenbereich auftreten, ist die Leistungsfähigkeit des Controllers (fast) nicht von Bedeutung. Folgende Randbedingungen sind erforderlich:

  • Eine 8-, 16-, oder 32-Bit CPU mit 8 bis 60 MHz Takt
  • Etwa 100 bis 500K Programmspeicher (Flash)
  • Etwa 16 bis 128K RAM Speicher
  • Real-Time Clock
  • EEPROM mit 1 bis 2K (auch SPI Anschluss möglich)
  • UART
  • SPI
  • CAN. Das CAN Interface kann entweder in den Mikroprozessor eingebaut sein, oder als externer Baustein an den Prozessor angeschlossen sein. Ausserdem ist es möglich, einen externen CAN Adapter, z.B. USB-Tiny-CAN (http://www.mhs-elektronik.de) über UART oder USB anzusteuern.
  • Freie I/O Leitungen zum Anschluss des Displays, Tasten und LEDs. Als Alternative könnte man das Diplay auch über SPI ansteuern. Dann müsste das Display allerdings mit einem eigenen kleinen Controller ausgestattet sein (oder man verwendet ein Display mit SPI Anschluss).
  • USB Device Anschluss zum Anschliessen an den PC (optional).
  • Programmierbarkeit über den GNU C Compiler.

Mögliche Hardware für den Controller umfasst:

  • Handelsübliche Boards mit 32-Bit ARM7 Mikroprozessor, z.B. LPC2292 oder Atmel AT91SAM7X256. Diese Prozessoren habe auch bereits mindestens eine CAN Schnittstelle eingebaut. Solche Boards gibt es z.B. bei Olimex (http://www.olimex.com).
  • Handelsübliche Boards mit 8-Bit Atmel AVR Prozessor, z.B. Mega128 oder Mega256.
  • Boards mit Embedded Linux, z.B. mit ARM9 MCU
  • Boards mit uClinux, z.B. mit ARM7 MCU
  • Gewöhnlicher PC unter Linux. Es reicht ein (sehr) altes Modell, z.B. ein 80486 mit 25 MHz. Es wird keine Grafik benötigt.

Manche der üblichen Boards haben keinen EEPROM und/oder keinen RTC. Diese Bausteine müssen dann extern über SPI angeschlossen werden.

Display
Es wird ein LCD Display mit 4 Zeilen und 20 Zeichen pro Zeilen verwendet.
EEPROM
Im EEPROM werden Parameter der Steuerung und bestimmte Zustandsvariablen abgelegt.
SLXIO2
Dieses Modul wird über CAN angesteuert und ermöglicht das Einlesen von Sensorwerten, das Einlesen von digitalen Werten, die Ausgabe von digitalen Werten und die Ausgabe von analogen Signalen (PWM). Es ist mit einem eigenen Controller, dem Atmel AT90CAN128 (oder CAN32, CAN64) ausgestattet.
CAN
Über den CAN Bus findet die Kommunikation zwischen (1) Controller, (2) SLXIO2 und (3) PC statt. Es ist auch möglich, dass weitere Module über CAN angeschlossen werden, z.B. ein Langzeit-Datenlogger, ein Modem für einen Zugriff über Telefon aus der Ferne.
CAN Protokoll
Die CAN Kommunikation wird mit einem dafür entwickelten Protokoll durchgeführt ("cannet").
MCU
Microcontroller Unit
SOC
System-On-Chip
SPI

Die SPI Schnittstelle ist sehr vielseitig verwendbar, z.B. für

  • Module zur Funkkommunikation (Bluetooth, Zigbee)
  • GSM Modem
  • EEPROM
Embedded Linux
Linux anpepasst für Embedded Systems mit leistungsfähiger CPU, z.B. ARM9, Power PC, MIPS oder ähnlich.
uClinux
Linux anpepasst für Embedded Systems mit etwas weniger leistungsfähiger CPU, z.B. ARM7 (ohne MMU).
I2C
Wird nicht verwendet, da nicht immer vom Mikroprozessor unterstützt.
Echtzeit Betriebssystem
Auf dem Controller kann ein Echtzeit Betriebssystem (RTOS) laufen, z.B. FreeRTOS (http://freertos.org).
Octopus
Ein offener USB Adapter um vom PC diverse Kommunikationsschnittstellen anzusteuern, z.B. GPIO, UART, SPI und CAN (optional). Siehe http://www.embedded-projects.net.
USBprog
Ein offener USB Adapter zum Programmieren und Debuggen von Mikrocontrollern. Siehe http://www.embedded-projects.net.
Datenlogger

Er dient zum Abspeichern von Messdaten über längere Zeiträume, z.B. Wochen und Monate. Die Flash-Technologie wird als Speicher verwendet, in der Form von MMC Karten, DataFlash Karten oder ICs, oder USB Flash Dongles. In letzterem Fall muss der Logger auch über eine USB Host Schnittstelle verfügen.

Manche Controller Plattformen haben bereits eine USB Host Schnittstelle eingebaut. Unter Embedded Linux oder uClinux gibt es dazu auch Treibersoftware.

Menü
Der Controller wird über ein Menü auf dem alphanumerischen Display (20 x 4 Zeichen) bedient.
Programmiersprache Die Software auf dem Controller wird in C
programmiert. Es wird ausschliesslich der freie GNU Compiler (gcc) verwendet. Software für den PC soll mit Python und Tkinter (Grafik) realisiert werden. Grafische Oberflächen in C
Python
Eine interpretierte high-level Sprache zur schnellen Konstruktion von lesbaren Programmen. Siehe http://www.python.org.

2   SLXIO2

Das Ein-/Ausgabemodul SLXIO2 hat sich aus dem schon etwa 10 Jahre verwendeten SLXIO entwickelt. Die Version 2 hat folgende Eigenschaften:

3   Das Menü

Melc/Mex - Compiler für die Menüsprache und ein Interpreter. Siehe Literaturangabe [2].

Ideen für die Zukunft

4   Literatur

[1]

H. Högl, Eine modulare und konfigurierbare Heizungssteuerung, 1. Dezember 2003.

http://hhoegl.informatik.hs-augsburg.de/hhweb/doc/heizung/paper.pdf

[2]

Peter Novotnik, A framework for menu structured user interfaces on embedded systems, Diplomarbeit im Wintersemester 2005/2006.

http://hhoegl.informatik.hs-augsburg.de/da/da-22

[3]

Christian Merkle, Entwicklung eines GUI-Frameworks fuer Embedded Systems zur plattform- und controllerunabhängigen Ansteuerung und Simulation von LCDs, Masterarbeit im Wintersemester 2007/2008,

http://hhoegl.informatik.hs-augsburg.de/da/ma-4