30
Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Rechnerarchitekturen und Eingebettete Systeme Praktikum Rechnerentwurf Modellbasierter Systementwurf mit MLDesigner V1 Modellbasierter Entwurf einer Ampelanlage V2 Modellbasierter Entwurf einer Modellbahnsteuerung „Achtfahrt“ „Zugtausch“ Zusatzaufgabe „Permanente Achtfahrt“ Anhang: Erzeugung der Programmdateien für die Steuerung des realen Bahnmodells V3 Erprobung der Modellbahnsteuerung Version von Juni 2014 Bitte benutzen Sie nur aktuelles Material! Die neueste Version finden Sie stets unter http://www.tu-ilmenau.de/ra Druck und Vervielfältigung nur zum persönlichen Gebrauch! Mario Ritze, Michael Müller, Stefanie Streichardt, Daniel Koch

Praktikum Rechnerentwurf · Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Rechnerarchitekturen und Eingebettete Systeme Praktikum Rechnerentwurf

  • Upload
    lynhu

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Rechnerarchitekturen und Eingebettete Systeme

Praktikum Rechnerentwurf

Modellbasierter Systementwurf mit MLDesigner

V1 Modellbasierter Entwurf einer Ampelanlage

V2 Modellbasierter Entwurf einer Modellbahnsteuerung „Achtfahrt“ „Zugtausch“

Zusatzaufgabe „Permanente Achtfahrt“

Anhang: Erzeugung der Programmdateien für die Steuerung des realen Bahnmodells

V3 Erprobung der Modellbahnsteuerung

Version von Juni 2014

Bitte benutzen Sie nur aktuelles Material! Die neueste Version finden Sie stets unter http://www.tu-ilmenau.de/ra

Druck und Vervielfältigung nur zum persönlichen Gebrauch!

Mario Ritze, Michael Müller, Stefanie Streichardt, Daniel Koch

bdaene
Kommentar zu Text
Mit Kommentaren von Juni 2017 (ergänzt im Mai 2019)

2

Inhaltsverzeichnis 1 EINLEITUNG.............................................................................................................................................. 4 2 PRAKTIKUMSVORBEREITUNG ........................................................................................................... 6 3 DIE VORGEGEBENEN TEILLÖSUNGEN ............................................................................................ 6

3.1 AUFBAU DES SYSTEMS ......................................................................................................................... 8 3.2 DAS STEUERUNGSMODUL ..................................................................................................................... 9 3.3 BESCHREIBUNG UNIVERSELLER FSM-PRIMITIVEN ............................................................................. 11

4 AUFGABENSTELLUNG ZUM VERSUCH „EINMALIGE ACHTFAHRT“ ................................... 12 4.1 FUNKTIONSWEISE DER TEILLÖSUNG ................................................................................................... 12 4.2 UNTERSUCHEN DER TEILLÖSUNG ....................................................................................................... 12 4.3 BESCHREIBUNG VON FSM-PRIMITIVEN FÜR DIESEN VERSUCH ........................................................... 13 4.4 SIMULATION DER TEILLÖSUNG ........................................................................................................... 14 4.5 ERWEITERUNG DER BAHNSTEUERUNG ................................................................................................ 15

5 AUFGABENSTELLUNG ZUM VERSUCH „ZUGTAUSCH“ ............................................................ 17 5.1 FUNKTIONSWEISE DER TEILLÖSUNG ................................................................................................... 17 5.2 BESCHREIBUNG VON FSM-PRIMITIVEN FÜR DIESEN VERSUCH ........................................................... 17 5.3 SIMULATION DER TEILLÖSUNG ........................................................................................................... 19 5.4 ERWEITERUNG DER BAHNSTEUERUNG ................................................................................................ 19

6 AUFGABENSTELLUNG ZUM VERSUCH „PERMANENTE ACHTFAHRT“ ............................... 21 6.1 IDEE DIESES VERSUCHES .................................................................................................................... 21 6.2 BESCHREIBUNG DER FSM-PRIMITIVEN FÜR DIESEN VERSUCH ........................................................... 21 6.3 ERSTELLUNG DER BAHNSTEUERUNG .................................................................................................. 22

3

Hinweis zu typografischen Hervorhebungen Innerhalb dieser Anleitung werden verschiedene Informationen besonders hervorge-hoben, um den Leser auf bestimmte Bedienelemente, Parameternamen, Komman-dos oder ähnliches hinzuweisen. Folgende Auflistung zeigt die Art und Weise, wie entsprechende Elemente formatiert sind:

Darstellungselement

Formatierungsbeispiel

Menüfunktionen/Menüelemente Schaltflächen und Symbole Dateinamen und Pfadangaben Direkt einzugebender Text

‘Menüpunkt‘ bzw. ‘Menüname _ Menü-punkt‘ «Schaltfläche» bzw. «Symbol» file.dat bzw. /home/user/ “Eingegebener Text“

Bemerkung zu Internetadressen In diesem Dokument enthaltene Quellenangaben bzw. Links, die auf eine Referenz im Internet verweisen, können sich gelegentlich ändern. Auf der Website des Fach-gebietes Rechnerarchitekturen und Eingebettete Systeme finden Sie möglicherweise aktualisierte Angaben.

4

1 Einleitung Ziel in diesem Teil des Praktikums ist es, mit Hilfe von MLDesigner eine Steuerung für die Anlage einer Modelleisenbahn zu entwerfen. Nach der Fertigstellung wird die Funktionsweise des erstellten Steuerungsmodells per Simulation in MLDesigner auf ihr korrektes Verhalten getestet. Anschließend wird ein Programm für den Test im Zielsystem generiert. Das dazu benötigte Umgebungsmodell ist bereits vorhanden. In Abbildung 1 ist der Gleisplan der Modellbahnanlage schematisch dargestellt. Einen detaillierten Plan mit allen Ein- und Ausgangssignalen finden Sie im Anhang A.

Abbildung 1: Vereinfachter Gleisplan der Modelleisenbahn Das Modell besteht aus zwei unabhängigen Kreisstrecken. Kreisstrecke 1 beinhaltet die Weichen 1 und 3, Kreisstrecke 2 die Weichen 2 und 4. Eine Verbindungsstrecke ermöglicht die Fahrt eines Zuges von Kreis 1 nach Kreis 2, der Wechsel eines Zuges von Kreis 2 nach Kreis 1 erfolgt über Weiche 4. Zwischen den beiden Kreisen liegt ein Abschnitt, in dem sich die abbiegenden Gleise kreuzen. Die Züge fahren nur in der angegebenen Richtung, in Kreis 1 entgegen dem Uhrzeigersinn, in Kreis 2 dage-gen im Uhrzeigersinn. Es gibt elf Haltepunkte (HPx). Bei rotem Fahrtsignal bleibt ein Zug am jeweiligen Hal-tepunkt stehen, bei grünem Signal passiert er dieses oder fährt los, wenn er zuvor an

5

