Vestas、モデルベースデザインと継続的インテグレーションにより風力発電所向けの制御ソフトウェアを開発
課題
進化し、地域ごとに異なるグリッドコードを遵守する再生可能電力プラント制御ソフトウェアの開発
ソリューション
継続的インテグレーションとともにモデルベースデザインを使用した、コントローラーのモデル化、シミュレーションに基づくテストの自動化、産業用コントローラー向けの量産コードの生成
結果
- 信頼性が高く問題が生じないコードの生成
- マルチサイト CI ワークフローの自動化
- ハードウェア ロックインの回避
Vestas Wind Systems A/S は、80 か国に 66,000 基以上のタービンを保有し、合計 100 GW を超える風力発電容量を誇っており、他のどの会社よりも多くの風力発電能力を備えています。Vestas のエンジニアは、継続的インテグレーション (CI) とともにモデルベースデザインを使用して電力プラント制御ソフトウェアを開発し、Vestas の顧客と電力網運用会社にグリッドコードの遵守を実証しています。
Vestas Wind Systems A/S の制御システム ソフトウェア アーキテクト、Per Hagen Nielsen 氏は次のように述べています。「電力網運用会社は、プラントのパフォーマンスのシミュレーションを確認したいと考えています。また、制御コードがシミュレーションと 1 対 1 で対応しているかを知りたいと考えています。現在、これを示すことができる会社は多くありません。Vestas では、MATLAB と Simulink によるモデルベースデザインを使用して電力プラント制御システムをモデル化およびシミュレーションし、その後、同じモデルを使用してシステムレベルのシミュレーションと量産用の C++ コードを生成しているため、これを実現できています。」
課題
電力プラントの制御設計にモデルベースデザインを採用するまでは、Vestas のエンジニアは、電力エンジニアが作成した紙ベースの仕様書と設計文書をソフトウェア エンジニアに渡し、ソフトウェア エンジニアが個々のコンポーネントや機能のコードを手作業で記述するという従来の手法を使用していました。電力エンジニアは PSCAD ソフトウェアを使用してシミュレーションを実行していましたが、これらのシミュレーションはソフトウェア制御ではなく電力に焦点を当てるものでした。シミュレーションには制御コードが組み込まれていなかったため、ソフトウェアが統合および展開されたときに PSCAD シミュレーションがシステム パフォーマンスを反映しているという保証がほとんどありませんでした。Vestas は、電力システムのシミュレーションを制御ソフトウェアと確実に対応させながら、手作業によるコーディングに伴う人的エラーの可能性を排除したいと考えていました。
さらに、Vestas は、ヨーロッパとアジアの 5 か国にまたがるエンジニアリング チームが、同じプロジェクトで、場合によっては同じモデルで連携できるようにしたいと考えていました。この地理的に分散したチームは、モデルにバージョン管理を適用し、頻繁なマージを管理し、シミュレーションに基づくテストを自動化する必要がありました。これらの要件を満たすために、Vestas は Jenkins™ で CI を使用し、モデル化、シミュレーション、およびコード生成に基づいてエンジニアリング ワークフローに CI の原則を組み込むことにしました。
ソリューション
上級管理職からの支持を得た後、Vestas の電力システムエンジニアは、CI と MATLAB® および Simulink® によるモデルベースデザインを組み合わせた、電力プラント制御設計のための新しいワークフローを確立しました。
グリッドコードの変更が提案されたり、顧客が新しい機能やコンポーネントを要求したりすると、Vestas のエンジニアが正式な要件のセットを作成します。要件に基づいて、1 つのグループが Simulink および Simulink Test™ を使用して新機能の検証に使用するテストケースを開発し、2 番目のグループが Simulink および Stateflow® で新機能を設計します。
閉ループのシミュレーション用のシステムモデルを作成するため、この 2 番目のグループのエンジニアは、制御モデルに、プラントとの接続点における電力網のインピーダンスおよび動的特性を捉える Simulink モデルを組み合わせます。そして、別の Vestas グループによって独自のツールで開発されて DLL としてパッケージ化された風力タービンモデルを、Simulink S-Function を使用して組み込みます。
このシステムモデルで閉ループのシミュレーションを実行し、MathWorks Automotive Advisory Board (MAAB) ガイドラインに基づいてモデリング標準への準拠を確認するチェックを実行した後に、エンジニアは制御モデルを Git リポジトリにチェックインします。モデルのチェックインにより、Simulink Test でそれ以前に開発されたテストケースを実行する Jenkins ジョブがトリガーされます。また、電力エンジニアが作成した追加のシミュレーションに基づくテスト、およびモデリング ガイドライン準拠チェックの別のラウンドもトリガーされます。
制御モデルがすべてのテストとチェックにパスすると、Jenkins は Embedded Coder® 1 を呼び出してモデルから C++ コードを生成します。生成された C++ コードは DLL にコンパイルされ、PSCAD でプラント全体およびその制御ソフトウェアのシミュレーションを実行するために使用されます。
Vestas はこれらのシミュレーションを使用して、通常の条件下と、電圧降下、振動、およびその他の外乱が存在する場合の、電力網に接続されているときのプラントのパフォーマンスを送電システム運用会社に実証します。最後に、生成されたコードをターゲットの産業用制御システムでテストしてから、運用環境に展開します。
結果
- 信頼性が高く問題が生じないコードの生成。Nielsen 氏は次のように語ります。「当社の制御システムが本来のパフォーマンスを発揮しない場合には、ペナルティが課せられます。Simulink と Embedded Coder を使用することで、生成したコードを信頼できることがすぐにわかりました。実際、コードに関しては 1 つの問題も見つかっていません。」
- マルチサイト CI ワークフローの自動化。Nielsen 氏は次のように説明します。「当社では、世界中の数十人ものエンジニアが、多くのマージを行いながら同じモデルを並行して作成しています。モデルベースデザインと CI を併用することで、反復作業の期間を短縮し、テストプロセスを自動化しました。」
- ハードウェア ロックインの回避。Nielsen 氏は次のように述べます。「以前は、PLC プラットフォーム用にカスタムのストラクチャード テキストを作成してコントローラーを開発していました。つまり、そのプラットフォームにがんじがらめにされていたのです。現在は、Simulink モデルから移植可能な C++ コードを生成することで、別の産業用制御プラットフォームを柔軟に使用できるようになっています。」
1 Jenkins またはその他の CI マシンで Embedded Coder を使用するには、クライアント アクセス ライセンスが必要になる場合があります。