Bedienungsanleitung Heron Didact - ifs

Bedienungsanleitung Heron Didact - ifs
Excellence in Automotive Computing.
Informationstechnik München
Bedienungsanleitung
Titel des Dokuments
Heron: Echtzeitfähige Steuerung mit
ereignisdiskreten Systemmodellen auf
Basis von Petri-Netzen und GRAFCET
Kurztitel
Heron Didact
Thema
externe Referenz
10081
heron@ifs-it.de
Das folgende Dokument ist geistiges und urheberrechtliches
Eigentum der
Name und Anschrift
IFS Informationstechnik München
Trausnitzstraße 8
81671 München
Die IFS behält sich ausnahmslos alle urheberrechtlichen
Ansprüche vor, welche sie gemäß der geltenden Rechtslage
in der Bundesrepublik Deutschland sowie aus den jeweiligen
Teilen des Werkes, für die die IFS aufgrund von erfinderischer
Tätigkeit natürlicherweise die Urheberschaft besitzt, ableiten
kann.
Unbeeinflusst davon sind Rechte Dritter, für die die IFS, gemäß
den mit diesen Dritten vereinbarten Verträgen und Überlassungen, das vorliegende Werk ggf. auch im Auftrag erstellt hat.
Eine Abtretung der Urheberschaft kann daraus dennoch nicht
abgeleitet werden.
Autoren des Dokuments
Bang Giang Nguyen, Tim-Oliver Paaschen
Erstellungsdatum
Datum der letzten Änderung
22. September 2009
15. Oktober 2013
Version des Dokuments
4.1
erfinden verbessern gewinnen • gemeinsam.
IFS Informationstechnik GmbH Trausnitzstraße 8 81671 München
Telefon +49 89 450983 0 Fax +49 89 450983 10 www.ifs-it.de
Kreissparkasse München Konto 10 110 344 BLZ 702 501 50
Amtsgericht München HRB 126547 USt-IdNr: DE203067267
Geschäftsführer: Dr.-Ing. Markus A. Stulle Dipl.-Ing. Thomas Frey
Excellence in Automotive Computing.
Informationstechnik München
Dokumentinformationen
Status der vorliegenden Version
Bezeichnung
freigegeben
Dieses Dokument unterliegt keinem systematischen Änderungsdienst.
Personen und Rollen
Person
Rolle
Dr.-Ing. Markus A. Stulle
Produktmanager
Dr. Tim-Oliver Paaschen
Gutachter
Bettina von Staden
Lektorin
Speicherort des Dokuments
Pfad
\\ifshome.muc.smarttrust.de\IFS\Produkte\Taurus\02 Arbeitspakete\BZ-10081 (Heron
Didact - Bereitstellung eines Demonstrators mit Beispielmodellen)\06
Spezifikation\BZ-10081 Bedienungsanleitung Heron Didact v4.1.doc
Kontakt
2 von 57
Dokumentinformationen
E-Mail
Produktseite
heron@ifs-it.de
ifs-it.de/heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Inhalt
3 von 57
Inhalt
1
Einführung
4
1.1
Vorausgesetzte Kenntnisse
4
1.2
Echtzeitfähige Steuerung Heron
5
1.3
Auriga
6
2
Bedienungsanleitung
7
2.1
Systemvoraussetzungen
7
2.2
Verzeichnisstruktur
7
2.3
Anleitung
7
3
Heron
14
3.1
Arbeitsweise von Heron
14
3.2
Sensoren und Aktoren
15
3.3
Kanonische Beschreibungsform (KBF)
19
4
Anbindung externer Sensoren und Aktoren
27
4.1
Einleitung
27
4.2
Vorstellung der Beispielaufgabe
27
4.3
Primitive Sensoren und Aktoren
30
4.4
Intelligente Sensoren und Aktoren
35
Verzeichnisse und Anhänge
46
A
Referenzen
46
B
Auszug des Modells TrafficLightSimple
46
C
Teilmodell der Steuerungsaufgabe „Getränkeautomat“
50
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
1
Einführung
1.1
Vorausgesetzte Kenntnisse

Ereignisdiskrete Systeme [1]

Steuerungstechnik

GRAFCET [2]
Tabelle 1 gibt einen Überblick der wichtigsten Begriffe, die in
der folgenden Beschreibung verwendet werden.
4 von 57
1 Einführung
Begriff
Beschreibung
Aktion
Eine Aktion verwendet Aktoren, um eine Wirkung
zu erzielen. Aktionen können an Zustände und
Transitionen gekoppelt sein.
Aktor
Aktoren sind Methoden in Softwaremodulen, die
von Heron aufgerufen werden, um Wirkungen zu
erzielen.
Bedingung
Eine Bedingung beschreibt, wann eine Transition
schaltet.
Ereignis
Ein Ereignis wird aus Messwerten von Sensoren
abgeleitet und in den Termen von Bedingungen
verwendet.
Markenspiel
Visualisierung der Aktivitäten in einem dynamischen ereignisdiskreten System. In Auriga werden
in einem Grafcet die aktiven Zustände, die
schaltenden Transitionen und in Ausführung befindliche Aktionen markiert.
Schritt
Andere Bezeichnung für einen Zustand
Schaltschritt
Ein Schaltschritt ist ein Verarbeitungszyklus
von Heron.
Sensor
Sensoren sind Methoden in Softwaremodulen, die
Messwerte bereitstellen. Die Messwerte werden im
Eingangsregister von Heron abgelegt.
Situation
Die Situation beschreibt den aktuellen Gesamtzustand des Systems. Sie setzt sich aus den markierten Stellen, den schaltfähigen Transitionen,
den Messwerten im Eingangsregister und dem Zustand der Aktoren zusammen.
Stelle
Andere Bezeichnung für einen Zustand
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Begriff
Beschreibung
Struktur
Die Struktur beschreibt den statischen Aufbau
des Systems. Sie setzt sich aus den Zuständen
und Transitionen sowie den sie verbindenden
gerichteten Kanten zusammen.
Transition
Eine Transition beschreibt den Übergang von
einem oder mehreren Ausgangszuständen zu einem
oder mehreren Folgezuständen. Die wichtigste
Eigenschaft einer Transition ist die Bedingung,
bei deren Erfüllung die Transition schaltet.
Das Schalten einer Transition kann mit Aktionen
verbunden sein. Eine Transition wird als schaltfähig bezeichnet, wenn alle Ausgangszustände
aktiv sind und alle Folgezustände über ausreichend Kapazität für Marken verfügen.
Zustand
Ein Zustand (auch Schritt oder Stelle) beschreibt einen Teilzustand eines Automaten.
Das Aktivieren und Desaktivieren eines Zustands
kann mit Aktionen verbunden sein.
Ein Zustand wird als aktiv bezeichnet, wenn er
Marken enthält.
Tabelle 1: Glossar
1.2
Echtzeitfähige Steuerung Heron
Mit dem Ziel, fehlerfreie Software zu entwickeln, setzt IFS
ereignisdiskrete Modelle zur Steuerung von Programmabläufen
ein. Basierend auf der Betrachtung, dass eine Steuerung ein
diskretes ereignisorientiertes dynamisches System ist, wurde
ein kanonisches Beschreibungsformat (KBF) entwickelt, um wesentliche Anforderungen der Automatisierungstechnik zu erfüllen: In KBF können Modelle (Petri-Netze) mit echten
Nebenläufigkeiten dargestellt werden. Zudem wurde mit Heron
eine echtzeitfähige Steuerung geschaffen, die KBF verarbeitet,
Sensormesswerte auswertet und Aktoren ansteuert. Auf diese
Weise kann Heron nahezu jedes Modell abarbeiten, das in KBF
vorliegt.
Heron Didact besteht aus der Steuerung Heron mit Anbindung an
Sensor- und Aktorensurrogate sowie dem Autorenwerkzeug Auriga
(siehe 1.3). Des Weiteren ist ein Beispielmodell einer verkehrsabhängigen Ampelsteuerung in KBF enthalten, die mit Heron
ausgeführt werden kann (vgl. auch den Dateiauszug in Anhang B).
Benutzereignisse werden dabei über eine minimale Bedienoberfläche (in Abbildung 1 „Applikation“) ausgelöst.
5 von 57
1 Einführung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Ein fortgeschrittenes Beispiel unter Verwendung der Sensor/Aktor-Abstraktion von Heron zeigt die Steuerung eines Getränkeautomaten in Kapitel 4.
Abbildung 1: Architekturübersicht Heron Didact
1.3
Auriga
Das Autorenwerkzeug Auriga unterstützt bei der Lösung der Serviceaufgaben mit der Serviceplattform Taurus®. Auriga wird insbesondere als Werkzeug zur Analyse und Beseitigung von
Fehlerbildern eingesetzt. In Verbindung mit der Steuerung Heron
visualisiert Auriga ereignisdiskrete Systemmodelle als
Grafcet1. Damit kann das Verhalten eines gesteuerten Systems
zur Laufzeit als Markenspiel verfolgt werden. Auriga ermöglicht
das Setzen von Haltepunkten und die Einzelschrittausführung.
In Auriga werden unterschiedliche Dateitypen in fünf Bereichen
mit speziellen Komfortfunktionen bearbeitet. Die Verarbeitung
von XML-Dateien in KBF sowie die Ausgabe als Grafcet erfolgt im
Bereich „Ablaufautomat“.
1
Die Schreibweise GRAFCET bezieht sich auf die Norm, als Grafcet hingegen wird die
konkrete Darstellung eines GRAFCET-Plans bezeichnet.
6 von 57
1 Einführung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
2
Bedienungsanleitung
2.1
Systemvoraussetzungen
Zum Ausführen von Heron Didact müssen installiert sein:
2.2

Betriebssystem Windows XP oder jünger

.NET-Laufzeitumgebung 2.0

