kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

12 Implementierung von Fuzzy-Systemen auf PCs und Mikrocontrollern

  • Hier wird zunächst ein Überblick gegeben.
  • Die hier dargestellten Ideen werden dann durch Entwicklung konkreten Quellcodes in den Unterkapiteln konkretisiert.

Wie kan man Fuzzy-Systeme implementieren?

  • Eine sehr flexible Möglichkeit der Implementierung bietet eine objektorientierte Umsetzung, bei der eine hierarchische Objektstruktur umgesetzt wird.
  • Auf der obersten Ebene ist das Fuzzy-System.
  • Ein Fuzzy-System besteht aus dem Eingangs-Fuzzy-Set und dem Ausgangs-Fuzzy-Set und bietet Methoden sowohl dazu, aus einem eindeutigen Eingangssignal ein passendes Ausgangssignal zu bestimmen, als auch dazu, die Fuzzy-Sets zu verändern.
  • Die Berechnung des Ausgangssignals kann aufgrund der in einem speziellen Objekt repräsentierten Fuzzyregeln geschehen.
  • Die Fuzzy-Sets bestehen aus Fuzzy-Größen und bieten Methoden zur Fuzzifizierung (Eingang) und Defuzzifizierung (Ausgang).
  • Fuzzy-Größen repräsentieren im Wesentlichen jeweils eine bestimmte Zugehörigkeitsfunktion.
Objektorientierte Umsetzung eines Fuzzy-Systems

Bild 12-1: Objektorientierte Umsetzung eines Fuzzy-Systems

  • Zur Orientierung und Erinnerung: Das Fuzzy-System kann als Regler benutzt werden.
  • Es kann in seinem Verhalten durch Änderung der Fuzzy-Regeln und durch Verschieben der Eck- und Extrempunkte der Fuzzy-Größen angepaßt werden:
Veränderung des Verhaltens eines Fuzzysystems durch Manipulation der Eck- und Extremwerte der Fuzzygrößen, oder der Fuzzyregeln.

Bild 12-2: Veränderung des Verhaltens eines Fuzzysystems durch Manipulation der Eck- und Extremwerte der Fuzzygrößen, oder der Fuzzyregeln.

Verständnisfrage: Warum handelt es sich bei dem Fuzzyset oben eher um ein Fuzzy-Ausgangsset, als um ein Fuzzyeingangsset?
  • Der aufwändigste Teil der Berechnungen in einem Fuzzysystem, ist die Defuzzifizierung und die dazu notwendigen Flächen- und Schwerpunktsberechnungen.
  • Eine mit gewissen Einschränkungen noch funktionierende Vereinfachung stellt die Verwendung von Nadelförmigen Ausgangsfuzzygrößen dar.
  • Hier entfallen die Flächen- und Schwerpunktberechnungen.
  • Der Schwerpunkt einer Fuzzygröße liegt immer dort, wo die Nadel ist.
  • Die Aktivierung einer Regel führt dann zu einem Anteil 0..1 einer Nadellänge.
  • Der Gesamtschwerpunkt ergibt sich hier aus der mit den Nadellängen gewichteten Summe aus allen Nadelpositionen durch die Summe der Nadellängen.
Vereinfachung eines Ausgangsfuzzysets durch Verwendung von Nadelförmigen Fuzzygrößen.

Bild 12-3: Vereinfachung eines Ausgangsfuzzysets durch Verwendung von Nadelförmigen Fuzzygrößen.

  • Diese Vereinfachung reicht in der Regel nicht aus, um ein Fuzzysystem performant auf einem Mikrocontroller umzusetzen.
  • Anstatt das Fuzzysystem tatsächlich umzusetzen, kann auch aus einem durch Simulation optimierten Fuzzysystem eine Lookup-Tabelle gebildet werden, die die aufwändigen Berechnungen ersetzt.
  • Die für das Fuzzysystem verwendeten Eingänge rühren bei einem Mirkocontroller beispielsweise von den digitalisierten Sensordaten her.
  • Da diese digitalisierten Größen nur begrenzte Auflösung und Wertebereich haben, kann für jede mögliche Eingangskombination der diskreten Werte der Ausgang aus dem simulierten Fuzzysystem ausgelesen werden und in eine Tabelle übertragen werden.
  • Diese wird dann statt des eigentlichen Fuzzysystems auf den Mikrocontroller übertragen.
  • Um dies wirklich umsetzen zu können, kann es sein, dass die Diskretisierung der Eingänge weiter vergröbert werden muß.
  • Alternativ können auch Felder durch spezielle Kontrollstrukturen zusammengefaßt werden, also z.B. für Eingang -30<x<30 UND Eingang -30<v<30, setze Ausgang z auf 20.
  • Anhand des Übungsbeispiels aus Kapitel 9, Regelungssysteme, soll im folgenden aufgezeigt werden, wie die oben beschriebenen Typen an Implenetationen umgesetzt werden können.
  • Die Behandlung einer vollständigen allgemein verwendbaren objektorientierten Implementierung würde aber den Rahmen dieser Veranstaltung sprengen.