Co-Simulation mittels OPC UA

Elektrotechnik & Informationstechnik, Institut für Automatisierungstechnik, Professur für
Prozessleittechnik
Prozessleittechnik / AG Systemverfahrenstechnik
AUTOMATION 2016
Co-Simulation mittels OPC UA
Stephan Hensel¹, Markus Graube¹, Leon Urbas¹, Till Heinzerling², Mathias Oppelt²
(¹TU Dresden, ²Siemens AG)
Baden-Baden, 07.06.2016
Agenda
 Motivation
 Konzept
• Architekturüberblick
• Workflow
 Umsetzung
• Prototyp
• Anwendungsbeispiel
 Zusammenfassung und Ausblick
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
2
Motivation
 Hohe Kosten durch Spezifikationsund Implementierungsfehler
 Frühzeitige Fehlererkennung durch
Simulation
 Spezifische Simulationswerkzeuge
[1]
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
3
Motivation
 Zielstellung
• Untersuchung konzeptioneller Machbarkeit einer Middleware zur Kopplung verschiedener
Simulationssysteme
• Analyse des Beitrags von OPC UA für Verringerung von Konfigurations- und
Anpassungsaufwänden
 Ansatz:
• Integration von Einzelmodellen in eine Co-Simulationsumgebung
• Verwendung von OPC UA als generische Middleware
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
4
Konzept
Ausgangspunkt
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
Portverschaltung im
Server
Portlverschaltung
im Simulator
Client Adapter
OPC UA für CoSim
Aggregating Server
OPC UA
Bestehende CoSimulationsansätze mittels
OPC UA
Aggregating Server mit
Portverschaltung im
Server
5
Architektur der Co-Simulationsumgebung
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
6
Architektur der Co-Simulationsumgebung
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
7
Architektur der Co-Simulationsumgebung
CoSimStatusType
::Enumeration
SimulatorType
::BaseObjectType
EnumStrings
Attribute
DataType = LocalizedText
ValueRank = OneDimensionalArray
ArrayDimension = {5}
Value = { „NOSIMULATION“,
„LOADED“,
„STOPPED“,
„RUNNING“,
„PROCEEDING“ }
ModelIdentifier
::PropertyType
Type
::PropertyType
URL
::PropertyType
Status
Attribute
DataType = CoSimStatusType
ValueRank = Scalar
ArrayDimension
Value = 1
SignalComponentType
::BaseObjectType
DataItem
::DataItemType
Quality
::PropertyType
Version
::PropertyType
CoSimStatusType
::Enumeration
SimulatorType
::BaseObjectType
InputList
::BaseObjectType
EnumStrings
Attribute
DataType = LocalizedText
ValueRank = OneDimensionalArray
ArrayDimension = {5}
Value = { „NOSIMULATION“,
„LOADED“,
„STOPPED“,
„RUNNING“,
„PROCEEDING“ }
ModelIdentifier
::PropertyType
Type
::PropertyType
URL
::PropertyType
Signal
Organizes
Status
Attribute
DataType = CoSimStatusType
ValueRank = Scalar
ArrayDimension
Value = 1
TimeStamp
::PropertyType
SignalType
::BaseObjectType
ControlSignalGroup
SignalComponentType
::BaseObjectType
DataItem
::DataItemType
Quality
::PropertyType
Version
::PropertyType
TimeStamp
::PropertyType
SignalType
::BaseObjectType
InputList
::BaseObjectType
Organizes
InputSignalGroup
Signal
Organizes
Organizes
ControlSignalGroup
InputSignalGroup
OutputList
::BaseObjectType
OutputList
::BaseObjectType
Organizes
OutputSignalGroup
Organizes
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
OutputSignalGroup
8
Konzept
Workflow
• Erstellung von Simulationsmodellen
Modellierung
• Informationsmodellerstellung
Konfiguration
Kopplung
Laufzeit
• Browse
• Portverschaltungen
• Wertaktualisierung
• Simulationssteuerung
• Simulationsergebnisse
Auswertung
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
9
Konzept
OPC UA Client
Informationsmodellabfrage
Browse,
BrowseNext
4
OPC UA Server
7
Informationsmodelldaten
6
Informationsmodellerstellung
(Methodenaufruf)
2
OPC UA Server
OPC UA Client
OPC UA Server
Call – register()
Browse,
BrowseNext
2
3
OPC UA Client
1
Adapter
5
Adapter
Aggregating
Server
Aggregating
Server
Informationsmodellaggregation und -abfrage
OPC UA Server
OPC UA Client
Browse-Ergebnisse
3
Schnittstelle Simulator A
1
Schnittstelle Simulator A
Simulatordaten
Simulator A
Baden-Baden, 07.06.2016
UI
Simulator A
Co-Simulation mittels OPC UA
10
Konzept
Aggregating
Server
Portverschaltung
3
OPC UA Client
Adapter
Subscription-Erstellung
für Output-Ports
OPC UA Server
Portverschaltung
CreateMonitoredItems (Methodenaufruf)
Referenzerstellung für Portverschaltung
(EingangA <-> AusgangX)
Call – connectPorts()
4
2
OPC UA Server
OPC UA Client
Portverschaltungen
1
Schnittstelle Simulator A
UI
Simulator A
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
11
Konzept
Wertaktualisierung
3
OPC UA Server
OPC UA Client
4
5
Aktualisierte
Ausgänge
2
OPC UA Server
OPC UA Client
OPC UA Server
1
6
Schnittstelle Simulator A
Schnittstelle Simulator B
Aktualisierte
Ausgänge
Aktualisierte
Eingänge
Simulator A - Slave
Baden-Baden, 07.06.2016
OPC UA Client
Simulator B - Master
Co-Simulation mittels OPC UA
12
Konzept
Simulationssteuerung
3
OPC UA Client
Methodenaufruf
OPC UA Server
Methodenaufruf
Call
Call
2
4
OPC UA Server
OPC UA Client
OPC UA Server
OPC UA Client
Steuerbefehle
5
5
1
Schnittstelle Simulator A
Schnittstelle Simulator B
Simulator A - Slave
Simulator B - Master
UI
Steuerbefehle
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
13
Konzept
Simulationssteuerung
 Zustandsübergangsgraph
