Vestas entwickelt Steuerungssoftware für Windkraftanlagen mit Model-Based Design und kontinuierlicher Integration - MATLAB & Simulink

Vestas entwickelt Steuerungssoftware für Windkraftanlagen mit Model-Based Design und kontinuierlicher Integration

„Mit Simulink und dem Embedded Coder können wir unseren Kunden und Netzbetreibern eine Simulation zeigen, die den tatsächlichen Code einbindet, der in unserem Kraftwerksregler ausgeführt wird. Genau das wollen die Netzbetreiber, und es gibt Vestas einen Vorteil gegenüber Mitbewerbern, die noch auf herkömmliche Methoden setzen.“

Die Herausforderung

Steuerungssoftware für regenerative Kraftwerke in Übereinstimmung mit Netzregeln entwickeln, die sich weiterentwickeln und je nach Region unterscheiden

Die Lösung

Model-Based Design mit kontinuierlicher Integration verwenden, um Regler zu modellieren, simulationsbasierte Tests zu automatisieren und Produktionscode für Industrieregler zu generieren

Die Ergebnisse

  • Zuverlässiger, unproblematischer Code generiert
  • Workflow zur kontinuierlichen Integration an mehreren Standorten automatisiert
  • Abhängigkeit von proprietärer Hardware umgangen
Turbinen und Kraftwerksregler von Vestas.

Turbinen und Kraftwerksregler von Vestas.

Mit mehr als 66.000 Turbinen und einer Gesamtsumme von über 100 GW installierter Windenergiekapazität in 80 Ländern hat Vestas Wind Systems A/S mehr Windenergie als jedes andere Unternehmen eingerichtet. Die Konstruktionsteams von Vestas verwenden Model-Based Design mit kontinuierlicher Integration (CI), um Steuerungssoftware für Kraftwerke zu entwickeln sowie Kunden und Netzbetreibern die Einhaltung von Netzregeln zu demonstrieren.

„Netzbetreiber wollen eine Simulation der Anlagenleistung sehen und sich sicher sein, dass Regelungscode eins zu eins der Simulation entspricht“, so Per Hagen Nielsen, Softwarearchitekt für Regelungssysteme bei Vestas Wind Systems A/S. „Es gibt noch nicht viele Unternehmen, die dazu in der Lage sind. Vestas ist eines derjenigen, die es können, da wir Model-Based Design mit MATLAB und Simulink kombinieren, um unsere Kraftwerkregler zu modellieren und zu simulieren. Mit genau diesen Modellen generieren wir dann C++ Code zur Simulation auf Systemebene und für die Produktion.“

Die Herausforderung

Vor der Einführung von Model-Based Design zum Entwurf des Kraftwerkreglers verwendete Vestas einen herkömmlichen Ansatz: Von Energietechnikern entwickelte technische Daten und Entwurfsdokumente in Papierform wurden an die Softwareentwickler übergeben, die den Code für die einzelnen Komponenten oder Funktionen dann von Hand schrieben. Die Energietechniker führten Simulationen mithilfe von PSCAD-Software aus, aber bei diesen Simulationen ging es eher um elektrischen Strom als um Softwaresteuerung. Da die Simulationen keinen Regelungscode enthielten, konnte man sich nicht wirklich sicher sein, dass die PSCAD-Simulationen die Systemleistung wiedergaben, wenn einmal die Software integriert und bereitgestellt war. Vestas wollte menschliche Fehler beim manuellen Programmieren weitestgehend ausschließen und gleichzeitig sicherstellen, dass die Simulationen der Energiesysteme mit der Steuerungssoftware übereinstimmten.

Darüber hinaus sollten die Konstruktionsteams, die sich in fünf Ländern in Europa und Asien befanden, an denselben Projekten – in manchen Fällen sogar an denselben Modellen – zusammenarbeiten können. Dieses geografisch verteilte Team musste Versionskontrolle auf Modelle anwenden, häufige Code-Zusammenführungen bewältigen und simulationsbasierte Tests automatisieren. Um diese Anforderungen zu erfüllen, entschied sich Vestas für CI mit Jenkins™. CI-Grundsätze sollten auf Basis von Modellierung, Simulation und Codegenerierung in einen Konstruktions-Workflow integriert werden.