diesem Haltepunkt stand. Im Bereich der Haltepunkte befinden sich Haltezonen, wel-che ein- und ausgeschaltet werden können. Sie sind im Gleisplan blau eingefärbt. Alle anderen Streckenabschnitte sind stets eingeschaltet. In Fahrtrichtung vor jedem Haltepunkt existiert ein Magnetsensor, der das Eintreffen eines Zuges erfasst und weitermeldet. Es ist sichergestellt, dass die Meldung auch dann erfolgt, wenn der Zug anschließend am roten Signal anhält. Zur Bedienung der Anlage existieren die vier Tasten B, E, G und M, mit denen der Benutzer die gewünschten Abläufe starten kann. Die Signale dieser Tasten stellen ebenso wie die der Magnetsensoren Eingangssignale der Steuerung dar. In der DE-Domäne von MLDesigner erfolgen alle Kommunikationsvorgänge durch atomare Ereignisse – so genannte „Events“. Auch die Verbindung zur Eisenbahnan-lage wird über Ereignisse realisiert. Namen und Anzahl dieser Ereignisse sind fest vorgegeben. Die Ansteuerung der Haltepunkte erfolgt über Ereignisse, welche aus Sicht der Steu-erung Ausgänge darstellen. Die Haltepunkte haben zwei Zustände: eingeschaltet (grünes Signal) und ausgeschaltet (rotes Signal). Zwischen diesen Zuständen kann durch Aussenden des entsprechenden Ereignisses umgeschaltet werden. Im Initial-zustand sind alle Haltepunkte ausgeschaltet. Die Weichen werden ebenfalls durch Ereignisse angesteuert, sind also ebenfalls als Ausgänge der Steuerung zu betrachten. Jede Weiche besitzt zwei Zustände: gera-deaus und abbiegend. Entsprechend existieren zwei Ereignisse, welche die Weiche in Richtung des jeweils nächsten erreichbaren Haltepunktes stellen. Die Stellung der Weichen zu Beginn ist geradeaus. Für die Ansteuerung der Weichen und der Haltepunkte ist es unkritisch, wenn das-selbe Ereignis mehrmals hintereinander auftritt. Die Sensoren der Haltepunkte senden bei jedem Eintreffen eines Zuges ein Ereignis an die Steuerung, ebenso die vier Tasten bei jedem Tastendruck. Sämtliche Stellsignale können durch die zu entwerfende Steuerung beeinflusst wer-den. Tabelle 1 listet die Bezeichnungen der einzelnen Signale auf.

Haltepunkt Signal Haltepunkt einschalten ausschalten A HAZ A HAE HAA B HBZ B HBE HBA C HCZ C HCE HCA D HDZ D HDE HDA E HEZ E HEE HEA F HFZ F HFE HFA G HGZ G HGE HGA H HHZ H HHE HHA K HKZ K HKE HKA L HLZ L HLE HLA M HMZ M HME HMA

6

Taste Signal Weiche geradeaus abbiegen B TB 1 W1E W1F E TE 2 W2M W2L G TG 3 W3E W3G M TM 4 W4H W4A

Eingangssignale Ausgangssignale (Stellsignale)

Tabelle 1: Ein- und Ausgangssignale der Anlagensteuerung

2 Praktikumsvorbereitung Zu Beginn des Praktikums erfahren Sie vom Betreuer, wie Sie an die benötigten Ma-terialien kommen. Entpacken Sie zunächst das heruntergeladene Archiv nach C:\. Beantworten Sie die Nachfrage zum Überschreiben der Datei ConstFsmC.xml während des Extrahierens mit „ja“. Unter C:/ existiert nun der Ordner /Praktikum/ mit den aus der Abbildung ersichtlichen Unterverzeichnissen. Der Ordner /Versuche/ enthält die vorgegeben Teillö-sungen der entsprechenden Aufgaben. Im Verzeichnis /Synthesecode/ legen Sie später unter dem Namen der Aufgabe Ihren generierten Code ab.

3 Die vorgegebenen Teillösungen Für jede der Praktikumsaufgaben ist jeweils eine Teillösung für die Steuerung vorge-geben. In den Versuchen „Achtfahrt“ und „Zugtausch“ ist diese jeweils soweit reali-siert, dass von Beginn an eine Simulation des gesamten Modells möglich ist. Wäh-rend des Praktikums sollen diese Teillösungen zunächst analysiert und anschließend erweitert werden. Alle zur Lösung der Aufgabe benötigten Komponenten sind bereits vorhanden. Es ist Ihnen aber freigestellt, diese für die Bearbeitung der Aufgabe zu verwenden oder eigene Realisierungen zu erstellen. Einzig bei der Lösung der Zu-satzaufgabe sind in jedem Fall eigene FSM zu realisieren.

bdaene
Kommentar zu Text
Das Archiv ist zu Beginn bereits heruntergeladen und ausgepackt. Bitte lassen Sie den Schritt "Archiv herunterladen und entpacken" weg! Im Ordner C:\Praktikum\ finden Sie die beschriebenen Dateien.

7

Zunächst muss bei jedem Versuch das Modell, welches diese rudimentäre Steuerung beinhaltet, importiert werden. Vergewissern Sie sich zunächst, dass kein Modell einer zuvor bearbeiteten Aufgabe im Pfad My Libraries vorhan-den ist (gegebenenfalls müssen Sie es löschen). Wechseln Sie in das File-Register der Baum-Ansicht und wählen Sie die per Rechtsklick auf My Libraries die Funktion ‘Import Library‘ des Kontextmenüs. Das zu importierende *.mar-Archiv befindet sich im entpackten Verzeichnis C:/Praktikum/Versuche/ unter der Bezeichnung der jeweili-gen Aufgabe.

Auf das Modell und dessen Komponenten kann danach in der Baum-Ansicht unter-halb des Punktes My Libraries zugegriffen werden. Beachten Sie: Sie können das Modell zu einer Aufgabe nur einmal importieren. Der wiederholte Import eines bereits in My Libraries vorhandenen Modells ist zwar technisch mög-lich, führt aber aufgrund der Namensgleichheit enthaltener Komponenten zur Funkti-onsunfähigkeit der Modelle! Möchten Sie ggf. mit der Bearbeitung eines Modells neu starten, löschen Sie vorher unbedingt das verworfene. Auch die Umbenennung des vorhandenen Modells mit der verfügbaren Option ’Rename’, um es von dem neu im-portierten unterscheidbar zu machen, löst dieses Problem nicht. Das führt ebenfalls zur Unbrauchbarkeit des umbenannten Modells, da bei der Änderung der Bezeich-nung bestehende Referenzen zwischen Komponenten des Modells verloren gehen. Sicherung von Lösungen und Zwischenständen Während der Bearbeitung einer Aufgabe empfiehlt es sich, aktuelle Zwischenstände hin und wieder zwi-schenzuspeichern. Auch bei der Beendigung einer Aufgabe sollten Sie Ihr Ergebnis sichern. Dafür öffnen Sie mit einem Rechtsklick auf die aktuelle Aufgaben-bibliothek das Kontextmenü und wählen den Punkt ’Export Library’. Im nachfolgenden Dialogfenster ver-geben Sie einen Dateinamen und wählen einen Spei-cherort für die Sicherung. Falls es notwenig wird, kön-nen Sie diese Datei dann wieder nach My Libraries importieren.

