26.04.2015 Aufrufe

Entwicklung und Implementierung von Heuristiken zur optimierten ...

Entwicklung und Implementierung von Heuristiken zur optimierten ...

Entwicklung und Implementierung von Heuristiken zur optimierten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Fakultät 2<br />

Department für Informatik<br />

<strong>Entwicklung</strong> <strong>und</strong> <strong>Implementierung</strong> <strong>von</strong><br />

<strong>Heuristiken</strong> <strong>zur</strong> <strong>optimierten</strong> Fehlersuche für<br />

PLC-Automaten<br />

Individuelles Projekt<br />

24. Mai 2005<br />

Bearbeitet <strong>von</strong>:<br />

Nico Mischok - Matrikelnummer: -<br />

E-Mail: nico.mischok@informatik.uni-oldenburg.de<br />

Erstgutachter: Prof. Dr. Ernst-Rüdiger Olderog<br />

Zweitgutachter: Dr. Henning Dierks


Zusammenfassung<br />

Diese Arbeit widmet sich der <strong>optimierten</strong> Fehlersuche in PLC-Automaten.<br />

PLC-Automaten stellen eine spezielle Klasse <strong>von</strong> Realzeitautomaten dar. Es<br />

bietet sich somit die Möglichkeit, aufgr<strong>und</strong> der kontextuellen Information in<br />

der Realzeitsemantik der PLC-Automaten die Suche nach Fehlern zu steuern.<br />

Es werden <strong>Heuristiken</strong> vorgestellt, die die Suche nach Fehlern signifikant verbessern,<br />

die etwa ein Ergebnis schneller liefern, als dies die einfache Tiefenoder<br />

Breitensuche kann.<br />

Inhaltsverzeichnis<br />

1 Einleitung 3<br />

2 PLC-Automaten 5<br />

2.1 Programmable Logic Controller . . . . . . . . . . . . . . . . . . . . . 5<br />

2.2 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2.3 Realzeitsemantik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.4 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.4.1 Zugsensorsteuerung 1 . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.4.2 Zugsensorsteuerung 2 . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.4.3 Realzeitsemantik der Zugsensorsteuerung 1 . . . . . . . . . . . 13<br />

3 UPPAAL CORA 15<br />

3.1 Linearly Priced Timed Automata . . . . . . . . . . . . . . . . . . . . 15<br />

3.1.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

3.1.2 Semantik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

3.1.3 Kosten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.1.4 Kostenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.1.5 Symbolische Semantik . . . . . . . . . . . . . . . . . . . . . . 19<br />

3.2 Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

1


4 Fallstudie: Fehlertolerante Fertigungszelle 24<br />

4.1 Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

4.1.1 Eingabeförderband . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

4.1.2 Rotierender Tisch . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

4.1.3 Roboter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

4.1.4 Pressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

4.1.5 Ausgabeförderband . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4.2 Sensoren <strong>und</strong> Aktoren . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4.2.1 Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4.2.2 Aktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.3 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

4.3.1 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.3.2 Lebendigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.4 Simulation des Werkstücks . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

5 <strong>Heuristiken</strong> 33<br />

5.1 Kosten für einen Zyklus . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

5.2 Kosten für die Änderung einer Eingabevariable . . . . . . . . . . . . . 34<br />

5.3 Abstand zum Fehlerzustand . . . . . . . . . . . . . . . . . . . . . . . 35<br />

5.4 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

5.5 <strong>Implementierung</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

6 Schlussbetrachtung 41<br />

6.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

2


1 Einleitung<br />

Dieser Text entstand im Rahmen des Individuellen Projekts, das in der Abteilung<br />

Semantik der Carl-<strong>von</strong>-Ossietzky-Universität durchgeführt wurde. Als Erstgutachter<br />

fungiert Prof. Dr. Ernst-Rüdiger Olderog <strong>und</strong> als betreuender Gutachter Dr.<br />

Henning Dierks.<br />

Die Verifikation mit dem Model-Checker UPPAAL ergibt, sofern über ausreichend<br />

Speicher <strong>und</strong> Zeit verfügt werden kann, immer ein Ergebnis. Voraussetzung<br />

für ein positives Ergebnis ist, dass der gesamte Zustandsraum erfolglos nach einem<br />

Gegenbeispiel für die gewünschte Eigenschaft durchsucht wurde. Wird ein Gegenbeispiel<br />

gef<strong>und</strong>en, so gilt dies als negatives Ergebnis, die angefragte Eigenschaft<br />

wurde nicht bestätigt. Um die Durchführung der Suche nach einem Gegenbeispiel<br />

bei der Verifikation einer Eigenschaft eines Realzeitautomaten zu verbessern, kann<br />

UPPAAL CORA, die kostenoptimierende Version <strong>von</strong> UPPAAL eingesetzt werden,<br />

um mithilfe <strong>von</strong> <strong>Heuristiken</strong> einen Ablauf, der ein Gegenbeispiel darstellt, schneller<br />

zu finden.<br />

Üblicherweise ist bei der Verifikation eine positive Antwort das Ziel, für die der<br />

gesamte Zustandsraum durchsucht werden muss. Aus diesem Gr<strong>und</strong> unterstützen<br />

Modelchecker typischerweise keine Methoden, mit denen Gegenbeispiele schnell gef<strong>und</strong>en<br />

werden können. Es ist allerdings in manchen Fällen wünschenswert, den<br />

Model-Checker beispielsweise mithilfe <strong>von</strong> Kosten an Transitionen oder einer Prioritätsliste<br />

der Zustände auf der Suche nach einem Gegenbeispiel lenken zu können:<br />

• Es kann gewünscht sein, dass ein optimaler Ablauf oder Plan gesucht wird,<br />

bsplw. zu Debugging-Zwecken in der Programm-Verifikation.<br />

• Erhält man bei der Verifikation einer Abstraktion eines Modells ein Gegenbeispiel,<br />

so ist nicht klar, ob dieser Ablauf auch im eigentlichen Modell möglich<br />

ist. Dieses abstrakte Gegenbeispiel muss noch einmal im gesamten Modell auf<br />

seinen Erfolg getestet werden.<br />

• Bei der so genannten abstraction refinement loop wird die Verifikation zunächst<br />

mit einer sehr groben Abstraktion des eigentlichen Modells begonnen. Typischerweise<br />

erhält man ein abstraktes Gegenbeispiel, aus welchem geschlossen<br />

3


werden kann, an welcher Stelle die Abstraktion zu grob war. Der Prozess wird<br />

dann so lange mit jeweils feinerer Abstraktion neu gestartet, bis kein abstraktes<br />

Gegenbeispiel mehr gef<strong>und</strong>en wird.<br />

Darüber hinaus kann ein schnelles Finden <strong>von</strong> Fehlerabläufen in großen Systemen<br />

natürlich zu wichtiger Zeit- <strong>und</strong> damit oft verb<strong>und</strong>ener Kostenersparnis führen.<br />

Um aber die Suche nach Fehlern sinnvoll steuern zu können, bedarf es zusätzlicher<br />

kontextueller Information über das zu verifizierende System. Diese wird sich<br />

daraus ergeben, dass wir mit den PLC-Automaten eine spezielle Klasse <strong>von</strong> Realzeitautomaten<br />

betrachten. Die Realzeitsemantik der PLC-Automaten dient dann<br />

UPPAAL CORA als Eingabe <strong>zur</strong> Verifikation.<br />

Um die Gr<strong>und</strong>lagen zu legen, werden wir uns in den ersten beiden Kapiteln den<br />

PLC-Automaten sowie UPPAAL CORA widmen. In Kapitel 4 wird die Fallstudie<br />

vorgestellt, die Gr<strong>und</strong>lage der Versuche <strong>zur</strong> Evaluation der <strong>Heuristiken</strong> war. In Kapitel<br />

5 werden die <strong>Heuristiken</strong> vorgestellt, die es möglich machen, die Fehlersuche für<br />

PLC-Automaten zu optimieren. Die heuristisch gesteuerte Fehlersuche wird dann<br />

zu evaluieren sein <strong>und</strong> sich mit einfacher“ Tiefen- oder randomisierter Fehlersuche<br />

”<br />

messen müssen.<br />

Wenn diese Evaluation zum Erfolg führt, wird innerhalb dieses Textes kurz<br />

auf die <strong>Implementierung</strong> der <strong>Heuristiken</strong> eingegangen, die einen weiteren wichtigen<br />

Aspekt dieses Individuellen Projekts ausmacht. Die <strong>Heuristiken</strong> werden in den<br />

UPPAAL-Service des Tools Moby/PLC implementiert. Moby/PLC ist ein Tool, mit<br />

dem PLC-Automaten erstellt <strong>und</strong> bearbeitet werden können, der UPPAAL-Service<br />

berechnet die Realzeitsemantik der gewünschten PLC-Automaten, sodass diese als<br />

Eingabe <strong>zur</strong> Verifikation mit UPPAAL dienen können.<br />

Abschließend werden in einer Schlussbetrachtung die wichtigsten Aspekte noch<br />

einmal hervorgehoben. Außerdem wird ein Blick in die Zukunft gewagt, an welchen<br />

Stellen eine Erweiterung des hier Aufgezeigten möglich sein könnte bzw. welche<br />

andere Herangehensweise an das Thema interessant ist.<br />

4


2 PLC-Automaten<br />

Es soll nun mit den PLC-Automaten eine Abstraktion <strong>von</strong> Realzeit-Programmen<br />

vorgestellt werden. Ein großer Vorteil <strong>von</strong> PLC-Automaten ist, dass sie sich in konkreten<br />

Source-Code für eine in der Industrie häufig verwendete Klasse <strong>von</strong> Hardware<br />

(PLC für Programmable Logic Controller, deutsch: Speicherprogrammierbare Steuerungen)<br />

übersetzen lassen. Speicherprogrammierbare Steuerungen (im Folgenden<br />

nur noch PLC genannt) werden häufig dazu genutzt Realzeitsysteme zu steuern, da<br />

sie robust gebaut sind <strong>und</strong> in widrigen Verhältnissen eingesetzt werden können (z. B.<br />

Hitze, Kälte), so z. B. in Verkehrsampeln. Die Einsatzgebiete der PLC-Automaten<br />

werden uns allerdings im Folgenden weniger interessieren, es soll hiermit lediglich<br />

aufgezeigt werden, wo die Anwendungsgebiete liegen.<br />

Es soll nun zunächst etwas näher auf die PLC eingegangen werden, um dann<br />

die Syntax der PLC-Automaten aufzuzeigen. Danach wird die Semantik der PLC-<br />

Automaten in Realzeitautomaten vorgestellt, da der verwendete Modelchecker UP-<br />

PAAL diese verifizieren kann.<br />

2.1 Programmable Logic Controller<br />

Die PLC haben ein eingebautes Betriebssystem, das das Verhalten vorschreibt. Der<br />

Nutzer hat aus Sicherheitsgründen keinen Einfluss auf dessen Verhalten. Durch das<br />

Betriebssystem ist folgendes zyklisches Verhalten der Maschine vorgeschrieben:<br />

• Polling: In dieser ersten Phase des Zyklus werden die Input-Busse gelesen.<br />