PDF-Anzeigeprogramm „Adobe Acrobat Reader“
(aktuelle Version)
Verzeichnisstruktur
Abbildung 2: Verzeichnisstruktur von Heron Didact
2.3
Anleitung
2.3.1
Auriga starten
a)
Heron Didact wurde online heruntergeladen:

Führen Sie die Datei Auriga.cmd aus.
b)
Heron Didact liegt auf einem USB-Datenträger vor:

Verbinden Sie den USB-Datenträger mit einem Rechner.
Auriga wird automatisch gestartet.
7 von 57
2 Bedienungsanleitung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Hinweis:
Sollte Auriga nicht starten, führen Sie die Datei
Auriga.cmd aus.
Abbildung 3: Auriga-Startansicht
2.3.2
Laden des Beispielmodells

Klicken Sie mit der rechten Maustaste in den Funktionsbereich „Ablaufautomat“.
Abbildung 4: Laden des Beispiels

Öffnen Sie die Datei TrafficLightSimple.xml, um den
Beispielautomaten in Auriga zu laden.
Das Systemmodell wird als Grafcet angezeigt (Abbildung 5).
8 von 57
2 Bedienungsanleitung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 5: Visualisierung der Ampelsteuerung als Grafcet
2.3.3
Allgemeine Bedienhinweise für Auriga
Die Zahlen in der Tabelle beziehen sich auf Abbildung 5:
9 von 57
2 Bedienungsanleitung
Legende
Funktion
1
Zustandsanzeige aktualisieren AN/AUS
2
Aufschlagen dieses Handbuchs
3
Laden von Automaten in Auriga mit Rechtsklick
4
Umschalten zwischen GRAFCET- und XML-Darstellung
5
Wechseln in das übergeordnete Grafcet
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
2.3.4
Legende
Funktion
6
Wechseln in die zuletzt dargestellte Grafcet-Ansicht
7
Vergrößern/Verkleinern des angezeigten Grafcet; per Regler
oder über die Schaltflächen + und -
8
Heron und das Markenspiel starten
Heron und Markenspiel starten

Starten Sie die Steuerung Heron mit dem grünen Pfeil
(siehe Abbildung 4).
Abbildung 6: Startet Heron und das Markenspiel

10 von 57
2 Bedienungsanleitung
Heron wird gestartet und der Schalter „Fußgänger_Wunsch“
eingeblendet. Das Markenspiel im Grafcet zeigt, dass die
Steuerung aktiv ist (Abbildung 7).
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 7: Visualisierung der Steuerung als Markenspiel
2.3.5
Steuerung der Verkehrsampel
Implementiert wurde das Modell einer verkehrsabhängigen Steuerung für Fahrzeug- und Fußgängerampeln in KBF. Die Signale
zweier Ampeln werden über einen Schalter „Fußgänger_Wunsch“
gesteuert.
Abbildung 8 zeigt das Petri-Netz-Modell der 4-Phasen-Ampel. Aus
diesem Modell wurde die Kanonische Beschreibungsform (KBF)
TrafficLightSimple.xml des gesteuerten Systems abgeleitet.
11 von 57
2 Bedienungsanleitung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 8: Petri-Netz-Modell der gesteuerten Ampel
Das System befindet sich im Schritt „Uhr_Mindestdauer_gruen“,
wenn es vollständig geladen wurde, d.h. die Verkehrsampel zeigt
grün. Die Grünphase dauert so lange, bis das Ereignis
„Fußgänger_Wunsch“ das Umschalten der Verkehrsampel auf gelb
auslöst, mindestens jedoch die Zeit, die der Aktion als Transitionsbedingung zugeordnet ist.
Der Schalter „Fußgänger_Wunsch“ ist direkt nach Auslösung
eingerastet und kann nicht gedrückt werden, bis Schritt S2
„Fahrzeugampel_Gelblicht“ aktiv ist.
Wird der Fußgängerknopf dann gedrückt, wenn S2 als Folgeschritt
von S1 aktiv ist, löst er so lange kein Ereignis aus, bis die
Transition T32 schaltet, d.h. nach Abschluss der Grünphase der
Fahrzeugampel.
12 von 57
2 Bedienungsanleitung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 9: Schalter: inaktiv (li.) und „steckt“ (re.)
13 von 57
2 Bedienungsanleitung
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
3
Heron
Heron ist eine echtzeitfähige Steuerung auf der Basis ereignisdiskreter Modelle, die in der kanonischen Beschreibungsform KBF
(Kapitel 3.3) formuliert sind.
3.1
Arbeitsweise von Heron
Heron verfügt über ein Eingangsregister, in dem Messwerte der
Sensoren (Kapitel 3.2) abgelegt werden. Änderungen an den Daten
im Eingangsregister lösen einen Schaltschritt aus. In einem
Schaltschritt führt Heron die folgenden Aufgaben durch:

Relevante Ereignisse aus den Messwerten im Eingangsregister ableiten
Als relevante Ereignisse werden Ereignisse bezeichnet, die
in Bedingungstermen schaltfähiger Transitionen verwendet
werden.

Zu schaltende Transitionen ermitteln

Gleichzeitiges Schalten aller zu schaltenden Transitionen

