用户故事

维斯塔斯为风力发电厂开发基于模型设计和持续集成的控制软件

挑战

开发可再生能源发电厂控制软件,遵循网格代码的演进和不同的地区

解决方案

使用基于模型的设计和持续集成来建模控制器,自动化基于模拟的测试,并为工业控制器生成生产代码

结果

  • 生成可靠、无问题的代码
  • 多站点CI工作流程自动化
  • 避免硬件锁定

“通过Sim万博1manbetxulink和Embedded Coder,我们可以向客户和电网运营商展示包含实际代码的模拟,这些代码将在我们的电厂控制器中运行。这正是电网运营商想要的,这让维斯塔斯相对于仍在使用传统方式的竞争对手具有优势。”

黑根·尼尔森,维斯塔斯
维斯塔斯涡轮机和电厂控制。

维斯塔斯涡轮机和电厂控制。


维斯塔斯风力系统A/S在80个国家拥有6.6万多台涡轮机,总风力发电装机容量超过100吉瓦,比其他任何公司都安装了更多的风力发电。维斯塔斯的工程师使用基于模型的持续集成设计(CI)开发发电厂控制软件,并向维斯塔斯的客户和电网运营商演示符合电网规范的情况。

Vestas Wind systems a /S控制系统软件架构师Per Hagen Nielsen表示:“电网运营商希望看到电厂运行的模拟结果,他们希望知道控制代码与模拟结果是否一一匹配。”“如今,能展示这一点的公司并不多。在Vestas,我们可以做到这一点,因为我们使用基于模型的设计与MATLAB和Simulink来建模和模拟我们的电厂控制系统,然后使用万博1manbetx这些相同的模型生成系统级仿真和生产的c++代码。”

挑战

在采用基于模型的设计(Model-Based Design)进行电厂控制设计之前,维斯塔斯的工程师使用的是一种传统的方法,即由电力工程师开发的基于纸张的规范和设计文档交给软件工程师,由软件工程师手工为单个组件或功能编写代码。电力工程师使用PSCAD软件进行了模拟,但这些模拟集中在电力而不是软件控制上。模拟没有包含控制代码,这意味着一旦软件被集成和部署,PSCAD模拟很难保证反映系统性能。维斯塔斯希望消除手工编码可能带来的人为错误,同时确保其电力系统模拟与控制软件相一致。

此外,维斯塔斯还希望能够让来自欧洲和亚洲五个国家的工程团队在同一项目上合作,在某些情况下,还希望能够在同一型号上合作。这个地理上分散的团队需要对模型应用版本控制,管理频繁的合并,并自动化基于模拟的测试。为了满足这些需求,Vestas决定将CI与Jenkins™一起使用,并将CI原则合并到基于建模、仿真和代码生成的工程工作流中。

解决方案

在获得高级管理人员的支持后,维万博1manbetx斯塔斯电力系统工程师建立了一个新的电厂控制设计工作流,将CI和基于模型的设计与MATLAB相结合®和仿真软万博1manbetx件®

当提出网格代码更改或客户请求新特性或组件时,Vestas工程师会创建一组正式需求。基于需求,一个小组使用Simulink和Simulink test™开发测试用例,用于验证新特性,而另一个小组在Simuli万博1manbetxnk和Stateflow中设计新特性®

为了创建闭环仿真的系统模型,第二组的工程师将控制模型与Simulink模型相结合,该模型捕获与电厂连接点电网的阻抗和动态特性。万博1manbetx通过使用Simu万博1manbetxlink s函数,他们整合了一个风力涡轮机模型,该模型是在一个专有工具中开发的,并由Vestas的另一个团队打包为DLL。

在使用该系统模型运行闭环模拟并运行检查以确保符合基于MathWorks Automotive Advisory Board (MAAB)指南的建模标准之后,工程师将控制模型检入到Git存储库中。模型签入触发Jenkins作业,该作业运行早期使用Simulink test开发的测试用例,以及由动力工程师创建的其他基于模拟的测试,以及另一轮建模指南遵从性检查。万博1manbetx

如果控制模型通过所有测试和检查,Jenkins调用Embedded Coder®1从模型生成c++代码。生成的c++代码被编译成一个DLL,然后在PSCAD中使用它来运行整个电厂及其控制软件的模拟。

维斯塔斯利用这些模拟向输电系统操作员演示,在正常条件下,以及存在电压下降、振荡和其他干扰时,电站将如何连接到电网。最后,生成的代码在部署到生产环境之前在目标工业控制系统上进行测试。

结果

  • 生成可靠、无问题的代码。尼尔森表示:“如果我们的控制系统没有发挥应有的作用,我们将面临惩罚。”“有了Sim万博1manbetxulink和Embedded Coder,我们很快就学会了可以信任我们生成的代码——事实上,我们没有发现它有任何问题。”
  • 多站点CI工作流程自动化。尼尔森表示:“我们在全球有数十名工程师在同一款车型上并行工作,并进行了大量的合并。”“结合使用基于模型的设计和CI,我们缩短了迭代和自动化测试过程。”
  • 避免硬件锁定。尼尔森表示:“过去,我们通过为PLC平台编写定制结构化文本来开发控制器,这意味着我们与该平台紧密相连。”“今天,我们从我们的Simulink模型生成可移植的c++代码,使我们能够灵活地使用替代工业控万博1manbetx制平台。”

1在Jenkins或其他CI机器上使用嵌入式编码器可能需要客户端访问许可证。