![]() | ist Gründer und Geschäftsführer der preeTEC GmbH sowie Professor für Informatik an der Universität Salzburg und Direktor des C.-Doppler-Labors Embedded Software Systems. Er war unter anderem als Gastprofessor an der University of California in Berkeley und der Washington University tätig. Sein Fokus ist gerichtet auf die Automatisierung der Entwicklung von Echtzeit-Systemen und die Verbesserung von deren Qualität. |
Verwandte Artikel:
Wachstum auf dem FlexRay-Chipmarkt
Bereit für FlexRay
FlexRay in Betrieb nehmen
Für die „Timing Definition Language“ wurde eine textuelle Notation [4] festgelegt, mit der TDL-Komponenten, deren Modi und Tasks sowie das zugehörige Zeitverhalten mittels LET beschrieben werden können. Alternativ können TDL-Module visuell/interaktiv mit dem TDL:VisualCreator-Werkzeug beschrieben werden. Der TDL:VisualCreator ist ein syntaxgetriebener TDL-Editor, der die gleichen Sprachkonstrukte wie die textuelle Notation bietet. Der TDL:
VisualCreator kann als Standalone-Werkzeug oder integriert in Matlab/Simulink verwendet werden. Nachfolgend wird dieses Werkzeug in Matlab/Simulink anhand einer vereinfachten Fallstudie zur aktiven Hinterachslenkung von Magna Steyr Fahrzeugtechnik skizziert [2]. Diese Fallstudie steht als „Product Demo“ auch im Web zum Ansehen zur Verfügung [7].
Um eine TDL-Komponente zu editieren, wird der entsprechende Block aus dem „Simulink Library Browser“, wie Bild 6 darstellt, in das entsprechende Simulink-Modell gezogen.
Durch einen Doppel-Klick wird das TDL:VisualCreator-Werkzeug geöffnet, in dem die diversen Elemente einer TDL-Komponente spezifiziert werden (Bild 7). Die Baumstruktur links listet die TDL-Konstrukte auf: die importierten Komponenten im Ordner Imports, die Konstanten, Typen, Sensoren, Aktoren, die Task-Deklarationen im Ordner Tasks sowie die Modi einer TDL-Komponente. Bild 7 zeigt, dass wir drei Sensoren (delta_r_act, angular_rate, current) und im Ordner Actuators einen Aktor (voltage) der TDL-Komponente RearActuatorController definiert haben. Durch Auswahl eines Elementes können dessen Eigenschaften festgelegt werden. In Bild 7 werden die Eigenschaften des Sensors current unterhalb des Baumes gezeigt.
Die TDL-Komponente RearActuatorController hat in dieser vereinfachten Fallstudie nur eine einzige Task (DCMotorController). Der Modus main ist der einzige Modus in der TDL-Komponente RearActuatorController.
Als nächstes wird gezeigt, wie die Funktionen der Task DCMotorController und deren Zeitverhalten – deren LET – definiert werden. Durch einen Doppel-Klick auf die Task wird ein Simulink-Editor geöffnet. Alle verfügbaren diskreten Simulink-Blöcke können verwendet werden, um den Regler-Algorithmus zu realisieren. Bild 8 zeigt das exemplarisch für die Task DCMotorController.
Im nächsten Schritt wird die Zeitperiode festgelegt, innerhalb welcher der Modus main seine Aktivitäten wiederholt. Des weiteren definieren wir, von wo die Task ihre Eingaben erhält und an wen sie die Ausgaben weitergibt. Dazu wählen wir den Modus main im Baum aus (Bild 9) und setzen dessen Periode auf eine Millisekunde. Im Datenflusseditor rechts in Bild 9 legen wir die Eingaben und Ausgaben der Tasks fest, in diesem Beispiel den Aktor voltage als Ausgang.
Bild 3 illustriert eine TDL-Komponente, die aus Sensoren, Aktoren und Modi besteht. Eine TDL-Komponente entspricht typischerweise einer Funktionseinheit im Automobil, wie zum Beispiel einer aktiven Hinterachslenkung. Eine TDL-Komponente befindet sich zu einem bestimmten Zeitpunkt immer genau in einem Modus. Ein Modus ist eine Menge parallel ausgeführter Aktivitäten: Task-Aufrufe, Aktor-Aktualisierungen oder die Prüfung, ob ein Wechsel in einen anderen Modus stattfinden soll. Alle diese Aktivitäten können verschiedene Ausführungszeiten haben und – wenn nötig – bedingt ausgeführt werden. Die Zeitangabe in der TDL-Beispielkomponente in Bild 2 ist die jeweilige LET für eine Task. Die Tasks entsprechen den Regler-Algorithmen – wir sprechen im Gegensatz zum Zeitverhalten hier von den Funktionen. Die Funktionen können in einer beliebigen Sprache implementiert werden, etwa in C (generiert aus einem Matlab/Simulink-Modell).
Das Lesen von Sensoren, das Setzen von Aktoren und das Prüfen, ob ein Wechsel zwischen zwei Modi stattfinden soll, wird in TDL synchron durchgeführt, wogegen die Kommunikation zwischen Tasks und zwischen Modulen auf der LET-Semantik basieren. Bestimmte Teile einer TDL-Komponente, insbesondere Sensoren und Task-Output-Ports, können als public deklariert werden, andere Komponenten können dann darauf zugreifen.