Situation aktualisieren
Hinweis:
Indeterminismen in einem Schaltschritt (z.B. Kontaktsituationen) führen zu einem sofortigen Anhalten der gesamten Steuerung.
Das Eingangsregister von Heron nimmt für jeden Sensor einen
Eintrag auf. Jeder Eintrag speichert zwei Messwerte – den aktuellen und den vorangegangenen Wert. Der vorangegangene Wert
wird herangezogen, wenn Ereignisse durch eine Veränderung des
Messwerts (Signalflanke) ausgelöst werden (Tabelle 10: rising
oder falling).
14 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 10: Arbeitsweise von Heron
3.2
Sensoren und Aktoren
Sensoren und Aktoren ermöglichen der Steuerung Heron, mit anderen Komponenten zu interagieren. Aus softwaretechnischer Sicht
sind Sensoren und Aktoren Methoden von Klassen, die von Heron
aufgerufen werden. Aktoren werden aufgerufen, um eine bestimmte
Wirkung zu erzielen. Sensoren werden aufgerufen, um Messwerte
zu erfassen, die im Eingangsregister abgelegt werden.
Bei Sensoren müssen zwei Fälle betrachtet werden, da sich Heron
unterschiedlich verhält, je nachdem ob die Klasse, die die Sensormethoden bereitstellt, die Schnittstelle IFS.Heron.ISensor
implementiert oder nicht. Falls diese Schnittstelle implementiert ist, registriert Heron bei der Klasse einen Beobachter
für neue Messwerte des Sensors. Heron ruft in diesem Fall die
Sensormethode nicht direkt auf, sondern erwartet, dass der
Beobachter über neue Messwerte informiert wird (Kapitel 4.4).
Wenn die Schnittstelle IFS.Heron.ISensor nicht implementiert
wird, ruft Heron die Sensormethode periodisch auf, um den
Messwert zu erfassen. Da ein sinnvoller Wert für das Intervall
von der Steuerungsaufgabe und den Eigenschaften der Sensoren
abhängt, kann der Wert in KBF in der Beschreibung des Modells
angegeben werden (Kapitel 4.3.2).
Es gibt zwei Sensor-/Aktor-Module, die Bestandteil von Heron
sind und die daher auch als interne Module bezeichnet werden:
TIMER (Kapitel 3.2.1) und MEMORY (Kapitel 3.2.2). Die Anbindung
zusätzlicher externer Sensor-/Aktor-Module wird in Kapitel
3.2.3 kurz vorgestellt. In Kapitel 4 wird die Erstellung solcher externen Module ausführlich beschrieben.
15 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
3.2.1
TIMER
Das Modul TIMER stellt Zeitgeber zur Verfügung. Es können beliebig viele Zeitgeber gleichzeitig verwendet werden. Die einzelnen Zeitgeber werden über einen eindeutigen Namen
identifiziert. Die Implementierung basiert auf der Klasse
System.Threading.Timer der .NET-Laufzeitumgebung.
Methode
Beschreibung
IsExpired
Diese Sensormethode prüft, ob ein Zeitgeber abgelaufen ist.
Der einzige Parameter (name) der Methode gibt den Namen des
Zeitgebers an.
StartTimer
Diese Aktormethode startet einen Zeitgeber.
Als Parameter werden der Name (name) des Zeitgebers, der Typ
(type: Singular oder Periodic) und die Dauer angegeben. Die
Dauer wird über die beiden Parameter duration und unit (ms,
sec, min, h oder day) festgelegt.
StopTimer
Diese Aktormethode beendet einen Zeitgeber. Der einzige
Parameter (name) der Methode gibt den Namen des Zeitgebers an.
Tabelle 2: Methoden von TIMER
3.2.2
MEMORY
Das Modul MEMORY dient der Speicherung von Daten (Merker). Jede
Speicherstelle kann ein Objekt aufnehmen. Die Speicherstellen
werden über eindeutige Namen identifiziert.
Methode
Beschreibung
GetValue
Diese Sensormethode ruft den Inhalt einer Speicherstelle ab.
Der einzige Parameter (name) der Methode gibt den Namen der
Speicherstelle an.
HasValue
Diese Sensormethode prüft, ob eine bestimmte Speicherstelle
angelegt wurde. Der einzige Parameter (name) der Methode gibt
den Namen der Speicherstelle an.
SetValue
Diese Aktormethode legt ein Objekt an einer Speicherstelle ab.
Als Parameter werden der Name der Speicherstelle (name) und
das zu speichernde Objekt (value) benötigt.
Durch Schreiben des Werts null wird eine Speicherstelle
gelöscht.
Tabelle 3: Allgemeine Methoden von MEMORY
16 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Wenn in einer Speicherstelle ein numerischer Wert gespeichert
ist, stehen zwei weitere Aktoren zur Verfügung (Tabelle 4).
Methode
Beschreibung
Decrease
Diese Aktormethode reduziert den gespeicherten Wert um 1. Der
einzige Parameter (name) der Methode gibt den Namen der Speicherstelle an.
Increase
Diese Aktormethode erhöht den gespeicherten Wert um 1. Der
einzige Parameter (name) der Methode gibt den Namen der Speicherstelle an.
Tabelle 4: Methoden von MEMORY für numerische Werte
Außerdem können im Modul MEMORY Ergebnisse von Aktionen abgelegt werden (Kapitel 3.3.4). Für die Abfrage solcher Ergebnisse
stehen zwei weitere Sensormethoden zur Verfügung (Tabelle 5).
Methode
Beschreibung
GetResult
Diese Sensormethode ruft den Inhalt einer Speicherstelle ab.
Der einzige Parameter (name) der Methode gibt den Namen der
Speicherstelle an.
HasResult
Diese Sensormethode prüft, ob eine bestimmte Speicherstelle
angelegt wurde. Der einzige Parameter (name) der Methode gibt
den Namen der Speicherstelle an.
Tabelle 5: Methoden von MEMORY für Ergebnisse
3.2.3
Externe Sensoren und Aktoren
An dieser Stelle soll nur kurz vorgestellt werden, wie externe
Module mit Sensoren und Aktoren in Heron angebunden werden.
Eine ausführliche Anleitung bietet Kapitel 4. Ein externes
Sensor-/Aktor-Modul muss eine verwaltete Binärdatei für die
.NET-Laufzeitumgebung sein, wie sie z.B. mit der Programmiersprache C# erstellt werden kann.
An dieser Stelle soll eine Datei der .NET-Laufzeitumgebung
selbst als Aktor verwendet werden. Um die Internet-Seite
„http://www.ifs-it.de/“ mit den Standard-Browser des Rechners
zu öffnen, kann in C# der in Codeauszug 1 gezeigte Befehl verwendet werden.
Quellcodeauszug
System.Diagnostics.Process.Start("http://www.ifs-it.de/");
Codeauszug 1: Anzeige einer Internet-Seite in C#
17 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Um diesen Aufruf in einem KBF-Modell verwenden zu können, müssen zunächst die Binärdatei System.dll und die darin enthaltene
Klasse Process in Heron bekannt gemacht werden. Das erfolgt
über einen entsprechenden Eintrag in der Konfigurationsdatei
HeronConfiguration.xml (Codeauszug 2).
Quellcodeauszug
<?xml version="1.0" encoding="utf-8"?>
<HeronConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="HeronConfiguration.xsd">
<Modules>
<!-- Eindeutige ID, die in Heron verwendet wird -->
<Module name="Process">
<!-- .NET Assembly-Name (hier vollqualifiziert, wegen GAC) -->
<AssemblyName>System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089</AssemblyName>
<Default operation="">
<!—vollqualifizierter Klassenname -->
<TypeName>System.Diagnostics.Process</TypeName>
<FactoryMethod />
</Default>
</Module>
</Modules>
</HeronConfiguration>
Codeauszug 2: Konfigurationsdatei HeronConfiguration.xml
Die in Codeauszug 2 gezeigte .NET-Baugruppe (Assembly) muss nur
dann vollqualifiziert sein, wenn eine Datei im sogenannten
Global Assembly Cache (GAC) von .NET referenziert wird. Für
Dateien im Verzeichnis von Heron genügt an dieser Stelle der
Dateiname ohne Erweiterung.
Nachdem Heron jetzt die Binärdatei System.dll laden kann, kann
die Methode Start der Klasse Process in einem Aktor verwendet
werden (Codeauszug 3).
Quellcodeauszug
<Actor id="Starte Brower" module="Process" operation="Start">
<Parameter name="fileName" value="http://www.ifs-it.de/"/>
</Actor>
Codeauszug 3: Verwendung des externen Aktors
Der Aktor (vgl. Kapitel 3.3.3) kann dann in Aktionen (Kapitel
3.3.4) des Modells verwendet werden.
18 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
3.3
Kanonische Beschreibungsform (KBF)
In diesem Kapitel soll eine kurze Einführung in den Aufbau von
KBF gegeben werden. Eine KBF-Datei ist ein XML-Dokument, das in
mehrere Abschnitte gegliedert ist. Anhang B zeigt einen Auszug
einer KBF-Datei, der alle relevanten Abschnitte enthält.
3.3.1
Sensoren
Jeder Eintrag vom Typ Sensor (Codeauszug 4) gibt eine Methode
und die erforderlichen Aufrufparameter an. Durch einen Aufruf
der Methode mit den Parametern erhält man einen Messwert.
Quellcodeauszug
<Sensor id ="Timer_Rot_abgelaufen" description="Zeitgeber für die Rotphase"
module="TIMER" operation="IsExpired">
<Parameter name="name" value="Timer_Rot"/>
</Sensor>
Codeauszug 4: Beispiel für einen Sensor
Tabelle 6 beschreibt alle Felder, die für einen Sensor angegeben werden können.
Eigenschaft
Beschreibung
id
Eindeutiger Identifikator für den Sensor innerhalb des Modells
module
Name des Sensor-/Aktor-Moduls, das die Sensormethode bereitstellt
operation
Name der Sensormethode
description
Optionale Beschreibung
Tabelle 6: Felder eines Sensors
Tabelle 7 nennt alle Felder, die für Aufrufparameter angegeben
werden müssen.
Eigenschaft
Beschreibung
name
Name des Parameters
value
Wert, der beim Methodenaufruf für den Parameter zu übergeben
ist
Tabelle 7: Felder eines Parameters
19 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
3.3.2
Ereignisse
Jedes Ereignis (Codeauszug 5) bewertet den Messwert eines Sensors. Das Ergebnis der Bewertung ist ein Wahrheitswert, der angibt, ob das Ereignis eingetreten ist.
Quellcodeauszug
<Event id="Rot_vorbei" description="Rotphase beenden">
<Sensor ref="Timer_Rot_abgelaufen" type="rising"/>
</Event>
Codeauszug 5: Beispiel für ein Ereignis
Tabelle 8 beschreibt alle Felder, die für ein Ereignis angegeben werden können.
Eigenschaft
Beschreibung
id
Eindeutiger Identifikator für das Ereignis innerhalb des
Modells
description
Optionale Beschreibung
Tabelle 8: Felder eines Ereignisses
Um die Messwerte eines Sensors zu bewerten, können Schwellwerte
oder Vergleichswerte angegeben werden (Tabelle 9). Falls der
Sensor bereits einen Wahrheitswert zurückgibt, ist die Angabe
von Schwell- oder Vergleichswerten nicht erforderlich.
Eigenschaft
Beschreibung
ref
Identifikator des Sensors
type
Art des Ereignisses
match
Optionaler Vergleichswert für die Bewertung von Sensoren
threshold
Optionaler Schwellwert für die Bewertung von Sensoren
Tabelle 9: Felder eines Verweises auf einen Sensor
20 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Die Art des Ereignisses (type) gibt an, bei welchen Messwerten
ein Ereignis eintritt (Tabelle 10).
Typ
Beschreibung
true
high
Das Ereignis tritt ein, wenn der Messwert des Sensors über dem
Schwellwert, gleich dem Vergleichswert oder true ist.
false
low
Das Ereignis tritt ein, wenn der Messwert des Sensors unter
dem Schwellwert, ungleich dem Vergleichswert oder false ist.
rising
Das Ereignis tritt ein, wenn der bewertete Messwert von low
nach high wechselt.
falling
Das Ereignis tritt ein, wenn der bewertete Messwert von high
nach low wechselt.
Tabelle 10: Arten von Ereignissen
3.3.3
Aktoren
Jeder Eintrag vom Typ Actor (Codeauszug 6) gibt eine Methode
und die erforderlichen Aufrufparameter an. Durch einen Aufruf
der Methode mit den Parametern wird eine Wirkung erzielt.
Quellcodeauszug
<Actor id ="Uhr_aufziehen_Dauer_Rot" module="TIMER" operation="StartTimer"
description="Uhr für Rotphase aufziehen">
<Parameter name="name" value="Timer_Rot"/>
<Parameter name="Type" value="Singular"/>
<Parameter name="Duration" value="5"/>
<Parameter name="Unit" value="sec"/>
</Actor>
Codeauszug 6: Beispiel für einen Aktor
Die Felder von Aktoren und deren Parameter entsprechen denen
von Sensoren (Tabelle 6) und deren Parametern (Tabelle 7).
3.3.4
Aktionen
Jeder Eintrag vom Typ Action (Codeauszug 7) referenziert einen
oder mehrere Aktoren, die mit der Aktion verknüpft sind.
Quellcodeauszug
<Action id="Uhr_Rot" description="Starte Zeitgeber fuer Rotphase">
<Actor ref="Uhr_aufziehen_Dauer_Rot" trigger="Activate"
result="Erfolg" />
</Action>
Codeauszug 7: Beispiel für eine Aktion
21 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Die Felder von Aktionen entsprechen denen von Ereignissen
(Tabelle 8). Die Felder der Verweise auf Aktoren beschreibt
Tabelle 11.
Eigenschaft
Beschreibung
ref
Identifikator des Aktors
trigger
Optionale Angabe des Ausführungszeitpunkts

Activate (Fehlwert): bei Aktivierung eines Zustands