8

3.1 Aufbau des Systems Das System zur Steuerung und Simulation des Bahnmodells ist in Abbildung 2 dar-gestellt. Es besteht aus einem Modul, in dem die Steuerung des Modells realisiert ist, und aus einem Modul, welches das gesamte Umgebungsmodell bereitstellt.

Abbildung 2: Das System „Modellbahnanlage“ Beim Steuerungsmodul handelt es sich um den Implementierungsteil des Modells. Dieser soll später zur automatischen Erzeugung einer Software-Implementierung verwendet werden1. Das Umgebungsmodell beinhaltet die gesamte Verhaltenslogik, die das einbettende System (also die Modellbahnanlage) nachbildet. Weiterhin befinden sich hier zusätz-liche Komponenten zur Beeinflussung der Simulation und zur Darstellung bestimmter Elemente während der Simulation.

1 Für diesen Zweck kommt der im MLDesigner integrierte ANSI-C-Generator zum Einsatz.

9

3.2 Das Steuerungsmodul Abbildung 3 zeigt das Innere des Moduls Anlagensteuerung in der vorgegebenen Fassung. Bei diesem Modul handelt es sich um den linken Block aus Abbildung 2. Die Ports des Moduls Anlagensteuerung entsprechen der in Tabelle 1 definierten Schnittstelle und dürfen während der Bearbeitung der Aufgaben weder umbenannt noch gelöscht werden.2 Die Aufgabe des Steuerungsmoduls besteht in der Beeinflussung des Verhaltens des Bahnmodells. So wird beispielsweise nach bestimmten Tastendrücken die Fahrt der Züge in ihren Kreisen gestartet oder gemäß den Aufgabenstellungen verändert. Da-zu werden z.B. Ausgaben erzeugt, welche die Haltepunkte im jeweiligen Kreis ein- oder ausschalten. Das Verhalten der Steuerung wird durch verschiedene Zustands-maschinen (FSM) aus der FSM-Domäne von MLDesigner realisiert. Für die Versuche „Achtfahrt“ und „Zugtausch“ sind bereits alle benötigten FSM vorhanden. Die für alle Versuche interessanten FSM werden in 3.3 erklärt, Kapitel 4.2 erläutert diese für den Versuch „Achtfahrt“, Kapitel 5.2 für den „Zugtausch“. In der Zusatzaufgabe „Perma-nente Achtfahrt“ sind Sie dann selbst gefordert, eigene FSM zur Steuerung der Zug-fahrten zu erstellen. Konformität zum ANSI-C-Generator Aufgrund der Spezifikation des Code-Generators gelten im Implementierungsteil ei-nige Restriktionen. Hier muss grundsätzlich die DE-Domäne von MLDesigner benutzt werden. Für eine komplette Auflistung aller unterstützten Elemente und Funktionen sei auf die zugrunde liegende Diplomarbeit [1] von H. Rath verwiesen. Verwenden Sie als Richtlinie für das Praktikum den folgenden Auszug.

• Nutzen Sie für die Verdrahtung Ihrer Elemente nur die vorgegebenen FSM „Split2“, „Merge2“ und „Fixed_delay“ bzw. die Knoten für Auto-Fork und Auto-Merge (vgl. Abschnitt 3.3 und Abbildung 4).

• Verwenden Sie keine eigenen Guard-Bedingungen an Übergängen! • Benutzen Sie außer Current State keine anderen Memory-Elemente! • Verwenden Sie bei eigenen FSM als Port-Typ immer int (für alle Ein- und

Ausgänge)! • Ändern Sie nie den Port-Typ bei vorgegebenen Modulen oder FSM! • Verwenden Sie keine eigenen Special Events! • Machen Sie bei Aktionen an Übergängen nur von der Funktion WriteOutput()

in der Variante WriteOutput(OutputX, 1); Gebrauch! • Nutzen Sie nur die gegebenen FSM der Bibliothek Bahnsteuerung und ggf.

selbst erstellte FSM! Alle anderen Elemente, wie z.B. die mitgelieferten Primi-tiven des MLDesigner, sind nicht kompatibel zur Code-Erzeugung.

2 Natürlich dürfen Sie die Ports verschieben um eine übersichtlichere Verdrahtung zu erreichen.

10

Abbildung 3: Implementierungsmodul: Anlagensteuerung

11

3.3 Beschreibung universeller FSM-Primitiven In der Bibliothek Bahnsteuerung sind bereits einige universell nutzbare FSM-Primitiven vorgegeben. Diese werden hier beschrieben. Abbildung 4 links oben zeigt die FSM „Split2“. Diese erzeugt aus einem Ereignis zwei neue Ereignisse, indem durch ein „Input Event“ zwei neue „Output Events“ ausgelöst werden. Damit kann das Eingangssignal in zwei identische Ausgangssignale dupli-ziert werden. Signale bezeichnen in diesem Sinne vorliegende Ereignisse. Dieselbe Funktionalität wird zwar auch durch einen „Auto-Fork-Knoten“ (oben rechts im Bild) erreicht. Jedoch gibt es Fälle, in denen eine eindeutige Signaltrennung not-wendig ist und deshalb eine FSM benutzt werden muss. Im vorgegebenen Steuerungsmodul (siehe oben) sorgt die FSM „Split2“ dafür, dass die Signale für das Einschalten des ersten Kreises und für das Einschalten des zwei-ten Kreises getrennt bleiben, damit sie auch einzeln ansteuerbar sind. So wird mit Hilfe der FSM eine eindeutige Signaltrennung erreicht.

Abbildung 4: Aufteilung und Zusammenführung von Signalen/Ereignissen Die in der vorgegebenen Teillösung nicht verwendete FSM „Merge2“ (Abbildung 4 links unten) dient in vergleichbarem Sinne der eindeutigen Signalzusammenführung, falls diese bei Verwendung von „Auto-Merge-Knoten“ nicht gesichert ist. Solange die Verdrahtung über die Auto-Knoten (Abbildung 4 rechts) eindeutig im Sinne der Signalweiterleitung bleibt, sollten Sie zugunsten der Übersichtlichkeit und der Effizienz auf die genannten FSM verzichten. An bestimmten Stellen sind die FSM allerdings zwingend erforderlich, um ein unbeabsichtigtes „Übersprechen“ des Sig-nals über verbundene Auto-Fork-Knoten und/oder Auto-Merge-Knoten zu verhindern.

12

