Slaying the legacy beast in het PLC domein

Uit angst voor forse machinestilstanden is de conservatieve PLC-industrie zeer terughoudend om haar legacy software aan te pakken. Gebaseerd op Bas Beuting’s masterthesis hebben Cordis en Axini een combinatie van automatische code-naar-model transformaties en modelgebaseerd testen ontwikkeld die deze terughoudendheid kan wegnemen. Capgemini Engineering is klaar om de geïntegreerde oplossing in de praktijk te brengen.

“Veel fabrieken worstelen met verouderde machineonderdelen,” constateert Matthijs van Doormaal, applicatie-ingenieur en PLC-specialist bij Capgemini Engineering. “Ze halen overal onderdelen vandaan om hun oude systemen draaiende te houden. We zien ze het internet afstruinen om een voorraad op te bouwen voor het geval een oude I/O-module of PLC uitvalt. Ze doen er alles aan om te voorkomen dat ze nieuwe besturingscomponenten moeten integreren, omdat dat zou betekenen dat de bestaande besturingssoftware geüpgraded moet worden, wat vanwege een gebrek aan kennis veel moeite en dus veel stilstand met zich mee zou brengen.”

“We hebben het over systemen die twintig jaar oud zijn, soms nog ouder,” vervolgt Van Doormaal. “Hoewel de hardware meestal nog in goede staat is, is de besturingssoftware verouderd en niet langer ondersteund, en dus dringend aan een upgrade toe. Met alle veranderingen door de jaren heen en de oorspronkelijke programmeurs meestal niet meer beschikbaar, is het vervangen van twintig jaar oude PLC-code een hele uitdaging.”

“De PLC-markt is van oudsher zeer conservatief,” legt Floris Verstegen uit, solutions manager bij Capgemini Engineering. “Er is een enorme geïnstalleerde basis met een even grote hoeveelheid legacy, maar er is meestal geen testinfrastructuur en de documentatie ontbreekt vaak ook. Alle kennis over de systemen zit in de code. Dat is de enige waarheid die ze hebben, en daarom zijn ze zo terughoudend om er iets aan te veranderen.”

Er komt meer kijken bij een systeemupgrade dan alleen het installeren van nieuwe software, voegt Verstegen toe. “Na de upgrade moet het systeem bijvoorbeeld een nieuwe CE-markering krijgen. Omdat de veiligheidseisen sinds de jaren negentig veel strenger zijn geworden, is dat proces doorgaans niet minder arbeidsintensief en vergt het veel extra ontwikkelingswerk.”

Via de samenwerking met Cordis heeft Capgemini Engineering al een gedeeltelijke oplossing voor het probleem. Met de Cordis Suite low-code ontwikkelomgeving kunnen machinebesturingstoepassingen worden vastgelegd in grafische modellen, waaruit foutloze code automatisch kan worden gegenereerd voor een groot aantal hardwareplatforms. Volgens Verstegen is deze oplossing ideaal voor het creëren van besturingssoftware vanaf nul in greenfield-projecten en ook voor het uitbreiden van een bestaande codebasis in brownfield-situaties. “Je kunt je legacy PLC-code nemen, er een interface-laag omheen zetten en daarop nieuwe functionaliteit bouwen.”

Het aanpakken van de legacy zelf vereist echter iets meer. De conservatieve PLC-industrie wil absoluut zeker zijn dat hun systemen exact hetzelfde gedrag vertonen vóór en na de ‘codeverjonging’. Samen met de modelgebaseerde testspecialisten van Axini heeft Cordis een oplossing ontwikkeld die die garantie kan geven.

 

Het idee voor de oplossing werd bedacht door Bas Beuting (rechts), zoon van Cordis-oprichter Benno (links).
Terugkerende Patronen

