Onno van Roosmalen & Tim van Heijst - Trainers
Onno van Roosmalen en Tim van Heijst hebben een vijfdaagse cursus opgezet waarin PLC-experts en OO-specialisten leren hoe ze een PLC-applicatie kunnen ontwikkelen door middel van objectgeoriënteerd programmeren. High Tech Institute zal deze cursus begin 2020 voor het eerst uitrollen.
PLC-programmeurs worden steeds vaker geconfronteerd met dezelfde uitdagingen die voorheen waren voorbehouden aan grote, complexe softwareprojecten. Objectgeoriënteerde technieken bieden een oplossing, maar konden in het verleden niet één op één worden toegepast vanwege de traditionele beperkingen van PLC’s. Met de nieuwe release van de IEC 61131-3 standaard voor PLC’s zijn objectgeoriënteerde functies nu beschikbaar en zijn de mogelijkheden enorm toegenomen.
Hogescholen en academici doen PLC’s regelmatig af als een inferieure technologie. Leuk voor eenvoudige machines, maar volstrekt ontoereikend voor de complexe systemen waaraan ze werken. In het verleden hadden ze misschien een punt. In principe zijn PLC’s altijd cyclisch, maar de cyclustijd kan vaak roet in het eten gooien. Voor moderne PLC’s is een cyclus van minder dan tien milliseconden echter heel normaal. Voor tijdkritische toepassingen zijn er zelfs PLC’s verkrijgbaar met een cyclustijd van minder dan een milliseconde.

