Transcript Titel

von David Brucholder
Giotto und TDL
im Seminar
Softwareengineering für softwareintensive
Systeme
von David Brucholder
Seminar Softwareengineering für softwareintensive Systeme
Motivation
20.07.2015
2/25
Seminar Softwareengineering für softwareintensive Systeme
Was ist Echtzeit?
 Berechnung eines Ergebnisses innerhalb eines fest
definierten Zeitintervalls
 korrektes Ergebnis innerhalb Deadlines
 Unterscheidung nach Echtzeitanforderungen
 Je nach möglichen Folgen Unterscheidung zwischen „weichen“
und „harten“ Echtzeitsystemen
20.07.2015
3/25
Seminar Softwareengineering für softwareintensive Systeme
Software + Echtzeit = Problem?
 SW hat generell kein deterministisches (Zeit-)
Verhalten
 in Abhängigkeit von {Prozessor, Speicher, anderer Software,
Threads, … }
 timing muss manuell abgestimmt werden
 fehleranfällig
 Parallelismus und Mehrprozessorkoordination
 Plattformabhängigkeit
20.07.2015
4/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
5/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Giotto
TDL
Fazit
Giotto ist
 eine domänenspezifische high-level Programmiersprache,
um Applikationen zu kontrollieren
 Plattformunabhängig
Ein Giotto-Programm
 spezifiziert die exakte Realzeitinteraktion zwischen der
Software und der realen Welt
20.07.2015
6/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Programmgenerierung
Fazit
Kontrollproblem
Modellierungswerkzeuge
Implementierungswerkzeuge
Kontrollproblem
Modellierungswerkzeuge
Modell (Simulink)
Programmgenerierung
Modell (Simulink)
S/G Translator
RTW Embedded Encoder
Implementierungwerkzeuge
Eingebettetes Software-Modell
Optimierung/Debugging
Programm
(Giotto)
Compilierung/Verlinkung C Compiler
20.07.2015
RTW Embedded Encoder
Programmgenerierung
Kombiniertes Programm
(Timing und Funktionalität)
Timing
Eingebettetes
System
S/G Simulator
Applikation
Simulation/Validation
Applikation
TDL
Funktonalitäts
Programm
(C)
Giotto-Compiler
Compilierung/
Verlinkung
C-Compiler
Eingebettetes System
Echtzeit-Code
Echtzeit-Code
7/25
Seminar Softwareengineering für softwareintensive Systeme
Was enthält Giotto?
Giotto
TDL
Fazit
Giotto-Code enthält Beschreibung der




Sensoren
Aktuatoren
Modi
Tasks ( Zeitanforderungen)
20.07.2015
8/25
Seminar Softwareengineering für softwareintensive Systeme
Modus I
Giotto
TDL
Fazit
Ein Modus definiert
 Task-Aufrufe
 Aktualisierungen von Aktuatoren
 Wechsel zwischen Modi
 Zu jedem Zeitpunkt kann genau ein Modus aktiv sein
 Wechselbedingungen werden periodisch geprüft
 Prüffrequenz kann geändert werden
