Simulation von Petri-Netzen
Programme zum Simulieren von Petri-Netzen:
etliche Werkzeuge vorhanden, vgl.
Petri Nets Tool Database
PIPE5
für schöne Bilder und einfache Analysen
Modelica-Bibliothek
PNlib
für komplexere Simulationen und hierarchisch aufgebaute Modelle
Aufbau des Beispiels "Beschwerde" mit Dymola/PNlib:
Stellen mit
PD
(Discrete Place)
Parameter für Zahl der Eingänge, Ausgänge und Start Tokens angeben
Parameter
minTokens
auf 0 (default)
Parameter
maxTokens
auf 1
Transitionen mit
TD
(Discrete Transition)
Parameter
nIn
und
nOut
setzen
Parameter
delay
hier auf 1 (default), nicht 0 (sonst sofort fertig)
Parameter
firingCon
für "cold transitions" verwenden (z. B.
t > 8
)
Verbindungen
direkt bei 1 Eingang → 1 Ausgang
sonst Indizes angeben
Block
Settings
hinzufügen für
globale Einstellungen zur Darstellung
globale Seed für Zufallszahlen
Verschönerung durch eigene Blöcke in DiscSimLib:
Leitungsführung in PNlib sehr unübersichtlich
Vektoranschlüsse → alle Eingänge/Ausgängen landen/starten an einem Punkt
Animation des Diagramms wichtig zur Ergebnisdarstellung
einfache Hilfsblöcke in
DiscSimLib/PetriNets
für Stellen und Transitionen
mehrere Ein-/Ausgänge statt Vektoren
Varianten für verschiedene Geometrien
nur wenige, hier wichtige Parameter
Simulationsergebnisse:
Simulation laufen lassen und Diagram-Fenster anzeigen
Animation zeigt wechselnde Belegungszustände der Stellen (
s.o.
)
alternativ Belegungen (
P0.t
etc.) als Kurven anzeigen lassen
T1, T2 schalten gleichzeitig (vgl. P3, P4)
Erweiterungen:
zufällige Delays bei T1, T2
Transitionsblock vom Typ
TDS
("stochastic") statt
TD
Auswahl zwischen verschiedenen Verteilungen incl. Parametern und Seed
Entscheidung zwischen T4 und T5 in P5
default: nach Priorität (hier: 1. Ausgang zuerst)
alternativ: über Wahrscheinlichkeit
Ergebnis
Hierarchie von Petri-Netzen:
komplexe Netze übersichtlicher durch Subsysteme
ersetze Teilsystem, das nur Stellen als Ein- und Ausgänge enthält, durch Stelle
ersetze Teilsystem, das nur Transitionen als Ein- und Ausgänge enthält, durch Transition
konkret im Beispiel
linke Verzweigung → Stelle
GetInfos
in Modelica-Umgebung kein Problem
Subsystem einführen
im Subsystem mehrere Ein-/Ausgänge einführen und neu verbinden
dynamisches Icon hinzufügen, z.B.
textString = DynamicSelect("0", if settings.animateMarking then String(tAll) else " ")
hierarchisches Modell
Gesamtmodell
Subsystem
GetInfos