Die FSM „FixedDelay“, dargestellt in Abbildung 5, realisiert eine fest einstellbare Zeitverzögerung eines Ereignisses. Zu diesem Zweck lässt sich der FSM-Parameter „fixdelay“ im Eigenschaften-Editor entsprechend anpassen. Die Voreinstellung ist 200 Zeiteinheiten. Aufgrund der eingestellten Zeitbasis für das Bahnmodell – eine Zeit-einheit dauert 5 ms – entspricht dies einer Sekunde. Eine Anpassung des Parame-ters ist separat pro Instanz der FSM möglich.

Abbildung 5: FSM FixedDelay

4 Aufgabenstellung zum Versuch „Einmalige Achtfahrt“

4.1 Funktionsweise der Teillösung Es befinden sich zwei Züge im Modell. Zug 1 steht anfangs am Haltepunkt B (HPB) im oberen Kreis und Zug 2 am Haltepunkt M (HPM) im unteren Kreis. Nach Drücken der Taste B werden alle Signale im oberen Kreis auf grün gesetzt und die Weichen auf geradeaus gestellt. Zug 1 beginnt nun im oberen Kreis zu fahren. Entsprechend ähnlich verhält sich der Zug 2 im unteren Kreis nach Betätigung der Taste M. Beide Vorgänge sind unabhängig voneinander, d.h. die Reihenfolge der Tastenbetätigung spielt keine Rolle. Das Drücken der Taste G veranlasst den Zug 2, einen Ausflug in den oberen Kreis zu machen. Bevor er dies jedoch tun kann, wird Zug 1 am Haltepunkt E angehalten. Nun kann Zug 2, nach Stellen aller Weichen auf abbiegend, unbeschadet eine Acht durch beide Kreise fahren (der Reihe nach über die Weichen 4, 3, 1 und 2). Wenn Zug 2 wieder im unteren Kreis ankommt, werden die Weichen auf geradeaus zurück-gestellt und Zug 1 kann seine Fahrt fortsetzen.

4.2 Untersuchen der Teillösung Starten Sie zunächst MLDesigner und öffnen Sie über die Baum-Ansicht (Register Library oder File) das System des Modells: ‘V2_Modellbahnanlage _ Modellbahnan- lage‘. Sie sehen nun die oberste Modellebene des Bahnmodells, wie in Abbildung 2 gezeigt.

13

Das Modul ‘Anlagensteuerung‘ hat den in Abbildung 3 dargestellten Aufbau. Schau-en Sie sich auch einmal das Umgebungsmodell näher an. In diesem Modul dürfen im Rahmen des Praktikumsversuches keine Veränderungen vorgenommen werden, da sonst kein korrekter Simulationsbetrieb mehr garantiert werden kann! Sie können auch die untergeordneten Module betrachten. Sie werden erkennen, dass das Um-gebungsmodell recht umfangreich ist. Dies ist aber notwendig für eine anschauliche Simulation der Steuerung. Die grafische Darstellung des Gleisplanes übernimmt ein spezielles Tcl-Skript na-mens Gleisplan.tcl. Alle anderen Steuer- und Anzeigeelemente sind durch Primitiven der Bibliothek TclTk unterhalb der Bibliothek für die DE Domäne realisiert.

4.3 Beschreibung von FSM-Primitiven für diesen Versuch In Abbildung 6 ist die FSM „StopTrain“ dargestellt. Sie sorgt für das Anhalten eines Zuges am dafür vorgesehenen Haltepunkt und arbeitet folgendermaßen: Nach dem Tastendruck zum Start der Achtfahrt wird der Zug des anderen Kreises an einem Haltepunkt angehalten. Zu diesem Zweck wartet die FSM auf das Sensorsignal, wel-ches den Zug am vorhergehenden Haltepunkt erkennt. Sobald dieses Ereignis ein-tritt, wird das Fahrtsignal des folgenden Haltepunktes auf Rot umgestellt. Dadurch schaltet das Signal rechtzeitig vor Eintreffen des Zuges auf Rot. Kurz bevor der Zug an diesem Punkt stoppt, feuert der entsprechende Haltepunktsensor ein Signal. Bei dessen Erhalt erzeugt die FSM ein Ereignis am Ausgang „Train_stopped“.

Abbildung 6: FSM StopTrain Dieser Ablauf ist notwendig, um sicherzustellen, dass beim Anhalten des Zuges in jedem Falle eine Meldung des entsprechenden Sensors eintrifft. Würde man einfach ein Signal auf Rot schalten, ohne die Position des Zuges zu kennen, kann das schief gehen. Deshalb muss zunächst die Passage des davorliegenden Sensors abgewar-tet und dann das Signal auf Rot geschaltet werden. Abbildung 7 zeigt die FSM „EightTrip“. Sie leitet die Achtfahrt des noch fahrenden Zuges ein und arbeitet wie folgt: Die FSM wartet zunächst auf das Ereignis „Train_stopped“, welches von der zuvor beschriebenen FSM ausgelöst wird. Nun müssen die Weichen für die Achtfahrt umgestellt werden. Dazu wird gewartet bis der

14

Zug, der die Acht fahren soll, den gewählten Haltepunkt vor den Weichen erreicht (anderenfalls würde man riskieren, eine Weiche umzustellen während sich der Zug gerade auf ihr befindet). Daraufhin erfolgt die Schaltung der Acht, indem Ereignisse an die Weichen und die Haltepunkte des Verbindungsgleises geschickt werden. Die Achtfahrt ist beendet, sobald der Zug wieder den vorigen Haltepunkt erreicht. Wenn dies der Fall ist, wird das „Output Event“ „Eight_completed“ erzeugt. Durch die ent-sprechende Weiterleitung dieses Ereignisses werden alle Weichen wieder auf gera-deaus gestellt und der Zug im anderen Kreis setzt seine Fahrt fort.

Abbildung 7: FSM EightTrip Die FSM „StopTrain“ und „EightTrip“ erfüllen nur in Zusammenarbeit den gewünsch-ten Zweck und zeigen gleichzeitig wie eine komplexe Aufgabe vorteilhaft durch meh-rere kleine anstatt durch eine einzelne größere FSM erledigt werden kann.

4.4 Simulation der Teillösung Wechseln Sie nun wieder in das System und starten Sie die Simulation. Aufgrund der Komplexität des Bahnmodells dauert dieser Schritt eine Weile. Es sollte nun das Kontrollfenster tclRunControl und eine Darstellung des Gleisplans wie in Abbildung 8 gezeigt erscheinen. Erproben Sie jetzt den im Abschnitt 4.1 beschriebenen Ablauf. Wenn Sie anschließend ein wenig damit experimentieren, also z.B. die Tasten B und M auch während der Achtfahrt drücken, werden Sie unter Umständen feststellen, dass die Steuerung noch fehlerhaftes Verhalten aufweist. Sie sollen das System im nächsten Schritt erweitern und dabei auch die Fehler be-seitigen. Zu Ihrer Unterstützung stellt das Umgebungsmodell zusätzlich einen Me-chanismus zur Kollisionserkennung während der Simulation bereit. Treten bestimmte Fehlersituationen ein bzw. ist ein „Crash“ unausweichlich, erfolgt eine Benachrichti-gung im entsprechenden Textfeld innerhalb des Kontrollfensters und im Simulations-Log des MLDesigner. Da dies in der Regel ein kritisches Fehlverhalten der Steue-rung signalisiert, wird die Simulation in solch einem Fall vorzeitig abgebrochen. Den Aktivitätsstatus der Simulation sehen Sie ebenfalls im Kontrollfenster.