Die Lösung

Nachdem die Geschäftsleitung ihr Einverständnis gegeben hatte, richteten die Energiesystemtechniker von Vestas einen neuen Workflow für den Reglerentwurf des Kraftwerks ein, der CI und Model-Based Design mit MATLAB® und Simulink® kombiniert.

Wird die Änderung einer Netzregel vorgeschlagen oder wünscht ein Kunde eine neue Funktion oder Komponente, erstellt das Konstruktionsteam von Vestas einen Satz formaler Anforderungen. Auf Basis der Anforderungen entwickelt die eine Gruppe Testfälle mit Simulink und Simulink Test™, mit denen die neue Funktion verifiziert wird, während die andere Gruppe die neue Funktion in Simulink und Stateflow® entwirft.

Um ein Systemmodell für Closed-Loop-Simulationen zu erstellen, kombiniert diese zweite Gruppe das Reglermodell mit einem Simulink-Modell, das die Impedanz und dynamischen Merkmale des Netzes zum Zeitpunkt des Anschlusses an das Kraftwerk erfasst. Mithilfe einer Simulink S-Funktion wird ein Windturbinenmodell einbezogen, das eine andere Vestas-Gruppe in einem proprietären Tool entwickelt und als DLL gepackt hat.

Nach Closed-Loop-Simulationen mit diesem Systemmodell und Überprüfungen zur Sicherstellung der Konformität mit Modellierungsstandards auf Basis von Richtlinien des MathWorks Automotive Advisory Board (MAAB) wird das Reglermodell in einem Git-Repository registriert. Durch das Registrieren des Modells wird ein Jenkins-Job ausgelöst, der die zuvor mit Simulink Test entwickelten Testfälle, zusätzliche simulationsbasierte, von den Energietechnikern erstellte Tests und einen weiteren Durchlauf von Überprüfungen der Modellierungskonformität ausführt.

Besteht das Reglermodell alle Tests und Überprüfungen, ruft Jenkins Embedded Coder® 1 auf, um C++ Code aus dem Modell zu generieren. Der generierte C++ Code wird in eine DLL kompiliert, mit der dann in PSCAD Simulationen des gesamten Kraftwerks und seiner Steuerungssoftware ausgeführt werden.

Mit diesen Simulationen demonstriert Vestas den Betreibern der Übertragungssysteme die Leistung des Kraftwerks innerhalb des Netzes bei normalen Betriebsbedingungen sowie bei Spannungsabfällen, Schwingungen und anderen Störungen. Am Ende wird der generierte Code im anvisierten Industrieregelungssystem getestet und anschließend produktiv gestellt.

Die Ergebnisse

  • Zuverlässiger, unproblematischer Code generiert. „Uns drohen Strafen, wenn unsere Regelungssysteme nicht erwartungsgemäß funktionieren“, erklärt Nielsen. „Mit Simulink und Embedded Coder haben wir schnell gelernt, dass wir dem von uns generierten Code vertrauen können – tatsächlich haben wir damit kein einziges Problem gehabt.“
  • Workflow zur kontinuierlichen Integration an mehreren Standorten automatisiert. „Wir beschäftigen Dutzende von Ingenieuren auf der ganzen Welt, die parallel mit zahlreichen Zusammenführungen am selben Modell arbeiten“, erläutert Nielsen. „Durch den kombinierten Einsatz von Model-Based Design und CI konnten wir Iterationen verkürzen und Testprozesse automatisieren.“
  • Abhängigkeit von proprietärer Hardware umgangen. „Früher haben wir Regler so entwickelt, dass wir individuellen strukturierten Text für eine SPS-Plattform geschrieben haben, wodurch wir eng an diese Plattform gebunden waren“, so Nielsen. „Jetzt generieren wir portablen C++ Code aus unseren Simulink-Modellen, was uns die Flexibilität gibt, alternative Industriesteuerungsplattformen zu verwenden.“

1 Zur Nutzung von Embedded Coder mit Jenkins oder anderen CI-Systemen ist möglicherweise eine Client Access License erforderlich.