Die gelesenen Werte werden in einem ausgezeichneten Speicherbereich zwischengespeichert.<br />

• Computing: In der nächsten Phase des Zyklus wird das Programm des Anwenders<br />

einmal ausgeführt. Dieses Programm darf beliebige Berechnungen auf<br />

Arbeitsspeicher einschließlich der Sonderregister der gelesenen Input-Werte<br />

machen <strong>und</strong> ebenfalls Sonderregister für die Output-Busse auslesen <strong>und</strong> beschreiben.<br />

5


• Updating: Die letzte Phase des Zyklus dient dazu, die berechneten Werte der<br />

Außenwelt sichtbar zu machen, indem die Inhalte der Sonderregister für die<br />

Output-Busse auf die Output-Busse gelegt werden.<br />

Abbildung 1: Zyklus einer SPS (Quelle: [13])<br />

Eine SPS besitzt eine Zykluszeit (in Abbildung 1: max. cycle time), in der ein<br />

Zyklus vollständig durchgeführt sein muss. Der tatsächliche Zeitverbrauch eines Zyklus<br />

hängt <strong>von</strong> der Größe der Input- <strong>und</strong> Output-Busse <strong>und</strong> des Programms selbst<br />

ab.<br />

2.2 Syntax<br />

Ein Tupel A = (Q, Σ,δ,q 0 ,ε,S t ,S e , Ω,ω) ist ein PLC-Automat, wenn folgendes gilt:<br />

• Q ist eine nichtleere, endliche Menge <strong>von</strong> Zuständen,<br />

• Σ ist eine nichtleere, endliche Menge <strong>von</strong> Eingaben,<br />

• δ ist eine Funktion vom Typ Q × Σ ↦−→ Q (Transitionsfunktion),<br />

• q 0 ∈ Q ist der Startzustand,<br />

6


• ε > 0 ist die obere Grenze für einen Zyklus,<br />

• S t ist eine Funktion vom Typ Q ↦−→ R ≥0 , die jedem Zustand q eine Zeit<br />

zuordnet, in der die Eingaben, die S e (q) enthält, ignoriert werden,<br />

• S e ist eine Funktion vom Typ Q ↦−→ P(Σ), die jedem Zustand q eine Menge<br />

<strong>von</strong> Eingaben zuordnet, die S t (q) lang ignoriert werden,<br />

• Ω ist eine nichtleere, endliche Menge <strong>von</strong> Ausgaben,<br />

• ω ist eine Funktion vom Typ Q ↦−→ Ω (Ausgabefunktion).<br />

Die Komponenten Q, Σ, δ <strong>und</strong> q 0 haben dieselbe Bedeutung wie in endlichen<br />

Automaten. Das ε stellt die obere Schranke für einen gesamten Zyklus dar. P(Σ)<br />

bezeichnet die Potenzmenge <strong>von</strong> Σ. S t <strong>und</strong> S e modellieren eine weitere praktische<br />

Eigenschaft der PLC-Automaten, deren Sinn die Beispiele in Kapitel 2.4 deutlich<br />

machen werden. Eine Eingabe, die in S e enthalten ist, wird S t im betreffenden<br />

Zustand ignoriert. ω ordnet jedem Zustand eine Ausgabe aus Ω zu.<br />

2.3 Realzeitsemantik<br />

UPPAAL akzeptiert als Eingabe lediglich einen oder mehrere Realzeitautomaten.<br />

Um die erforderliche kontextuelle Information über das System zu erhalten, betrachten<br />

wir allerdings PLC-Automaten. Es soll nun vorgestellt werden, wie ein<br />

Realzeitautomat konstruiert werden muss, damit er einen PLC-Automaten simuliert.<br />

Sei A ein PLC-Automat mit A = (Q, Σ,δ,q 0 ,ε,S t ,S e , Ω,ω). Dann definiere einen<br />

Realzeitautomaten R(A) = df (S,S 0 ,X,L,E,I,P,µ) mit<br />

• S = df {0, 1, 2, 3} × Σ × Σ × Q einer Menge <strong>von</strong> Zuständen,<br />

• S 0 = df {(0,a,b,q 0 )|a,b ∈ Σ} einer Menge <strong>von</strong> initialen Zuständen,<br />

• X = df {x,y,z} einer Menge <strong>von</strong> Uhren,<br />

• L = df Σ ∪ {poll,test,tick} einer Menge <strong>von</strong> Beschriftungen bzw. Eingaben,<br />

7


(i,a,b,q)<br />

(0,a,b,q)<br />

(1,a,b,q)<br />

(1,a,b,q)<br />

(1,a,b,q)<br />

(2,a,b,q)<br />

(3,a,b,q)<br />

(3,a,b,q)<br />

c,true,{x}<br />

↦−→ (i,c,b,q) if c ≠ a (1)<br />

poll,0S t(q),∅<br />

↦−→ (3,a,b,q) if S t (q) > 0 ∧ b ∈ S e (q) (4)<br />

test,true,∅<br />

↦−→ (3,a,b,q) if S t (q) = 0 ∨ b /∈ S e (q) (5)<br />

tick,true,{z}<br />

↦−→ (0,a,b,q) (6)<br />

tick,true,{z}<br />

↦−→ (0,a,b,δ(q,b)) if q = δ(q,b) (7)<br />

tick,true,{y,z}<br />

↦−→ (0,a,b,δ(q,b)) if q ≠ δ(q,b) (8)<br />

Tabelle 1: Transitionen in Realzeitsemantik<br />

• einer Menge <strong>von</strong> Transitionen E, die in Tabelle 1 gegeben sind, wobei i ∈<br />

{0, 1, 2, 3}, a,b,c ∈ Σ <strong>und</strong> q ∈ Q,<br />

• I(s) = df z ≤ ε einer Invariante für jeden Zustand s ∈ S,<br />

• P = Σ ∪ Q ∪ Ω einer Menge <strong>von</strong> Propositionen,<br />

• µ(i,a,b,q) = df a ∧ q ∧ ω(q) einer Proposition für jeden Zustand.<br />

Abbildung 2: Der Programmzähler<br />

Die Menge der Zustände <strong>von</strong> R(A) besteht aus vier Dimensionen. Die erste ( Programmzähler“,<br />

vgl. Abbildung 2) nimmt die möglichen Werte {0, 1, 2, 3} an <strong>und</strong><br />

”<br />

beschreibt den internen Zustand des Pollingsystems (siehe Abbildung 2). Ist dieser<br />

8


Wert ”<br />

0“, so wurde der aktuell anliegende Eingabewert noch nicht gepollt 1 , bei einer<br />

1“ wurde dies bereits getan. Ob eine Transition dann ausgeführt wird, hängt <strong>von</strong><br />

”<br />

S t <strong>und</strong> S e des PLC-Automaten ab. Die zweite Dimension der Zustände bezeichnet<br />

den aktuell anliegenden Eingabewert, die dritte den zuletzt gepollten Eingabewert<br />

<strong>und</strong> die vierte den aktuellen Zustand des PLC-Automaten.<br />

Die drei Uhren haben folgende Aufgaben: Uhr x merkt die Zeit, die die letzte<br />

Eingabe anliegt, Uhr y merkt, wie lange der SPS-Automat sich im aktuellen Zustand<br />

befindet <strong>und</strong> Uhr z überwacht die Zeit des gesamten Zyklus. Die aktuell anliegende<br />

Eingabe wird <strong>von</strong> der Umwelt gesteuert <strong>und</strong> kann sich deswegen prinzipiell zu jedem<br />

Zeitpunkt ändern (Transitionen (1)). Die Transitionen, die die erste Komponente der<br />

Zustände des Realzeitautomaten ändern, sind mit poll, test <strong>und</strong> tick beschriftet. Die<br />

Pollingphase muss eine gewisse Zeit nach Beginn des Zyklus geschehen, weswegen<br />

die Transitionen (2) mit z > 0 beschriftet wurden. Auch der aktuelle Eingabewert<br />

muss bereits eine gewisse Zeit anliegen, darum muss auch x > 0 gefordert werden.<br />

Nach dem Polling muss überprüft werden, ob eine Transition genommen werden<br />

muss, was abhängig <strong>von</strong> S e , S t <strong>und</strong> der Uhr y ist. Ist im PLC-Automaten keine<br />

Delay-Zeit S t angegeben oder ist die zuletzt gepollte Eingabe nicht zu ignorieren<br />

(b /∈ S e (q)) so geht R(A) über in einen Zustand mit führender ”<br />

3“, was bedeutet, dass<br />

die Transition des PLC-Automaten A auch im Realzeitautomaten R(A) genommen<br />

wird (Transitionen (5)). Ist eine Delay-Zeit für den Zustand q angegeben <strong>und</strong> die<br />

gepollte Eingabe b ist zu ignorieren (b ∈ S e (q)), dann führt R(A) die Transition nur<br />

dann aus, wenn y > S t (q) gilt, was bedeutet, dass die Zeit, die der Zustand des PLC-<br />

Automaten bereits anhält, größer ist als die Delay-Zeit S t (q) (Transitionen (3) <strong>und</strong><br />

(4)). Die tick-Transitionen (6-8) beenden den Zyklus, der aufgr<strong>und</strong> der Invarianten<br />

z ≤ ε nach oben durch ε beschränkt ist, da nur die tick-Transitionen die Uhr z<br />

<strong>zur</strong>ücksetzen.<br />

Die ”<br />

praktische Semantik“ sieht indes ein wenig anders aus: Der UPPAAL-<br />

Service <strong>von</strong> Moby/PLC, mit dessen Ausgabe die Versuche <strong>zur</strong> Verifikation mit UP-<br />

PAAL CORA durchgeführt wurden, erstellt aus einem PLC-Automaten eine Parallelkomposition<br />

mehrerer Realzeitautomaten. Die Transitionen (1), die die Änderungen<br />

der Umwelt modellieren, werden hierbei durch so genannte Treiber ersetzt.<br />

1 Aufgr<strong>und</strong> der Verbreitung des Verbes pollen wird auf eine Übersetzung in diesem Text verzichtet.<br />

Am nächsten käme wohl ”<br />

einlesen“.<br />

9


Für jede Eingabevariable gibt es einen Treiber, der die Änderung des Wertes zu<br />

jedem Zeitpunkt erlaubt. Außerdem wird der Wert des Programmzählers als interne<br />

Variable gespeichert, weswegen die Zustandsmenge eines Realzeitautomaten die<br />

gleiche ist wie die des zu simulierenden PLC-Automaten. Der Zustandsraum des<br />

Realzeitautomaten ist - wie gesehen - ungleich größer als der des PLC-Automaten.<br />

2.4 Beispiele<br />

Ein Fallbeispiel soll dem Leser die PLC-Automaten <strong>und</strong> ihre Realzeitsemantik näher<br />

bringen <strong>und</strong> motivieren. Bis auf die Realzeitsemantik ist dieses [13] entnommen.<br />

2.4.1 Zugsensorsteuerung 1<br />

Ein Zugsensor kann die Signale train (Zug) <strong>und</strong> no train (kein Zug) verarbeiten.<br />

Die Ankunft eines Zuges wird dann durch den Wechsel <strong>von</strong>no train zutrain angezeigt.<br />

