Software Entwurf für den
RCX von Lego Mindstorms
1
Gliederung










Einleitung
Was ist ECRobot?
Beteiligte Komponenten zum Entwurf mit ECRobot
Simulink
S-Funktionen
Real-Time-Workshop
Stateflow
ECRobot
Praktische Erfahrungen
Bewertung
2
Einleitung




Das Ziel des HS war die Suche nach einem
Entwicklungstool für den RCX das auf möglichst
hohem Abstraktionsniveau arbeitet.
Die Webrecherche erbrachte dabei 2 Kandidaten:
 Robolab
 ECRobot
Robolab ist jedoch kostenpflichtig und es stand nur
eine Demo zur Verfügung.
Deshalb wurde mit ECRobot weiter gearbeitet.
3
Was ist ECRobot?


ECRobot ist eine Erweiterungs- Komponente für
Matlab.
Es bringt zusätzlich ein:
 Blockbibliothek für Lego in Simulink
 Target für den Real-Time-Workshop
 Makefiles zur Einbindung der Hilfskomponenten
4
Beteiligte Komponenten zum
Entwurf mit ECRobot

Neben den in Matlab bereits enthaltenen
Komponenten wie Simulink und dem RealTime-Workshop sind noch etliche
unabhängige Komponenten beteiligt:
 gMake
 Cygnus
 gcc-Compiler
 Dll
 LegOs
5
Beteiligte Komponenten zum
Entwurf mit ECRobot
Komponentenüberblick
6
Simulink


Simulink ist ein Software Packet zum Modellieren,
Simulieren und Analysieren dynamischer Systeme.
einige Features:
 graphische Benutzeroberfläche zum Modellieren
 Modelle als Blockdiagramm per Click-and-Drop
zusammenbauen
 Abschirmung des Nutzers vor der den Blöcken
innewohnenden Funktionalität (Code)
7
Simulink


Bei der Modellsimulation können die Zustände und
Ergebnisse problemlos mit der vollen Matlab
Funktionalität ausgewertet werden.
Simulationen können kontinuierlich durchlaufen
werden oder auch im Schrittbetrieb Takt für Takt
zum debuggen des Modells
8
Simulink

Erläuterung wichtiger Elemente:
 Blockdiagramm
 Block
 Blockparameter
 Sample Time
 Subsysteme
 Selbst erstellte Blöcke
 Signale
 Bibliotheken
 bedingt ausgeführte Subblöcke
9
Simulink

Block Diagramm:
Ein Block Diagramm ist ein bildliches Modell eines
dynamischen Systems. Es besteht aus einer Reihe
von Symbolen, Blöcke genannt, verbunden durch
Linien die Signale repräsentieren. Jeder Block
repräsentiert ein elementares dynamisches System
das eine kontinuierliche/diskrete Ausgabe erzeugt.
Die Linien repräsentieren Verbindungen von
Blockeingängen zu Blockausgängen. Der Typ eines
Blocks bestimmt die Beziehung zwischen Ein- und
Ausgängen.
10
Simulink

Blöcke:
Blöcke repräsentieren elementare dynamische
Systeme, die durch Simulink simuliert werden
können. Ein Block beinhaltet einen oder mehrere
Sätze von Eingaben, Zuständen und Ausgaben. Der
Blockausgang ist bestimmt durch eine Funktion
abhängig von Eingängen, Zuständen und Zeit.
11
Simulink

Block Parameter:
Die Schlüsseleigenschaften von vielen
Standardblöcken sind parametrisiert um möglichst
flexible Aufgabenlösung zu gewährleisten. Jeder
parametrisierbare Block hat einen Block Dialog in
dem die Parameter geändert werden können. Wenn
Parameter als ‚tunable’ angelegt so können sie auch
während einer Simulation geändert werden.
12
Simulink

Sample Time:
Die Sample Time muss bei diskreten Blöcken so
eingestellt werden das verbundene Blöcke dieselbe
besitzen. Was genau mit Sample Time gemeint ist
wird später noch genauer beleuchtet.
13
Simulink

Signale:
 Als Signale werden die Blockausgänge bezeichnet
 beinhaltend Datentyp (z.B. 8 – bit), Zahlentyp
(integer, real oder komplex) und Dimensionalität
(Arraygröße)
 Die meisten Blöcke sind jedoch in den Eingangsund Ausgangssignalen eingeschränkt
14
Simulink

Bibliotheken:
 die Blöcke aus den Bibliotheken können in die
Modelle kopiert werden
 Dabei bleiben sie verbunden, weswegen
Änderungen des Bibliotheksblockes auch auf den
Modellblock wirken
 Die Modellblöcke können von der Bibliothek
entkoppelt werden
15
Simulink

Subsysteme:
 ermöglichen komplexe Systeme hierarchisch zu
ordnen
 beliebig tief gestaffelt
 repräsentiert durch Subsystemblock
 festlegen von Ein- und Ausgängen
 Anlegen des Subblockdiagramms wie
Blockdiagramm
16
Simulink

Selbsterstellte Blöcke:
 Es besteht die Möglichkeit eigene Blöcke zu
erstellen.
 Graphisch oder über Programmierung
 können in Blockbibliotheken übernommen werden
 Unterschied zu Subsystemen, beim grafischen
Erstellen, ist der Parameterdialog
 die Programmierung wird im Kapitel S-Funktionen
genauer erläutert
17
Simulink

bedingt ausführbare Subblöcke:
 die Ausführung ist von einem Kontrollsignal
abhängig
 Reaktion auf Signalflanken oder -werte
18
S-Funktionen





sind eine Möglichkeit Code in sein Projekt zu
integrieren
der Vorteil ist das einmal programmierte Blöcke leicht
wieder verwendbar sind
vor allem durch die Möglichkeit des Parametrisierung
unterstützt werden dafür etliche
Programmiersprachen wie C, C++, Ada oder Fortran
es gibt prinzipiell 2 Arten S-Funktionen zu schreiben,
als:
 M-File, auf der Matlab-Sprache basiert (einfacher)
 Mex-File, für die normalen Programmiersprachen
(ausdrucksstärker)
19
S-Funktionen

Betrachtungsweise eines Simulinkblockes, an der
auch der Aufbau der S-Funktionen festgemacht ist:
20
S-Funktionen

Dargestellt sind
die einzelnen
Module der SFunktion die bei
einem
Simulationsschritt
ausgeführt
werden.
21
S-Funktionen


so genannte Call-Back-Methoden repräsentieren die
einzelnen Module wie sie im letzten Bild dargestellt
wurden
Für die S-Funktionen werden Schablonen
bereitgestellt in denen die Call-Back-Methoden „nur
noch“ mit Inhalt gefüllt werden müssen.
22
Real-Time-Workshop


erzeugt Programme von Simulink-Entwürfen zum
Prototypen, Testen und Einsetzen, von Real-Time
Systemen, auf einer Vielzahl von Ziel-Plattformen
er kann direkt Source Code generieren, der den
Compiler enthält, Input und Output Geräte, SpeicherModelle, Kommunikationsknoten und andere
Charakteristiken die eine Applikation möglicherweise
fordert
23
Real-Time-Workshop

Für uns wichtige Fähigkeiten und Features des RTW
sind:
 Simulink Code Generator: generiert automatisch
C-Code aus dem Simulink-Modell
 Make Process: der erweiterbare make Prozess
ermöglicht es ein eigenes Produktions oder Rapid
Prototyping Target zu kreieren
24
Real-Time-Workshop




der generierte Code ist Prozessor unabhängig
er repräsentiert das Modell exakt
effizienter Code für S-Funktionen kann erzeugt
werden durch Nutzung der Target Language Compiler
Instruktionen (TLC Scripts genannt) und kann
automatisch, mit generierten Code, integriert werden
unterstützt werden folgende Compiler:
 unter Windows die Compiler von Borland, LCC,
Microsoft Visual C/C++ und Watcom
 unter Linux ist als Default der cc eingestellt, der
gcc wird ebenfalls unterstützt.
25
Real-Time-Workshop

Entwicklungsdiagramm für Entwurfsprozess
26
Stateflow


ist ein graphisches Design und Entwicklungstool zur
Simulation komplexer reaktiver Systeme basierend
auf der finiten Zustandsmaschinen Theorie
mit dem Stateflow modelliert man den Teil des
Modells der auf Ereignisse reagieren soll
27
ECRobot


Das ECRobot Target wurde hauptsächlich durch das modifizieren
von Code und Control Files, die der Real-Time-Workshop bereits
mitbringt, erstellt.
diese Files fallen in 2 Kategorien:
 Das Run-Time-Interface besteht aus Code der die
Ausführung von generiertem Modell Code überwacht und
unterstützt. Im ECRobot Target, beinhaltet das Run-Time
Interface das Haupt Programm, eingebundene Geräte
Treiber und Header Files die die Anbindung an den LegOS
Kernel gewährleisten.
 Control Files. Die Code Generierung und der Build Prozess
werden gesteuert durch ein angepasstes System Target Files
und Template Makefiles. Die angepassten Kontroll-Files
starten einen Target spezifischen Cross-Compiler und
(optional) downloaden das generierte Programm ins
Zielsystem.
28
ECRobot





das Betriebssystem das auf dem RCX laufen muss
heißt LegOS
der verwendete Compiler ist der GCC Cross-Compiler
für den Hitachi h8300 Mikrocontroller
zum Übertragen des LegOS und der Programme auf
den RCX kommt das Tool Dll zum Einsatz
da für einige der Zusatzkomponenten eine UnixUmgebung notwendig ist kommt noch das Tool
Cygnus zum Einsatz, das diese emuliert
die auf dieser Seite genannten Zusatztools sind alle
unabhängig vom ECRobot und frei erhältlich
29
ECRobot

die ECRobot Geräte-Treiber-Blöcke sind in einer
Bibliothek gesammelt (ECRobot.mdl)
30
ECRobot


Das Template Makefile für das ECRobot Target ist ECRobot.tmf.
Es ist eine angepasste Version des ert_unix.tmf.
Die wichtigsten Anpassungen sind:
 Der Build Prozess ruft gmake auf, ein Make Utility das mit
dem Real-Time-Workshop installiert wird.
 Das generierte Makefile startet den GCC Cross-Compiler für
den Hitachi h8300 Mikrocontroller und spezifiziert
Kommandozeilenparameter für den Compiler.
 Das generierte Modellfile hat den Namen model.lx. Optionell,
wird der generierte Code in den RCX herunter geladen via
dem dll-Utility
31
ECRobot
32
Praktische Erfahrungen


im praktischen Einsatz sind einige Hindernisse
aufgetreten:
das erste große Hinderniss ist die Installation:
 Offiziell dokumentiert sind von Mathworks 2 Arten
der Installation von ECRobot.
 einmal eine von Hand Installation
 und als zweites ein Script zur automatischen
Einrichtung
 Trotz intensiver Bemühungen waren beide
Versionen nicht zum funktionieren zu bringen.
33
Praktische Erfahrungen



Die letztendlich eingesetzte Version, mit der das
ECRobot getestet wurde, ist eine fertig integrierte
Version die freundlichwerweise einer der
Entwickler von Mathworks zur Verfügung stellte.
Ursache der Installations-Probleme sind meiner
Meinung nach massive Versionskonflikte
verursacht durch die vielen verschiedenen
Komponenten die unabhängig voneinander
entwickelt werden.
Den Umfang den die Einrichtung von ECRobot hat
spiegelt wohl am besten die Tatsache wieder, dass
das automatische Script etwa eine halbe Stunde
zur Installation benötigen soll.
34
Praktische Erfahrungen

das zweite Hindernis ist die, etwas größer als
angenommene, Entwicklungskomplexität:
 Bei der Modellierung eines Beispiels stellte sich
heraus, dass es mit dem schnellen
Zusammenklicken eines Modells auch nicht so weit
her ist, da etliche Randbedingungen eingestellt
werden müssen, die oftmals gut Versteckt in
irgendwelchen Menüs stecken.
 Auch die Nutzung von Simulink und Stateflow
bedarf einer gewissen Einarbeitung. Die allerdings
im Vergleich zur Einarbeitung in eine der
Programmiersprachen für den RCX geringer ist.
Diese bieten dafür größeren Funktionsumfang.
35
Bewertung





Die Arbeit mit Simulink und Stateflow an sich, zur
Modellgenerierung, ist eine interessante Möglichkeit.
für die RCX-Programmierung stehen allerdings
Aufwand und Nutzen in schlechter Relation
bisher hat sich keine Entwicklergemeinde des
ECRobot angenommen
ECRobot ist zwar kostenlos, aber für die zu Nutzende
Basis Matlab trifft dies nicht zu
die Programmiersprachen für den RCX, wie NQC, sind
meiner Ansicht nach weitaus mächtiger im
Funktionsumfang und bedürfen vermutlich nur eines
gering größeren Einarbeitungsaufwandes für
jemanden mit Programmiererfahrung
36

PowerPoint-Vortrag