NOSIMULATION
close
 Aggregating Server Methoden
open
LOADED
reset
init
STOPPED
stop
start
RUNNING
doProceed
•
register(url, rootNodeId)
•
unregister(url)
•
setMaster(url)
•
connectSignals(inSim, inSig, outSim, outSig)
•
disConnectSignals(inSim, inSig, outSim, outSig)
•
open(), close(), init(), reset(), start(), stop(), doStep(),
doProceed(), setSpeed(), createSnapshot(),
loadSnapshot()
•
Aufruf der entsprechenden Methoden in den
angeschlossenen Simulatoren
PROCEEDING
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
14
Umsetzung
Prototyp
 Co-Simulationsumgebung
• Aggregating Server
• Simulatorspezifische Adapter für
SIMIT und FMI
 open62541 als OPC UA Stack
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
15
Umsetzung
Anwendungsbeispiel
Tankmodell
Mischen
FMI1
SIMIT2
Filter
Mischen
Reaktor
Abfüllung
SIMIT 1
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
16
Zusammenfassung
 Flexibles Co-Simulationskonzept mittels OPC UA
• Semantische Selbstbeschreibungsmechanismen
• Sichere Kommunikation
 Vorteile
• Wiederverwendbarkeit bestehender Simulationsmodelle
• Anwendungsfallorientierter Einsatz von Simulationswerkzeugen
• Resourceneinsparung
• Eingliederung von Hard- und Software
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
17
Ausblick
 Konzept
• Fehlerbetrachtungen (Abstürze von Simulatoren, Fehlerzustände, Abbruchtransitionen)
• Robustheit (Verschaltungsprüfungen, automatische Typkonvertierungen)
 Prototyp
