next up previous contents
Next: Regelung mit einem neuronalen Up: Regelung des Pendelsystems Previous: Leistungsfähigkeit der Echtzeitsteuerung

Anforderungen für die Echtzeitsteuerung

  Die Hardwareansteuerung ist nur auf IBM-kompatiblen PCs unter Linux lauffähig und benötigt die originale Schnittstellenkarte mit dem Aufbau des Pendels, siehe dazu Kap. gif und Hardware96. Damit die Hardware in Echtzeit gesteuert werden kann, müssen folgende drei Bedingungen erfüllt sein:

a) Die Reaktionszeit auf einen Hardwareinterrupt darf einige Mikrosekunden regelmäßig nicht überschreiten.

b) Die maximale Zeit ohne Steuerung der Hardware, die Totzeit, muß kleiner als ungefähr 10 Millisekunden sein. Die Totzeit ist das maximale Zeitintervall, in dem der Steuerprozeß vom Scheduler keine Rechenzeit bekommt. Entscheidend dafür ist vor allem die Zeit, die nach dem Aufwecken des Steuerprozesses durch einen Interrupt vergeht, bis der Steuerprozeß wieder Rechenzeit vom Scheduler bekommt.

c) Für eine stabile Steuerung müssen die Steuerbefehle in einem äußerst gleichmäßigen Zeittakt erfolgen. Daher darf die maximale Abweichung ausgeführter Steuerbefehle pro Sekunde einen Wert von etwa 1% nicht überschreiten.

Um diese Bedingungen zu erfüllen sind im einzelnen folgende Voraussetzungen erforderlich:

a) Für die Steuerung mit dem neuronalen Netz ist eine Rechenleistung von mindestens einem Pentium 75 oder höher nötig. Für die Steuerung mit dem Fuzzy-Controller reicht ein schneller 486 aus.

b) Es wird ein spezieller Echtzeitkernel benötigt, da der Standardkernel nur mit einem Takt von 100 Prozeßwechseln pro Sekunde arbeitet. Um diesen speziellen Kernel zu erzeugen, muß in der Datei include/asm/param.h im Linux-Kernel Quellbaum, z.B. /usr/src/linux, der Eintrag:
#ifndef HZ
#define HZ 100
#endif
durch
#define HZ 2000
ersetzt werden. Hierbei kann man statt 2000 Werte im Bereich von 1500 bis 2000 ausprobieren.

c) Der Gerätetreiber für die Hardware benötigt einen Linux-Kernel ab Version 1.3.70. Empfohlen wird die Verwendung des neuesten Linux-Kernels von Version 2.0. Es kann nur ein nach obiger Methode angepaßter Kernel verwendet werden! Um das Modul des Gerätetreibers zu laden, werden noch die passenden Modutils benötigt. Das Modutils-Paket ist nötig, um Linux Gerätetreiber in Modulform verwenden zu können, d.h. um den Gerätetreiber in den Kernel einzubinden. Das Modutils-Paket ist als modules-2.0.0.tar.gz auf den bekannten Linux-Servern zu finden.

d) Damit die Interrupts der Karte auch wirklich den Prozessor gleichmäßig erreichen, darf kein anderes Gerät die Interrupts für längere Zeit abschalten. Außerdem darf kein Gerätetreiber im Kernel längere Warteschleifen ohne Prozeßwechsel, sog. busy-waiting durchführen. Probleme bereitet daher vor allem ältere und schlecht entworfene Hardware, das sind z.B. IDE-Platten oder Floppy-Streamer.

Für die IDE-Platten gibt es aber meist eine Lösung, die verhindert, daß die Interrupts zu lange vom Datentransfer mit der Platte unterbrochen werden. Die Lösung besteht darin, daß man bei fast allen IDE-Platten mit dem Programm hdparm die Interrupts während des Datentransfers eingeschaltet lassen kann. Dazu wird folgender Befehl nach jedem Rechnerstart ausgeführt:
hdparm -u 1 /dev/hda /dev/hdb
WICHTIG: Vorher sind aber unbedingt die Warnhinweise in der Dokumentation von hdparm zu beachten!

Das Programm hdparm kann man als hdparm-2.9.tar.gz oder neuer auf bekannten Linux-Servern finden. Platten, die über Busmaster Schnittstellen angesprochen werden, wie fast alle SCSI-Systeme, oder moderne EIDE-Platten im DMA-Modus machen keine Probleme. In Linux 2.0 wird der DMA-Modus bei EIDE-Platten nur bei dem Intel Triton und seinen Nachfolgerchipsätzen unterstützt.


next up previous contents
Next: Regelung mit einem neuronalen Up: Regelung des Pendelsystems Previous: Leistungsfähigkeit der Echtzeitsteuerung

Marius Heuler
Tue Jan 7 12:11:50 MET 1997