PLCopen implementeert object georiënteerd programmeren van PLC’s

PLCopen, de organisatie die technische specificaties en bibliotheken ontwikkelt voor het programmeren van PLC’s, is gestart met de implementatie van object georiënteerd programmeren. Het concept dat in IT al heel gebruikelijk is, maakt een meer intuïtieve manier mogelijk om programma’s op te bouwen en te beheren, al vergt het wel wat oefening om zich de nieuwe denkwijze eigen te maken.

Eerder dit jaar had PLCopen een kick-off meeting voor het nieuwe project rond de implementatie van object georiënteerd programmeren. De vereniging staat momenteel open voor kandidaten die zich willen engageren om een en ander verder uit te werken.

PLCopen is een belangrijke referentie in de wereld van PLC’s.

Het programmeren van die dingen is vandaag grotendeels gestandaardiseerd in IEC 61131. Het derde luik van die standaard legt de talen vast die wereldwijd door PLC programmeurs gebruikt worden, namelijk ladder diagrammen, functieblok diagrammen, gestructureerde tekst, instructielijsten en sequentiële functiegrafieken.

Wat PLCopen doet, is hierop verder bouwen door best practices en functieblokken te ontwikkelen. Heel wat fabrikanten van PLC’s ondersteunen de specificaties van de vereniging en verwijzen er ook naar.

Het object georiënteerd programmeren werd al in 2013 opgenomen in de derde editie van IEC 61131-3. Met het nieuwe initiatief nu wil ook PLCopen het concept mee opnemen in zijn aanbod.

Methodes en eigenschappen

Object georiënteerd programmeren (OO) biedt een intuïtieve manier om programma’s beter te organiseren. In de PLC wereld worden objecten gedefinieerd als functieblokken waarin vervolgens methodes en eigenschappen gedefinieerd worden. De functieblokken komen in dat opzicht overeen met wat in de IT wereld de classes zijn.

Elk object in een programma is wat men in OO een instantie noemt van zo een functieblok. Een programma kan bijvoorbeeld een functieblok hebben voor het realiseren van tellers. Een specifieke teller is dan een object dat via het functieblok voor tellers gecreëerd wordt.

De methodes zijn functies en acties die een object kan ondernemen. Het functieblok voor tellers zal bijvoorbeeld een methode hebben om de waarde van de teller met 1 te verhogen. Het object teller kan dan gemanipuleerd worden door die methode aan te roepen.

De eigenschappen (properties) slaan op de variabelen en parameters van een object. Voor onze teller is dat bijvoorbeeld de actuele waarde. Het kan ook een maximumwaarde zijn, enz.

De “klassieke” talen blijven in het object georiënteerd programmeren overigens behouden. Een methode in een functieblok kan bijvoorbeeld via een ladder diagram geprogrammeerd worden. Het grote verschil zit in de manier waarop programma’s opgebouwd worden. De complexe werking van de functieblokken blijft netjes in die blokken verborgen. Het uiteindelijke PLC programma blijft dan beperkt tot het creëren van objecten, het toepassen van de methodes en het aanroepen van de eigenschappen.

Erfgenamen

Op zich hoeft die zienswijze niet zoveel te verschillen van de klassieke manier van programmeren want ook daar kan men maximaal gebruikmaken van functies om het finale programma clean en overzichtelijk te houden.

Toch is er nog een specifieke eigenschap van object georiënteerd programmeren die, eens men het concept onder de knie heeft, tot bijkomende vereenvoudiging kan leiden, en dat is wat men in OO inheritance noemt.

Zodra men functieblokken wil uitbreiden voor specifieke toepassingen doet zich in de klassieke benadering immers al snel de situatie voor waarbij kopieën gemaakt worden die dan elk weer aangepast worden aan specifieke noden. Die kopieën kunnen een probleem vormen, of op zijn minst toch extra werk opleveren, wanneer er aanpassingen gemaakt worden in het originele functieblok want die wijzigingen moeten dan ook in de kopieën doorgevoerd worden.

In object georiënteerd programmeren wordt dat opgevangen door nieuwe functieblokken te creëren die methodes en eigenschappen “erven” van het originele functieblok. Dat wil zeggen dat die zaken niet opnieuw gedefinieerd moeten worden in de kopie en dat ze ook automatisch mee wijzigen wanneer het originele functieblok aangepast wordt.

In het voorbeeld van onze teller zou het bijvoorbeeld mogelijk zijn om een nieuw functieblok te maken voor een teller die aftelt naar beneden waarbij ook eigenschappen van de originele teller meegenomen worden via inheritance.

Een belangrijk aspect bij de implementatie van OO is dan ook de juiste keuze te maken bij het definiëren van de functieblokken zodat maximaal van dit soort features gebruikgemaakt kan worden.

Om het nog een keer over onze teller te hebben: de juiste methode zou dan zijn om eerst een generieke teller te definiëren waarbij een teller die optelt en een die aftelt vervolgens gedefinieerd worden als twee verschillende erfgenamen van de generieke teller.

© Productivity.be, 05/09/2019


Feel free to share

Newsletter

News

Emerson’s New Comprehensive Automation Platform Empowers Decisive Action from Plant to Enterprise

Three trends set to drive cyber-attacks in 2024

Apptronik and Mercedes-Benz Enter Commercial Agreement

The All Electric Society Arena points the way to a carbon-neutral industrial society

Machine manufacturers showcasing security solutions for digital grinding processes at GrindingHub

New Level and Flow Controller Reduces Complexity in Water and Wastewater Applications


Agenda

15/04 - 19/04: Wire/Tube, Düsseldorf (D)

22/04 - 26/04: Hannover Messe, Hannover (D)

14/05 - 16/05: Advanced Manufacturing, Antwerp Expo (B)

15/05 - 16/05: Advanced Engineering, Antwerp Expo (B)

15/05 - 16/05: Food Tech Event, Brabanthallen, 's-Hertogenbosch (Nl)

28/05: Industrie & Maintenance, Namur Expo (B)

05/06 - 06/06: Vision, Robotics & Motion, Brabanthallen, 's-Hertogenbosch

10/06 - 14/06: ACHEMA, Frankfurt am Main (D)

18/09 - 19/09: Kunststoffen, Brabanthallen 's-Hertogenbosch (Nl)

08/10 - 11/10: Motek, Stuttgart (D)

15/09/25 - 19/09/25: Schweissen & Schneiden, Messe Essen (D)

08/10/25 - 15/10/25: K, Düsseldorf (D)