Vestas desarrolla software de control para plantas eólicas con diseño basado en modelos e integración continua

“Con Simulink y Embedded Coder, podemos mostrar a clientes y operadores de red una simulación que incorpora el código real que se ejecutará en un controlador de central eléctrica. Eso es lo que desean los operadores de red, y para Vestas supone una ventaja sobre sus competidores que todavía utilizan enfoques convencionales”.

El reto

Desarrollar software de control de centrales eléctricas renovables conforme con códigos de red que evolucionan y varían según las regiones

La solución

Combinar diseño basado en modelos e integración continua para modelar controladores, automatizar pruebas basadas en simulaciones y generar código de producción para controladores industriales

Los resultados

  • Generación de código fiable y sin errores
  • Automatización de flujo de trabajo de integración continua multisitio
  • Flexibilidad de uso con diferentes plataformas de hardware
Turbinas y control de central eléctrica de Vestas.

Turbinas y control de central eléctrica de Vestas.

Con más de 66.000 turbinas que suman más de 100 GW de capacidad de potencia eólica instalada en 80 países, Vestas Wind Systems A/S ha instalado más energía eólica que cualquier otra empresa. El equipo de ingeniería de Vestas combina diseño basado en modelos e integración continua para desarrollar software de control de centrales eléctricas y demostrar la conformidad con códigos de red a clientes y operadores de red.

“Los operadores de red desean ver una simulación del funcionamiento de una central, y saber que habrá una correspondencia directa entre el código de control y la simulación”, comenta Per Hagen Nielsen, arquitecto de software de sistemas de control de Vestas Wind Systems A/S. “No muchas empresas pueden ofrecer esto en la actualidad. En Vestas podemos, porque utilizamos diseño basado en modelos con MATLAB y Simulink para modelar y simular nuestros sistemas de control de centrales eléctricas, y luego usamos esos mismos modelos para generar código C++ para simulación en nivel de sistema y producción”.

El reto

Antes de adoptar el diseño basado en modelos para el diseño de control de centrales eléctricas, el equipo de ingeniería eléctrica empleaba un enfoque convencional en el que entregaban especificaciones y documentos de diseño en papel al equipo de ingeniería de software, que desarrollaba código manualmente para componentes o funcionalidades individuales. El equipo de ingeniería eléctrica ejecutaba simulaciones con software PSCAD, pero estas simulaciones se centraban en la energía eléctrica más que en el control de software. Las simulaciones no incorporaban el código de control, lo que significaba que existía poca seguridad de que las simulaciones PSCAD reflejaran el rendimiento del sistema una vez que el software se integraba y desplegaba. Vestas necesitaba eliminar la posibilidad de errores humanos que conlleva la codificación manual y, al mismo tiempo, garantizar que la simulación de sistemas de energía se correspondía con el software de control.

Además, Vestas necesitaba que equipos de ingeniería distribuidos en cinco países de Europa y Asia pudieran colaborar en los mismos proyectos y, en algunos casos, incluso en los mismos modelos. Este equipo geográficamente disperso debía aplicar control de versiones a modelos, gestionar fusiones frecuentes y automatizar pruebas basadas en simulación. Para cumplir con estos requisitos, Vestas decidió utilizar integración continua con Jenkins™ e incorporar principios de integración continua en un flujo de trabajo de ingeniería basado en modelado, simulación y generación de código.

La solución

Con el respaldo de la gerencia de alto nivel, el equipo de ingeniería de sistemas de energía de Vestas estableció un nuevo flujo de trabajo para el diseño de control de centrales eléctricas que combina integración continua y diseño basado en modelos con MATLAB® y Simulink®.

Cuando se propone un cambio de código de red o un cliente solicita una nueva funcionalidad o componente, el equipo de ingeniería de Vestas crea un conjunto de requisitos formales. A partir de los requisitos, un grupo desarrolla casos de prueba con Simulink y Simulink Test™ que se utilizarán para verificar la nueva funcionalidad, mientras que otro grupo diseña la nueva funcionalidad en Simulink y Stateflow®.

Para crear un modelo de sistema para simulaciones de lazo cerrado, profesionales de ingeniería de este segundo grupo combinan el modelo de control con un modelo de Simulink que captura la impedancia y las características dinámicas de la red en el punto de conexión con la central. Sirviéndose de una función S de Simulink, incorporan un modelo de turbina eólica que otro grupo de Vestas desarrolla en una herramienta patentada y luego empaqueta como DLL.

Después de ejecutar simulaciones de lazo cerrado con este modelo de sistema y realizar comprobaciones para garantizar la conformidad con estándares de modelado basados en pautas de MathWorks Automotive Advisory Board (MAAB), el equipo de ingeniería incorpora el modelo de control en un repositorio de Git. La incorporación del modelo activa un trabajo de Jenkins que ejecuta los casos de prueba desarrollados anteriormente con Simulink Test, además de pruebas adicionales basadas en simulación creadas por el equipo de ingeniería eléctrica y otra ronda de comprobaciones de conformidad con pautas de modelado.

Si el modelo de control supera todas las pruebas y comprobaciones, Jenkins invoca Embedded Coder® 1 para generar código C++ a partir del modelo. El código C++ generado se compila en un archivo DLL, que posteriormente se utiliza en PSCAD para ejecutar simulaciones de la central completa y su software de control.

Vestas utiliza estas simulaciones para demostrar a los gestores de redes de transporte cómo funcionará la central cuando esté conectada a la red en condiciones normales y en caso de caídas de tensión, oscilaciones y otras perturbaciones. Finalmente, el código generado se prueba en el sistema de control industrial objetivo antes de desplegarlo en producción.

Los resultados

  • Generación de código fiable y sin errores. “Nos enfrentamos a sanciones si nuestros sistemas de control no funcionan como deben”, afirma Nielsen. “Con Simulink y Embedded Coder, aprendimos bastante rápido que podíamos confiar en el código que generamos; de hecho, no hemos tenido ni un solo problema”.
  • Automatización de flujo de trabajo de integración continua multisitio. “Tenemos docenas de profesionales de ingeniería de todo el mundo que trabajan en paralelo en un mismo modelo con muchas fusiones”, explica Nielsen. “Combinando el diseño basado en modelos y la integración continua, hemos acortado las iteraciones y automatizado los procesos de pruebas”.
  • Flexibilidad de uso con diferentes plataformas de hardware. “Antes, desarrollábamos controladores desarrollando texto estructurado personalizado para una plataforma PLC, lo que significaba que estábamos ligados a esa plataforma”, dice Nielsen. “Ahora, generamos código C++ portátil a partir de nuestros modelos de Simulink, lo que nos brinda la flexibilidad de utilizar plataformas de controles industriales alternativas”.

1 Una licencia de acceso de cliente es necesaria para utilizar Embedded Coder en Jenkins u otros equipos de integración continua.