Upload
helmfried-schleiger
View
109
Download
0
Embed Size (px)
Citation preview
Universeller Sequenzer für das Universeller Sequenzer für das CS CS FrameworkFramework
Inhalt1. Zielsetzung
2. Anforderungen
3. Die Sequenzer-Klassenbibliothek
ZielsetzungZielsetzung
• Erweiterung des bestehenden CS Frameworks um eine generische Sequenzer-Klassenbibliothek
• Anwendungsgebiete: - Inbetriebnahme und Konfiguration von Experimentaufbauten
- Test- und Diagnose-Software
• Kapselung der allgemeinen Ablaufsteuerung durch die Klassenbibliothek
• Entwurfsmuster für den Entwickler zur Anpassung an spezielle Anwendungen
reduzierter Programmieraufwand durch bereits vorhandene Basisklassen („konfigurieren statt programmieren“)
• Konfigurierbarkeit zur Laufzeit der Anwendung
Anforderungen Anforderungen
• Zusammenfassen einzelner Ereignisgesteuerter Funktionsaufrufe zu elementaren Sequenzen
• konfigurierbare Kontrollstrukturen zur Ablaufsteuerung innerhalb einer Sequenz (Wiederholung, Verzweigung)
• Kompatibilität mit beliebigen CS-Klassen
• modulare Sequenzen (Wiederverwendbarkeit)
• Parallelisierung bzw. Nebenläufigkeit von Sequenzen
• Reservierungsmechanismus zur Synchronisation nebenläufiger Sequenzen
Integration in das Integration in das CS CS FrameworkFramework
Funktionen der Funktionen der CSCS-Sequenzerklassen-Sequenzerklassen
CSSeqExec CSList
CSDuT
CSProxy
CS-Prozessklassen
CSSeqControl
CSProxy
steuern editieren
liest Steuer- undAusführungsanweisungen
initiiert elementare
Sequenzen liefertErgebnisse
• Statusabfrage und Steuerung des Sequenzers • Konfiguration und Ergebnisse der Listenelemente
• stellen Funktionen über Ereignisse zur Verfügung, z.B. Zugriff auf externe Geräte
• speichert Verarbeitungslogik zusammen hängender elementarer Sequenzenin einer doppelt verketteten Liste
• definiert elementare Sequenzen Reihenfolge der Ereignisse und Analysemethoden zur Ergebnisfindung
• reserviert CS-Prozesse und verwaltet die Reservierungen• führt mehrere elementare Sequenzen nebenläufig aus und synchronisiert diese
• führt die Listeninhalte aus• verfügt über 2 Betriebsmodi (auto/single)• ermöglicht Schachtelung
ruft Funktionenper Ereignis auf
liefertRückgabe
erfragt Namender elementarenSequenzen
• realisiert die Reservierung beliebiger CS-Prozesse
• realisiert die Reservierung beliebiger CS-Prozesse
reserviert
reserviert
leitet Ergebnisse weiter
leitet Ergebnisse weiter
vom Entwickler zu implementieren bzw. anzupassendurch den Benutzer zu konfigurieren kann bei Bedarf ausgetauscht werden
Beziehungen zwischen den CS-Basisklassen Beziehungen zwischen den CS-Basisklassen und den Sequenzerklassenund den Sequenzerklassen
CS-Basisklassen
CS-Sequenzerklassen
Elementare Sequenzen - CSDuTElementare Sequenzen - CSDuT
• Sequentielle Verarbeitung von Ereignissen• Muss durch Entwickler im Quellcode hinterlegt werden.• Für den Benutzer eine untrennbare bzw. „atomare“ Aktion• Mehrere elementare Sequenzen können asynchron ausgeführt
werden.• Wechselseitige Zugriffe auf gleiche Prozesse werden durch
Reservierungen synchronisiert.
Reservierung derbeteiligten Prozesse
Start eines neuenthreads
Warten aufReservierungen
Verarbeitung der EreignisseReservierungen
erfolgreich
Reservierungenfehlgeschlagen
Ergebnisseerstellen
Aufheben der Reservierungenund Rückgabe des Ergebnissesan aufrufenden Sequenzer
TIMEOUT
Reservierungenerhalten
Realisierung im Realisierung im CS CS FrameworkFramework
Listengesteuerter Sequenzer - CSSeqExecListengesteuerter Sequenzer - CSSeqExec
Sequenzer1<<CSSeqExec>>
Testobjekt1<<MyDuT1>>
Testobjekt2<<MyDuT2>>
Stellvertreter1<<CSProxy>>
Stellvertreter2<<CSProxy>>
Prozess1<<CSProcess1>>
Prozess2<<CSProcess2>>
Liste1<<CSList>>
Stellvertreter3<<CSProxy>>
Prozess3<<CSProcess2>>
Schleifen-deklaration
Step#1• Testobjekt1• Sequenz1• Bedingung
Step#2_0• Testobjekt2• Sequenz1
Step#2_1• Testobjekt2• Sequenz2
FOR/WHILE
• Liste repräsentiert Schleifenanweisung
• Listenelemente können durch Verzweigungen miteinander verknüpft werden
TRUE FALSE
Realisierung im Realisierung im CS CS FrameworkFramework
• Zustandsmaschine:Zustandsmaschine:- VerarbeitungVerarbeitung
der Listeder Liste• Ereignisschleife:Ereignisschleife:
- Interaktion mitInteraktion mitBenutzer undBenutzer undanderen Prozesseanderen Prozesse
Zustandsdiagramm der Klasse CSSeqExec
Hierarchische SequenzerHierarchische Sequenzer
Sequenzer1<<CSSeqExec>>
Liste1<<CSList>>
Sequenzer2<<CSSeqExec>>
Liste2<<CSList>>
Testobjekt1<<MyDuT1>>
Testobjekt2<<MyDuT2>>
Testobjekt3<<MyDuT1>>
Testobjekt4<<MyDuT2>>
Sequenzer3<<CSSeqExec>>
Liste3<<CSList>>
• Hierarchische Gliederung ermöglicht geschachtelte Schleifen und Wiederverwendbarkeit vorhandener Listen
Nebenläufige SequenzerNebenläufige Sequenzer
Sequenzer1<<CSSeqExec>>
Liste1<<CSList>>
Sequenzer2<<CSSeqExec>>
Liste2<<CSList>>
Testobjekt1<<MyDuT1>>
Testobjekt2<<MyDuT2>>
Stellvertreter4<<CSProxy>>
Stellvertreter1<<CSProxy>>
Stellvertreter2<<CSProxy>>
Prozess1<<CSProcess1>>
Prozess2<<CSProcess2>>
Stellvertreter3<<CSProxy>>
Prozess3<<CSProcess2>>
• Asynchron arbeitende Sequenzer greifen auf dieselben Testobjekte zu
jede elementare Sequenz wird in einem separatem „thread“ abgearbeitet
• Reservierung der Prozesse synchronisiert „threads“
• Reservierung der Testobjekte innerhalb einer Liste ermöglicht Priorisierung der Sequenzer
Das Sequenzer GUI - CSSeqControl Das Sequenzer GUI - CSSeqControl
Listeninhalt
Status desSequenzers
Ergebnisseder Listen-elemente
Konfigurationder Listen-elemente
Sequenzer-steuerung