digitale si lation elektrischer netze)st.inf.tu-dresden.de/files/teaching/ws18/ring/ringvorlesung...
TRANSCRIPT
DIgSILENT GmbH(Digitale Simulation Elektrischer Netze)
Softwareentwicklung in der industriellen Praxis
Vinzent Krauß[email protected]+49 (0)7072 9168-304
Marcus [email protected]+49 (0)7072 9168-303
Softwareentwicklung in der industriellen Praxis 1
Aufbau Stromnetz
Softwareentwicklung in der industriellen Praxis
Niederspannung230 – 400 V
Mittelspannung3 – 30 kV
Hochspannung60 – 110 kV
Höchstspannung220 – 380 kV
2
Aufbau Stromnetz – Deutschland
Komplexer Verbund aus Nieder-, Mittel-, Hoch- und Höchstpannungsleitungen
Ca. 900 Betreiber für Verteilnetze (Nieder- und Hochspannung)
3Softwareentwicklung in der industriellen Praxis
Quelle: https://de.wikipedia.org/wiki/Stromnetz
Aufbau Stromnetz – Deutschland
Komplexer Verbund aus Nieder-, Mittel-, Hoch- und Höchstpannungsleitungen
Ca. 900 Betreiber für Verteilnetze (Nieder- und Hochspannung)
4 verschiedene Regelzonen für das Höchstspannungsnetz
Softwareentwicklung in der industriellen Praxis 4
Quelle: https://wiki.openstreetmap.org/wiki/WikiProject_Power_networks/Germany
Aufbau Stromnetz – Europa
Überregionales Hoch- und Höchstspannungsnetz
Überregionale Bereitstellung von Reserveleistung
Versorgung von ca. 450 Mio. Menschen
Hohe Anforderungen an Zuverlässigkeit
Großteils betrieben mit Dreiphasenwechselstrom bei 50 Hz
Softwareentwicklung in der industriellen Praxis 5
Quelle: https://www.flosm.de
DIgSILENT – PowerFactory
6Softwareentwicklung in der industriellen Praxis
DIgSILENT – PowerFactory Historie
• Seit 2016 jährliches Release einer neuen Hauptversion (aktuell PowerFactory 2019)
• Service Packs für Verbesserungen / Problembehebungen• In diversen Sprachen verfügbar: EN, DE, FR, ES, TR, RU, CN
Softwareentwicklung in der industriellen Praxis 7
2000Release
PowerFactory 12
19861st Release of „IEEP“ Power
System Analysis Software (Unix)
1998Release
PowerFactory
19921st DIgSILENT
version for Windows 3.1
2001Release
PowerFactory 12.1
2018Release
PowerFactory 19
2017Release
PowerFactory 18...
...2018
ReleasePowerFactory 18
SP 1-4
DIgSILENT – Unternehmen
Mitarbeiterca. 80 Mitarbeiter in Deutschland, davon
• ~ 45 Mitarbeiter Entwicklung (R&D und Custom Development)
• ~ 25 Mitarbeiter in Application Engineering Consulting
• ~ 15 Mitarbeiter in Vertrieb, Shared Services, Accounting, IT
Softwareentwicklung
Entwicklung aller Softwareprodukte findet am deutschen Firmensitz statt
Konzentriertes Expertenwissen (Elektrotechniker, Informatiker, Mathematiker, Physiker,..)
Kein „Outsourcing“, kein Zukauf von Komponenten für die Standardprodukte
8Softwareentwicklung in der industriellen Praxis
DIgSILENT – Standort Dresden
DIgSILENT GmbHStandort Dresden: Tiergartenstraße 32, 01219 Dresden (12 Mitarbeiter)
9Softwareentwicklung in der industriellen Praxis
DIgSILENT betreut mehr als 2500 Kunden (mit >12.000 Lizenzen)in über 140 Ländern.
DIgSILENT – International
Softwareentwicklung in der industriellen Praxis 10
SoftwarePowerFactorySimulations- und Netzberechnungssoftware
StationWareAsset Management System
GridCodeÜberwachung von Anschlussbedingungen
DIgSILENT – Produkte & Dienstleistungen
Hardware/SoftwarePowerFactory MonitorDynamic Performance Monitoring System
ServicesConsultingBeratung und Forschung für Netzbetreiber, Erneuerbare Energien, etc.
Support , Training Kundenbetreuung, Seminare, Schulungen, Workshops, etc.
System Integration & IT-ServicesCustom Software Development
11Softwareentwicklung in der industriellen Praxis
ENEDIS (FR) UK Power Networks (UK)
ESKOM (ZA)CGE (CL)
DELAPAZ (BOL)EnBW (D)Mitnetz (D)ENSO (D)
ca. 100 Stadtwerke zBsp.SW MünchenSW Tübingen
Fairenergie (RT)badenova
…
DIgSILENT– Kunden
Übertragungsnetze Verteilnetze IndustrieConsulting &Forschung
TenneT (NL) 50Hertz (D)
National Grid (UK)EDF Energy (UK)energinet.dk (DK)
Elia (BE)Swissgrid (CH)
Austrian Power Grid (AU)Terna (I)
ESKOM T&D (ZA)Western Power (AU)
CDEC (CL)EGAT (Thailand)
…
PetronasShell
ChevronTechnip
PetrobrasVattenfall-Mining
BMWAudiVWFord
HenkelABB Industries
Siemens…
KEMA (NL)CESI (IT)
Fichtner (D)TÜV (D)
GOPA-Intec (D)TCS (Indien)
Fraunhofer (D)DEWI (D)ISE (D)
Risø (Dänemark)IEN (PL)
Über 200 Universitäten…
12Softwareentwicklung in der industriellen Praxis
DIgSILENT PowerFactory
Softwareentwicklung in der industriellen Praxis 13
PowerFactory – Modulkonzept
Softwareentwicklung in der industriellen Praxis 14
PowerFactory
Lastflussberechnung Netzplanvisualisierung Modellierungswerkzeuge Berichtswerkzeuge …
Ausfallanalyse
Zusatzmodule
Netzreduktion
Schutzfunktion
Programmierung & Automatisierung
Zuverlässigkeitsanalyse
Probabilistische Analyse
…
DIgSILENT PowerFactory
Vorführung PowerFactory
Softwareentwicklung in der industriellen Praxis 15
PowerFactoryPowerFactory
PowerFactory – Kundenschnittstellen
Softwareentwicklung in der industriellen Praxis 16
PowerFactory
Integral Siemens PSSE CYME ...
Konkurrenzprodukte
Standards
UCT
CIM / CGMES
...
Netzleittechnik (Echtzeitdaten)
OPC
Siemens PCS ...
Externe Anwendungen(evtl. Automatisierung,Remote)
Matlab
Python-App.
...
GIS
PowerFactory – Kundenschnittstellen
• Anbindung an Fremdsysteme sollte einfach, flexibel und für Kunden verständlich sein
• Fremdsysteme meist sehr komplex und nur schwer modifizierbar – feste Abläufe und Dateiformate
• Entwickelte Lösungen und Programminterfaces müssen abwärtskompatibel sein– Systeme sind häufig sicherheitskritisch und Updates nur mit viel Aufwand
einpflegbar• Alle Funktionen müssen automatisierbar sein
Realisierbar mithilfe verschiedener Skriptsprachen / Interfaces
Softwareentwicklung in der industriellen Praxis 17
PowerFactory – Skriptinterfaces
• Alle Vorgänge in PowerFactory auch per Skript / API steuerbar• DPL ist von DIgSILENT entwickelte Skriptsprache• API-Klassen, -Funktionen und -Attribute über GUI sichtbar
(Objektstruktur)
Softwareentwicklung in der industriellen Praxis 18
PowerFactory
DPL
Python Script.pyPython
C++
Python API
C++ API
Scripting-Interface
C++ PF-Objects
Python – C++Wrapper
Internal ScriptingExternal Scripting
PowerFactory – Objektstruktur
• Alle Dialoge und Elemente sind Objekte• Alle Objekte sind in Datenbank hierarchisch gespeichert
– Nutzer, Projekte, Berechnungskommandos, Netzmodellelemente, …
Softwareentwicklung in der industriellen Praxis 19
NutzerProjekte
Berechnungskommandos
Konfiguration
PowerFactory – Objektstruktur
• Alle Dialoge und Elemente sind Objekte• Alle Objekte sind in Datenbank hierarchisch gespeichert
– Nutzer, Projekte, Berechnungskommandos, Netzmodellelemente, …• Objekte sind Instanzen einer Klasse (Typ)• Objekte besitzen Attribute (dargestellt als Checkbox, Textbox, etc...)
Softwareentwicklung in der industriellen Praxis 20
PowerFactory – Objektstruktur
• Alle Dialoge und Elemente sind Objekte• Alle Objekte sind in Datenbank hierarchisch gespeichert
– Nutzer, Projekte, Berechnungskommandos, Netzmodellelemente, …• Objekte sind Instanzen einer Klasse (Typ)• Objekte besitzen Attribute (dargestellt als Checkbox, Textbox, etc...)• Objekte besitzen Funktionen (aufrufbar über Buttons)• Klassen nutzen Vererbung (für Nutzer anhand des Typnamens
erkennbar)
Softwareentwicklung in der industriellen Praxis 21
DIgSILENT PowerFactory
Vorführung Objektstruktur
Softwareentwicklung in der industriellen Praxis 22
PowerFactory – Codegenerator
• Verschiedene APIs werden mithilfe von Codegenerator konsistent gehalten
• Jede Klasse wird mithilfe von verschiedenen Dateien beschrieben– Attributbeschreibungsdatei (*.dod)
Softwareentwicklung in der industriellen Praxis 23
$OBJECT,ComLdf$$OBJ_PARAMETER # name |dtyp|dep|doc|lis|prop|dlen | init | unit |exp|mult|Ver.no| check(x) #‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net |i | | x | | | | 0 | | | | 10.30| x >= 0 && x <=2iPST_at |i | | x | | | | 0 | | | | 17.00| x == 0 || x == 1fr_addopt|c | | | | | | | | | | 13.00|
$$DESCRIPTIONS# label |l|description (max. 60 chars)|short descr. (max. 15 chars)#‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net |e|Calculation Methodiopt_net |d|Berechnungsmethode
iPST_at |e|Automatic tap adjustment of phase shiftersiPST_at |d|Automatische Stufeneinstellung von Phasenschiebern
fr_addopt |e|Additional Optionsfr_addopt |d|Zusätzliche Optionen
PowerFactory – Codegenerator
• Verschiedene APIs werden mithilfe von Codegenerator konsistent gehalten
• Jede Klasse wird mithilfe von verschiedenen Dateien beschrieben– Attributbeschreibungsdatei (*.dod)– C++ Templatedatei (*.mod) mit Platzhaltern ($$xxx)
Softwareentwicklung in der industriellen Praxis 24
$$header///@file ComLdf.mod Load flow calculation command/E
$$hpp_include#include "bus/TopoProz.hpp"...
/E
$$cpp_include#include "vis/VISglInterface.hpp"...
/E$$Execute
...return IntExecute(0);
/E
PowerFactory – Codegenerator
• Verschiedene APIs werden mithilfe von Codegenerator konsistent gehalten
• Jede Klasse wird mithilfe von verschiedenen Dateien beschrieben– Attributbeschreibungsdatei (*.dod)– C++ Templatedatei (*.mod)– Weitere C++ (*.hpp, *.cpp) und evtl. weitere *.dod-Beschreibungen (*.inc)
Softwareentwicklung in der industriellen Praxis 25
$OBJECT,ComLdf$$OBJ_PARAMETER @INCLUDE compar.inc
order | r | | x | | | |MIN_ORDER| | | | 11.00|addoptions | a | | x | | |MAX_COM_LEN | | | | | 14.00|
Compar.inc:
*.dod:
PowerFactory – Codegenerator
• Verschiedene APIs werden mithilfe von Codegenerator konsistent gehalten
• Jede Klasse wird mithilfe von verschiedenen Dateien beschrieben– Attributbeschreibungsdatei (*.dod)– C++ Templatedatei (*.mod)– Weitere C++ (*.hpp, *.cpp) und evtl. weitere *.dod-Beschreibungen (*.inc)
• Annotationen an C++-Funktionen in *.mod-Datei
Softwareentwicklung in der industriellen Praxis 26
/* BEGIN SCRIPTING DOC(DPL, PYTHON, API)\function{IsBalanced}\begin{desc}
Check whether this load flow command is configured as balanced or unbalanced.\end{desc}\begin{returns}
Returns 1 if the load flow is balanced.\end{returns}
END SCRIPTING DOC */@MakeAvailable(ALL)int ComLdf::IsBalanced() {
return ...;}
PowerFactory – Codegenerator
Softwareentwicklung in der industriellen Praxis 27
Class.mod
CodeGenerator
Class.dod
*.cpp
*.hppClass.cxx
Class.hxx
DPL Script Definition
Python Script Definition
C++ API Definition
include / link
C++ API Manual
Python API Manual
DPL API Manual
......
DIgSILENT PowerFactory
Vorführung Skript API
Softwareentwicklung in der industriellen Praxis 28
PowerFactory – GUI
Softwareentwicklung in der industriellen Praxis 29
• PowerFactory basiert derzeit auf altem GUI Framework (Starview)• Beschreibung der Dialoge ebenfalls in *.dod-Datei• Definition von Textfeldern / Fehlermeldungen in Grundsprachen DE /
EN ebenfalls in *.dod-Datei
$OBJECT,ComLdf$$OBJ_PARAMETER # name |dtyp|dep|doc|lis|prop|dlen | init | unit |exp|mult|Ver.no| check(x) #‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net |i | | x | | | | 0 | | | | 10.30| x >= 0 && x <=2
$$DESCRIPTIONS# label |l|description (max. 60 chars)|short descr. (max. 15 chars)#‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net |e|Calculation Methodiopt_net |d|Berechnungsmethode
$$DIALOG# label | typ |page |spage| x | y | dx | dy | extdata |browser|marker #‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net | 0 | | 1 | 5 | 5 | 220 | 4 | | |x
PowerFactory – GUI
Softwareentwicklung in der industriellen Praxis 30
• Verschiedene Eingabemasken kodiert als Integer
• Stark vereinfachtes und veraltetes Konzept (kein WYSIWYG)• Jedoch problemlos auf jedes GUI-Framework übertragbar
Control type IDsDialog 100, 101, 103Tabs (Labeled pages) 11, 12, 111Group box 0, 3, 30, 38, 64Separator line 83Radio button 1, 85Check box and Tri state box 2, 55
Text box 4, 19, 21, 25, 29, 42, 43, 49, 71, 81, 88, 89, 1016
Spin box (Numerical text box with spin buttons) 56, 62, 119
… ...
ID Description19 Text box with description71 Text box for passwords with description… ...
PowerFactory – GUI
Softwareentwicklung in der industriellen Praxis 31
$OBJECT,ComLdf$$DESCRIPTIONS# label |l|description (max. 60 chars)|short descr. (max. 15 chars)#‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net |e|Calculation Methodiopt_net |d|Berechnungsmethode
iopt_ac |e|AC Load Flow, balanced, positive sequence|Balancediopt_ac |d|AC Lastfluss, symmetrisch, Mitsystem|Symmetrisch...
$$DIALOG# label | typ |page |spage| x | y | dx | dy | extdata |browser|marker #‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐iopt_net | 0 | | 1 | 5 | 5 | 220 | 4 | | |xiopt_ac | 1 | | 1 | | | | | | |...
PowerFactory – Codegenerator II
Softwareentwicklung in der industriellen Praxis 32
Class.mod
CodeGenerator
Class.dod
*.cpp
*.hppClass.cxx
Class.hxx
DPL Script Definition
Python Script Definition
C++ API Definition
include / link
C++ API Manual
Python API Manual
DPL API Manual
GuiClass.cxx
GuiClass.hxx
StarView Framework
Qt Framework
PowerFactory – Buildenvironment
Softwareentwicklung in der industriellen Praxis 33
• Entwicklung mit Visual Studio und Microsoft C++ Compiler– Teile des Codes werden auch mit Clang übersetzt
• Buildsystem Rake (Ruby) in Kombination mit MSBuild• Jenkins für automatisierte Builds und Tests
DIgSILENT Dresden
Softwareentwicklung in der industriellen Praxis 34
DIgSILENT – Dresden
• Entwicklung einzelner Klassen und Funktionen für PowerFactory (meist Interfacebezogen)
• Automatisierungsprojekte im Umfeld von PowerFactory• Integration in kundenspezifische Systemlandschaften• Entwicklung eigener Produkte für einfache Automatisierung von
PowerFactory– Setzen nur auf offizielle API von PowerFactory auf
• Machbarkeitsstudien, Benchmarks bei neuen Kundenanforderungen
Softwareentwicklung in der industriellen Praxis 35
DIgSILENT – Dresden
• Beispiel einer Anwendung ist EngineManager– Ermöglicht Steuerung von mehreren PowerFactory-Instanzen über einen
RESTful Webservice– PowerFactory-Instanzen werden ohne GUI gestartet und von
EngineManager verwaltet
Softwareentwicklung in der industriellen Praxis 36
PowerFactoryPowerFactoryPowerFactoryEngineManager(Webservice)Client
HTTP C++ API
DIgSILENT – Dresden
• Beispiel eines Integrationsprojekts (mit Python- und DPL-Skripten)
Softwareentwicklung in der industriellen Praxis 37
DIgSILENT GmbH(Digitale Simulation Elektrischer Netze)
Softwareentwicklung in der industriellen Praxis
Vinzent Krauß[email protected]+49 (0)7072 9168-304
Marcus [email protected]+49 (0)7072 9168-303
Softwareentwicklung in der industriellen Praxis 38