Deactivate: bei Desaktivierung eines Zustands
Bei Aktionen an Transitionen wird dies Angabe ignoriert
result
Optionaler Name einer Speicherstelle, in der das Ergebnis der
Aktion abgelegt wird.
Ergebnisse können nur in Bedingungstermen unmittelbar folgender Transitionen verwendet werden!
Tabelle 11: Felder eines Verweises auf einen Aktor
3.3.5
Bedingungen
Jeder Eintrag vom Typ Condition (Codeauszug 8) beschreibt eine
Bedingung, unter der eine Transition schaltet.
Quellcodeauszug
<Condition id="C32" description="Gruenphase zu Gelbphase">
Mindestdauer_Gruen_vorbei AND Fussgaenger_wartet
</Condition>
Codeauszug 8: Beispiel für eine Bedingung
In den Bedingungstermen können die Identifikatoren von Ereignissen und Zuständen verwendet werden. Ein Zustand wird als
wahr bewertet, wenn er aktiv ist. Die Identifikatoren können
über die Schlüsselwörter AND und NOT verknüpft bzw. negiert
werden. Außerdem sind die Schlüsselwörter true und false für
invariante Terme zulässig. Leere Bedingungsterme werden als
true bewertet.
22 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
3.3.6
Zustände
Jeder Eintrag vom Typ State (Codeauszug 9) beschreibt einen
Zustand des Modells. Einem Zustand können Aktionen zugeordnet
sein. Außerdem wird für jeden Zustand angegeben, welche Transitionen er schaltfähig macht (Enables) bzw. blockiert
(Inhibits).
Quellcodeauszug
<State id="S1" description="Fahrzeug-Ampel rot" initial="1" capacity="1">
<Actions>
<Action ref="Fahrzeugampel_Rotlicht"/>
</Actions>
<Enables>
<Transition ref="T13" weight="1" />
<Transition ref="T11" />
</Enables>
<Inhibits />
</State>
Codeauszug 9: Beispiel für einen Zustand
Tabelle 12 beschreibt die Felder eines Zustands.
Eigenschaft
Beschreibung
id
Eindeutiger Identifikator für den Zustand
description
Optionale Beschreibung
initial
Optionale Angabe über die Anzahl der Marken, die
zu Beginn enthalten soll;
Vorgabewert ist 0
capacity
Optionale Angabe zur Kapazität des Zustands;
Vorgabewert ist 1
der Zustand
Tabelle 12: Felder eines Zustands
Die Felder der Verweise auf Aktionen und Transitionen beschreiben Tabelle 13 und Tabelle 14.
Eigenschaft
Beschreibung
ref
Identifikator der Aktion
Tabelle 13: Felder eines Verweises auf eine Aktion
23 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Eigenschaft
Beschreibung
ref
Identifikator der Transition
weight
Optionale Angabe des Kantengewichts (Anzahl der Marken, die
von Zustand abgezogen werden, wenn die Transition schaltet);
Vorgabewert ist 1
Tabelle 14: Felder eines Verweises auf eine Transition
3.3.6.1
Übergeordnete Zustände
Ein übergeordneter Zustand (oder einschließender Schritt) umschließt andere Zustände. Wichtigstes Merkmal eines übergeordneten Zustands ist, dass bei der Desaktivierung alle
enthaltenen Zustände ebenfalls desaktiviert werden.
Ein Eintrag vom Typ SuperState (Codeauszug 10) beschreibt
übergeordneten Zustand. Der Eintrag erweitert den Eintrag
um die Listen ContainedStates und Activates. Beide Listen
halten Verweise auf andere Zustände. Dabei muss Activates
Teilmenge von ContainedStates enthalten.
Quellcodeauszug
<SuperState id="Betrieb" description="Ampel arbeitet normal">
<Actions></Actions>
<Enables>
<Transition ref="T_ERROR"/> <!-- Fehler aufgetreten -->
</Enables>
<ContainedStates>
<State ref="S1"/>
<State ref="S2"/>
<State ref="S3"/>
</ContainedStates>
<Activates>
<State ref="S1"/>
</Activates>
</SuperState>
Codeauszug 10: Beispiel für einen übergeordneten Zustand
Wenn ein übergeordneter Zustand aktiviert wird, aktiviert
er alle unter Activates aufgeführten Zustände. Wird der
übergeordnete Zustand deaktiviert, deaktiviert er alle in
ContainedStates enthaltenen Zustände.
24 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
einen
State
enteine
Excellence in Automotive Computing.
Informationstechnik München
3.3.7
Transitionen
Ein Eintrag vom Typ Transition (Codeauszug 11) beschreibt eine
Transition. Einer Transition können Aktionen zugeordnet sein.
Außerdem wird für jede Transition angegeben, welche Zustände
auf sie folgen (NextStates).
Quellcodeauszug
<Transition id="T0" description="Initialisiere Timer" condition="C01">
<Actions>
<Action ref ="Uhr_Rot" />
</Actions>
<NextStates>
<State ref="S1" weight="1"/>
</NextStates>
</Transition>
Codeauszug 11: Beispiel für eine Transition
Tabelle 15 beschreibt die Felder eines Zustands.
Eigenschaft
Beschreibung
id
Eindeutiger Identifikator des Zustands
description
Optionale Beschreibung
condition
Identifikator der Schaltbedingung für diesen Zustand
Tabelle 15: Felder einer Transition
Die Felder der Verweise auf Zustände beschreibt Tabelle 16.
Eigenschaft
Beschreibung
ref
Identifikator des Zustands
weight
Optionale Angabe des Kantengewichts (Anzahl der Marken, die
dem Zustand zugewiesen werden, wenn die Transition schaltet);
Vorgabewert ist 1
Tabelle 16: Felder eines Verweises auf einen Zustand
3.3.8
Quellenangaben
Das Modell kann Quellenangaben (Codeauszug 12) enthalten, wenn
es aus einem anderen Beschreibungsformat nach KBF konvertiert
wurde. Die Quellangabe soll die Zuordnung einzelner Elemente in
KBF zu den entsprechenden Elementen im ursprünglichen Format
ermöglichen. Dadurch wird die Möglichkeit geschaffen, eine
Einzelschrittausführung in Heron in den Quellen des Ursprungsformats mitzuverfolgen.
25 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<Source ref="T0" type="Transition" file="TAM-Modell.xml"
line="12" position="8" />
Codeauszug 12: Beispiel für eine Quellenangabe
Tabelle 17 beschreibt die Felder einer Quellenangabe.
Eigenschaft
Beschreibung
ref
Identifikator eines Elements im Modell
type
Optionale Angabe des Typs des referenzierten Elements; wird
benötigt, wenn der gleiche Identifikator von verschiedenen
Elementen verwendet wird (z.B. wenn ein Aktor und eine Aktion
den Identifikator „Schalte_Rot“ verwenden)
file
Name der Quelldatei des Ursprungsformats
line
Nummer der Zeile (in der Quelldatei), in der das Element
angegeben ist
position
Optionale Position des Elements in der Zeile (in der Quelldatei)
Tabelle 17: Felder einer Quellenangabe
3.3.9
Verarbeitungshinweise
Den Abschluss eines Modells bilden Verarbeitungshinweise für
die Steuerung (Codeauszug 13).
Quellcodeauszug
<Hints>
<Hint name="ValidationMode" value="tolerant"/>
<Hint name="PollingInterval" value="100"/>
</Hints>
Codeauszug 13: Beispiel für Verarbeitungshinweise
Tabelle 18 beschreibt die Verarbeitungshinweise, die von Heron
interpretiert werden.
Methode
Beschreibung
ValidationMode
Richtlinie für die Prüfung von Sensoren und Aktoren;
Ist der Wert „tolerant“, darf das Modell Sensoren und Aktoren
enthalten, die (noch) nicht verfügbar sind. Dieser Modus ist
für die Entwicklung von Modellen vorgesehen.
Andere Werte werden ignoriert.
PollingInterval
Zeitintervall für die periodische Abfrage von Sensoren (vgl.
Kapitel 3.2); Der Wert ist eine Zeitangabe in Millisekunden
Tabelle 18: Verarbeitungshinweise
26 von 57
3 Heron
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4
Anbindung externer Sensoren und Aktoren
4.1
Einleitung
In der Regel benötigt eine Steuerungsaufgabe externe Sensoren
und Aktoren, um zu funktionieren. Im einfachsten Fall werden
Methoden aus bestehenden Software-Modulen in Heron als Sensoren
und Aktoren verwendet (primitive Sensoren/Aktoren). Das können
z.B. Treiber sein, die ein Hersteller mit seiner Hardware ausgeliefert hat.
In anderen Fällen werden spezielle Sensoren und Aktoren für die
Lösung der Steuerungsaufgabe mit Heron erstellt (intelligente
Sensoren/Aktoren). Dafür kann es verschiedene Gründe geben.
So lassen sich komplexe Aufgaben oft leichter modellieren,
wenn Sensoren und Aktoren auf die Aufgabe abgestimmt sind.
Wie man externe Sensoren und Aktoren für Heron verwendet und
ggf. erstellt, wird in den folgenden Kapiteln erklärt.
4.2
Vorstellung der Beispielaufgabe
Eine Erklärung ist immer verständlicher, wenn man sie an einem
Beispiel beschreibt. Deswegen wird folgend eine Steuerungsaufgabe als Beispiel definiert. Die Anbindung externer Sensoren
und Aktoren wird anhand dieses Beispiels veranschaulicht. Dabei
werden zuerst die vorhandenen Sensoren und Aktoren genutzt
(Kapitel 4.3). Anschließend werden darauf aufbauend intelligente Sensoren und Aktoren erstellt (Kapitel 4.4).
4.2.1
Aufgabe
Ein Getränkeautomat soll mit Heron gesteuert werden. Dieser
Getränkeautomat ist in Software nachgebildet (Abbildung 11)
und soll alle Funktionen eines echten Automaten erfüllen.
27 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 11: Getränkeautomat
Diese Funktionen sollen als Sensor- und Aktoren-Methoden
implementiert und in einem .NET-Modul zusammengestellt werden.
Die Steuerung Heron bindet diesen Modul an. Mit einem Automatenmodell in KBF steuert Heron den Getränkeautomaten.
28 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4.2.2
Anwendungsfälle
Im Folgenden sind die Anwendungsfälle eines normalen Getränkeautomaten aufgeführt, die in dieses Beispielmodell integriert
werden sollen:
4.2.3

Einwerfen von Münzen

Abbrechen des Kaufvorgangs

Auswahl eines Getränks