15

Wenn Sie mit der Simulation fertig sind, betrachten Sie das Modul zur Steuerung der Bahnanlage ‘Bahnmodell _ Anlagensteuerung‘ gründlich. Dort finden Sie bereits eini-ge der in Kapitel 3.3 und 4.2 beschriebenen FSM vor und können sich mit deren Verdrahtung vertraut machen. Schauen Sie sich auch die einzelnen FSM genauer an.

4.5 Erweiterung der Bahnsteuerung Ihre Aufgabe besteht nun darin, die Steuerung des Bahnmodells Schritt für Schritt zu erweitern. Verwenden Sie dafür ausschließlich die vorgegebenen und eventuell von Ihnen selbst erstellten FSM in der Bibliothek Bahnsteuerung. Testen Sie Ihre Lösung jeweils durch die Simulation.

1. Zug 1 soll nach Tastendruck E einen Ausflug in den unteren Kreis, der Reihe nach über die Weichen 1, 2, 4 und 3 machen. Zug 2 muss dabei vorüberge-hend anhalten. Er soll also ebenso eine „Acht“ fahren wie für Zug 1 schon rea-lisiert ist. Beachten Sie, dass die Position der beiden Züge im Moment des Tastendrucks beliebig ist. Sie müssen also stets das Erreichen eines geeigne-ten Haltepunktes durch den jeweiligen Zug abwarten, bevor Sie Weichen stel-len oder Signale auf Rot schalten. Nach Abschluss des Manövers sollen beide Züge wieder im eigenen Kreis fahren.

Für die Lösung dieser Teilaufgabe haben Sie zwei Möglichkeiten:

a. Verwenden Sie die vordefinierten FSM „StopTrain“, „EightTrip“ und „Split2“. Dieses Teilproblem lässt sich allein damit lösen.

b. Entwerfen Sie selbst eine/mehrere FSM zur Lösung der Aufgabe.

2. Das Drücken der Tasten B und M ist nur am Anfang notwendig und kann im weiteren Ablauf Fehler verursachen. Des Weiteren ist das Drücken der Tasten G und E nur sinnvoll, wenn beide Züge in Bewegung sind. Ansonsten können Verklemmungen oder fehlerhafte Abläufe entstehen.

Abbildung 8: Kontrollfenster und Gleisplan zur Simulation des Bahnmodells

16

Genauso unerwünscht ist das wiederholte Drücken der Tasten G und E solan-ge die jeweilige Achtfahrt nicht abgeschlossen ist, da dies ebenfalls Fehler verursacht. Um die Einhaltung der genannten Bedingungen zu erzwingen, wurde die FSM „KeyCheck“ in der Bibliothek Bahnsteuerung vorbereitet. Machen Sie sich mit dieser FSM vertraut, fügen Sie diese zu Ihrer Steuerung hinzu und verdrahten Sie sie entsprechend.

3. Die Steuerung soll nun so erweitert werden, dass jeder Zug beim Passieren

des Verbindungsgleises am Haltepunkt K eine Wartezeit von 3 Sekunden ein-legt, bevor er weiterfährt.

Achtung: Nutzen Sie zur Realisierung unbedingt die vorgegebene FSM „Fi-xedDelay“.3

Haben Sie ihr erstelltes Modell auf Fehler überprüft und mittels Simulation validiert, können Sie nun mit dem Abschnitt zur Codesynthese fortfahren, um den Steuercode für das Zielsystem zu erzeugen und an die Hardware des Zielsystems anzupassen.

3 Die im Anschluss durchzuführende Generierung von Programmquellen sieht eine Reihe von Restriktionen für den Implementierungsteil vor. Bei Abweichungen kann zwar die Simulation innerhalb von MLDesigner korrekt arbeiten, aber auf der realen Hardware können Fehler entstehen.

17

5 Aufgabenstellung zum Versuch „Zugtausch“

5.1 Funktionsweise der Teillösung Es befinden sich zwei Züge im Modell. Zug 1 steht anfangs am Haltepunkt B (HPB) im oberen Kreis und Zug 2 am Haltepunkt M (HPM) im unteren Kreis(Kreis 2). Nach Drücken der Taste B werden alle Signale im oberen Kreis auf grün gesetzt und die Weichen auf geradeaus gestellt. Zug 1 beginnt nun im oberen Kreis (Kreis 1) zu fahren. Entsprechend ähnlich verhält sich der Zug 2 im unteren Kreis (Kreis 2) nach Betätigung der Taste M. Beide Vorgänge sind unabhängig voneinander, d.h. die Rei-henfolge der Tastenbetätigung spielt keine Rolle. Das Ziel liegt nun darin, dass beide Züge ihre Kreise tauschen. Das heißt, nach Durchführung aller notwendigen Schaltvorgänge dreht Zug 1 in Kreis 2 seine Runden und Zug 2 in Kreis 1. Dabei existieren grundsätzlich zwei Ansätze, unterschieden danach, welcher der beiden Züge den Kreiswechsel initiiert und als erster seinen Kreis verlässt. In der vorhandenen Teillösung ist dies Zug 1 aus Kreis 1. Das Drücken der Taste E veranlasst Zug 1 durch Schalten der Weiche1 seinen Kreis zu verlassen, die Verbindungsstrecke zu befahren und an Haltepunkt L zu halten. Ist er dort angekommen, kann Zug 2 seinen Kreis verlassen und in den oberen Kreis 1 wechseln. Wird dort dessen Ankommen durch einen der Sensoren bestätigt, kann Zug 1 durch das Schalten der Weiche 2 die Einfahrt in Kreis 2 erlaubt werden. Gleichzeitig werden im oberen Kreis 1 alle Weichen und zusätzlich Weiche4 zurück auf „geradeaus“ gestellt, sodass Zug 2 damit sein Ziel erreicht hat und nun in Kreis 1 fährt. Im unteren Kreis 2 wird zuletzt noch Weiche2 rechtzeitig auf „geradeaus“ geschaltet, sobald Zug 1 im unteren Kreis einen Sensor vor der Weiche auslöst. Die Züge haben somit ihre Kreise getauscht.

5.2 Beschreibung von FSM-Primitiven für diesen Versuch Abbildung 9 zeigt die FSM „goto_waitpos“. Ihre Aufgabe ist es, einen Zug an eine Warteposition zu schicken und dort anzuhalten. Sobald eine Taste zum Start des Zugtausches gedrückt wurde, wird auf das Auslösen eines Sensors zur Lokalisierung des Zuges gewartet. Überfährt der Zug diesen, werden Signale und Weichen über den Ausgang „Init_wait_pos“ so gestellt, dass der Zug zu seiner Warteposition fahren kann. Erreicht er diese, wird ein Ereignis am Ausgang „Train_in_waitpos“ erzeugt.