Ein bekanntes Phänomen ist, dass eine gewisse Zeitspanne (hier: 4 Sek<strong>und</strong>en)<br />

nach Ankunft eines Zuges mehrere solcher Wechsel geschehen, obwohl tatsächlich<br />

kein Zug angekommen ist ( Stottern“). Sei der zeitliche Mindestabstand zwischen<br />

”<br />

zwei Zügen 6 Sek<strong>und</strong>en, dann zeigt Abbildung 3 eine mögliche Lösung.<br />

Abbildung 3: Zugsensorsteuerung 1<br />

Dieser Automat besteht aus zwei Zuständen N <strong>und</strong> T. Die Namen der Zustände<br />

legen auch die Ausgabe dieser nahe, nämlich N → Kein Zug“ <strong>und</strong> T → Zug“.<br />

” ”<br />

In Zustand T ist die Zeitspanne angegeben (in Sek<strong>und</strong>en), die auf die angegebenen<br />

Eingaben (in diesem Fall all={train, no train}) nicht reagiert werden soll. Die<br />

Zykluszeit <strong>von</strong> hier 0,2 Sek<strong>und</strong>en wird üblicherweise in einer kleinen Box neben dem<br />

Automaten angegeben. Abbildung 4 zeigt einen typischen Ablauf des Automaten.<br />

10


Abbildung 4: Typischer Ablauf der Zugsensorsteuerung 1 (Quelle: [13])<br />

Die durchgezogenen Pfeile stellen genommene Transitionen dar, die gepunkteten<br />

weisen auf eine Transition hin, die wegen der noch nicht vergangenen 5 Sek<strong>und</strong>en<br />

nicht genommen wurden. Dass die dritte Transition durchgezogen gekennzeichnet<br />

ist, liegt daran, dass es sich hierbei um eine Schleife handelt <strong>und</strong> deshalb ohnehin<br />

kein Zustandswechsel auftreten kann.<br />

Zwei Züge können in diesem Beispiel im Abstand <strong>von</strong> 6 Sek<strong>und</strong>en eintreffen<br />

<strong>und</strong> das Stottern dauert maximal 4 Sek<strong>und</strong>en. Damit ergeben sich 5 Sek<strong>und</strong>en als<br />

mögliche Grenze des Ignorierens der Eingaben im Zustand T, da es nicht passieren<br />

kann, dass ein Wechsel <strong>von</strong> no train nach train fälschlicherweise als Stottern interpretiert<br />

wird <strong>und</strong> der Automat sich bei Ankunft eines Zuges immer im Zustand<br />

N befindet.<br />

Die oben angegebene Struktur ist ein sehr einfacher PLC-Automat für dieses Beispiel,<br />

eine Erweiterung soll dem Leser weiterhelfen, den Sinn <strong>von</strong> PLC-Automaten<br />

nachzuvollziehen.<br />

2.4.2 Zugsensorsteuerung 2<br />

Erneut wird die Steuerung eines Zugsensors betrachtet, allerdings kann der Zugsensor<br />

in diesem Fall zusätzlich das Ereignis Error verarbeiten, welches Fehler am<br />

Sensor meldet. Der Filter soll nun so erweitert werden, dass auf ein Error-Signal<br />

sofort reagiert <strong>und</strong> in einen Zustand X gesprungen wird. Eine mögliche Lösung ist<br />

in Abbildung 5 zu sehen.<br />

11


Abbildung 5: Zugsensorsteuerung 2<br />

Zu beachten ist, dass nun im Zustand T nicht mehr alle Eingaben 5 Sek<strong>und</strong>en<br />

lang ignoriert werden sollen, sondern dass bei einem Auftreten des Fehlersignals<br />

sofort in den Zustand X gesprungen wird. Abbildung 6 zeigt einen möglicher Ablauf<br />

dieses Automaten der Zugsensorsteuerung 2.<br />

Abbildung 6: Typischer Ablauf der Zugsensorsteuerung 2 (Quelle: [13])<br />

Interessant ist, dass das erste train-Signal zu kurz war um gelesen zu werden.<br />

Um sicher zu stellen, dass keine Signale übersehen werden, muss also dafür gesorgt<br />

werden, dass ein Signal eine gewisse Zeitspanne anliegt <strong>und</strong> die obere Zeitschranke<br />

des PLC-Automaten klein gehalten wird.<br />

12


2.4.3 Realzeitsemantik der Zugsensorsteuerung 1<br />

Am Beispiel der Zugsensorsteuerung 1 wurde der entsprechende Realzeitautomat<br />

entwickelt, dieser ist in Abbildung 7 zu sehen.<br />

Abbildung 7: Realzeitsemantik <strong>von</strong> Zugsensorsteuerung 1<br />

Die Eingaben train <strong>und</strong> no train wurden durch n <strong>und</strong> t ersetzt. Die Beschriftung<br />

der poll, test <strong>und</strong> tick-Transitionen wurde durch Kennzeichnung mit verschiedenen<br />

Pfeilen ersetzt.<br />

13


Außerdem gehört zu jedem Zustand die Invariante z ≤ 0.2. Die Zustände (2,n,<br />

n, N), (2, t, n, N), (2, n, t, N), (2, t, t, N) sind nicht erreichbar <strong>und</strong><br />

wurden somit Opfer der Übersichtlichkeit. Diese Zustände sind nicht erreichbar,<br />

da im Zustand N des PLC-Automaten keine Verzögerungszeit angegeben ist, folglich<br />

kann in jedem Fall zu einem der Zustände mit dem Wert 3 in erster Dimension übergegangen<br />

werden. Befindet sich der PLC-Automat im ZustandT(simuliert durch die<br />

Zustände im Realzeitautomaten, die mit T enden), so müssen die Eingaben 5 Sek<strong>und</strong>en<br />

lang ignoriert werden. Dieses Verhalten simuliert der Realzeitautomat mithilfe<br />

der Uhr y, die die Zeit misst, die der PLC-Automat sich in einem Zustand befindet.<br />

Ist der Wert dieser Uhr kleiner als 5, so kann der Realzeitautomat nur zwischen den<br />

Zuständen mit führender 0, 1 oder 2 hin- <strong>und</strong> herspringen. Der Wechsel <strong>von</strong> einem<br />

mit T endenden Zustand zu einem mit N endenden Zustand ist allerdings erst in einem<br />

Zustand mit führender 3 möglich. In einen solchen gelangt der Realzeitautomat<br />

allerdings erst, wenn die Uhr y einen Wert größer als 5 hat.<br />

Es sollte offensichtlich sein, dass die Zustandsmenge eines Realzeitautomaten,<br />

der einen PLC-Automaten simuliert, mit wachsender Menge Eingaben <strong>und</strong> Zustände<br />

des PLC-Automaten sehr schnell wächst. Ein Realzeitautomat zum PLC-Automaten<br />

der Zugsensorsteuerung 2 bestünde bereits aus 4*3*3*3=148 Zuständen. Das wichtige<br />

allerdings ist, dass überhaupt die Möglichkeit besteht, einen PLC-Automaten<br />

durch einen Realzeitautomaten zu simulieren. Deswegen kann der Modelchecker UP-<br />

PAAL genutzt werden, <strong>und</strong> das Bestimmen eines Realzeitautomaten <strong>von</strong> einem PLC-<br />

Automaten ist in Moby/PLC automatisiert.<br />

14


3 UPPAAL CORA<br />

UPPAAL ist ein Werkzeug <strong>zur</strong> Modellierung, Simulation <strong>und</strong> Verifikation <strong>von</strong> Realzeitsystemen<br />

<strong>und</strong> wurde entwickelt in Zusammenarbeit <strong>von</strong> Basic Reasearch in Computer<br />

Science <strong>von</strong> der Universität Aalborg in Dänemark <strong>und</strong> dem Department of<br />

Information Technology <strong>von</strong> der Universität Uppsala in Schweden (vgl. [15]). Der<br />

Name UPPAAL setzt sich also aus den Anfangsbuchstaben der Universitäten zusammen.<br />

UPPAAL CORA ( cost-optimising reachability analysis“) wurde vom UPPAAL-<br />

”<br />

Team als Teil der Projekte VHS (Verification of Hybrid Systems, [12]) <strong>und</strong> AME-<br />

TIST (Advanced Method for Timed Systems, [14]) entwickelt. Während UPPAAL<br />

Realzeitautomaten als Eingabe analysiert <strong>und</strong> in jedem Fall den gesamten Zustandsraum<br />

durchsucht, erhält UPPAAL CORA als Eingabe einen oder mehrere Linearly<br />

Priced Timed Automata 2 , eine Erweiterung <strong>von</strong> Realzeitautomaten ([2]). UPPAAL<br />

CORA findet dann einen optimalen Pfad, d. h. einen kostenminimierten Pfad zu<br />

einem Zielzustand.<br />

Durch die Eingabe eines oder mehrerer Linearly Priced Timed Automata (im<br />

Folgenden nur noch LPTA) wird dem Benutzer erlaubt, dem Realzeitmodell zusätzliche<br />

Information, wie z. B. Kosten für Transitionen oder Zustände, hinzuzufügen,<br />

um die Fehlersuche zu verbessern. Ein Hinzufügen einer unteren Abschätzung der<br />

verbleibenden Kosten (über das Setzen der Variable remaining), bis der Zielzustand<br />

erreicht ist, kann bsplw. die Zeit, die <strong>zur</strong> Fehlersuche benötigt wird, drastisch<br />

reduzieren.<br />

3.1 Linearly Priced Timed Automata<br />

Ein LPTA ist ein Realzeitautomat mit der hinzugefügten Variable Kosten. Diese<br />

ist initial null <strong>und</strong> steigt monoton. Die Kosten werden an Transitionen erhöht oder<br />

aber mit einer Rate nach vergangener Zeit. Ist die Rate in einem Zustand bsplw. 2<br />

dann wären die Kosten nach vergangenen 1,6 Zeiteinheiten in diesem Zustand um<br />

3,2 größer. Die Variable Kosten kann allerdings an keiner Transition als Bedingung<br />

2 Aufgr<strong>und</strong> der großen Verbreitung wird auf eine Übersetzung verzichtet.<br />

15


oder in Invarianten genutzt werden, da dies das Verhalten des Systems beeinflussen<br />

würde. Das Modelchecking wäre unentscheidbar, da die Variable Kosten eine<br />

Stoppuhr darstellen würde. In [8] wird das Erreichbarkeitsproblem <strong>von</strong> Stoppuhr-<br />

Automaten auf das Halteproblem <strong>von</strong> Zwei-Zähler-Maschinen reduziert.<br />

3.1.1 Syntax<br />

Ein LPTA A ist ein Tupel (S,s 0 ,X, Σ,E,I,P), wobei gilt:<br />

• S ist eine endliche Menge <strong>von</strong> Zuständen<br />

• X ist eine Menge <strong>von</strong> Uhren<br />

• Σ ist eine endliche Menge <strong>von</strong> Eingaben<br />

• E ⊆ S × B(X) × Σ × P(X) × S ist eine Menge <strong>von</strong> Transitionen, wobei<br />

eine Kante einen Ausgangszustand, Uhrenbedingungen sowie eine Aktion, eine<br />