Entnehmen des gekauften Getränks

Entnehmen des Restgelds
Beschreibung der Steuerungsaufgabe
Am Anfang befindet sich der Getränkeautomat im Bereit-Zustand.
Der Kaufbetrag ist null. Auf der Anzeige steht die Meldung
„Bitte Münzen einwerfen“.
Nachdem eine Münze eingeworfen wurde, wird der Wert dieser Münze sofort zum aktuellen Betrag addiert. Dann wird der aktuelle
Betrag auf der Anzeige dargestellt.
Der Benutzer kann den Kaufvorgang abbrechen (Schaltfläche Geldrückgabe). Danach wird ihm sein Geld zurückgegeben. Das passiert nicht, solange der Benutzer noch keine Münze in den
Automat eingeworfen hat.
Wird ein Getränk ausgewählt, können folgende Fälle eintreten:

Der aktuelle Betrag erreicht den Wert des Getränks nicht:
Eine Warnmeldung wird bis zu 2 Sekunden lang angezeigt, um
den Benutzer zu informieren. Danach erscheint wieder der
aktuellen Betrag auf der Anzeige. Weitere Aktionen, z.B.
Münzen einwerfen, können aber auch vor Ablauf der 2 Sekunden ausgeführt werden.

Der aktuelle Betrag entspricht dem Wert des Getränks:
Eine Flasche des entsprechenden Getränks wird bei der Getränkeausgabe geliefert. Der aktuelle Betrag wird zurückgesetzt. Der Automat kehrt wieder in den Bereit-Zustand
zurück.

Der aktuelle Betrag übersteigt den Wert des Getränks:
Dieser Fall entspricht weitestgehend dem vorangegangenen.
Zusätzlich wird das Restgeld zurückgegeben.
29 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Nach dem Kaufvorgang kehrt der Getränkeautomat wieder zum
Bereit-Zustand zurück.
4.2.4
4.3
Annahmen/Randbedingungen

Getränkevorrat und Wechselgeld im Automat sind unbegrenzt
vorhanden.

Der Einwurf gefälschter Münzen ist ausgeschlossen.

Es gibt keine Störeinflüsse der Umgebung auf den Getränkeautomaten und seine Funktionen.
Primitive Sensoren und Aktoren
Die primitiven Sensoren und Aktoren entsprechen den Grundfunktionen für die Steuerung des Getränkeautomaten. Diese Grundfunktionen und die graphische Oberfläche des Automaten werden
im .NET-Modul VendingMachineBasic bereitgestellt. Tabelle 19
beschreibt alle primitiven Sensoren/Aktoren.
Methode
Beschreibung
Coin5CentInserted
Coin10CentInserted
Coin20CentInserted
Coin50CentInserted
Coin1EuroInserted
Coin2EuroInserted
Sensoren signalisiert den Einwurf der jeweiligen
Münze
ReturnMoneyRequired
Sensor
Beverage1Selected
Beverage2Selected
Beverage3Selected
Beverage4Selected
Beverage5Selected
Beverage6Selected
Sensoren signalisiert, ob das Getränk im jeweiligen
Ausgabeschacht ausgewählt wurde
ShowMessage
Aktor
zeigt eine Nachricht an
DeliverBeverage1
DeliverBeverage2
DeliverBeverage3
DeliverBeverage4
DeliverBeverage5
DeliverBeverage6
Aktoren
liefert ein Getränk aus dem jeweiligen
Ausgabeschacht
(Software: zeigt ein Bild auf der Automatenoberfläche)
30 von 57
4 Anbindung externer Sensoren und Aktoren
signalisiert, ob die eingeworfenen Münzen
zurückgegeben werden sollen
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Methode
Beschreibung
ReturnMoney
Aktor
gibt Wechselgeld zurück
(Software: zeigt ein Bild auf der Automatenoberfläche)
Tabelle 19: Primitive Sensoren und Aktoren
4.3.1
Anbindung primitiver Sensoren und Aktoren an Heron
Die primitiven Sensoren und Aktoren sind in dem .NET-Modul
VendingMachineBasic.dll enthalten. Damit Heron dieses Modul
erkennen und die Methoden im Modul benutzen kann, müssen folgende Schritte vorgenommen werden:

Kopieren des .NET-Moduls VendingMachineBasic.dll in das
Verzeichnis der Heron-Binärdateien (siehe Abbildung 12).
Abbildung 12: Verzeichnisstruktur von Heron Didact

Erweitern der Konfigurationsdatei HeronConfiguration.xml
Codeauszug 14 zeigt den erforderlichen Eintrag in der
Datei HeronConfiguration.xml.
Quellcodeauszug
...
<Module name="VendingMachineBasic">
<AssemblyName>VendingMachineBasic</AssemblyName>
<Default operation="">
<TypeName>IFS.VendingMachine.BasicSensorActor</TypeName>
<FactoryMethod />
</Default>
</Module>
...
Codeauszug 14: Konfigurationseintrag für VendingMachineBasic
31 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Jedes Modul wird von Heron durch einen eindeutigen Namen identifiziert. Dieser Name wird nur in Heron und den betreffenden
KBF-Modellen für Sensoren und Aktoren verwendet.
Der Parameter AssemblyName verweist auf das .NET-Modul
VendingMachineBasic.dll. Hier wird in der Regel der Dateiname
ohne Erweiterung angegeben.
Der Parameter TypeName enthält den vollqualifizierten Namen
(mit Namensraum) der Klasse BasicSensorActor, die die Sensorund Aktoren-Methoden implementiert.
Abbildung 13 stellt die Softwarearchitektur zur Anbindung
primitiver Sensoren/Aktoren an Heron dar.
Abbildung 13: Anbindung primitiver Sensoren/Aktoren an Heron
4.3.2
Teilmodell der Steuerungsaufgabe
Um zu prüfen, ob die Anbindung erfolgreich ist und wie Heron
mit den primitiven Sensoren/Aktoren arbeitet, wird ein Teil
der Steuerungsaufgabe in KBF realisiert (Anhang C).
Folgende Anwendungsfälle werden an dieser Stelle berücksichtigt:

Einwerfen von 3 Münzenarten: 50 Cent, 1 oder 2 Euro.

Auswahl eines Getränks (Fruchtsaft oder Ice Tea)

Anzeige einer Meldung

Abbrechen des Kaufvorgangs
32 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Der Steuerungsentwurf als Petri-Netz für die Steuerungsaufgabe
dieses Teils wird in Abbildung 14 dargestellt.
Abbildung 14: Teilmodell der Steuerungsaufgabe
Um die Messwerte der primitiven Sensoren zu aktualisieren, muss
Heron sie in regelmäßigen Intervallen auslesen (Polling). Das
Polling-Intervall kann im KBF-Modell angegeben werden
(Codeauszug 15).
Quellcodeauszug
...
<Hints>
<Hint name="PollingInterval" value="100" />
</Hints>
...
Codeauszug 15: Einstellen des Polling-Intervalls in KBF
33 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
In diesem Beispiel wird dem Polling-Intervall der Wert 100
Millisekunden zugewiesen. Eine entsprechende Verzögerung wird
an den Transitionen T0 und T4 des Teilmodells in Abbildung 14
verwendet.
Die Notwendigkeit für diese Verzögerung soll Abbildung 15 veranschaulichen:
Abbildung 15: Sensorwerte beim Eintreten der Ereignisse
Das Signal der Schaltflächen ist von sehr kurzer Dauer. Im entsprechenden Sensor wird der Wert zwischengespeichert und bei
der nächsten Abfrage an Heron übergeben. Bei der Abfrage wird
der Wert im Zwischenspeicher automatisch gelöscht.
Heron legt den abgefragten Wert in seinem Eingangsregister ab
(vgl. Kapitel 3.1). Ein Schaltschritt von Heron erfolgt in der
Regel sehr viel schneller als die Aktualisierung des Eingangsregisters beim Polling. Ohne eine Verzögerung (entsprechend
dem Polling-Intervall) an den Transitionen T0 und T4 würden die
Sensorwerte einer gedrückten Schaltfläche mehrfach verarbeitet.
34 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4.4
Intelligente Sensoren und Aktoren
Für eine vollständige Realisierung der Steuerungsaufgabe genügen die primitiven Sensoren und Aktoren des Getränkeautomaten.
Das KBF-Modell würde dabei aber sehr umfangreich ausfallen.
Deswegen ist es sinnvoll, intelligente Sensoren und Aktoren
vorzusehen. Ihre Funktionen basieren auf denen der primitiven
Sensoren und Aktoren. Sie erweitern den Funktionsumfang, sodass
die Steuerung des Getränkeautomaten vereinfacht wird. Außerdem
verwenden die intelligenten Sensoren die entsprechenden
Schnittstellen von Heron, sodass Heron Beobachter für Messwertänderungen registrieren kann und kein Polling benötigt wird.
Die Softwarearchitektur wird durch Abbildung 16 veranschaulicht.
Abbildung 16: Softwarearchitektur mit intelligenten Sensoren
4.4.1
Implementierung
Die intelligenten Sensoren und Aktoren werden in der Programmiersprache C# für die Plattform .NET geschrieben. Die folgende
Beschreibung geht davon aus, dass das Werkzeug Microsoft Visual
Studio verwendet wird.
35 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4.4.1.1
Anlegen des Projekts
Zunächst wird das Bibliotheksprojekt VendingMachineHeron
erzeugt. Als Verweise werden die Datei mit den primitiven Sensoren und Aktoren und die Schnittstellenbibliothek von Heron
IFS.Heron.Interface.dll zum Projekt hinzugefügt. Abbildung 17
zeigt die entsprechende Projektansicht in Visual Studio.
Abbildung 17: Projektansicht in Visual Studio
4.4.1.2
Anlegen der Klassen
In diesem Projekt werden zwei Klassen benötigt:

Die Klasse HeronSensorActor enthält die Methoden für die
intelligenten Sensoren und Aktoren.