18

Abbildung 9: FSM goto_waitpos Die in Abbildung 10 abgebildete FSM „change_loop“ nimmt zunächst das Event „Train_in_waitpos“ der FSM „goto_waitpos“ entgegen. So ist klar, dass Zug 1 seine Warteposition erreicht hat. Im Folgenden sorgt die FSM für den Ablauf des Kreistau-sches. Der Eingang „Sensor_leave_circuit“ wird verwendet, um die aktuelle Position des noch fahrenden Zuges 2 festzustellen und dessen Kreiswechsel durch Stellen von Weichen und Signalen (Ausgang „Init_change“) einzuleiten. Sobald Zug 2 im oberen Kreis 1 von einem der Sensoren als „angekommen“ detektiert wird, kann die Freigabe für den wartenden Zug erteilt werden. Mit dem Event am Ausgang „Fi-nish_change“ werden zum Einen alle Weichen in Kreis 1 so gestellt, dass Zug 2 dort Runden fährt, zum Anderen wird Zug 1 die Einfahrt vom Verbindungsgleis in den un-teren Kreis 2 gewährt. Sind alle Aktionen abgeschlossen, wird dies über den Aus-gang „Change_complete“ an die nächste FSM weitergegeben.

Abbildung 10: FSM change_loop

19

5.3 Simulation der Teillösung Wechseln Sie nun wieder in das System und starten Sie die Simulation. Aufgrund der Komplexität des Bahnmodells dauert dieser Schritt eine Weile. Es sollte nun das Kontrollfenster tclRunControl und die Darstellung des Gleisplans erscheinen. Erpro-ben Sie jetzt den im Abschnitt 5.1 beschriebenen Ablauf. Sie werden während der Simulation feststellen, dass die Taste G gänzlich unbelegt ist. Diese soll in der 2. Variante des Zugtausches, welche Sie im Folgenden erstellen werden, zum Einsatz kommen. Wenn Sie mit der Simulation fertig sind, betrachten Sie das Modul zur Steuerung der Bahnanlage ‘Bahnmodell _ Anlagensteuerung‘ gründlich. Dort finden Sie bereits die in Kapitel 3.3 und 5.2 beschriebenen FSM vor und können sich mit deren Verdrah-tung vertraut machen. Schauen Sie sich auch die einzelnen FSM genauer an.

5.4 Erweiterung der Bahnsteuerung Ihre Aufgabe besteht nun darin, die Steuerung des Bahnmodells zu erweitern. Ver-wenden Sie dafür ausschließlich die vorgegebenen und eventuell von Ihnen selbst erstellten FSM in der Bibliothek Bahnsteuerung. Testen Sie Ihre Lösung jeweils durch die Simulation.

1. Mit dem Tastendruck G sollen beide Züge wieder ihre Kreise tauschen. Dies-mal soll der Tausch aber von Zug 2 im unteren Kreis 2 eingeleitet werden. Folgender Fahrplan ist dafür vorgesehen:

a. Zug 1 im oberen Kreis 1 fährt bis zum Haltepunkt F auf dem Verbin-dungsgleis und hält dort.

b. Zug 2 im unteren Kreis 2 biegt bei der erstbesten Gelegenheit in den oberen Kreis ab.

c. Ist Zug 2 im oberen Kreis angekommen, erhält Zug 1 in Warteposition die Freigabe zur Weiterfahrt und begibt sich in den unteren Kreis 2.

Dieser Ablauf stellt sicher, dass die Züge nicht kollidieren und dass keine mo-mentan befahrenen Weichen umgestellt werden, unabhängig von der vorheri-gen Position der Züge in ihren Kreisen.

Für die Lösung dieser Teilaufgabe haben Sie zwei Möglichkeiten:

a. Verwenden Sie die vordefinierten FSM „goto_waitpos“, „change_loop“, „Split2“ und „Merge2“. Die Aufgabe lässt sich allein mit diesen Kompo-nenten lösen.

b. Entwerfen Sie selbst eine/mehrere FSM zur Lösung der Aufgabe.

2. Binden Sie die bereits vorhandene FSM „KeyCheck“ so in das Modell ein, dass nun auch Taste G verwendet wird, Beachten Sie dabei, dass es in der FSM nicht nur einen Ausgang für das ausgelöste Event „G gedrückt“ gibt, sondern auch einen zugehörigen Eingang. Dieser dient dazu, dass die Anlage

bdaene
Hervorheben
Schauen Sie sich die FSM "KeyCheck" genauer an und ergänzen Sie die fehlenden Beschriftungen.

20

nach dem Vollzug des Kreiswechsels wieder in den Zustand versetzt wird, der herrschte als die Züge mit den Tasten B und M gestartet wurden. Analog dazu können Sie sich an der Verfahrensweise bei der Taste E orientieren.

3. Die Steuerung soll nun so erweitert werden, dass jeder Zug beim Passieren

des Verbindungsgleises am Haltepunkt K eine Wartezeit von 3 Sekunden ein-legt, bevor er weiterfahren darf.

Achtung: Nutzen Sie zur Realisierung unbedingt die gegebene FSM „Fixed-Delay“.4

Haben Sie ihr erstelltes Modell auf Fehler überprüft und mittels Simulation validiert, können Sie nun mit dem Abschnitt zur Codesynthese fortfahren, um den Steuercode für das Zielsystem zu erzeugen und an die Hardware des Zielsystems anzupassen.

4 Die im Anschluss durchzuführende Generierung von Programmquellen sieht eine Reihe von Restriktionen für den Implementierungsteil vor. Bei Abweichungen kann zwar die Simulation innerhalb von MLDesigner korrekt arbeiten, aber auf der realen Hardware können Fehler entstehen.

21

6 Aufgabenstellung zum Versuch „Permanente Achtfahrt“

6.1 Idee dieses Versuches Wie in den Versuchen zuvor befinden sich zwei Züge im Modell. Zug 1 steht anfangs am Haltepunkt B (HPB) im oberen Kreis und Zug 2 am Haltepunkt M (HPM) im unte-ren Kreis(Kreis 2). Nach Drücken der Taste B werden alle Signale im oberen Kreis auf grün gesetzt und die Weichen auf geradeaus gestellt. Zug 1 beginnt nun im oberen Kreis 1 zu fahren. Entsprechend ähnlich verhält sich der Zug 2 im unteren Kreis 2 nach Betätigung der Taste M. Beide Vorgänge sind unabhängig voneinander, d.h. die Reihenfolge der Tastenbetätigung spielt keine Rolle. Die beschrieben Situation steht Ihnen zum Versuchsstart zur Verfügung, die Tasten B und M sind mit den bisher bekannten Funktionen belegt. Hintergrund dieses Versuches ist ein Rendezvous der beiden Züge zur Simulation eines Umsteigevorgangs und die nachfolgende Ausfahrt nach dem First-in-First-out-Prinzip oder wahlweise nach dem „Bahnhof-Elgersburg-Prinzip“ Last-in-First-out. Bei diesem Versuch stehen Ihnen erstmals nicht alle benötigten FSM vorgefertigt zur Verfügung. Zur Lösung dieser Aufgabe ist es notwendig, eigene FSM zu modellieren und in die Anlagensteuerung einzubinden. Ihre Kreativität ist also gefragt. Beachten Sie, dass mehrere, jeweils Teilaufgaben erledigende FSM oft sinnvoller und praktikabler sind als eine einzige mit einer unüberschaubaren Anzahl von Zu-ständen und Zustandsübergängen, die ggf. auch die Suche nach Fehlern erheblich erschwert. Außerdem kann es zweckmäßig sein, eine FSM so generalisiert zu erstel-len, dass sie unter Umständen mehrfach für gleiche Funktionalitäten wiederverwend-bar ist. Schauen Sie sich als Hilfestellung die Lösungen der vergangenen Versuche noch einmal an.