Menge <strong>von</strong> Uhren, die <strong>zur</strong>ückgesetzt werden <strong>und</strong> einen Zielzustand besitzt<br />

• I : S ↦−→ B(X) ordnet jedem Zustand eine Invariante zu<br />

• P : (S ˙∪E) ↦−→ N ordnet sowohl Zuständen als auch Transitionen Kosten zu<br />

Hierbei ist B(C) die Menge der Formeln, die Konjunktionen der atomaren Uhrenbedingungen<br />

der Form x ⊲⊳ n <strong>und</strong> x − y ⊲⊳ n sind, für x,y ∈ X, ⊲⊳∈ {}<br />

<strong>und</strong> n ∈ N. P(X) bezeichnet die Potenzmenge <strong>von</strong> X. Für den Fall (s,g,a,r,s ′ ) ∈ E<br />

schreiben wir s ↦−→ g,a,r<br />

s ′ .<br />

Die Werte der Uhren werden durch Funktionen <strong>von</strong> X in die nicht-negativen<br />

reellen Zahlen repräsentiert. Diese heißen Uhrenbelegungen <strong>und</strong> mit R X wird die<br />

Menge aller Uhrenbelegungen über X bezeichnet.<br />

Abbildung 8 zeigt einen LPTA. Die Bedingungen über den Zuständen sind die<br />

Invarianten, die Zahl im Zustand ist jeweils die Rate der Kosten. Ein optimaler<br />

Ablauf zum Endzustand s 2 muss zweimal den Anfangszustand besuchen <strong>und</strong> hat<br />

die Kosten 10.<br />

16


Abbildung 8: Beispiel eines LPTA<br />

3.1.2 Semantik<br />

Die Semantik eines LPTA wird definiert als ein beschriftetes Transitionssystem im<br />

Zustandsraum S × R X mit Startzustand (s 0 ,u 0 ) (u 0 weist allen Uhren aus X null<br />

zu) <strong>und</strong> folgender Transitionsrelation:<br />

• (s,u) ε(d),p<br />

↦−→ (s,u + d) wenn ∀0 ≤ e ≤ d : u + e ∈ I(s) <strong>und</strong> p = d · P(s)<br />

• (s,u)<br />

a,p<br />

↦−→ (s ′ ,u ′ ) wenn ∃g,r, sodass s ↦−→ g,a,r<br />

s ′ , u ∈ g, u ′<br />

p = P((s,g,a,r,s ′ ))<br />

= u[r ↦→ 0] <strong>und</strong><br />

wobei für d ∈ R ≥0 u+d jeder Uhr x ∈ X den Wert u(x)+d zuweist <strong>und</strong> u[r ↦→ 0]<br />

mit u für alle x ∈ C \ r mit u übereinstimmt <strong>und</strong> den Uhren aus r null zuweist. Die<br />

Transitionen sind mit Eingaben <strong>und</strong> Kosten versehen. Die erste ist eine ε-Transition,<br />

d. h. der Zustand wird gehalten, es vergeht lediglich Zeit. Bedingung ist, dass die<br />

Invariante des Zustands zu keiner Zeit verletzt wird. Die Kosten eines Ablaufs dieser<br />

Transitionsrelation sind einfach die addierten Kosten der besuchten Zustände <strong>und</strong><br />

gefeuerten Transitionen.<br />

Die Semantik der LPTA führt zu einem unendlichen Zustandsraum <strong>und</strong> ist somit<br />

ungeeignet für eine Suche innerhalb dieses Zustandsraums. Um dieses Problem zu<br />

umgehen, werden so genannte symbolische Zustände für Kosten <strong>zur</strong> Erk<strong>und</strong>ung des<br />

Zustandsraums eingeführt. Die symbolischen Zustände für Kosten sind den symbolischen<br />

Zuständen, die UPPAAL <strong>und</strong> andere Modelchecker nutzen, um den durch<br />

die Belegung der Uhren unendlichen Zustandsraum zu erk<strong>und</strong>en, sehr ähnlich.<br />

Symbolische Zustände sind typischerweise Paare der Form (s,Z), wobei s ∈ S ein<br />

Zustand ist <strong>und</strong> Z ⊆ R X eine konvexe Menge <strong>von</strong> Uhrenbelegungen. Z wird Region<br />

genannt <strong>und</strong> kann durch Difference Bo<strong>und</strong> Matrices (DBM) repräsentiert werden.<br />

17


Die Operationen, die <strong>zur</strong> Suche im Zustandsraum nötig sind, können effizient in der<br />

DBM Datenstruktur implementiert werden.<br />

Für LPTA müssen nun auch die Kosten, mit denen Zustände erreicht werden,<br />

repräsentiert werden. Hierfür werden symbolische Zustände für Kosten (s,C) eingeführt,<br />

wobei C eine Kostenfunktion ist, die Uhrenbelegungen in Kostenwerte in R<br />

abbildet. Die Idee ist, dass, wenn der symbolische Kostenzustand (s,C) erreichbar<br />

ist <strong>und</strong> u eine Uhrenbelegung mit C(u) < ∞, dann kann der Zustand (s,u) mit den<br />

Kosten C(u) erreicht werden.<br />

3.1.3 Kosten<br />

Sei α = (s 0 ,u 0 ) a 1,p 1<br />

↦−→ (s1 ,u 1 )... an,pn<br />

↦−→ (s n ,u n ) ein Ablauf des eingeführten Transitionssystems.<br />

Die Kosten <strong>von</strong> α, formal cost(α), sind die Summe ∑ n<br />

i=1 p i. Für einen<br />

gegebenen Zustand (s,u) ist mincost(s,u) das Minimum der Kosten, das nötig ist<br />

um den Zustand zu erreichen. mincost(s,u) ist also das Minimum der Kosten aller<br />

endlichen Abläufe, die in (s,u) enden. Für einen gegebenen Zustand s des LPTA ist<br />

mincost(s) das Minimum der Kosten, die nötig sind, um diesen Zustand zu erreichen.<br />

mincost(s) ist also das Minimum der Kosten aller endlichen Abläufe, die mit<br />

beliebiger Uhrenbelegung u in (s,u) enden.<br />

3.1.4 Kostenfunktionen<br />

Eine Kostenfunktion C : R X ↦→ R∪{∞} ordnet jeder Uhrenbelegung u eine positive<br />

reelle Zahl oder unendlich zu. Der Träger (engl.: support) sup(C) = {u|C(u) < ∞}<br />

ist die Menge aller Uhrenbelegungen, denen endliche Kosten zugeordnet werden.<br />

Um einen Ablauf der symbolischen Semantik darstellen zu können, benötigen<br />

wir eine Definition, wie sich eine Kostenfunktion ändert durch bsplw. das Vergehen<br />

<strong>von</strong> Zeit in einem Zustand oder das Feuern einer Transition. In Tabelle 2 sind einige<br />

übliche Operationen auf Kostenfunktionen aufgezeigt, die <strong>von</strong> der symbolischen<br />

Semantik verwendet werden.<br />

Die Operation Delay modelliert hierbei das Vergehen <strong>von</strong> Zeit in einem Zustand.<br />

Es ist zu erkennen, dass die resultierenden Kostenfunktionen bereits die Suche nach<br />

18


Operation Kostenfunktion (R X → R ≥0 )<br />

Delay delay(C,p) : u ↦→ inf{C(v) + p · d|d ∈ R ≥0 ∧ v + d = u}<br />

Rücksetzen r(C) : u ↦→ inf{C(v)|u = v[r ↦→ 0]}<br />

Satisfaction<br />

Inkrement<br />

Vergleich<br />

g(C) : u ↦→ C(u)|u |= g<br />

C + k : u ↦→ C(u) + k,k ∈ N<br />

D ⊑ C def<br />

⇔ ∀u : D(u) ≤ C(u)<br />

Infimum min(C) = inf{C(u)|u ∈ R X }<br />

Tabelle 2: Übliche Operationen auf Kostenfunktionen<br />

dem kostenminimalen Weg unterstützen, bsplw. ordnet die resultierende Kostenfunktion<br />

nach dem Zurücksetzen <strong>von</strong> Uhren u das Infimum aller C(v) zu, wobei<br />

u = v[r ↦→ 0]. Die Kostenfunktion g(C) modelliert die Erfüllung einer Transitionsbedingung<br />

<strong>und</strong> mit Inkrement werden Kosten für Transitionen addiert. Der Vergleich<br />

<strong>und</strong> das Infimum der Kostenfunktionen sind für einen konkreten Algorithmus wichtig,<br />

der einen kostenoptimalen Pfad findet (siehe [4]). Dass gerade diese Definition<br />

der Kostenfunktionen es möglich macht, kostenoptimale Pfade zu finden, wird ein<br />

im nächsten Kapitel folgendes Beispiel klarer machen.<br />

3.1.5 Symbolische Semantik<br />

Sei A = (S,s 0 ,X, Σ,E,I,P) ein LPTA. Die symbolische Semantik ist definiert als<br />

ein beschriftetes Transitionssystem über symbolische Zustände für Kosten der Form<br />

(s,C), wobei s ein Zustand <strong>und</strong> C eine Kostenfunktion ist mit der Transitionsrelation:<br />

1. (s,C) ε → (s,I(s)(delay(I(s)(C),P(s)))),<br />

2. (s,C) a → (s ′ ,I(s)(r(g(C))) + p) genau dann wenn s g,a,r<br />

↦−→ s ′ <strong>und</strong><br />

p = P((s,g,a,r,l ′ )).<br />

Der Anfangszustand ist (s 0 ,C 0 ) mit sup(C 0 ) = {u 0 } <strong>und</strong> C 0 (u 0 ) = 0.<br />

Die erste Transition modelliert hierbei das Vergehen <strong>von</strong> Zeit in einem Zustand,<br />

wobei die resultierende Kostenfunktion aus C berechnet wird, indem diese zunächst<br />

19


auf die Invariante eingeschränkt wird (I(s)(C)). Mit delay(I(s)(C),P(s)) wird dann<br />

die Kostenfunktion berechnet, die bei Vergehen <strong>von</strong> Zeit entsteht, wobei P(s) die<br />

Rate des Zustands ist. Letztlich muss die resultierende Kostenfunktion wieder auf<br />

die Invariante eingeschränkt werden.<br />

Die zweite Transition modelliert das Feuern einer Transition mit dem Ereignis<br />

a, wobei die resultierende Kostenfunktion aus C berechnet wird, indem C auf die<br />

Bedingung g der Transition s g,a,r<br />

↦−→ s ′ eingeschränkt wird. Weiterhin muss die resultierende<br />

Kostenfunktion das Zurücksetzen der Uhren aus r modellieren <strong>und</strong> auf die<br />

Invariante des Zustands eingeschränkt werden. Letztlich bleibt die Kosten für die<br />

Transition s ↦−→ g,a,r<br />

s ′ zu addieren.<br />

Mit einem Beispiel wollen wir versuchen, den Sinn der symbolischen Semantik<br />

nachzuvollziehen. Wir betrachten noch einmal den LPTA aus Abbildung 8 <strong>und</strong> wollen<br />

versuchen, den kostenminimales Pfad zum Endzustand s 2 in der symbolischen<br />

Semantik auszudrücken (dieser hat die Kosten 10). Ein möglicher Ablauf wäre:<br />