Het idee voor de oplossing werd bedacht door Bas Beuting, zoon van Cordis-oprichter Benno, toen hij op zoek was naar een onderwerp voor zijn masterthesis aan de Technische Universiteit Eindhoven (TUE). Hij werd geïnspireerd door een gastcollege van TNO-ESI over hun Renaissance-methodologie en tooling om complexe codebases te analyseren en automatisch te refactoren. Bekend met het werk van zijn vader zag hij een kans om de aanpak te vertalen naar Cordis en het PLC-domein. Zijn universiteitsprofessor, Mark van den Brand, was snel gecharmeerd van het idee, net als Capgemini Engineering, de implementatiepartner van TNO-ESI die belast was met de industrialisatie van de Renaissance-onderzoeksresultaten.

“Zo is mijn onderzoek naar PLC-codeverjonging geboren,” herinnert Beuting junior zich. “Het basisidee is om de software toekomstbestendiger en onderhoudsvriendelijker te maken door deze om te zetten in hardware-onafhankelijke Cordis-modellen, die dan de enige bron van waarheid worden. Uit deze modellen kan nieuwe code worden gegenereerd die bewezen hetzelfde gedrag vertoont als de legacy-code met behulp van Axini’s modelgebaseerde testframework.”

Als eerste stap beperkte de jongere Beuting het speelveld. “PLCs kunnen in verschillende talen worden geprogrammeerd. Na enig onderzoek besloot ik me te concentreren op de variant genaamd Structured Text. In tegenstelling tot de grafische PLC-formalismen heeft ST een tekstuele notatie, vergelijkbaar met traditionele programmeertalen. Toepassingen geschreven in Structured Text hebben vaak ook een op toestand gebaseerde structuur. Deze kenmerken maken de code relatief gemakkelijk te parseren en om te zetten in Cordis-modellen. Bovendien is ST een van de meest gebruikte PLC-talen.”

Vervolgens zette Beuting een bibliotheek op met veel voorkomende codepatronen en hun corresponderende representaties in Cordis. “Van bedrijven als ASML en VDL verkreeg ik een aanzienlijke hoeveelheid real-world PLC-code in Structured Text. In een diepgaande analyse van deze code identificeerde ik een groot aantal terugkerende patronen, groot en klein. Voor elk patroon analyseerde ik het uitvoeringsgedrag op de PLC en bracht dat in kaart als toestandsmachines. Omdat Cordis-modellen ook gebaseerd zijn op toestandsmachines, was de uiteindelijke transformatie relatief eenvoudig.”

Een Cordis-klassendiagram (links) en een Cordis-toestandsmachinediagram (rechts) modelleren een cel in de demo-productielijn. 

Last but not least kon Beuting aantonen dat de PLC-code inderdaad correct was overgedragen naar Cordis, dat wil zeggen dat de oorspronkelijke Structured Text en de resulterende modellen hetzelfde gedrag vertoonden. “Ik wendde me tot de verificatiespecialisten van de TUE voor advies, die me een paar opties gaven. Na de alternatieven die moeilijk te automatiseren of te tijdrovend waren weg te strepen, bleef er maar één optie over: modelgebaseerd testen. Na een gesprek met Axini’s Machiel van der Bijl besloot ik het te proberen en vond ik een manier om de juistheid van mijn transformaties te verifiëren.”

“Eerst zette ik de Cordis-modellen om in Axini-modellen. Dit is vrij eenvoudig omdat de modellen die voortkomen uit de transformatie van Structured Text niet erg complex zijn,” legt Beuting zijn oplossing verder uit. “Uit de Axini-modellen liet ik automatisch testgevallen genereren, die ik draaide tegen de uit de Cordis-modellen gegenereerde PLC-code om de geldigheid van de tests voor de gegenereerde code te dubbelchecken. Vervolgens draaide ik dezelfde testgevallen tegen de oorspronkelijke PLC-code en ze slaagden allemaal, wat aangeeft dat de oude en de nieuwe code identiek gedrag vertonen.”

Model-based testing

Axini’s benadering van modelgebaseerd testen (MBT) automatiseert het hele testproces: het genereert, voert uit en evalueert tests automatisch. Het is een vorm van modelgebaseerde software-engineering. In plaats van code te genereren, genereert het testgevallen.  