Onno van Roosmalen (links) en Tim van Heijst (rechts) hebben een vijfdaagse cursus opgezet waarin PLC-experts en OO-specialisten leren hoe ze een PLC-applicatie kunnen ontwikkelen door middel van objectgeoriënteerd programmeren.
“Verpakkingsmachines – zelfs als ze een zeer hoge snelheid moeten halen – kunnen eenvoudig worden aangestuurd met een PLC”, zegt Tim van Heijst, eigenaar van Codesys-specialist Extend Smart Coding en docent aan het High Tech Institute. “PLC’s zijn ook een uitstekend platform voor robottoepassingen. Met de huidige kracht van PLC’s zijn er bijna geen toepassingen waarbij ze falen.”
Dat wil niet zeggen dat leveranciers als B&R, Beckhoff, Rockwell en Siemens hun PLC’s ook probleemloos in het hogere segment zullen verkopen. 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 bijna altijd dezelfde. Men wil zo snel en zo goed mogelijk een applicatie ontwikkelen en, indien haalbaar, bestaande code hergebruiken. “Een PLC voldoet aan al deze eisen. Het is een standaardproduct dat goed ondersteund wordt door de leverancier. Als je een bug in de firmware hebt, wordt die voor je opgelost. Je kunt eenvoudig verbinding maken met je actuatoren en sensoren, omdat er allerlei gestandaardiseerde communicatieprotocollen beschikbaar zijn. Daarom kun je je systeem heel snel in gebruik nemen,” zegt Van Heijst. Een bijkomend voordeel is dat bijna alle PLC-fabrikanten de IEC 61131-3 standaard volgen. Dit betekent dat de applicatiesoftware die je bouwt hardwareonafhankelijk is en dat het overstappen naar een snellere PLC – of zelfs een industriële pc – een fluitje van een cent is.
Ontkoppeling
Waar PLC’s van oudsher werden gebruikt in toepassingen met beperkte functionaliteit, zijn de mogelijkheden nu zo uitgebreid dat moderne programmeertechnieken nodig zijn om alles op een goede manier 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 waarin ze falen’.
“Je krijgt dan te maken met belangrijke softwarefuncties als information hiding en encapsulation, oftewel het idee dat je informatie lokaliseert en niet door het hele systeem gooit,” zegt Onno van Roosmalen, onafhankelijk software engineering consultant en docent aan het High Tech Institute. “In de praktijk zie je regelmatig dat een team een component voorziet van extra functionaliteit, waardoor er een cascade van gebeurtenissen door het hele systeem ontstaat. Dat maakt het lastig om iets toe te voegen. Bij veel webapplicaties zie je dat de inkapseling doorbroken wordt, maar dat hangt af van hun aard: het beschikbaar stellen van informatie. Bij machinebesturing ligt dat anders.”
“De gedachte om informatie te verbergen gaat hand in hand met de manier waarop componenten elkaar aanspreken: de interface. Hiermee kun je de gedetailleerde vorm van je objecten verbergen en ervoor zorgen dat er geen implementatiedetails uitlekken. Je zorgt er dan voor dat de gebruiker alleen kan doen wat op dat moment nodig is, niet meer en niet minder,” legt Van Roosmalen uit. Het idee hierachter is dat de evolutie van componenten kan worden losgekoppeld. Als een nieuwe versie van een component via een interface blijft doen wat het vroeger deed, hoeft de software die erop gebouwd is niet meteen aangepast te worden. Een ontwikkelteam dat tegen het component programmeert, kan de nieuwe versie gebruiken zonder bang te hoeven zijn dat er ondertussen iets omvalt. Wanneer inkapseling en interfaces in orde zijn, ontstaat bijna automatisch een onderhoudbare, schaalbare architectuur die kan meegroeien met de applicatie.
' You can always expand an interface later on, but downsizing is a lot more difficult.'
“Voorwaarde is wel dat teams een defensieve houding aannemen bij het ontwerpen van hun interface. Je moet niet zomaar alles aanbieden wat andere teams vragen,” zegt Van Roosmalen. “Hoe meer je aanbiedt, hoe meer onbedoelde toepassingen er zijn en hoe groter de kans dat er dingen stuk gaan in een nieuwe versie. Je kunt een interface later altijd uitbreiden, maar downsizen is veel moeilijker.
Hoe werkt dat in de praktijk? Van Heijst geeft een voorbeeld: “Onlangs bezocht ik een fabrikant van laadpalen. Zij maken veel varianten en werken met een breed scala aan stekkers. Het bedrijf wilde een energiemanagementsysteem ontwikkelen dat met al die verschillen overweg kon. Dat hebben we opgelost met PLC’s en een objectgeoriënteerde aanpak. Nu communiceert het beheersysteem met alle laadpaalversies via gedefinieerde, generieke interfaces en kan het bedrijf de ontwikkeling van alle blokken afzonderlijk beheren. Dit verkleint de kans op fouten, maakt hergebruik eenvoudiger en zorgt ervoor dat een applicatie veel sneller in de lucht is.”
Kennis opbouwen
“Voor PLC-programmeurs ‘van de oude stempel’ betekent de objectgeoriënteerde benadering een nieuwe manier van denken. Software engineers voor wie OOP een fluitje van een cent is, merken dat PLC’s net even anders werken dan hun vertrouwde PC-omgeving. PLC-leveranciers bieden cursussen aan, maar die gaan bijvoorbeeld over hoe je een verbinding maakt met je i/o. Echte programmeercursussen zijn dat niet,” zegt de PLC-leverancier. Echte programmeercursussen zijn dat niet,” zegt Van Heijst, “omdat je niet leert hoe je je eigen applicatie bouwt.”
Objectgeoriënteerd denken voor de pc is bijna identiek aan objectgeoriënteerd denken voor de PLC,” zegt Van Roosmalen.
Daarom hebben Van Heijst en Van Roosmalen de training “Objectgeoriënteerde besturingsautomatisering.” Een vijfdaagse cursus waarin PLC-experts en OO-specialisten leren hoe ze via objectgeoriënteerd programmeren een PLC-applicatie kunnen ontwikkelen. Op deze manier kunnen bedrijven kennis opbouwen en hoeven ze niet terug te vallen op system integrators die liever alles regelen.
“Objectgeoriënteerd programmeren is wezenlijk anders dan procedureel programmeren,” zegt Van Roosmalen. “Maar objectgeoriënteerd denken voor de pc is bijna 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 wat beperkter zijn.”
“We leggen de techniek uit en vertellen je hoe je die kunt toepassen,” voegt Van Heijst toe. “Een groot deel van de training gaat over hoe je tot een goed softwareontwerp komt. Het gebeurt nog heel vaak dat een programmeur gewoon aan de slag gaat en een paar weken of maanden later een werkend stuk software aflevert. Dan is er plotseling een verandering en moeten ze allerlei bochten maken om het voor elkaar te krijgen. Als je de objectgeoriënteerde methodologie goed toepast, ben je van dat probleem verlost. Nog een voordeel van OOP.”
Dit artikel is geschreven door Alexander Pil, technisch redacteur van High-Tech Systemen.

