# Poses++

Poses++ ist ein Softwaresystem zur Modellierung und Simulation beliebiger diskreter, diskontinuierlicher Prozesse und gehört zur ereignisorientierten Simulation. Der Name Poses++ wurde gebildet aus der Bezeichnung Prädikat/Transitions-Netz Orientiertes Simulations- und EntwurfsSystem, wobei ein Prädikat/Transitions-Netz zu den kompliziertesten Petri-Netzen gehört, das in seiner Dynamik komplexe Daten mittels Prädikatenlogik transformiert. Simulativ untersuchen lassen sich zum Beispiel Algorithmen, Hardware- und Softwaresysteme, Prozesse verschiedenster Art, Anlagen aus Produktion und Logistik, aber auch organisatorische und soziale Problemstellungen.

## Modellierung

Ein Prädikat/Transitions-Netz ist ein attributiertes Petri-Netz, dessen Daten als Marken mit einfachen oder strukturierte Datentypen in Prädikaten liegen und von Transitionen mit komplex beschriftbaren Kanten verändert werden. Viele einfachere graphentheoretischen Ansätze wie zum Beispiel der Zustandsgraph oder die Warteschlangentheorie und alle einfacheren Petri-Netze können als Spezialfall eines Prädikat/Transitions-Netzes betrachtet und auch modelliert werden.
Die somit regelbasierte Modellierung ermöglicht Poses++ mit einer zu den deklarativen Programmiersprachen gehörigen objektorientierten Modellierungssprache, mit der in module gekapselte Teilfunktionen vergleichbar zu Klassen in C++ entwickelt und verwendet werden können. Durch Instanziierung solcher module entsteht eine Objekthierarchie. Zur Simulation wählt der Nutzer ein solches module aus und erklärt es zum Modell, wodurch sich automatisch die Menge der beteiligten Prädikate und Transition ergibt.
Als Beispiel ist das Prädikat/Transitions-Netz eines vereinfachten Schaltventils für ein Medium (Pneumatik, Hydraulik) dargestellt, das anstehenden Eingangsdruck entsprechend seinem Schaltzustand als Ausgangsdruck zur Verfügung stellt.

## Funktionalität

Die zu Poses++ gehörigen Softwarekomponenten bilden eine Client/Server-Umgebung. Die eigentliche Simulationsrechnung übernimmt ein Task, der als Simulationsserver bezeichnet wird. Zu diesem Zweck werden die Poses++-Modelle von einem systemeigenen Compiler in geeigneten C++-Quelltext übersetzt, dieser wird mit einem der unterstützten C++-Compiler in dynamisch ladbaren Binärcode je nach Betriebssystem in Form einer DLL bzw. einer Shared Library transformiert und letztlich von einem Simulationsserver auf Anforderung eines Clients geladen. Dort wird ein gewähltes module zum Modell instanziiert. Für den Entwicklungsprozess, die Durchführung und Auswertung von Experimenten und auch deren Visualisierung stehen verschiedene Client-Komponenten zur Verfügung. Alle Poses++-Komponenten kommunizieren untereinander via TCP/IP und UDP, auch wenn sie lokal auf nur einem Computer genutzt werden. Die Kommunikationsschnittstellen, die fast durchgängig auch die Skript-Sprache Tcl integrieren, sind vollständig dokumentiert. Zudem bietet die Software für die Entwicklung eigener Client-Anwendungen Schnittstellen in C++ und Delphi.
Die Laufzeit von Poses++-Modellen skaliert linear zur Modellgröße. Verdoppelt man die Größe eines Modells, indem man ein module in einem übergeordneten module zwei Mal voneinander unabhängig instanziiert, benötigt Poses++ nach einer kurzen Lernphase gleich nach dem Experimentstart nahezu exakt die doppelte Rechenzeit. Da bei praktischen Modellen mit wachsender Modellgröße oft auch die Detaillierung zunimmt und damit die Abhängigkeiten im zugrundeliegenden Graphen feiner beschrieben werden, ist es für Poses++ nicht ungewöhnlich, dass der Rechenzeitbedarf auch geringer als linear mitwächst.
Diese Eigenschaft und die Umsetzung der Modelle in laufzeiteffizienten Binärcode ermöglichen besonders komplexe Aufgabenstellungen und Echtzeitsimulationen bei hohem Detailgrad der Modelle.

## Anwendung

Eingesetzt wird Poses++ als klassisches Simulationswerkzeug zur simulativen Untersuchung, Bewertung und Optimierung von verschiedensten Systemen. Sehr erfolgreich wurde Poses++ aber auch als Echtzeit-Simulationssystem in Kombination mit Matlab/Simulink in einer hybriden Simulationsumgebung (diskret, diskontinuierliche Poses++-Modelle gekoppelt mit kontinuierlichen Matlab-Modellen) angewandt, um komplexe Automatisierungstechnik (Steuerungshard- und software) anstelle vor Ort an der realen Anlage vorher im Labor mit Hilfe vollständig simulierter Anlagen in Betrieb nehmen zu können.

## Historie

Entwickelt wird das Simulationssystem von dem Unternehmen GPC mbH. Seit der ersten Version 1.0, die im Februar 1996 veröffentlicht wurde, steht das regelmäßig weiterentwickelte System im Internet zum Download zur Verfügung. Die enthaltene Lizenzschranke wurde von anfänglich 100 schrittweise auf 500 Modellelemente erhöht und ermöglicht für die Mehrzahl aller entwickelten Modelle eine kostenlose Nutzung.