Voor handmatig testen heb je een specificatie nodig, op basis waarvan je tests maakt die de uitkomst voorspellen. Vervolgens voer je de tests uit en evalueer je de uitkomst. Scriptingbenaderingen, zoals behavior-driven development (BDD) en test-driven development (TDD), automatiseren een deel van de testuitvoering met behulp van geprogrammeerde tests. MBT maakt het programmeren van testgevallen overbodig. In plaats daarvan maak je een model van het te testen systeem en automatiseer je alle teststappen: het maken van tests, het voorspellen van de uitkomst, de uitvoering van de tests en de evaluatie.

 

Het Axini Modeling Platform (AMP) maakt gebruik van een adapter die het te testen systeem omhult en het mogelijk maakt om onafhankelijk berichten te verzenden en te ontvangen over alle interfaces. Het model definieert de relatie tussen inputs en outputs volgens de specificatie. AMP leest het model en experimenteert met het te testen systeem om te zien of het aan de specificatie voldoet. De mogelijkheid om tegelijkertijd berichten te verzenden en te observeren over alle interfaces maakt vroege tests tijdens de ontwikkelingscyclus mogelijk zonder de noodzaak van simulatoren of de externe systeemomgeving.

Onopgemerkte bugs

Deze eerste in zijn soort combinatie van statische code-naar-model transformaties en runtime-verificatie sluit de lus, van ontwerp naar codering naar testen terug naar ontwerp. “Je kunt je brownfield-omgeving statisch scannen en je legacy-software laten omzetten in modellen. Uit deze modellen kun je vervolgens code genereren voor een breed scala aan PLC’s. Door deze code dynamisch te verifiëren, kun je de juistheid van de modellen controleren,” verduidelijkt Verstegen van Capgemini. “Je kunt dit parallel aan je operaties doen, op een aparte PLC of soft PLC, zonder het risico van downtime. Omdat alle stappen automatisch kunnen worden uitgevoerd, kun je je engineeringsfocus verleggen naar het toevoegen van echte waarde.”

Bas Beuting denkt dat het al mogelijk is om 70-80 procent van de in Structured Text geschreven PLC-code automatisch te transformeren. “Je moet nog wel wat handwerk verrichten, maar het gros wordt voor je gedaan. En omdat mijn patroonbibliotheek open source is, kunnen nieuwe patronen worden opgenomen om het resterende handwerk verder te verminderen.” In de toekomst overweegt hij zelf zijn oplossing uit te breiden naar andere PLC-dialecten. “Ladderdiagrammen zijn ook relatief wijdverbreid. Ze bevatten niet echt toestandsmachinedrag, maar verder onderzoek, misschien als onderdeel van een promotieproject, zou daar een manier voor kunnen vinden.”

Naast het faciliteren van codeverjonging, kan de aanpak ook helpen de software in het proces te verbeteren. “De modelgebaseerde teststap onthult de verschillen in gedrag tussen de oorspronkelijke code en zijn gegenereerde tegenhanger,” legt Verstegen verder uit. “De meeste deltas zullen acceptabel klein zijn. Af en toe is het nieuwe gedrag beter of blijkt zelfs dat het oude gedrag ronduit fout is vanwege een eerder onopgemerkte bug, bijvoorbeeld in een uitzonderlijke situatie die de software nog niet is tegengekomen. Modelgebaseerd testen komt overal, ook op plekken waar het systeem normaal gesproken niet komt.”

“Wanneer zo’n bug aan het licht komt, kun je gemakkelijk zien waar het misgaat,” voegt Beuting toe. “Je kunt de testtraces volgen, van start tot fout, waarna je naar het Cordis Suite Dashboard kunt gaan en real-time en historische statusinformatie kunt krijgen van alle relevante toestandsmachines in je Cordis-modellen. Dit stelt je in staat precies te bepalen waar het systeem een verkeerde afslag nam en waarom. Je kunt vervolgens de juiste wijzigingen aanbrengen in je Cordis- en Axini-modellen en de tests opnieuw uitvoeren, de cyclus herhalend totdat alle problemen zijn opgelost.”

