Objectgeoriënteerde technieken ook geschikt voor plc’s

Steeds vaker kampen plc-programmeurs met dezelfde uitdagingen die eerder waren voorbehouden aan grote, complexe softwareprojecten. Objectgeoriënteerde technieken bieden uitkomst, maar in het verleden konden ze niet een-op-een worden toegepast vanwege de traditionele beperkingen van plc’s. Met de nieuwe release van de IEC 61131-3-standaard voor plc’s komen objectgeoriënteerde functies beschikbaar en groeien de mogelijkheden enorm.

Alexander Pil
20 september 2019

Hbo’ers en academici doen plc’s regelmatig af als inferieure technologie. Leuk voor simpele machientjes, maar absoluut ontoereikend voor de complexe systemen waar zij aan werken. Vroeger hadden ze wellicht een punt; plc’s werken in principe altijd cyclisch en die takttijd kon weleens roet in het eten gooien. Een cyclus van minder dan tien milliseconden is voor moderne plc’s echter heel normaal. Voor tijdkritieke toepassingen zijn er zelfs plc’s beschikbaar met een cyclustijd van minder dan een milliseconde.

Objectgeoriënteerde technieken voor plc's
Onno van Roosmalen (links) en Tim van Heijst (rechts) hebben een vijfdaagse cursus opgezet waarin plc-experts en OO-specialisten leren hoe ze via objectgeoriënteerd programmeren een plc-toepassing kunnen ontwikkelen.

‘Verpakkingsmachines – ook al moeten ze een heel hoge snelheid halen – kun je makkelijk aansturen met een plc’, stelt Tim van Heijst, eigenaar van Codesys-specialist Extend Smart Coding en docent bij High Tech Institute. ‘Ook voor robotapplicaties zijn plc’s een prima platform. Met de huidige kracht van plc’s zijn er vrijwel geen toepassingen meer waar ze tekortschieten.’

Object-oriented system control automation

This course is intended to help developers and architects to apply object-oriented analysis, design and implementation techniques in a practical manner. It focuses on methodology but also pays attention to details of its practical application in the automation domain.

Dat betekent niet dat leveranciers zoals B&R, Beckhoff, Rockwell en Siemens hun plc’s ook zonder slag of stoot verkopen in het hogere segment. ‘Bij grotere machinebouwers is het soms nog een interne strijd: ontwerpen we alles zelf of kiezen we voor een plc?’, heeft Van Heijst ervaren. ‘De probleemstelling is echter vrijwel altijd hetzelfde. Ze willen zo snel en zo goed mogelijk een applicatie ontwikkelen, en als het even kan bestaande code hergebruiken.’ Een plc voldoet aan al die eisen. ‘Het is een standaard product dat goed wordt ondersteund door de leverancier. Als je een bug in de firmware hebt, lost hij die voor je op. Je kunt heel eenvoudig koppelen aan je actuatoren en sensoren, omdat er allerlei gestandaardiseerde communicatieprotocollen beschikbaar zijn. Daarom heb je je systeem heel snel aan de gang’, aldus Van Heijst. Bijkomend voordeel is dat vrijwel alle plc-fabrikanten de IEC 61131-3-norm volgen. Dat houdt in dat de applicatiesoftware die je bouwt, hardwareonafhankelijk is en een overstap naar een snellere plc – of zelfs een industriële pc – een koud kunstje is.

Object-oriented system control automation

This course is intended to help developers and architects to apply object-oriented analysis, design and implementation techniques in a practical manner. It focuses on methodology but also pays attention to details of its practical application in the automation domain.

Ontkoppelen

Waar plc’s traditioneel werden gebruikt in toepassingen met een beperkte functionaliteit, zijn de mogelijkheden inmiddels zo uitgebreid dat er moderne programmeertechnieken nodig zijn om alles op een goede manier in te regelen. Met versie 3 van de IEC 61131-standaard kunnen ontwikkelaars ook kiezen voor een objectgeoriënteerde aanpak.

Van Heijst: ‘Met de huidige kracht van plc’s zijn er vrijwel geen toepassingen meer waar ze tekortschieten.’

‘Je krijgt dan te maken met belangrijke software-eigenschappen als information hiding en encapsulatie, dus het idee dat je informatie lokaliseert en niet het hele systeem door gooit’, zegt Onno van Roosmalen, onafhankelijk consultant software-engineering en docent bij High Tech Institute. ‘In de praktijk zie je regelmatig dat een team een component van extra functionaliteit voorziet en dat er dan door het hele systeem dominosteentjes omvallen. Dat maakt het problematisch om iets toe te voegen. In veel webapplicaties zie je dat encapsulatie wordt gebroken, maar dat ligt aan hun aard: het beschikbaar stellen van informatie. Bij machinebesturing is dat een andere zaak.’