• Untersuchung von Performance & Skalierungseigenschaften
• Einbindung einer realen Steuerung
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
18
Ausblick
Co-Simulation in einem modularen Anlagen-Ökosystem
 Module
•
•
•
•
Erfüllt VT-Funktion
Eigene Steuerung
Eigenes Sicherheitsverhalten
Eigene Simulation
 Läuft intern ab (z.B. RaspberryPi)
 Engineering
• Modulauswahlphase (Onlinebereitstellung des Simulationsmodells durch Hersteller)
 Betrieb
• Können tatsächliche Alterungserscheinung des speziellen Moduls mit einbeziehen
• Selbstüberwachung (Abgleich Simulation mit realem Zustand)
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
19
Vielen Dank für Ihre Aufmerksamkeit!
Prof. Dr.-Ing. habil. Leon Urbas
Technische Universität Dresden
Fakultät Elektrotechnik und
Informationstechnik
Institut für Automatisierungstechnik
Für spätere Fragen:
[email protected]
Tel.: +49 351 463-34604
Fax: +49 351 463-39681
Besucheradresse:
Barkhausen-Bau
Georg-Schumann-Str. 11
01187 Dresden
Postanschrift (Briefe):
Technische Universität Dresden
Fakultät Elektrotechnik und
Informationstechnik
Institut für Automatisierungstechnik
01062 Dresden
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
20
Quellen und Bildnachweise
[1]
http://www.chainalytics.com/12442-2/
[2]
Bildnachweis Modul einfügen
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
21
Anhang
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
22
Konzept
OPC UA Methoden

Methoden auf Simulator Server
•
open()/close()

Methoden auf dem Aggregating Server (AS)
•
 Bekanntmachung des Simulationsserver im AS
 Erster Simulator als Master (Simulationssteuerung),
Weitere Simulatoren als Slave
 Projekt-/Versionsverwaltung
•
init()/reset()
 Initialisiere mit Werten
 Reset der Simulation
•
start()/stop()
 Start/Stop Simulation
•
doStep(time)
•
doProceed(time)
•
•
•
setSpeed()
connectSignals(inSim, inSig, outSim, outSig),
disConnectSignals(inSim, inSig, outSim, outSig)
open(), close(), init(), reset(), start(), stop(),
doStep(), doProceed(), setSpeed(),
createSnapshot(), loadSnapshot()
 Aufruf der entsprechenden Methoden in den
angeschlossenen Simulatoren
 Setze Simulationsgeschwindigkeit
•
setMaster(url)
 Über Methodenaufrufe kann Rolle geändert werden
 Simulationszeit weiterschalten
•
unregister(url)
 Abmelden eines Simulators vom AS
 Führe Einzelschritt aus
•
register(url, rootNodeId)
createSnapshot()/loadSnapshot()
 Erstelle/Lade Snapshot
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
23
Konzept
Wertaktualisierung (Zeitdiagramm)
SIMIT1
SIMIT2
AggServ
FMI1
allStates(RUNNING)
success
doProceed()
RUNNING
Subscription -> Update der
Ausgänge
allStates(RUNNING)
doProceed()
Propagierung der aktu alisierten
Werte an verschalteten
Simulator (Write) -> aktuelle
Daten s tehen für nächsten
Simulationsschritt bereit
RUNNING
doProceed
PROCEEDING
Inputwerte werden für die
Simulation üb ernommen
doProceed()
doProceed
doProceed
RUNNING
PROCEEDING
Inputwerte werden für die
Simulation üb ernommen
RUNNING
success
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
24
Konzept
Simulationssteuerung (Zeitdiagramm)
FMI1
AggServ
SIMIT2
SIMIT1
allStates(NOSIMULATION)
success
open()
NOSIMULATION
NOSIMULATION
open()
open
open
open
allStates(LOADED)
open()
Subscription -> Update Status
LOADED
failed
LOADED
Subscription -> Update Status
allStates(LOADED)
success
Baden-Baden, 07.06.2016
Co-Simulation mittels OPC UA
25