Een bijkomend voordeel van de overgang naar Cordis-modellen is de beschikbaarheid van data. “Om de software niet te hoeven aanraken, sluiten data-analisten traditioneel allerlei externe sensoren aan op de PLC’s. Helaas is deze data-acquisitie verre van hard real-time,” merkt Verstegen op. “Wanneer de besturingssoftware in Cordis is gemodelleerd, heb je hard real-time toegang tot alle systeemdata. Dit opent een schat aan mogelijkheden voor data-analisten.”

Axini’s Machiel van der Bijl, Benno en Bas Beuting van Cordis en Niels Brouwers, Thijs Geurts en Matthijs van Doormaal van Capgemini Engineering naast Festo’s demo-productielijn in de Brainport Digital Factory. 

Meerhoofdige monster

De oplossing van Bas Beuting is onlangs geïntegreerd in Cordis Suite en het Axini Modeling Platform, zegt zijn vader Benno. “Bas is veel verder gekomen dan we voor mogelijk hielden, zo ver zelfs dat de integratie relatief eenvoudig was.” Buiten de Cordis- en Axini-omgevingen blijft er slechts één klein onderdeel over: de open-source bibliotheek die PLC-codepatronen omzet in Cordis-modellen. Beuting senior verwacht dat de geïndustrialiseerde versie van de oplossing binnenkort beschikbaar zal zijn. Hij is al in gesprek met partijen die staan te popelen om het te gebruiken.

De experts van Capgemini Engineering zijn evenzeer verbaasd over de snelle vooruitgang. “Ik had verwacht dat er veel meer variatie in de PLC-code zou zitten, wat de patroonherkenning veel meer werk zou maken en het automatiseringsniveau zou verminderen. De variatie blijkt mee te vallen, waardoor Bas de automatisering op een verrassend hoog niveau heeft kunnen brengen,” erkent modelgebaseerde re-engineering specialist Niels Brouwers, die nauw betrokken is bij de industrialisatie van TNO-ESI’s Renaissance-inspanningen. “Hoewel dit al een grote prestatie is, is de validatie door de transformatie naar Cordis te verifiëren een enorme bonus, mogelijk zelfs de meest waardevolle bijdrage. De ingrediënten zijn niet nieuw, maar hoe Bas ze heeft gecombineerd is een primeur.”

“Wat ik het mooiste vind aan de aanpak is dat het je in staat stelt de controle terug te krijgen,” benadrukt Brouwers. “Er is een volledig ongrijpbare legacy-applicatie, waarvan alle kennis verloren is gegaan. Met Bas’ aanpak kun je er weer grip op krijgen. Je kunt je oncontroleerbare PLC-code naar een hoger abstractieniveau tillen en bestand maken tegen veranderingen, waardoor de levensduur van je software met decennia wordt verlengd.”

Axini ziet een wereld van mogelijkheden buiten het PLC-domein. “In het Eulynx-project, bijvoorbeeld, werken Prorail en andere infrabeheerders aan herbruikbare objectcontrollers voor het Europese spoorwegnetwerk. Momenteel worden deze gemodelleerd in SysML, maar ik weet zeker dat Bas’ aanpak daar ook uiterst waardevol zou kunnen zijn,” illustreert Machiel van der Bijl.

“Legacy is een meerhoofdige monster voor veel bedrijven,” constateert Capgemini’s Verstegen. “Deze aanpak is een grote stap in de richting van het verslaan van het beest. Er is nog veel werk te doen op het gebied van mensen en processen, maar het is een groot stuk van de puzzel en een enabler voor veel meer.”

Dit artikel is geschreven in nauwe samenwerking met Axini en Cordis.

Brainport Digital Factory Leden
Deze bedrijven staan klaar om je te helpen een winnaar te worden in Digital Factory

Door samen te werken met onderwijsinstellingen en het bedrijfsleven in combinatie met de technologie om de digitalisatie te versnellen, ontwikkelen wij kennis over “what, why, how” van de digitale fabriek samen met onze leden.

nl_NLDutch