Die Klasse SwitchSensor enthält die Logik für einen einzelnen intelligenten Sensor. Für jeden intelligenten Sensor wird ein Objekt dieser Klasse erstellt. Die
Sensormethoden in der Klasse SwitchSensor werden basierend
auf den primitiven Sensoren in der Klasse BasicSensorActor
implementiert.
Tabelle 20 führt alle intelligenten Sensoren und Aktoren auf.
Methode
Beschreibung
CoinInserted(coin)
Sensor
gibt zurück, welche Münze eingeworfen wurde
ReturnMoneyRequired()
Sensor
gibt zurück, ob die eingeworfenen Münzen
zurückgegeben werden sollen
BeverageSelected
(beverage)
Sensor
gibt zurück, welches Getränk ausgewählt
wurde
AmountReached
(beverage)
Sensor
gibt zurück, ob der aktuellen Geldbetrag
den Wert des gewünschten Getränks erreicht
36 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Methode
Beschreibung
ShowAmount()
Aktor
zeigt den aktuellen Geldbetrag bzw. eine
Meldung (wenn Betrag gleich Null)
ShowMessage(text)
Aktoren
zeigt eine selbst definierte Meldung auf
der Anzeige
DeliverBeverage
(beverage)
Aktor
gibt das gekaufte Getränk aus
Tabelle 20: Intelligente Sensoren/Aktoren
Ergänzt werden diese beiden Klassen um die Aufzählungen Coins
und Beverages, die die akzeptierten Münzen und die verfügbaren
Getränke repräsentieren. Abbildung 18 zeigt die daraus resultierende Projektansicht.
Abbildung 18: Projektansicht mit Dateien
4.4.1.3
Schnittstellen von Heron
Die intelligenten Sensoren implementieren die Schnittstelle
Ifs.Heron.ISensor. Über diese Schnittstelle kann Heron Beobachter registrieren (und wieder deregistrieren). Die Beobachter
implementieren die Schnittstelle Ifs.Heron.ISensorCallback,
über die der Sensor geänderte Messwerte an Heron mitteilt.
Abbildung 19 zeigt das Klassendiagramm für das Projekt
VendingMachineHeron - einschließlich der relevanten Schnittstellen und Basisklassen aus Heron und der Klassen aus
VendingMachineBasic.
37 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 19: Klassendiagramm VendingMachineHeron
38 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4.4.1.4
Basisklassen von Heron
Für die Implementierung von Sensoren und Aktoren stellt Heron
zwei Basisklassen bereit:
4.4.1.5

Die generische Klasse SensorBase ist als Basisimplementierung eines Sensors vorgesehen. Sie implementiert die
Schnittstelle ISensor. Außerdem stellt sie für abgeleitete
Klassen die geschützte Methode NotifySensorChange bereit,
über die alle registrierten Beobachter benachrichtigt werden können, wenn sich ein Messwert ändert.

Die Klasse SensorModuleBase<T> kann mehrere Sensoren einer
Klasse verwalten, die von SensorBase abgeleitet ist. Die
einzelnen Sensoren werden über einen Namen identifiziert.

Den Namen ermittelt die Methode GetSensorName bei
der Registrierung eines Beobachters aus dem Parameter
name der Sensorenbeschreibung. Diese Methode kann
überschrieben werden, wenn ein anderer Parameter
als identifizierendes Merkmal dient.

Auch SensorModuleBase<T> implementiert die Schnittstelle ISensor. Wenn ein Beobachter für einen bisher
unbekannten Sensor registriert werden soll, erzeugt
die Basisimplementierung eine neue Instanz. Ansonsten
werden die Beobachter für die Registrierung und die
Deregistrierung zu dem jeweiligen Sensor weitergereicht.
Implementierung der Klasse SwitchSensor
Diese Klasse implementiert die vier intelligenten Sensormethoden aus Tabelle 20. Sie ist von der Klasse SensorBase abgeleitet. Die Implementierungen der Sensormethoden verwenden die
Methode NotifySensorChange der Basisklasse, um Heron über
Ereignisse zu benachrichtigen. Codeauszug 16 zeigt dies am
Beispiel der Implementierung von AmountReached.
39 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
/// <summary>
/// Gibt zurück, ob der Betrag der eingeworfenen Münzen
/// den Kaufpreis des gewünschten Getränks erreicht
/// </summary>
/// <param name="beverage">Getränk</param>
/// <param name="amount">aktueller Betrag</param>
/// <returns>
/// <c>true</c> wenn der Kaufpreis erreicht ist, sonst <c>false</c>
/// </returns>
public bool AmountReached(string beverage, int amount)
{
bool result = false;
if (Enum.IsDefined(typeof(Beverages), beverage))
{
// Getränkenamen in der Aufzählung suchen
Beverages selection = (Beverages)Enum.Parse(typeof(Beverages),
beverage);
// Kaufpreis des Getränks ermitteln ...
int beverageAmount = Beverage.Prices[(int)selection];
// ... und mit dem Betrag vergleichen
if (amount >= beverageAmount)
{
// Ereignis an Heron signalisieren
NotifySensorChange("AmountReached", true);
result = true;
}
}
return result;
}
Codeauszug 16: Sensormethode AmountReached
4.4.1.6
Implementierung der Klasse HeronSensorActor
Diese Klasse implementiert alle Sensor- und Aktormethoden aus
Tabelle 20. Sie bindet den Typparameter von SensorModuleBase<T>
an SwitchSensor.
Im Konstruktor der Klasse werden für alle Schaltflächen des Getränkeautomaten Sensoren-Objekte von Typ SwitchSensor erstellt.
Die automatische Erzeugung neuer Sensoren bei der Registrierung
ist nicht erwünscht. Daher wird die Methode RegisterCallback
überschrieben. Die Namen der Sensoren werden aus den Parametern
coin (für Münzen) und beverage (für Getränke) ermittelt.
40 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
HeronSensorActor registriert die Methode OnButtonPressed bei
der Klasse BasicSensorActor für das Ereignis ButtonPressed.
Dieses Ereignis wird ausgelöst, wenn eine Schaltfläche auf
der Bedienoberfläche des Getränkeautomaten betätigt wird.
Codeauszug 17 zeigt die Implementierung von OnButtonPressed.
Quellcodeauszug
/// <summary>
/// Behandelt das Ereignis ButtonPressed der Bedienoberfläche
/// </summary>
/// <param name="buttonName">Etikett der Schaltfläche</param>
private void OnButtonPressed(string buttonName)
{
if (sensors.ContainsKey(buttonName))
{
// Repäsentiert die Schaltfläche eine Münze?
if (Enum.IsDefined(typeof(Coins), buttonName))
{
sensors[buttonName].CoinInserted(buttonName, ref amountCent);
}
// Ist es die Schaltfläche 'Geldrückgabe'?
else if (buttonName == "ReturnMoney")
{
sensors[buttonName].ReturnMoneyRequired(ref amountCent);
}
// Wurde ein Getränk ausgewählt?
else if (Enum.IsDefined(typeof(Beverages), buttonName))
{
sensors[buttonName].AmountReached(buttonName, ref amountCent);
sensors[buttonName].BeverageSelected(buttonName);
}
}
}
Codeauszug 17: Ereignisbehandlung OnButtonPressed
Es wird der Sensor verwendet, der dem Etikett der Schaltfläche
zugeordnet ist. Die Methode, die auf diesem Sensor aufgerufen
wird, hängt davon ab, ob das Etikett einer der Aufzählungen zugeordnet werden kann, die die Münzen bzw. verfügbaren Getränke
repräsentieren.
Als Etikett wird an dieser Stelle die Beschriftung einer
Schaltfläche bezeichnet. Sie ist in der Eigenschaft Button.Tag
der Schaltflächen der Bedienoberfläche hinterlegt.
Abbildung 20 zeigt ein Sequenzdiagramm, das den Ablauf vom
Betätigen einer Schaltfläche an der Bedienoberfläche bis zur
Verarbeitung in Heron veranschaulicht.
41 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Abbildung 20: Sequenzdiagramm „Schaltfläche gedrückt“
4.4.2
Anbindung intelligenter Sensoren und Aktoren an Heron
Wie in Kapitel 4.3.1 für die primitiven Sensoren und Aktoren
gezeigt, muss auch das Modul mit den intelligenten Sensoren
und Aktoren bei Heron registriert werden:

Die Datei VendingMachineHeron.dll in das Verzeichnis der
Binärdatei von Heron kopieren

