digitale si lation elektrischer netze)st.inf.tu-dresden.de/files/teaching/ws18/ring/ringvorlesung...

Post on 11-Oct-2019

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DIgSILENT GmbH(Digitale Simulation Elektrischer Netze)

Softwareentwicklung in der industriellen Praxis

Vinzent Kraußev.krausse@digsilent.de+49 (0)7072 9168-304

Marcus Waltherm.walther@digsilent.de+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ßev.krausse@digsilent.de+49 (0)7072 9168-304

Marcus Waltherm.walther@digsilent.de+49 (0)7072 9168-303

Softwareentwicklung in der industriellen Praxis 38

top related