20.07.2015
9/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Task I
TDL
Fazit
Task
release event
logische
Ausführungszeit
{
tatsächliche
Ausführungszeit
{
release
20.07.2015
termination event
running
start
suspend
running
resume complete
time
terminate
10/25
Seminar Softwareengineering für softwareintensive Systeme
Task II
Giotto
TDL
Fazit
Grundsätzliche Funktionsweise
 Ein Task ist ein Software-Prozess, der periodisch
immer dasselbe sequentielle Programm, das die TaskFunktion berechnet, ausführt
 Für die Berechnungsdauer der Taskfunktion wird eine
sog. logical execution time statt der tatsächlichen
Ausführungszeit angenommen
20.07.2015
11/25
Seminar Softwareengineering für softwareintensive Systeme
Task III
Giotto
TDL
Fazit
Ein Task
 stellt die Funktionalität bereit
 wird periodisch je nach Betriebszustand aufgerufen
 gibt Ergebnis der berechnenden Funktionen an
Aktuatoren oder andere Tasks über Output-Ports
weiter
 erhält Eingaben von Sensor oder Output-Ports anderer
Tasks
Die Funktionalität eines Tasks kann mit jeder beliebigen
Programmiersprache implementiert werden
20.07.2015
12/25
Seminar Softwareengineering für softwareintensive Systeme
Task IV
Giotto
TDL
Fazit
 Giotto bietet über die Architektur eine Garantie für die
Einhaltung von Deadlines  „Time-Safe“-nes
 Diese Eigenschaft wird über die Berechnung der
WorstCaseExecutionTime (wcet) geprüft
 Wenn die wcet die Bedingungen nicht erfüllt, wird das
Programm nicht übersetzt
20.07.2015
13/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Kommunikation
TDL
Fazit
Komplettierungsports
Freigabeports
Treiberports
Treiberports
E-Code
Instruktionen
Task
ports
Tasks
Funkionalitätscode
Hardwareports
Scheduling
Maschine
Treiberports
interpretiert
Eingebettete
Maschine
interpretiert
Umgebung
Taskports
führt aus
Umgebungsports
Hardware
Treiberports
S-Code
Instruktionen
compiliert
Giotto
20.07.2015
14/25
Seminar Softwareengineering für softwareintensive Systeme
Resümee Giotto
Giotto
TDL
Fazit
Giotto trennt plattformunabhängige Funktionsweise
von plattformabhängigen Schedule- und
Kommunikationsfragen auf einem hohen
Abstraktionsgrad
G
20.07.2015
15/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
16/25
Seminar Softwareengineering für softwareintensive Systeme
Was ist TDL?
Giotto
TDL
Fazit
TDL bedeutet
 Timing Description Language
TDL basiert
 konzeptuell auf GIOTTO
TDL bietet
 erweiterte Features und eine einfachere Syntax als
GIOTTO
 Modellierung über UML-Diagramme mit dem
TDL:VisualCreator (integriert in MatLab)
20.07.2015
17/25
Seminar Softwareengineering für softwareintensive Systeme
Ein Beispiel
20.07.2015
Giotto
TDL
Fazit
18/25
Seminar Softwareengineering für softwareintensive Systeme
Ein Beispiel
20.07.2015
Giotto
TDL
Fazit
19/25
Seminar Softwareengineering für softwareintensive Systeme
Beispiel I
20.07.2015
Giotto
TDL
Fazit
20/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Beispiel II
TDL
Fazit
Mode 1: Init
isStartMotor
Mode 2: Idle
ADFilter
200 Hz
NavInit
40 Hz
isInitDone
ADFilter
200 Hz
NavPilot
40 Hz
isStopMotor
Mode 3: Motor
ADFilter
NavRotorUp 40 Hz
isRotorUp &
TakeOff
isStopMotor
Mode 6: ControlOn
ADFilter
200 Hz
NavControl 40 Hz
20.07.2015
isControlOn
isControlOff
Mode 4: TakeOff
Mode 5: ControlOff
ADFilter
200 Hz
NavPilot
40 Hz
200 Hz
isEndTakeOff
ADFilter
200 Hz
NavTakeOff 40 Hz
21/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
TDL
Fazit
20.07.2015
22/25
Seminar Softwareengineering für softwareintensive Systeme
Fazit I
Giotto
TDL
Fazit
Vorteile von Giotto/TDL:
 Deterministisches Verhalten durch „time-safe“
 parallele Ausführung mehrerer Programme sofern „timesafe“-nes in der Komposition besteht
 Modularität und Wiederverwendbarkeit von Programmen
 Unabhängigkeit bzgl. der Programmiersprache
 geringer Jitter
Nachteile von Giotto/TDL:
 Overhead durch Tasks
20.07.2015
23/25
Seminar Softwareengineering für softwareintensive Systeme
Fazit II
Giotto
TDL
Fazit
 Aufgrund des hohen Abstraktionsgrads ist ein
Realzeitverhalten mit relativ geringem Aufwand und
niedriger Fehlerrate zu erreichen
 TDL ermöglicht darüberhinaus graphische
Modellierung und optische Prüfbarkeit bei der
Implementierung
20.07.2015
24/25
Seminar Softwareengineering für softwareintensive Systeme
Giotto
Vielen Dank für
Eure
TDL
Aufmerksamkeit!
Fazit
20.07.2015
25/25