→ (s 0 ,C 0 ) a → (s 1 ,C 1 ) ε → (s 1 ,C 2 ) b → (s 0 ,C 3 ) ε → (s 0 ,C 4 ) a → (s 1 ,C 5 ) c → (s 2 ,C 6 )<br />

wobei sich die Kostenfunktionen C 0 ,...,C 6 folgendermaßen berechnen:<br />

• C 0 : sup(C 0 ) = u 0 = ( )<br />

0<br />

0 , C0 ( ( 0<br />

0)<br />

) = 0<br />

• C 1 : C 1 = [x < 2] (([true](C 0 ))[∅ ↦→ 0] ) +3<br />

} {{ }<br />

u↦→C 0 (u)<br />

} {{ }<br />

u↦→C 0 (u)<br />

} {{ }<br />

u↦→C 0 (u)|u|=x


• C 3 : C 3 = [x < 2] (([true](C 2 ))[{x} ↦→ 0] ) +0<br />

} {{ }<br />

u↦→C 2 (u)<br />

} {{ }<br />

u↦→inf{C 2 (v)|u=v[x↦→0]}<br />

} {{ }<br />

u↦→inf{C 2 (v)|u=v[x↦→0]}|u|=x


(s,u) endet, einen symbolischen Ablauf β <strong>von</strong> A, der in dem symbolischen<br />

Kostenzustand (s,C) endet, sodass C(u) = cost(α).<br />

2. Ist der symboliche Kostenzustand (s,C) erreichbar <strong>und</strong> u ∈ sup(C), dann ist<br />

mincost(s,u) ≤ C(u) für alle u.<br />

Außerdem gilt das folgende Theorem:<br />

mincost(s) = min{min(C)|(s,C) ist erreichbar}<br />

Auch der Zustandsraum der symbolischen Semantik ist unendlich. [4] gibt einen<br />

Ansatz für Uniformly Priced Timed Automata, LPTA für die gilt, dass alle Zustände<br />

dieselbe Rate haben, um dieses Problem mittels repräsentierender Kostenfunktionen<br />

zu lösen.<br />

3.2 Optionen<br />

Um die <strong>Heuristiken</strong> evaluieren zu können, muss die gesteuerte Suche mit verschiedenen<br />

”<br />

einfachen“ Suchalgorithmen verglichen werden. UPPAAL CORA stellt folgende<br />

Suchalgorithmen als Möglichkeiten <strong>zur</strong> Verfügung:<br />

• bfs: Breitensuche ( breadth-first-search“).<br />

”<br />

• dfs: Tiefensuche ( depth-first-search“).<br />

”<br />

• rdf: Randomisierte Tiefensuche. UPPAAL CORA hält intern eine Warteliste<br />

der erreichbaren Zustände, die noch zu erforschen sind. Aus dieser Warteliste<br />

wird zufällig ein Zustand ausgewählt. Die Ergebnisse der randomisierten<br />

Tiefensuche sind sehr unterschiedlich. Aus diesem Gr<strong>und</strong> wurden für die Evaluation<br />

der <strong>Heuristiken</strong> mehrere Testdurchläufe mit dieser Suche getätigt <strong>und</strong><br />

ein Mittelwert gebildet.<br />

• shf: smallest heur first“. Es ist möglich, Zuständen einen Wert heur zuzuordnen.<br />

Wird diese Suche verwendet, so wird UPPAAL CORA aus der Warteliste<br />

”<br />

der erreichbaren <strong>und</strong> noch zu erforschenden Zustände denjenigen mit dem<br />

kleinsten Wert heur als erstes weiter untersuchen.<br />

22


• bf (c+r): In diesem Fall werden die Werte <strong>von</strong> cost <strong>und</strong> remaining addiert<br />

<strong>und</strong> der Pfad mit niedrigster Summe gewählt ( best first“). ”<br />

• rbdf (c+r): Ähnelt bf (c+r)“, bei Gleichheit der Summe <strong>von</strong> cost <strong>und</strong><br />

”<br />

remaining wird zufällig entschieden, welcher Pfad weiter betrachtet wird.<br />

Außerdem gibt es weitere Optionen in UPPAAL CORA, mit denen bsplw. die<br />

Ausgabe des gef<strong>und</strong>enen Ablaufs eingestellt werden kann. Diese sind allerdings in<br />

diesem Text nicht weiter <strong>von</strong> Belang, sondern lediglich für die Versuche mit UPPAAL<br />

CORA wichtig.<br />

23


4 Fallstudie: Fehlertolerante Fertigungszelle<br />

Um die <strong>Heuristiken</strong> entwickeln <strong>und</strong> bewerten zu können, lag die Fallstudie Fehlertolerante<br />

Fertigungszelle“, eine leichte Abwandlung der Fertigungszelle des For-<br />

”<br />

schungszentrum Informatik aus Karlsruhe als PLC-Automaten Modell vor. Diese<br />

soll im Folgenden näher beschrieben werden.<br />

4.1 Beschreibung<br />

Die Fertigungszelle stellt einen typischen Industrieablauf dar, in dem ein Metallblech<br />

(im Folgenden auch Werkstück genannt) verarbeitet wird <strong>und</strong> dabei mehrere<br />

Stationen durchläuft. Der Lebenszyklus des Blechs beginnt im Modell auf einem Eingabeförderband,<br />

<strong>von</strong> dem aus es auf einen rotierenden Tisch gelangt. Ein Roboter,<br />

der <strong>zur</strong> Optimierung des Prozesses mit zwei Armen ausgestattet ist, befördert dann<br />

die Platine in eine Presse, in der die eigentliche Verarbeitung des Werkstücks geschieht.<br />

Der Roboter befördert dann die Platine auf ein Ausgabeförderband, sodass<br />

das fertige Werkstück ausgeliefert wird.<br />

Es sei an dieser Stelle darauf hingewiesen, dass leichte Unterschiede zwischen dem<br />

Modell des Forschungszentrum Informatik <strong>und</strong> der Fehlertoleranten Fertigungszelle<br />

bestehen. So fügt das Forschungszentrum Informatik einen Kran ein, der die Platine<br />

vom Ausgabeförderband wieder auf das Eingabeförderband bewegt, um einen<br />

geschlossenen Prozess zu erhalten. Auf diese Maßnahme wurde im Modell der PLC-<br />

Automaten verzichtet, um die Realitätsnähe zu erhöhen. Weiterhin wurde im Modell<br />

der PLC-Automaten eine Presse hinzugefügt, um höhere Fehlertoleranz zu erhalten.<br />

Nun sollen die einzelnen Stationen, die das Metallblech durchläuft, bzgl. ihrer<br />

Aufgaben näher betrachtet werden.<br />

4.1.1 Eingabeförderband<br />

Die Aufgabe des Eingabeförderbandes besteht darin, Bleche aufzunehmen <strong>und</strong> zum<br />

rotierenden Tisch zu transportieren.<br />

24


Abbildung 9: Fehlertolerante Fertigungszelle (Sicht <strong>von</strong> oben)<br />

4.1.2 Rotierender Tisch<br />

Nachdem der Tisch das Werkstück vom Eingabeförderband übernommen hat, muss<br />

er sich in die passende Position begeben, damit der erste Arm des Roboters die<br />

Platine aufnehmen kann. Hierzu ist eine horizontale Drehung um 45 Grad nötig sowie<br />

eine Bewegung in vertikaler Richtung, da der Roboterarm sich nicht auf gleicher<br />

Höhe befindet.<br />

4.1.3 Roboter<br />

Der Roboter besitzt zwei Arme. Um eine Platine fassen zu können, muss der entsprechende<br />

Arm ausgefahren <strong>und</strong> der Magnet des Arms aktiviert sein. Der Roboter<br />

rotiert, sodass es sowohl Positionen gibt, in denen der erste Arm eine Platine des<br />

Tisches übernimmt oder aber die erste bzw. zweite Presse mit einem Werkstück<br />

versorgt ((2), (4) <strong>und</strong> (6) in Abbildung 10) als auch Positionen, in denen der zweite<br />

Arm ein fertiges Werkstück der ersten oder der zweiten Presse übernimmt oder eines<br />

an das Ausgabeförderband weitergibt ((1), (3) <strong>und</strong> (5)). Gr<strong>und</strong>sätzlich ist eine<br />

Rotation <strong>von</strong> Position (1) nach (2) usw. vorgesehen, wobei aus Position (6) wieder<br />

in (1) übergegangen wird. Sind allerdings nicht alle Voraussetzungen erfüllt, um eine<br />

25


Position abzuarbeiten, kann der Roboter auch in die vorige Position rotiert werden.<br />

(1) (2)<br />

(3) (4)<br />

(5) (6)<br />

Abbildung 10: Positionen der Roboterrotation (Sicht <strong>von</strong> oben)<br />

4.1.4 Pressen<br />

Die Pressen stehen für die eigentliche Verarbeitung der Bleche. Diese wird aber nicht<br />

weiter modelliert, der Aufenthalt eines Werkstücks in einer Presse kostet lediglich<br />

Zeit. Beide Pressen haben drei vertikale Positionen, damit sie auf Höhe der Roboterarme<br />

gebracht werden können, die mit unterschiedlichen, nicht veränderbaren<br />

26


Höhen modelliert sind.<br />

Abbildung 11: Seitenansicht <strong>von</strong> Roboter <strong>und</strong> Presse<br />

4.1.5 Ausgabeförderband<br />

Schließlich nimmt das Ausgabeförderband ein fertiges Werkstück vom zweiten Roboterarm<br />

entgegen <strong>und</strong> liefert dieses aus.<br />

4.2 Sensoren <strong>und</strong> Aktoren<br />

Im vorigen Unterkapitel betrachteten wir die Fertigungszelle ”<br />

objekt-orientiert“, nun<br />

soll sie aus der Sicht des Kontrollprogramms betrachtet werden.<br />

4.2.1 Sensoren<br />

Das Kontrollprogramm erhält folgende Information über den Zustand des Systems<br />

über entsprechende Sensoren:<br />

• Befindet sich ein Blech am Ende des Eingabeförderbandes?<br />

• Befindet sich der rotierende Tisch in unterer Position?<br />

• Befindet sich der rotierende Tisch in oberer Position?<br />

• Wie weit ist der rotierende Tisch bereits rotiert?<br />

• Wie weit ist der erste Arm des Roboters ausgefahren (analog für den zweiten<br />

Arm)<br />

27


• Wie weit ist der Roboter bereits rotiert?<br />

• Befindet sich die erste Presse in unterer Position? (analog für die zweite Presse)<br />

• Befindet sich die erste Presse in mittlerer Position? (analog für die zweite<br />

Presse)<br />

• Befindet sich die erste Presse in oberer Position? (analog für die zweite Presse)<br />

• Befindet sich ein Blech am Ende des Ausgabeförderbandes?<br />

4.2.2 Aktoren<br />

Das System kann mithilfe folgender Aktionen gesteuert werden:<br />

• Aktivieren <strong>und</strong> Deaktivieren des Eingabeförderbandes<br />

• Rotieren des rotierenden Tisches<br />

• Vertikales Bewegen des rotierenden Tisches<br />

• Ein- bzw. Ausfahren des ersten Armes (analog für den zweiten Arm)<br />

• Aufnehmen bzw. Ablegen eines Blechs mit dem ersten Arm (analog für den<br />

zweiten Arm)<br />

• Rotieren des Roboters<br />

• Vertikales Bewegen der ersten Presse (analog für die zweite Presse)<br />

• Aktivieren <strong>und</strong> Deaktivieren des Ausgabeförderbandes<br />

4.3 Anforderungen<br />

Nun sollen einige Anforderungen, die an die Fertigungszelle gestellt werden, diskutiert<br />

werden. Die wichtigsten sind hierbei sicher die im Rahmen <strong>von</strong> Realzeitsystemen<br />

am umfassendsten betrachteten Sicherheits- <strong>und</strong> Lebendigkeitseigenschaften.<br />

Sollte die Sicherheit nicht gewährleistet sein, können in diesem Fall nicht nur Kosten<br />

oder Ausfall <strong>von</strong> Maschinen entstehen, sondern es kann auch zu Verletzungen <strong>von</strong><br />

Menschen kommen.<br />

28


4.3.1 Sicherheit<br />

Jede Sicherheitsanforderung an die Fertigungszelle ist eine Konsequenz aus einem<br />

der folgenden Prinzipien:<br />

• begrenzte Maschinenmobilität: Der Roboter bsplw. würde sich bei zu großer<br />

Rotation selbst zerstören.<br />

• Kollisionsvermeidung: Ein Roboterarm kann mit einer Presse kollidieren, wenn<br />

nicht beide Maschinen die richtige Ausrichtung haben.<br />

• Sicheres Abladen einer Platine: Die Platine darf nur an sicheren Stellen abgelegt<br />

werden, das Eingabeförderband darf z. B. nur weiterlaufen, wenn der<br />

rotierende Tisch in der richtigen Position ist.<br />

• Genügend Abstand der Platinen zueinander: Zwei Lichtsensoren können z.<br />

B. zwei Platinen, die nicht in ausreichendem Abstand zueinander sind, nicht<br />

auseinanderhalten.<br />

4.3.2 Lebendigkeit<br />

Eine sehr starke Anforderung an das System wäre z. B.<br />

• Wenn eine Platine auf das Eingabeförderband gelegt wird, erreicht diese auch<br />

irgendwann das Ausgabeförderband.<br />

Darüber hinaus gibt es viele weitere schwächere Lebendigkeitseigenschaften, bsplw.<br />

• Wenn eine Platine auf das Eingabeförderband gelegt wird, geht irgendwann<br />

das Eingabeförderband an.<br />

4.4 Simulation des Werkstücks<br />

Von speziellem Interesse wird in Kapitel 5 die Simulation des Werkstücks sein. Um<br />

den Realzeitautomaten verstehen zu können, benötigt man einige Variablen, die die<br />

Werte der Sensoren <strong>und</strong> Aktoren der Fehlertoleranten Fertigungszelle darstellen.<br />

29


Tabelle 3 gibt eine Übersicht. Die Mächtigkeit des Wertebereichs <strong>von</strong> rb rot ist 13,<br />

da auch Zwischenpositionen“ derer, die in Abbildung 10 zu sehen sind, angezeigt<br />

”<br />

werden können. Mit diesen Variablen ist es nun möglich, einen Realzeitautomaten<br />

zu konstruieren, der den Lebenszyklus eines Werkstücks abbildet:<br />

Abbildung 12: Lebenszyklus eines Werkstücks<br />

Der Automat beschreibt den Lebenszyklus eines Werkstücks vom Eintritt in das<br />

System über das Eingabeförderband bis zum Austritt über das Ausgabeförderband.<br />

Die erste Zwischenstation ist der rotierende Tisch. Bei diesem Übergang wird zu diskreten<br />

Zeitpunkten überprüft, ob das Eingabeförderband läuft (fb=1). Wenn dies<br />

30


Variable Werte- Beschreibung<br />

bereich<br />

blank start fb {0, 1} 1, wenn sich am Anfang des Eingabeförderbandes<br />

(fb für ”<br />

feed belt“) ein Blech (blank) befindet,<br />

sonst 0<br />

blank end fb {0, 1} 1, wenn sich am Ende des Eingabeförderbandes<br />

ein Blech befindet, sonst 0<br />

blank on tb {0, 1} 1, wenn sich auf dem rotierenden Tisch (tb für<br />

table“) ein Blech befindet, sonst 0<br />

”<br />

tb vert pos {0, 1, 2} die drei vertikalen Positionen des Tisches<br />

(1: ”<br />

am Eingabeförderband“, 0: ” Übergabe an Arm 1“)<br />

tb horiz pos {0, 1, 2} die drei horizontalen Positionen des Tisches<br />

(1: ”<br />

am Eingabeförderband“, 0: ” Übergabe an Arm 1“)<br />

blank in pr1 {0, 1} 1, wenn sich in Presse 1 ein Blech befindet, sonst 0<br />

blank in pr2 {0, 1} 1, wenn sich in Presse 2 ein Blech befindet, sonst 0<br />

press1 pos {0, 1, 2} 1, wenn die Presse 1 ein Blech <strong>von</strong> Arm 1 empfängt,<br />

0 bei Übergabe eines Bleches an Arm 2, sonst 2<br />

press2 pos {0, 1, 2} 1, wenn die Presse 2 ein Blech <strong>von</strong> Arm 1 empfängt,<br />

0 bei Übergabe eines Bleches an Arm 2, sonst 2<br />

rb rot {0,..., 12} die 13 verschiedenen Positionen der Roboterrotation<br />

a1 motor {0, 1, 2} 0 bei ausgefahrenem Arm 1, 1 bei eingefahrenem,<br />

sonst 2<br />

a2 motor {0, 1, 2} 0 bei ausgefahrenem Arm 2, 1 bei eingefahrenem,<br />

sonst 2<br />

blank start db {0, 1} 1, wenn sich am Anfang des Ausgabeförderbandes<br />

(db für ”<br />

deposit belt“) ein Blech befindet, sonst 0<br />

blank end db {0, 1} 1, wenn sich am Anfang des Ausgabeförderbandes<br />

ein Blech befindet, sonst 0<br />

Tabelle 3: Sensor- <strong>und</strong> Aktorvariablen<br />

31


zu 5 Zeitpunkten der Fall war, dann kann der Automat bei richtiger Stellung des<br />

rotierenden Tisches in den Zustand on tb übergehen. Eine unsichere Situation entsteht,<br />

wenn das Eingabeförderband zu lange läuft, ohne dass der rotierende Tisch<br />

sich in richtiger Position zum Förderband befindet. Dies wird mit dem Fehlerzustand<br />

err tb modelliert, zu dem übergegangen wird, wenn blank i den Wert 6 hat, d. h.,<br />

wenn zu 6 Zeitpunkten das Eingabeförderband lief.<br />

Vom rotierenden Tisch aus kann das Blech bei ausgefahrenem Arm 1 <strong>und</strong> passender<br />

Position des Tisches vom Magneten an Arm 1 übernommen werden. Ist eine<br />

Presse in passender horizontaler Position, die Roboterrotation entsprechend <strong>und</strong> der<br />

erste Arm ausgefahren, übernimmt diese das Blech. Schließlich gelangt das Blech,<br />

wenn alle Voraussetzungen stimmen, mit dem Arm 2 des Roboters zum Ausgabeförderband.<br />

Mit diesem Automat, der als Testautomat aufgefasst werden kann, wurden die<br />

<strong>Heuristiken</strong> in Kapitel 5 evaluiert. Der Vorteil ist die leichte Erweiterbarkeit. Ist<br />

bsplw. die Anfrage nach Erreichbarkeit des Zustands end db nicht mehr erfolgreich,<br />

d. h. die Anfrage benötigt mehr als den zugesicherten Speicher, dann kann alternativ<br />

nach der Erreichbarkeit eines anderen, nicht so weit vom Anfangszustand entfernten,<br />

Zustands gefragt werden. Um das System zu vergrößern, kann einfach ein weiteres<br />

Blech zum System hinzugefügt werden. Dies kann sinnvoll sein, wenn die Anfragen<br />

mit einem Blech im System nach kurzer Zeit eine Antwort liefern <strong>und</strong> die Güte der<br />

verschiedenen <strong>Heuristiken</strong> nicht deswegen nicht nachvollzogen werden kann.<br />

32


5 <strong>Heuristiken</strong><br />

Das Kernkapitel dieser Arbeit widmet sich den <strong>Heuristiken</strong>, die die Fehlersuche in<br />

der Realzeitsemantik eines PLC-Automaten so steuern, dass das Ergebnis effizienter,<br />

d. h. in weniger Zeit, gef<strong>und</strong>en wird. Da <strong>zur</strong> Verifikation mit UPPAAL die Realzeitsemantik<br />

<strong>von</strong> PLC-Automaten genutzt wird, haben wir kontextuelle Informationen,<br />

die UPPAAL nicht hat:<br />

• UPPAAL differenziert nicht die verschiedenen Automaten, die im Gesamten<br />

einen PLC-Automaten simulieren. Bsplw. wissen wir, dass es Treiber gibt, die<br />

umweltgesteuerte Variablen setzen.<br />

• Die Realzeitautomaten verhalten sich zyklisch, um das Verhalten der PLC-<br />

Automaten zu simulieren.<br />

Außerdem soll die zu verifizierende Eigenschaft ebenfalls betrachtet werden, um<br />

so die Suche zu steuern. UPPAAL tut dies normalerweise nicht, da da<strong>von</strong> ausgegangen<br />

wird, dass ohnehin der gesamte Zustandsraum durchsucht werden muss.<br />

Es werden zunächst die gef<strong>und</strong>enen <strong>Heuristiken</strong> vorgestellt <strong>und</strong> danach werden<br />

diese evaluiert. Gr<strong>und</strong>lage hierfür ist die im Kapitel 4 beschriebene Fehlertolerante<br />

Fertigungszelle, deren Realzeitsemantik als Eingabe für den Modelchecker UPPAAL<br />

CORA diente. Alle Berechnungen wurden auf einem Pentium-M 1400 MHz mit 1<br />

GB Speicher durchgeführt. Abschließend wird kurz auf die <strong>Implementierung</strong> der<br />

<strong>Heuristiken</strong> in Moby/RT eingegangen.<br />

5.1 Kosten für einen Zyklus<br />

Ein Zyklus eines PLC-Automaten besteht aus den Phasen Polling, Computing <strong>und</strong><br />

Updating. Es kann sinnvoll sein, die Kosten für einen Zyklus zu erhöhen, wenn man<br />

bsplw. die Information hat, dass das Modell mit wenigen Änderungen der Eingabevariablen<br />

auskommt, um den Fehler zu erzeugen.<br />

Wie bereits in Kapitel 2.3 beschrieben, wird für den Wert des Programmzählers<br />

eine eigene Variable reserviert. Die Addition der Kosten C 1 muss lediglich während<br />

der tick-Transitionen passieren:<br />

33


Abbildung 13: Der Programmzähler, versehen mit Kosten für einen Zyklus<br />

5.2 Kosten für die Änderung einer Eingabevariable<br />

Das Ändern des Wertes einer Eingabevariable hat im Allgemeinen großen Einfluss<br />

auf das Verhalten des Systems. Unter Umständen sind mehrere Computing-Phasen<br />

nötig, bis die Auswirkungen komplett berechnet worden sind. Gr<strong>und</strong>sätzlich kann<br />

allerdings in jeder Polling-Phase eine Wertänderung der Eingabevariable passieren,<br />

da die Umwelt dies theoretisch zulässt. Die Zahl der möglichen Folgezustände erhöht<br />

sich immens, weswegen es sich anbietet, die Transitionen, die eine Eingabevariable<br />

ändern, mit höheren Kosten (im Vergleich zu allen anderen Transitionen) zu versehen.<br />

In Kapitel 2.3 wurde besprochen, dass für jede <strong>von</strong> der Umwelt gesteuerte Variable<br />

ein Treiber eingeführt wird, der eine Wertänderung zu jeder Zeit zulässt.<br />

Außerdem kann die Variable ein beliebiges Element ihres Wertebereichs annehmen.<br />

Wir erreichen nun dadurch, dass wir jeder Treibertransition die Kosten C 2 zuordnen,<br />

den gewünschten Effekt:<br />

Abbildung 14: Treiber für Variable t (v ∈ dom(t) beliebig)<br />

34


5.3 Abstand zum Fehlerzustand<br />

Die gr<strong>und</strong>sätzliche Idee dieser Heuristik ist, dass jedem Zustand ein heuristischer<br />

Wert zugeordnet wird, <strong>und</strong> zwar in Abhängigkeit zu der Anzahl der Transitionen,<br />

die aus diesem Zustand noch gefeuert werden müssen, um zum Fehlerzustand zu<br />

gelangen. Ist <strong>von</strong> einem Zustand aus der Fehlerzustand nicht mehr erreichbar, so<br />

wird als heuristischer Wert unendlich zugeordnet 3 .<br />

Es sollen die Realzeitautomaten A 1 ,...,A n auf eine bestimmte Eigenschaft untersucht<br />

werden. Seien für die Automaten A 1 ,...,A k die Zielzustände d i , i ∈ {1,...,k}<br />

bekannt, dann bieten sich folgende Varianten der Heuristik an:<br />

• f(q 1 ,...,q k ) = ∑ k<br />

i=1 dist(q i,d i ) · C 3<br />

• f(q 1 ,...,q k ) = ∏ k<br />

i=1 (1 + dist(q i,d i ) · C 3 )<br />

wobei dist(q,q ′ ) die Mindestanzahl der Transitionen liefert, die gefeuert werden<br />

müssen um <strong>von</strong> q nach q ′ zu gelangen.<br />

Diese Heuristik innerhalb der Realzeitsemantik der PLC-Automaten umzusetzen,<br />

gestaltet sich nicht so einfach, wie bei den vorher vorgestellten heuristischen<br />

Ansätzen. Sie wird deshalb Hauptthema des Kapitels 5.5 sein.<br />

Um UPPAAL CORA noch deutlicher in Richtung des Zielzustands zu lenken,<br />

werden wir noch eine zusätzliche Variante probieren: Für den Fall, dass q <strong>und</strong> q ′<br />

Zustände sind, es eine Kante <strong>von</strong> q nach q ′ gibt <strong>und</strong> q ′ dem Zielzustand näher ist<br />

als q, reduzieren wir den heuristischen Wert für q, je nachdem wie viele Variablen<br />

den passenden Wert haben, um die Kante <strong>von</strong> q nach q ′ zu nehmen.<br />

5.4 Evaluation<br />

Zur Evaluation wurde der Werkstück-Automat aus Kapitel 4.4 genutzt. In Tabelle<br />

4 sind die Ergebnisse (Zeit in Sek<strong>und</strong>en) mit einem einzigen Blech im System zu<br />

sehen. Gewünscht ist, dass dieses Werkstück bis zu Ende des Ausgabeförderbandes<br />

3 Praktisch reicht ein Wert, der größer als alle Werte ist, die Zuständen zugeordnet sind, <strong>von</strong><br />

denen aus der Fehlerzustand erreichbar ist. Denn UPPAAL betrachtet diesen Pfad dann nicht<br />

weiter.<br />

35


( deposit belt“) kommt, <strong>und</strong> schon bei dieser Aufgabe liefert die Breitensuche kein<br />

”<br />

Ergebnis trotz 900 MB Speicher <strong>und</strong> das Ergebnis der Tiefensuche ist mit 777.09<br />

Sek<strong>und</strong>en sehr viel schlechter als mit <strong>Heuristiken</strong>. Sobald allerdings die Heuristik<br />

des Abstands zum Fehlerzustand UPPAAL CORA als Wert für heur übergeben<br />

wird, findet die Suche smallest heur first“, die den Pfad des kleinsten Wertes <strong>von</strong><br />

”<br />

heur als Erstes verfolgt, einen Ablauf in gut 20 Sek<strong>und</strong>en. heur wird in diesem Fall<br />

berechnet, wie in Kapitel 5.3 beschrieben, wobei der Werkstück-Automat derjenige<br />

ist, dessen Zielzustand wir kennen. Die randomisierte Tiefensuche liefert zwar nach,<br />

im Vergleich guten, 30,53 Sek<strong>und</strong>en im Schnitt ein Ergebnis, allerdings bleibt ein<br />

Versuch erfolglos.<br />

C 1 C 2 C 3 bf df rdf 4 shf bf (c+r) rbdf (c+r)<br />

0 0 10 21.63 22.03 21.32<br />

0 1 10 22.03 19.68 19.28<br />

1 0 10 21.83 22.14 20.92<br />

1 1 10 k.A. 5 777.09 30.53 6 22.75 19.92 19.48<br />

0 0 10* 40.81 41.53 21.01<br />

0 1 10* 1068.65 21.73 19.69<br />

1 0 10* 40.91 40.33 20.91<br />

1 1 10* 1063.52 21.84 19.49<br />

Tabelle 4: Evaluation mit einem Blech im System (mit Ziel: end db)<br />

Die Optimierungsidee, pro Variable, die den gewünschten Wert hat, um eine Kante<br />

zu nehmen, den heuristischen Wert weiter zu reduzieren (gekennzeichnet durch<br />

* in der Spalte C 3 ), erweist sich hier übrigens als kontraproduktiv, da die Zeiten<br />

hierbei um 40 Sek<strong>und</strong>en liegen. Sowohl bei der Suche bf als auch bei ”<br />

randomdepth-best-first“<br />

wurde remaining der gleiche Wert wie heur zugeordnet, deswegen<br />

überrascht es kaum, dass die Ergebnisse bei diesen Suchen ähnlich um 20 Sek<strong>und</strong>en<br />

liegen wie bei der Suche bf.<br />

Die Hinzunahme <strong>von</strong> Kosten für einen Zyklus führt zu keiner relevanten Verbesserung,<br />

aber bei den Suchen bf <strong>und</strong> rdbf macht sich das Erhöhen der Kosten<br />

4 Es wird ein Durchschnittswert <strong>von</strong> zehn Versuchen angegeben.<br />

5 Nach ca. 40 Minuten war der zugesicherte Speicher <strong>von</strong> 900 MB aufgebraucht.<br />

6 Ein Versuch blieb bei vorgesehenem Speicher <strong>von</strong> 900 MB erfolglos.<br />

36


für eine Treibertransition bemerkbar. Dies kann daran liegen, dass Pfade, auf denen<br />

Treibertransitionen genommen werden, <strong>von</strong> UPPAAL CORA zunächst nicht weiter<br />

betrachtet werden. UPPAAL CORA findet dann schneller einen gewünschten Ablauf,<br />

da das System auch keine Treibertransitionen ausführen muss, um das Blech<br />

auf das Ende des Ausgabeförderbandes zu transportieren.<br />

∑ ∏<br />

C 1 C 2 C 3 | bf df rdf shf<br />

∑<br />

0 0 10<br />

1.22<br />

∑<br />

0 1 10<br />

1.23<br />

∏<br />

0 0 10<br />

1.22<br />

∏<br />

0 1 10 5.41 127.74 1.23 7 1.23<br />

∑<br />

0 0 10*<br />

1.22<br />

∑<br />

0 1 10*<br />

1.23<br />

∏<br />

0 0 10*<br />

1.23<br />

∏<br />

0 1 10*<br />

1.22<br />

Tabelle 5: Evaluation mit zwei Blechen (Ziele: start fb, end fb)<br />

∑ ∏<br />

C 1 C 2 C 3 | bf df rdf shf<br />

∑<br />

0 0 10<br />

2.55<br />

∑<br />

0 1 10<br />

2.65<br />

∏<br />

0 0 10<br />

2.56<br />

∏<br />

0 1 10 k.A. 8 128.95 1.94 9 2.65<br />

∑<br />

0 0 10*<br />

3.16<br />

∑<br />

0 1 10*<br />

3.47<br />

∏<br />

0 0 10*<br />

3.27<br />

∏<br />

0 1 10*<br />

3.47<br />

Tabelle 6: Evaluation mit zwei Blechen (Ziele: start fb, on tb)<br />

7 Dieses Ergebnis wurde bei drei Versuchen erzielt, die restlichen sieben Versuche blieben erfolglos.<br />

8 Nach ca. 30 Minuten war der vorgesehene Speicher <strong>von</strong> 900 MB aufgebraucht.<br />

9 Dieses Ergebnis wurde bei einem Versuch erzielt, die restlichen neun Versuche blieben erfolglos.<br />

37


∑ ∏<br />

C 1 C 2 C 3 | bf df rdf shf<br />

∑<br />

0 0 10<br />

2.55<br />

∑<br />

0 1 10<br />

2.65<br />

∏<br />

0 0 10<br />

2.55<br />

∏<br />

0 1 10 k.A. 136.47 1.94 10 2.56<br />

∑<br />

0 0 10*<br />

3.16<br />

∑<br />

0 1 10*<br />

3.37<br />

∏<br />

0 0 10*<br />

3.06<br />

∏<br />

0 1 10*<br />

3.37<br />

Tabelle 7: Evaluation mit zwei Blechen (Ziele: end fb, on tb)<br />

Die Tabellen 5, 6, 7 zeigen nun die Ergebnisse der Versuche mit zwei Blechen im<br />

System der Fehlertoleranten Fertigungszelle. UPPAAL CORA vermag maximal noch<br />

zu verifizieren, dass ein Werkstück bis auf den Tisch gelangt, was aber angesichts<br />

der Größe des ganzen Systems auch nicht verw<strong>und</strong>ern sollte.<br />

Zwar liefert die randomisierte Tiefensuche erstaunlich schnelle Ergebnisse, allerdings<br />

war dies nur maximal bei drei <strong>von</strong> zehn Versuchen der Fall (drei für start fb,<br />

end fb, einer bei start fb, on tb <strong>und</strong> zwei bei end fb, on tb) <strong>und</strong> ist somit nicht<br />

wirklich mit der heuristisch unterstützten Suche zu vergleichen. Diese liefert für die<br />

Verifikation, dass ein Blech auf den Tisch <strong>und</strong> eins ans Ende des Eingabeförderbands<br />

gelangt, das Ergebnis mehr als 50-mal schneller als die Tiefensuche.<br />

Der Vergleich der Varianten Summe <strong>und</strong> Produkt für die Heuristik zum Abstand<br />

zum Fehlerzustand lässt sich nicht ziehen, da die Heuristik sehr schnell Ergebnisse<br />

für diese Anfragen liefert, aber leider für komplexere Anfragen nicht zum Ende<br />

kommt. Trotzdem kann gerade die Heuristik, die sich nach Abstand zum Fehlerzustand<br />

berechnet, als Erfolg gewertet werden. Die Variante des Reduzierens des<br />

heuristischen Wertes pro Variable, die den gewünschten Wert hat, führt nicht zu<br />

besseren Ergebnissen <strong>und</strong> wird aus diesem Gr<strong>und</strong> auch nicht implementiert werden.<br />

10 Dieses Ergebnis wurde bei zwei Versuchen erzielt, die restlichen acht Versuche blieben erfolglos.<br />

38


5.5 <strong>Implementierung</strong><br />

Neben dem UPPAAL-Service-Fenster, das dem Benutzer ermöglicht, einen Namen<br />

der ta-Datei sowie die zu abstrahierenden Variablen anzugeben, existiert nun ein<br />

CO-UPPAAL-Service-Fenster, mit dem der Benutzer zusätzlich die heuristischen<br />

Eingaben tätigen kann. Es existieren Textfelder <strong>zur</strong> Eingabe der gewünschten Kosten<br />

für einen Zyklus <strong>und</strong> eine Treibertransition sowie ein Switch, ob die Heuristik aus<br />

Kapitel 5.3 mit Produkt oder Summe berechnet werden soll.<br />

Abbildung 15: CO-UPPAAL-Service-Fenster<br />

Die <strong>Implementierung</strong> der Kosten für Zyklus <strong>und</strong> Treibertransition gestaltete sich<br />

dann nicht sehr schwierig, was sich mit den Kapiteln 5.1 <strong>und</strong> 5.2 nachvollziehen lässt.<br />

Deswegen wird hierauf innerhalb dieses Kapitels nicht weiter eingegangen.<br />

39


Vielmehr soll das Augenmerk auf die Verwirklichung der Heuristik aus Kapitel<br />

5.3 gesetzt werden. Um den Abstand eines Zustands q zum Zielzustand d zu ermitteln,<br />

wurde zunächst eine Adjazenzmatrix A des Graphen, der den zugehörigen<br />

PLC-Automaten darstellt, errechnet. Mit den Potenzen dieser Matrix ließ sich die<br />

Distanzmatrix berechnen, aus der letztlich der heuristische Wert berechnet werden<br />

kann.<br />

Listing 1 zeigt beispielhaft, wie die Berechnung des heuristischen Werts heur in<br />

UPPAAL CORA funktioniert. Die innerhalb des after update-Blockes angegebenen<br />

Berechnungen werden vom Modelchecker nach Schalten einer Transition durchgeführt.<br />

Das Beispiel zeigt, wie heur als Produkt aufgr<strong>und</strong> der Heuristik Abstand ”<br />

zum Fehlerzustand“ für zwei Werkstücke (vgl. Abbildung 12) berechnet wird, wobei<br />

err tb jeweils der Zielzustand ist. Mittels des UPPAAL-Service <strong>von</strong> Moby/PLC<br />

wird automatisch zu jedem Automaten eine Variable (im Beispiel: blank0 states<br />

<strong>und</strong> blank1 states) erstellt, die den aktuellen Zustand des Automaten speichert.<br />

Außerdem werden Konstanten <strong>zur</strong> Verfügung gestellt, um die Zustandsvariable abfragen<br />

zu können (z. B. ENUM blank0 states start).<br />

Listing 1: Beispiel einer after update-Definition<br />

after update {<br />

heur = 0<br />

+ (1<br />

+ ( blank0 states==ENUM blank0 states start ? 3 : 0 )<br />

+ ( blank0 states==ENUM blank0 states start fb ? 2 : 0 )<br />

+ ( blank0 states==ENUM blank0 states end fb ? 1 : 0 )<br />

+ ( blank0 states==ENUM blank0 states err tb ? 0 : 0 )<br />

)<br />

∗ (1<br />

+ ( blank1 states==ENUM blank1 states start ? 3 : 0 )<br />

+ ( blank1 states==ENUM blank1 states start fb ? 2 : 0 )<br />

+ ( blank1 states==ENUM blank1 states end fb ? 1 : 0 )<br />

+ ( blank1 states==ENUM blank1 states err tb ? 0 : 0 )<br />

)<br />

}<br />

40


6 Schlussbetrachtung<br />

6.1 Zusammenfassung<br />

Neben der Möglichkeit, PLC-Automaten in konkreten Source-Code für Speicherprogrammierbare<br />

Steuerungen zu übersetzen, bietet sich ihre Realzeitsemantik <strong>zur</strong><br />

Verifikation mit UPPAAL an, da sie kontextuelle Information bietet, die UPPAAL<br />

nicht hat. Die Realzeitsemantik <strong>von</strong> PLC-Automaten dient als Eingabe für UPPAAL<br />

CORA. Die kontextuelle Information kann genutzt werden, um UPPAAL CORA bei<br />

der Suche nach Fehlern zu lenken, indem den Transitionen der Realzeitautomaten<br />

Kosten zugeordnet werden oder die Reihenfolge der zu erk<strong>und</strong>enden Zustände festgelegt<br />

wird. Speziell die heuristische Idee, dass Zustände, die dem Fehlerzustand<br />

am nächsten sind, zuerst erk<strong>und</strong>et werden, führte dazu, dass UPPAAL CORA das<br />

gewünschte Ergebnis in erheblich weniger Zeit lieferte.<br />

6.2 Ausblick<br />

Im Rahmen dieser Arbeit war es lediglich möglich, die heuristischen Ideen an einer<br />

einzigen Fallstudie zu evaluieren, es bliebe zu prüfen, wie sie in anderen Fallbeispielen<br />

abschneiden. Insbesondere die Kosten für das Setzen einer umweltgesteuerten<br />

Variable haben sich innerhalb der Evaluation nicht in dem Maße ausgezahlt, wie<br />

das vielleicht zu erwarten war.<br />

Der Benutzer muss <strong>zur</strong>zeit die Zielzustände der PLC- bzw. Realzeitautomaten<br />

in Moby/PLC selber angeben, es wäre sicherlich sinnvoller, wenn als zuätzliche kontextuelle<br />

Information die zu verifizierende Eigenschaft herangezogen wird. Näheres<br />

entnehme der interessierte Leser hierzu [7].<br />

Darüber hinaus gilt es, die kontextuelle Information, die durch Verwendung der<br />

Realzeitsemantik <strong>von</strong> PLC-Automaten besteht, besser zu nutzen <strong>und</strong> weitere heuristische<br />

Ideen zu entwickeln, um die Suche nach Fehlern effizient steuern zu können.<br />

41


Abbildungsverzeichnis<br />

1 Zyklus einer SPS (Quelle: [13]) . . . . . . . . . . . . . . . . . . . . . . 6<br />

2 Der Programmzähler . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

3 Zugsensorsteuerung 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

4 Typischer Ablauf der Zugsensorsteuerung 1 (Quelle: [13]) . . . . . . . 11<br />

5 Zugsensorsteuerung 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

6 Typischer Ablauf der Zugsensorsteuerung 2 (Quelle: [13]) . . . . . . . 12<br />

7 Realzeitsemantik <strong>von</strong> Zugsensorsteuerung 1 . . . . . . . . . . . . . . . 13<br />

8 Beispiel eines LPTA . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

9 Fehlertolerante Fertigungszelle (Sicht <strong>von</strong> oben) . . . . . . . . . . . . 25<br />

10 Positionen der Roboterrotation (Sicht <strong>von</strong> oben) . . . . . . . . . . . . 26<br />

11 Seitenansicht <strong>von</strong> Roboter <strong>und</strong> Presse . . . . . . . . . . . . . . . . . . 27<br />

12 Lebenszyklus eines Werkstücks . . . . . . . . . . . . . . . . . . . . . . 30<br />

13 Der Programmzähler, versehen mit Kosten für einen Zyklus . . . . . . 34<br />

14 Treiber für Variable t (v ∈ dom(t) beliebig) . . . . . . . . . . . . . . . 34<br />

15 CO-UPPAAL-Service-Fenster . . . . . . . . . . . . . . . . . . . . . . 39<br />

Literatur<br />

[1] R. Alur and D. Dill. A theory of timed automata. 1994.<br />

[2] G. Behrmann. Uppaal cora. http://www.cs.aau.dk/~behrmann/cora/, 2004.<br />

[3] G. Behrmann, E. Brinksma, M. Hendriks, and A. Mader. Production<br />

scheduling by reachability analysis a case study.<br />

www.cs.ru.nl/ita/publications/papers/martijnh/AXXOM/axxom.pdf,<br />

2004.<br />

42


[4] G. Behrmann and A. Fehnker. Efficient guiding towards cost-optimality in<br />

uppaal. In TACAS 2001: Proceedings of the 7th International Conference on<br />

Tools and Algorithms for the Construction and Analysis of Systems, pages 174–<br />

188. Springer-Verlag, 2001.<br />

[5] H. Dierks. The production cell: A verified real-time system. In B. Jonsson<br />

and J. Parrow, editors, Formal Techniques in Real-Time and Fault-Tolerant<br />

Systems, volume 1135, pages 208–227. Springer-Verlag, 1996.<br />

[6] H. Dierks. Plc-automata: A new class of implementable real-time automata.<br />

In M. Bertran and T. Rus, editors, Transformation-Based Reactive Systems<br />

Development, volume 1231, pages 111–125. Springer-Verlag, 1997.<br />

[7] H. Dierks. Heuristic guided model-checking of real-time systems, 2004.<br />

[8] H. Dierks. Verifikation <strong>von</strong> hybriden systemen, 2004.<br />

[9] U. Knauer. Diskrete Strukturen - kurz gefasst. Spektrum Akademischer Verlag<br />

GmbH, 2001.<br />

[10] K. G. Larsen, G. Behrmann, E. Brinksma, A. Fehnker, T. S. Hune, P. Pettersson,<br />

and J. Romijn. As cheap as possible: Efficient cost-optimal reachability for<br />

priced timed automata. pages 493–505, 2001.<br />

[11] C. Lewerentz and T. Lindner. Case Study Production Cell. 1993.<br />

[12] P. Niebert. The vhs esprit project homepage.<br />

http://www-verimag.imag.fr/VHS/main.html, 2005.<br />

[13] E.-R. Olderog, M. Schenke, and H. Dierks. Realzeitsysteme vorlesungsskript,<br />

2003.<br />

[14] A. Project. Ametist. http://ametist.cs.utwente.nl/, 2005.<br />

[15] U. UNIVERSITET and A. UNIVERSITY. Uppaal - home. www.uppaal.com,<br />

2005.<br />

[16] J. Xu, B. Randell, and A. Romanovsky. A generic approach<br />

to structuring and implementing complex fault-tolerant software.<br />

www.comp.leeds.ac.uk/edemand/publications/xu02a.pdf, 2002.<br />

43

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!