Vestas sviluppa un software di controllo per impianti eolici mediante progettazione Model-Based e integrazione continua
Sfida
Sviluppo di software di controllo per impianti di energia rinnovabile conformi a codici di rete che si evolvono e variano da una regione all’altra
Soluzione
Uso della progettazione Model-Based con integrazione continua per modellare controller, automatizzare test basati sulle simulazioni e generare codice di produzione per controller industriali
Risultati
- Codice generato affidabile e privo di problemi
- Workflow CI multisito automatizzato
- Prevenzione del vincolo hardware
Con oltre 66.000 turbine per un totale di oltre 100 GW di capacità eolica installata in 80 paesi, Vestas Wind Systems A/S ha installato più impianti eolici di qualsiasi altra azienda. Gli ingegneri di Vestas usano la progettazione Model-Based con integrazione continua (CI) per sviluppare software di controllo per impianti energetici e dimostrare la conformità ai codici di rete ai clienti e agli operatori di rete di Vestas.
“Gli operatori di rete vogliono vedere una simulazione delle prestazioni del tuo impianto e vogliono essere avere una garanzia della perfetta corrispondenza tra la simulazione e il codice di controllo,” afferma Per Hagen Nielsen, architetto di software per sistemi di controllo presso Vestas Wins Systems A/S. “Oggi, non molte aziende sono in grado di darne dimostrazione. Noi di Vestas possiamo farlo perché usiamo la progettazione Model-Based con MATLAB e Simulink per modellare e simulare i nostri sistemi di controllo per impianti di energia e quindi utilizziamo quegli stessi modelli per generare codice C++ per la simulazione e la produzione a livello di sistema.”
Sfida
Prima di adottare la progettazione Model-Based per la progettazione di controlli per impianti di energia, gli ingegneri di Vestas usavano un approccio convenzionale nel quale le specifiche basate su carta e i documenti di progettazione sviluppati dagli ingegneri energetici venivano consegnati agli ingegneri di software, che scrivevano a mano il codice per i singoli componenti o funzionalità. Gli ingegneri energetici eseguivano simulazioni usando software PSCAD, ma queste simulazioni si concentravano sull’energia elettrica anziché sul controllo software. Le simulazioni non integravano il codice di controllo, il che offriva poche garanzie che le simulazioni PSCAD riflettessero le prestazioni del sistema dopo l’integrazione e la distribuzione del software. Vestas voleva eliminare il potenziale errore umano che la codifica manuale comporta, garantendo nel contempo che le simulazioni dei propri sistemi energetici corrispondessero al software di controllo.
Oltre a ciò, Vestas voleva consentire ai team di ingegneria provenienti da 5 paesi in Europa e Asia di collaborare sugli stessi progetti e, in alcuni casi, sugli stessi modelli. Questo team geograficamente distante aveva la necessità di applicare il controllo delle versioni ai modelli, gestire frequenti punti di unione e automatizzare i test basati sulle simulazioni. Per soddisfare questi requisiti, Vestas ha deciso di usare la CI con Jenkins™ ed incorporare i principi di CI in un workflow ingegneristico basato su modellazione, simulazione e generazione di codice.
Soluzione
Con il sostegno del Senior Management, gli ingegneri energetici Vestas hanno stabilito un nuovo workflow per la progettazione di controlli per impianti di energia che combina CI e progettazione Model-Based con MATLAB® e Simulink®.
Quando viene proposta una modifica del codice di rete o un cliente richiede una nuova funzionalità o un nuovo componente, gli ingegneri di Vestas creano un set di requisiti formali. Sulla base dei requisiti, un gruppo sviluppa casi di test con Simulink e Simulink Test™ che verranno usati per verificare la nuova funzionalità, mentre un secondo gruppo progetta la nuova funzionalità in Simulink e Stateflow®.
Per creare un modello di sistema per le simulazioni a circuito chiuso, gli ingegneri di questo secondo gruppo combinano il modello di controllo con un modello Simulink che acquisisce l’impedenza e le caratteristiche dinamiche della rete nel punto di connessione all’impianto. Usando una funzione S di Simulink, si incorpora un modello di turbina eolica sviluppato in uno strumento proprietario e di cui è stato effettuato il packaging come DLL da parte di un altro gruppo di Vestas.
Dopo aver effettuato simulazioni a circuito chiuso con questo modello di sistema e aver eseguito i controlli per garantire la conformità agli standard di modellazione, sulla base delle linee guida del MathWorks Automotive Advisory Board (MAAB), gli ingegneri eseguono il check-in del modello di controllo in un archivio Git. Il check-in del modello attiva un lavoro Jenkins che esegue i casi di test precedentemente sviluppati con Simulink Test, così come test aggiuntivi basati sulle simulazioni creati dagli ingegneri energetici e un’altra serie di controlli di conformità alle linee guida sulla modellazione.
Se il modello di controllo supera tutti i test e controlli, Jenkins richiama Embedded Coder® 1 per generare codice C++ dal modello. Il codice C++ generato viene compilato in una DLL, che viene quindi usata in PSCAD per eseguire simulazioni dell’intero impianto e del suo software di controllo.
Vestas usa queste simulazioni per dimostrare agli operatori dei sistemi di trasmissione quali saranno le prestazioni dell’impianto quando è connesso alla rete in condizioni normali e in presenza di cali di tensione, oscillazioni e altri disturbi. Infine, il codice generato viene testato sul sistema di controllo industriale target prima di essere distribuito in produzione.
Risultati
- Codice generato affidabile e privo di problemi. “Se i nostri sistemi di controllo non funzionano come dovrebbero rischiamo di incorrere in penali,” afferma Nielsen. “Con Simulink ed Embedded Coder, abbiamo appreso piuttosto in fretta che possiamo fidarci del codice che generiamo. Difatti, non abbiamo riscontrato alcun problema.”
- Workflow CI multisito automatizzato. “Abbiamo decine di ingegneri nel mondo che lavorano in parallelo sullo stesso modello con tanti punti di unione,” spiega Nielsen. “Unendo progettazione Model-Based e CI, abbiamo accorciato le iterazioni e automatizzato le procedure di test.”
- Prevenzione del vincolo hardware. “In passato, sviluppavamo i controller scrivendo testo strutturato personalizzato per una piattaforma PLC, il che significava che eravamo strettamente vincolati a quella piattaforma,” fa notare Nielsen. “Oggi, generiamo codice C++ portabile dai nostri modelli Simulink, il che ci offre la flessibilità di usare piattaforme di controllo industriale alternative.”
1 Per l’utilizzo di Embedded Coder su Jenkins o altre macchine CI potrebbe essere necessaria una licenza CAL.