6.2 Beschreibung der FSM-Primitiven für diesen Versuch Abbildung 11 zeigt die einzige speziell für diese Aufgabe vorgegebene FSM. Die im Kapitel 3.3 beschriebenen universellen FSM „Merge“ und „Split“ sowie „Fixed_Delay“ stehen selbstverständlich weiterhin zur Verfügung. Die gegebene FSM „Train_stop“ legt die Grundlage für den gewünschten Ablauf, in-dem sie einen Zug am vorgesehenen Haltepunkt stoppt. Sie nimmt am Eingang „Trigger_Trainstop“ ein Event entgegen, welches gleichbedeutend mit der Anforde-rung eines neuen Rendezvous ist. Der Eingang „Sensor_at_prev_flag“ detektiert den herannahenden Zug, woraufhin ein Event an den Ausgang „Flagstop_redsignal“ das Schalten eines in Fahrtrichtung liegenden Signals veranlasst. Das Ankommen des Zuges am Signal wird durch ein Event am Eingang „Sensor_at_flagstop“ erfasst und

22

kann über den Ausgang „Train_stopped“ an eine nächste FSM weitergegeben wer-den.

Abbildung 11: FSM Train_stop

6.3 Erstellung der Bahnsteuerung Ihre Aufgabe besteht nun darin, die Steuerung des Bahnmodells zu entwerfen. Ver-wenden Sie dafür ausschließlich die vorgegebenen und eventuell von Ihnen selbst erstellten FSM der Bibliothek Bahnsteuerung. Testen Sie Ihre Lösung jeweils durch die Simulation.

1. Mit dem Tastendruck G (oder E) sollen beide Züge ihre Warteposition ein-nehmen. Eine Reihenfolge ist dabei nicht vorgegeben. Die unterschiedliche Geschwindigkeit der Züge auf der Modellanlage ist aber zu beachten und ein Auffahren zu verhindern. Folgender Fahrplan für den Umsteigevorgang ist vorgesehen:

a. Zug 1 im oberen Kreis 1 fährt bis zum Haltepunkt F auf dem Verbin-dungsgleis und hält dort.

b. Zug 2 hält in seinem unteren Kreis 2 an Haltepunkt G. c. Ab dem Eintreffen des zweiten Zuges warten beide noch 3 Sekunden

für das Umsteigen der Passagiere. d. Der Zug, der als Erster (oder Letzter, je nachdem welche Variante Sie

bevorzugen) ankommt, darf den Kreuzungsbereich als Erster befahren. e. Sobald der erste Zug den Kreuzungsbereich verlassen hat, kann dem

zweiten die Überfahrt erlaubt werden. Beide Züge sollen sich nun in den jeweils anderen Kreis begeben, der untere via Weiche 4 in den oberen, der obere via Weiche 2 in den unteren.

f. Beim Befahren des Verbindungsgleises auf dem Weg zur Weiche 2 soll der entsprechende Zug außerdem einen planmäßigen Stopp von 3 Se-kunden an Haltepunkt K einlegen. Nutzen Sie hierfür unbedingt die ge-gebene FSM „FixedDelay“.

g. Der Vorgang des Zusammentreffens und Kreiswechsels soll in jeder Runde wiederholt werden. Der Zug, der also als erster wieder am Hal-tepunkt ist, wartet dort bis der nachfolgende ebenfalls seine Kreisfahrt

23

beendet hat und an seinem Haltepunkt ankommt. Dann werden die Kreise erneut getauscht.

2. Binden Sie die bereits vorhandene FSM „KeyCheck“ so in das Modell ein,

dass die permanente Achtfahrt wahlweise entweder mit der Taste G oder der Taste E eingeleitet werden kann. Es ist auch möglich, beide Tasten mit dieser Funktion zu belegen.

Haben Sie ihr erstelltes Modell auf Fehler überprüft und mittels Simulation validiert, können Sie nun mit dem Abschnitt zur Codesynthese fortfahren, um den Steuercode für das Zielsystem zu erzeugen und an die Hardware des Zielsystems anzupassen. Quellen [1] Rath, Holger: ANSI C Code Synthesis of MLDesigner Finite State Machines,

TU Ilmenau, Fakultät I/A, Fachgebiet System- und Steuerungstheorie, Diplo-marbeit, Oktober 2003, Inv.-Nr. 2003-10-31/064/IN98/2236

[2] Webseite des Fachgebietes Rechnerarchitektur und Eingebettete Systeme

http://www.tu-ilmenau.de/ra

24

A Detaillierter Gleisplan der Modellbahnanlage

Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Fachgebiet Rechnerarchitekturen und Eingebettete Systeme

Praktikum Rechnerentwurf

Modellbasierter Systementwurf mit MLDesigner

V1 Modellbasierter Entwurf einer Ampelanlage

V2 Modellbasierter Entwurf einer Modellbahnsteuerung „Achtfahrt“ „Zugtausch“

Zusatzaufgabe „Permanente Achtfahrt“

Anhang: Erzeugung der Programmdateien für die Steuerung des realen Bahnmodells

V3 Erprobung der Modellbahnsteuerung

Version von Juni 2014

Bitte benutzen Sie nur aktuelles Material! Die neueste Version finden Sie stets unter http://tu-ilmenau.de/ra

Druck und Vervielfältigung nur zum persönlichen Gebrauch!

bdaene
Kommentar zu Text
Mit Kommentaren von Juni 2017 (ergänzt im Mai 2019)

Mario Ritze Inhaltsverzeichnis 1 EINLEITUNG.............................................................................................................................................. 3 2 GENERIERUNG DES CODES.................................................................................................................. 3

2.1 VORKONFIGURATION DES MLD ........................................................................................................... 3 2.2 CODESYNTHESE MIT ML DESIGNER ...................................................................................................... 4 2.3 CODEÜBERSETZUNG ............................................................................................................................. 5