Die Konfigurationsdatei HeronConfiguration.xml um einen
Eintrag für dieses Modul erweitern (Codeauszug 18)
Quellcodeauszug
<Module name="VendingMachineHeron">
<AssemblyName>VendingMachineHeron</AssemblyName>
<Default operation="">
<TypeName>IFS.VendingMachine.HeronSensorActor</TypeName>
<FactoryMethod />
</Default>
</Module>
Codeauszug 18: Konfigurationseintrag für VendingMachineHeron
42 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
4.4.3
Steuerungsentwurf der Aufgabe
Der Steuerungsentwurf der kompletten Steuerungsaufgabe unter
Verwendung der intelligenten Sensoren und Aktoren wird in
Abbildung 21 als Petri-Netz dargestellt.
Abbildung 21: Steuerungsentwurf der kompletten Steuerungsaufgabe
4.4.4
Abbildung des Steuerungsentwurfs in KBF
Das KBF-Modell verwendet alle Elemente (außer übergeordneten
Zuständen), die in Kapitel 3.3 vorgestellt wurden. Für jedes
Element wird im Folgenden ein Codeauszug als Beispiel dargestellt und beschrieben.
43 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
In Codeauszug 19 wird der Sensor Münze_5_Cent erstellt. Für
diesen Sensor registriert Heron einen Beobachter für das Ereignis CoinInserted beim Sensor Coin5Cent.
Quellcodeauszug
<Sensor id="Münze_5_Cent"
module="VendingMachineHeron" operation="CoinInserted">
<Parameter name="coin" value="Coin5Cent" />
</Sensor>
Codeauszug 19: Beispiel für Sensor in KBF
Codeauszug 20 zeigt, wie aus dem Sensor Münze_5_Cent das Ereignis Münze_5_Cent_eingeworfen ermittelt wird. Sobald das Eingangsregister für den Sensorwert von Münze_5_Cent den Wert
true enthält, wird das Ereignis Münze_5_Cent_eingeworfen signalisiert.
Quellcodeauszug
<Event id="Münze_5_Cent_eingeworfen">
<Sensor ref="Münze_5_Cent" type="true" />
</Event>
Codeauszug 20: Beispiel für Event in KBF
In Codeauszug 21 wird der Aktor actor_Liefere_Fruchtsaft
definiert. Er ruft die Methode DeliverBeverage des Moduls
VendingMachineHeron auf. Dem Parameter beverage wird den
Wert FruitJuice zugewiesen.
Quellcodeauszug
<Actor id="actor_Liefere_Fruchtsaft"
module="VendingMachineHeron" operation="DeliverBeverage">
<Parameter name="beverage" value="FruitJuice" />
</Actor>
Codeauszug 21: Beispiel für Actor in KBF
In Codeauszug 22 wird der Aktor actor_Liefere_Fruchtsaft in
der Aktion Liefere_Fruchtsaft verwendet.
Quellcodeauszug
<Action id="Liefere_Fruchtsaft">
<Actor ref="actor_Liefere_Fruchtsaft" />
</Action>
Codeauszug 22: Beispiel für Action in KBF
Codeauszug 23 zeigt die Definition der Transitionsbedingung C1,
die das Ereignis Münze_5_Cent_eingeworfen aus Codeauszug 20
verwendet.
44 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<Condition id="C1">
Münze_5_Cent_eingeworfen
</Condition>
Codeauszug 23: Beispiel für Condition in KBF
Codeauszug 24 zeigt den Zustand S0. Dieser Zustand besitzt bei
Start der Ausführung eine Marke (initial="1"). Bei der Aktivierung des Zustands wird die Aktion Zeige_Betrag ausgeführt. Von
diesem Zustand aus ist nur die Transition T0 erreichbar.
Quellcodeauszug
<State id="S0" initial="1">
<Actions>
Action ref="Zeige_Betrag" />
</Actions>
<Enables>
<Transition ref="T0" />
</Enables>
</State>
Codeauszug 24: Beispiel für State in KBF
Codeauszug 25 zeigt die Transition T0. Sie schaltet dann, wenn
die Bedingung C0 erfüllt (und die Transition schaltfähig) ist.
Nachdem die Transition geschaltet hat, liegt eine Marke auf dem
Folgezustand S1.
Quellcodeauszug
<Transition id="T0" condition="C0">
<Actions>
</Actions>
<NextStates>
<State ref="S1" />
</NextStates>
</Transition>
Codeauszug 25: Beispiel für Transition in KBF
45 von 57
4 Anbindung externer Sensoren und Aktoren
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Verzeichnisse und Anhänge
A
B
Referenzen
Referenz
auf
[1]
Hrúz, B; Zhou, M.C. (2007); Modeling and Control of Discrete-event
Dynamic Systems, Springer Verlag, London, ISBN: 978-1-84628-872-2.
[2]
GRAFCET, Spezifikationssprache für Funktionspläne der Ablaufsteuerung, Deutsche Fassung EN 60848:2002, Frankfurt a. M., 2002.
Auszug des Modells TrafficLightSimple
Quellcodeauszug
<?xml version="1.0" encoding="utf-8"?>
<KBF xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="KBF.xsd">
<!-- Dieses Modell beschreibt eine einfache Fahrzeugampel mit einem
Schalter für Fußgänger, wie sie z.B. vor Schulen zu finden ist. Die
Fußgängerampel ist im Modell nicht berücksichtigt. Die Ampelphasen Rot,
Gelb und Rot-Gelb haben jeweils eine definierte Dauer-. Für die Ampelphase
Grün ist eine Mindestdauer festgelegt. Wenn jedoch kein Fußgänger den
Schalter betätigt, kann diese Phase auch länger dauern.-->
<Inputs>
<!-- Die Eingänge bestehen aus Sensoren und Ereignissen. Sensoren erfassen
eingehende Signale. Jeder Sensoreintrag definiert einen Methodenaufruf, der
den betreffenden Messwert ermittelt. In der Konfigurationsdatei der
Steuerung 'Heron' werden die 'Module' ausführbaren Dateien zugeordnet.
Ereignisse bewerten die Messwerte der Sensoren. Durch Schwellwerte
(threshold) oder Vergleichswerte (match) werden die Messwerte eingeordnet.
Der Typ des Sensors legt fest, wann eine Änderung des Messwerts das
Ereignis signalisiert. Die Ereignisse werden in den Transitionsbedingungen
(s.u.) verwendet. -->
<Sensors>
<!-- Das interne Modul TIMER bietet Zeitgeber an, die über Aktoren
(s.u.) gestartet werden. Jeder Zeitgeber wird über einen eindeutigen
Namen identifiziert. 'IsExpired' ist die einzige Methode dieses Moduls,
die als Sensor verwendet werden kann. -->
<Sensor id ="Timer_Rot_abgelaufen" module="TIMER"
operation="IsExpired">
<Parameter name="name" value="Timer_Rot"/>
</Sensor>
...
46 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<!-- Das externe Modul UserIO erzeugt eine einfache Bedienoberfläche
mit Schaltern. Jeder Schalter wird über einen eindeutigen Namen
identifiziert. Die Schalter sind zustandsbehaftet, d.h. einmaliges
Betätigen überführt den Schalter in den Zustand 'gedrückt';
nochmaliges Betätigen gibt den Schalter frei. Zusätzlich kann der
Zustand auch über Aktoren (s.u.) beeinflusst werden. 'IsPressed' ist
die einzige Methode dieses Moduls, die als Sensor verwendet werden
kann. -->
<!-- Schalter der Fußgängerampel -->
<Sensor id="Schalter" module="UserIO" operation="IsPressed">
<Parameter name="name" value="Fussgaenger_Wunsch"/>
</Sensor>
</Sensors>
<!-- Hier werden den Sensoren Ereignisse zugeordnet. Die Ereignisse
wiederum werden in den Bedingungen für Transitionen verwendet. -->
<Events>
<Event id="Rot_vorbei">
<Sensor ref="Timer_Rot_abgelaufen" type="rising"/>
</Event>
...
</Events>
</Inputs>
<Outputs>
<!-- Ausgänge umfassen Aktoren und Aktionen. Aktoren sind das Gegenstück
zu den Sensoren der Eingänge. Jeder Aktoreintrag definiert einen
Methodenaufruf, der die betreffende Wirkung 'nach außen' veranlasst. In
der Konfigurationsdatei der Steuerung 'Heron' werden die 'Module' ausführbaren Dateien zugeordnet.
Aktionen referenzieren einen oder mehrere Aktoren. Sie legen fest, wann
die Aktoren aufgerufen werden. Außerdem besteht die Möglichkeit, das
Ergebnis eines Aktors zu speichern. Über 'result' wird ein eindeutiger
Name für das Ergebnis vergeben, das mit der Methode 'GetResult' des
internen Moduls MEMORY abgefragt werden kann.
Es ist zu beachten, dass Ergebnisse von Aktionen nur in den Bedingungen
der unmittelbar folgenden Transitionen verarbeitet werden können. -->
<Actors>
<!-- Das Modul 'Fahrzeugampel' wird hier nur exemplarisch genannt. Da
dieses Modul nicht vorhanden ist, zeigen die entsprechenden Aktoren
keine Wirkung. Normalerweise führt ein fehlendes Modul zu eine Fehlermeldung der Steuerung. Dieses Verhalten ist für das vorliegende Modell
durch den 'Hint' (s.u.) "ValidationMode" geändert worden. -->
<Actor id="Schalte_gruen_an" module="Fahrzeugampel"
operation="Schalte">
<Parameter name="Farbe" value="gruen"/>
<Parameter name="Wert" value="an"/>
</Actor>
47 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
...
<!-- Das interne Modul TIMER bietet die Methoden 'StartTimer' und
'StopTimer' an, um Zeitgeber zu starten und anzuhalten. 'StartTimer'
kann auch verwendet werden, um einen laufenden Zeitgeber neu zu
stellen. -->
<Actor id ="Uhr_aufziehen_Mindestdauer_Gruen" module="TIMER"
operation="StartTimer">
<Parameter name="name" value="Timer_Gruen"/>
<Parameter name="Type" value="Singular"/>
<Parameter name="Duration" value="10"/>
<Parameter name="Unit" value="sec"/>
</Actor>
...
<!-- Das externe Modul UserIO erzeugt eine einfache Bedienoberfläche
mit Schaltern (s.o. 'Sensors'). Die Methoden 'Press' und 'Release'
setzen den Zustand eines Schalters auf einen bestimmten Wert. Die
Methode 'Toggle' ändert den Zustand. -->
<!-- Schalter zurücksetzen -->
<Actor id="Fussgaenger_Anforderung_freigeben" module="UserIO"
operation="Release">
<Parameter name="name" value="Fussgaenger_Wunsch"/>
</Actor>
</Actors>
<!-- Hier werden die Aktionen definiert, die von Zuständen und
Transitionen ausgelöst werden. Die Aktionen verwenden die zuvor
festgelegten Aktoren. -->
<Actions>
<Action id="Fahrzeugampel_Gruenlicht"
description="Schalte Gruenlicht Fahrzeugampel">
<Actor ref="Schalte_gruen_an" trigger="Activate" />
<Actor ref="Schalte_gruen_aus" trigger="Deactivate" />
</Action>
...
</Actions>
</Outputs>
<!-- Basierend auf den zuvor definierten Ereignissen werden hier
Transitionsbedingungen festgelegt. Neben diesen Ereignissen können in
den Bedingungen Zustandsnamen und die Schlüsselwörter 'AND' und 'NOT'
verwendet werden. Zustände sind 'true', wenn sie aktiv sind. Die
Schlüsselwörter 'true' und 'false' können für invariante Terme
verwendet werden. Leere Bedingungen sind konventionell 'true'. -->
<Conditions>
48 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<Condition id="C01" description="Bedingung fuer Initialisierung">
true
</Condition>
...
</Conditions>
<!-- Hier werden die Zustände des Modells aufgeführt. -->
<States>
<State id="S0" description="Initialzustand" initial="1">
<Actions>
<Action ref="Fahrzeugampel_Rotlicht"/>
</Actions>
<Enables>
<Transition ref="T0" />
</Enables>
</State>
...
</States>
<!-- Hier werden die Transitionen des Modells aufgeführt. -->
<Transitions>
<Transition id="T0" description="Initialisiere Timer" condition="C01">
<Actions>
<Action ref ="Uhr_Rot" />
</Actions>
<NextStates>
<State ref="S1"/>
</NextStates>
</Transition>
...
</Transitions>
<!-- Die Hinweise beeinflussen das Verhalten der Steuerung.-->
<Hints>
<!-- Mit dieser Einstellung werden fehlende Aktoren und Sensoren
ignoriert. Entsprechende Aufrufe geben 'null' zurück. Das StandardVerhalten von 'Heron' sieht vor, das Laden des Modells mit einer
Ausnahme abzubrechen, wenn Aktoren oder Sensoren fehlen. -->
<Hint name="ValidationMode" value="tolerant"/>
</Hints>
</KBF>
49 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
C
Teilmodell der Steuerungsaufgabe „Getränkeautomat“
Quellcodeauszug
<?xml version="1.0" encoding="utf-8"?>
<KBF xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="KBF.xsd">
<Inputs>
<!-- ====================
SENSORS
=================== -->
<Sensors>
<Sensor id="50_Cent" module="VendingMachineBasic"
operation="Coin50CentInserted" />
<Sensor id="1_Euro" module="VendingMachineBasic"
operation="Coin1EuroInserted" />
<Sensor id="2_Euro" module="VendingMachineBasic"
operation="Coin2EuroInserted" />
<Sensor id="Kaufvorgang" module="VendingMachineBasic"
operation="ReturnMoneyRequired" />
<Sensor id="Fruchtsaft" module="VendingMachineBasic"
operation="Beverage1Selected" />
<Sensor id="IceTea" module="VendingMachineBasic"
operation="Beverage2Selected" />
<Sensor id="Zeitgeber_abgelaufen" module="TIMER"
operation="IsExpired">
<Parameter name="name" value="Zeitgeber" />
</Sensor>
</Sensors>
<!-- ====================
EVENTS
==================== -->
<Events>
<Event id="50_Cent_eingeworfen">
<Sensor ref="50_Cent" type="rising" />
</Event>
<Event id="1_Euro_eingeworfen">
<Sensor ref="1_Euro" type="rising" />
</Event>
<Event id="2_Euro_eingeworfen">
<Sensor ref="2_Euro" type="rising" />
</Event>
<Event id="Kaufvorgang_abgebrochen">
<Sensor ref="Kaufvorgang" type="rising" />
</Event>
<Event id="Fruchtsaft_gewählt">
<Sensor ref="Fruchtsaft" type="rising" />
</Event>
<Event id="IceTea_gewählt">
<Sensor ref="IceTea" type="rising" />
</Event>
<Event id="100ms_abgelaufen">
<Sensor ref="Zeitgeber_abgelaufen" type="rising" />
50 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
</Event>
</Events>
</Inputs>
<Outputs>
<!-- ====================
ACTORS
==================== -->
<Actors>
<Actor id="actor_Zeige_Münze_einwerfen" module="VendingMachineBasic"
operation="ShowMessage">
<Parameter name="text" value="Bitte Münze einwerfen" />
</Actor>
<Actor id="actor_Zeige_Münze_eingeworfen"
module="VendingMachineBasic" operation="ShowMessage">
<Parameter name="text" value="Münze eingeworfen" />
</Actor>
<Actor id="actor_Gebe_Geld_zurück" module="VendingMachineBasic"
operation="ReturnMoney" />
<Actor id="actor_Liefere_Fruchtsaft" module="VendingMachineBasic"
operation="DeliverBeverage1" />
<Actor id="actor_Liefere_IceTea" module="VendingMachineBasic"
operation="DeliverBeverage2" />
<Actor id="actor_Starte_Zeitgeber" module="TIMER"
operation="StartTimer">
<Parameter name="name" value="Zeitgeber" />
<Parameter name="Type" value="Singular"/>
<Parameter name="Duration" value="100"/>
<Parameter name="Unit" value="ms"/>
</Actor>
</Actors>
<!-- ====================
ACTIONS
=================== -->
<Actions>
<Action id="Zeige_Münze_einwerfen">
<Actor ref="actor_Zeige_Münze_einwerfen" />
</Action>
<Action id="Zeige_Münze_eingeworfen">
<Actor ref="actor_Zeige_Münze_eingeworfen" />
</Action>
<Action id="Gebe_Geld_zurück">
<Actor ref="actor_Gebe_Geld_zurück" />
</Action>
<Action id="Liefere_Fruchtsaft">
<Actor ref="actor_Liefere_Fruchtsaft" />
</Action>
<Action id="Liefere_IceTea">
<Actor ref="actor_Liefere_IceTea" />
</Action>
<Action id="Starte_Zeitgeber">
<Actor ref="actor_Starte_Zeitgeber" />
</Action>
51 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
</Actions>
</Outputs>
<!-- ======================
CONDITIONS
================ -->
<Conditions>
<Condition id="C0">
100ms_abgelaufen
</Condition>
<Condition id="C1">
50_Cent_eingeworfen
</Condition>
<Condition id="C2">
1_Euro_eingeworfen
</Condition>
<Condition id="C3">
2_Euro_eingeworfen
</Condition>
<Condition id="C4">
100ms_abgelaufen
</Condition>
<Condition id="C5">
Kaufvorgang_abgebrochen
</Condition>
<Condition id="C6">
true
</Condition>
<Condition id="C7">
Fruchtsaft_gewählt
</Condition>
<Condition id="C8">
IceTea_gewählt
</Condition>
<Condition id="C9">
true
</Condition>
<Condition id="C10">
true
</Condition>
</Conditions>
<!-- =====================
STATES
==================== -->
<States>
<!-- ========================================= -->
<State id="S0" initial="1">
<Actions>
<Action ref="Starte_Zeitgeber" />
<Action ref="Zeige_Münze_einwerfen" />
</Actions>
<Enables>
<Transition ref="T0" />
52 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
</Enables>
</State>
<!-- ========================================= -->
<State id="S1">
<Actions>
</Actions>
<Enables>
<Transition ref="T1" />
<Transition ref="T2" />
<Transition ref="T3" />
<Transition ref="T5" />
<Transition ref="T7" />
<Transition ref="T8" />
</Enables>
</State>
<!-- ========================================= -->
<State id="S2">
<Actions>
<Action ref="Gebe_Geld_zurück" />
</Actions>
<Enables>
<Transition ref="T6" />
</Enables>
</State>
<!-- ========================================= -->
<State id="S3">
<Actions>
<Action ref="Starte_Zeitgeber" />
<Action ref="Zeige_Münze_eingeworfen" />
</Actions>
<Enables>
<Transition ref="T4" />
</Enables>
</State>
<!-- ========================================= -->
<State id="S4">
<Actions>
<Action ref="Liefere_Fruchtsaft" />
</Actions>
<Enables>
<Transition ref="T9" />
</Enables>
</State>
<!-- ========================================= -->
<State id="S5">
<Actions>
<Action ref="Liefere_IceTea" />
</Actions>
53 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<Enables>
<Transition ref="T10" />
</Enables>
</State>
</States>
<!-- ======================
TRANSITIONS
=============== -->
<Transitions>
<!-- ========================================= -->
<Transition id="T0" condition="C0">
<Actions>
</Actions>
<NextStates>
<State ref="S1" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T1" condition="C1">
<Actions>
</Actions>
<NextStates>
<State ref="S3" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T2" condition="C2">
<Actions>
</Actions>
<NextStates>
<State ref="S3" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T3" condition="C3">
<Actions>
</Actions>
<NextStates>
<State ref="S3" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T4" condition="C4">
<Actions>
</Actions>
<NextStates>
<State ref="S1" />
</NextStates>
</Transition>
<!-- ========================================= -->
54 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<Transition id="T5" condition="C5">
<Actions>
</Actions>
<NextStates>
<State ref="S2" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T6" condition="C6">
<Actions>
</Actions>
<NextStates>
<State ref="S0" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T7" condition="C7">
<Actions>
</Actions>
<NextStates>
<State ref="S4" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T8" condition="C8">
<Actions>
</Actions>
<NextStates>
<State ref="S5" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T9" condition="C9">
<Actions>
</Actions>
<NextStates>
<State ref="S0" />
</NextStates>
</Transition>
<!-- ========================================= -->
<Transition id="T10" condition="C10">
<Actions>
</Actions>
<NextStates>
<State ref="S0" />
</NextStates>
</Transition>
</Transitions>
55 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
Quellcodeauszug
<!-- ====================================================== -->
<Sources></Sources>
<!-- ====================================================== -->
<Hints>
<Hint name="ValidationMode" value="tolerant" />
<Hint name="PollingInterval" value="100" />
</Hints>
</KBF>
56 von 57
Verzeichnisse und Anhänge
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Excellence in Automotive Computing.
Informationstechnik München
57 von 57
Thema: 10081
Kurztitel: Heron Didact
Version: 4.1, 15. Oktober 2013
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising