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

Productivity.be Update Alerts

Wenst u regelmatig update alerts te ontvangen over nieuwe artikels en productoverzichten?


Productivity.be

is een publicatie van
Redactiebureau ConScript

Contact

Erwin Vanvuchelen
+32 (0)475 64 99 34
erwin@conscript.be
erwinvanvuchelen