1 Einleitung Als Abschluss dieses Versuches werden Sie mithilfe der ANSI-C-Code-Synthese des MLDesigner eine Programmcodegenerierung zu der von Ihnen entworfenen Steue-rung durchführen. Die dabei entstehenden C-Quellen1

beinhalten die gesamte durch Ihre FSM definierte Verhaltenslogik zur Steuerung des Bahnmodells. Da die hard-wareunabhängige nur die im Simulationsmodell verwendete abstrakte Hardware-schnittstelle kennt, muss der generierte Quelltext um Routinen zur Ein- und Ausgabe sowie zur Initialisierung der realen Hardware vervollständigt werden. Weiterhin müs-sen zusätzliche für den Prozess der Programmerzeugung benötigte Komponenten ergänzt werden. Teile dieses Vorgehens laufen automatisiert ab, d.h. darum brau-chen Sie sich nicht zu kümmern. Sie werden aber hier erläutert, da sie der Veran-schaulichung des notwendigen Anpassungsprozesses von automatisch generiertem Programmcode dienen. An anderen Stellen wiederum ist eine Aktion Ihrerseits not-wendig. Am Ende werden die Codedateien in ein Archiv verpackt und über einen Up-loadlink auf den Zielrechner hochgeladen, um zum Abschluss Ihre Steuerung am realen Bahnmodell zu erproben.

2 Generierung des Codes

2.1 Vorkonfiguration des MLD Nachdem Sie im vorhergehenden Teil Ihr Modell erstellt, auf syntaktische Korrektheit und mittels Simulation auf das gewünschte Verhalten überprüft haben, können Sie nun damit beginnen, den Programmcode für den Test auf dem realen Bahnmodell zu erzeugen. Werfen zunächst einen Blick in das Verzeichnis C:/Praktikum/Synthesecode/. Dort existiert zu jeder Aufgabe ein Arbeitsverzeichnis mit der Bezeichnung der Aufgabe. In diesem sind bereits Dateien enthalten, die Ihren im Folgenden erzeugten Code um hardwarespezifische Prozeduren, wie z.B. Schnittstellendefinitionen erweitern. Wird die Codesynthese unter Verwendung dieses Zielverzeichnisses durchgeführt, bleiben die vorhandenen Dateien, sofern alle Einstellungen korrekt vorgenommen wurden, erhalten. Während des Entpackens der Praktikumsmaterialien wurde bereits die Datei Const-FsmC.xml in ein Systemverzeichnis von MLDesigner kopiert. Diese Datei enthält vordefinierte Codesegmente, die von der Hardware und dem Zielsystem abhängig sind und von MLDesigner nicht automatisch generiert werden können. Während der Codegenerierung greift MLDesigner auf diese Datei zu und fügt die dort definierten Fragmente an den erforderlichen Stellen des erzeugten Codes ein.

1 Diese implementieren ein Mini-Betriebssystem und je eine Task für jede FSM.

2.2 Codesynthese mit ML Designer Zur Generierung Ihres Programmcodes mit Hilfe der Codesynthese von MLDesigner führen Sie die folgenden Schritte durch:

1. Beenden Sie den Simulationsmodus und schließen Sie alle offenen Bearbei-tungsfenster.

2. Öffnen Sie über die Baum-Ansicht das Modul Anlagensteuerung, welches die

eigentliche Bahnsteuerung, also den Implementierungsteil des Modells, ent-hält.

3. Wählen Sie die Funktion «Generate Code» aus der Werkzeugleiste oder äqui-

valent «Generate ANSI C Code» im Kontextmenü des Bearbeitungsfensters. Ignorieren Sie die Warnung2 des Code-Generators und klicken Sie auf «Yes».

4. Passen Sie im folgenden Dialog alle Einstellungen entsprechend Abbildung 1

an.

Abbildung 1 Dialog des ANSI-C-Generators

2 In der Regel beanstandet der Code-Generator hier den Datentyp anytype der Ein- und Ausgabe-ports und setzt dafür integer. Das ist unkritisch, solange Sie keine Änderungen an den Datentypen vorgenommen haben.

Stellen Sie sicher, dass bei Path der absolute Pfad zum Arbeitsverzeichnis C:/Praktikum/Synthesecode/[Aufgabenbezeichnung]) der aktuellen Aufgabe eingetragen ist. Nehmen Sie keine Änderungen am Eintrag „Anlagensteue-rung“ im Feld „Name“ vor.

Wählen Sie unter «Exisiting Files» die Option «Keep». Klicken Sie anschlie-ßend auf die Schaltfläche «Generate», um den Code zu erzeugen.

Schließen Sie die Erfolgsmeldung mit Klick auf «Ok». Schließen Sie den Dia-log des Generators mit Klick auf «Cancel».

5. Beenden Sie MLDesigner.

2.3 Codeübersetzung In diesem Schritt wird der erzeugte Programmcode, der in der Hochsprache C vor-liegt, für das Zielsystem in einen ausführbaren Maschinencode übersetzt. Aus Kom-patibilitätsgründen wird hierbei die ältere C-Entwicklungsumgebung „Borland-C“ be-nutzt.

1. Öffnen Sie die Eingabeaufforderung. 2. Wechseln Sie dort in den Unterordner Anlagensteuerung des Arbeitsverzeich-

nisses C:/Praktikum/Synthesecode/[Aufgabenbezeichnung]) mit der Be-zeichnung der aktuellen Aufgabe.

3. Führen Sie C:/Borlandc/bin/make aus. Damit wird das im Ordner befindliche

Makefile ausgeführt, welches die Aufrufe von Compiler, Linker und Locator enthält.

4. Wechseln Sie in das Verzeichnis, das Sie bei der Code-Generierung angege-

ben haben. Packen Sie alle darin enthaltenen Dateien in ein Zip-Archiv. Auf dem Praktikumsrechner kann dafür das Tool „7-Zip“ verwendet werden. Wäh-len Sie als Archivformat „Zip“ aus.

5. Laden Sie ihre Archivdatei auf der Seite https://carl-adam.theoinf.tu-

ilmenau.de/bahn auf das Zielsystem hoch.

6. Notieren Sie sich bitte den angezeigten Code nach dem Upload Ihrer Datei. Beachten Sie: Alle Ihre lokal gespeicherten Daten gehen bei der Systemabmeldung am Praktikums-rechner verloren!

bdaene
Kommentar zu Text
Die genannte Webseite enthält folgendes: - Uploadfunktion für diese Archivdatei - Downloadmöglichkeit dieser Datei (zur Kontrolle) - Download der vorgegebenen Teilmodelle für beide Versuche (nicht benötigt, da diese Dateien zum Versuchsbeginn schon heruntergeladen sind)
bdaene
Hervorheben
Wechseln Sie dort zusätzlich in das Unterverzeichnis 'Anlagensteuerung'. In diesem Verzeichnis sind die Quelltexte und das Makefile.

Dieser Versuch endet mit dem Upload des Archivs auf das Zielsystem. Wenden Sie sich nach erfolgreicher Durchführung der genannten Schritte an den Praktikumsbetreuer.