Nadenken over het verbergen van informatie gaat hand in hand met de manier waarop componenten elkaar aanspreken: de interface. ‘Daarmee kun je de gedetailleerde vorm van je objecten verbergen en zorgen dat er geen implementatiedetails naar buiten lekken. Je zorgt er dan voor dat de gebruiker alleen dát kan doen wat er nu wordt gevraagd, niet meer en niet minder’, legt Van Roosmalen uit. ‘Het idee daarachter is dat de evolutie van componenten kan worden ontkoppeld. Als een nieuwe versie van een component via een interface gewoon blijft doen wat hij voorheen deed, hoeft de software die erop gebouwd is niet direct aangepast te worden. Een ontwikkelteam dat tegen de component aan programmeert, kan de nieuwe versie rustig gebruiken zonder bang te zijn dat er in de tussentijd iets omvalt. Wanneer encapsulatie en interfaces op orde zijn, ontstaat dus bijna vanzelf een onderhoudbare, schaalbare architectuur die kan meegroeien met de toepassing.’

De voorwaarde is wel dat teams zich defensief opstellen bij het ontwerpen van hun interface. ‘Je moet niet zomaar alles aanbieden wat andere teams vragen’, stelt Van Roosmalen. ‘Hoe meer je aanbiedt, hoe meer onbedoelde gebruiksmogelijkheden er zijn. De kans wordt dan groter dat dingen bij een nieuwe versie omvallen. Je kunt een interface later altijd uitbreiden, maar inkrimpen is een stuk lastiger.’

Hoe werkt dat in de praktijk? Van Heijst geeft een voorbeeld: ‘Ik was onlangs bij een producent van laadstations. Ze maken heel veel varianten en werken met een scala aan stekkers. Het bedrijf wilde een energiemanagementsysteem ontwikkelen dat overweg kon met al die verschillen. We hebben dat met plc’s en een objectgeoriënteerde aanpak opgelost. Nu communiceert het managementsysteem via vastgelegde, generieke interfaces met alle laadstationversies en kan het bedrijf de ontwikkeling van alle blokken apart beheren. Daarmee daalt de kans op fouten, is hergebruik eenvoudiger en is een toepassing veel sneller in de lucht.’

Kennis opbouwen

Voor plc-programmeurs ‘van de oude stempel’ betekent de objectgeoriënteerde benadering een nieuwe manier van denken. Software-engineers voor wie OOP gesneden koek is, merken dat plc’s net even anders werken dan hun vertrouwde pc-omgeving. Plc-leveranciers bieden cursussen aan, maar die gaan over hoe je bijvoorbeeld de koppeling met je i/o legt. ‘Echte programmeertrainingen zijn dat niet’, vindt Van Heijst, ‘omdat je er niet leert hoe je een eigen applicatie moet bouwen.’

‘Objectgeoriënteerd denken voor de pc is vrijwel identiek aan objectgeoriënteerd denken voor de plc’, stelt Van Roosmalen.

Van Heijst en Van Roosmalen hebben daarom de training ‘Object-oriented system control automation’ opgezet. Een vijfdaagse cursus waarin plc-experts en OO-specialisten leren hoe ze via objectgeoriënteerd programmeren een plc-toepassing kunnen ontwikkelen. Zo kunnen bedrijven kennis opbouwen en hoeven ze niet terug te vallen op systeemintegratoren die het liefst alles naar zich toe trekken.

‘Objectgeoriënteerd programmeren is essentieel anders dan procedureel’, zegt Van Roosmalen. ‘Maar objectgeoriënteerd denken voor de pc is vrijwel identiek aan objectgeoriënteerd denken voor de plc. Je kunt hetzelfde softwareontwerp gebruiken. Nou ja, met wat kleine aanpassingen omdat de programmeerconcepten voor een plc net wat beperkter zijn.’

‘We leggen de techniek uit en vertellen hoe je het kunt toepassen’, vult Van Heijst aan. ‘Een groot deel van de training gaat over de methode waarmee je een goed softwareontwerp krijgt. Het gebeurt toch nog heel regelmatig dat een programmeur gewoon aan de slag gaat en een paar weken of maanden later een werkend stuk software aflevert. Dan komt er ineens een wijziging en moet hij zich in allerlei bochten wringen om dat voor elkaar te krijgen. Als je de objectgeoriënteerde methodiek goed toepast, ben je van dat probleem verlost. Nog zo’n voordeel van OOP.’