Datatypes

Bij het programmeren van een PLC wordt onder andere gebruik gemaakt van variabelen. Dit zijn objecten die een bepaalde waarde kunnen bevatten. Als je bijvoorbeeld de temperatuur wilt kunnen onthouden om deze op een andere plek te gebruiken dan maakt je gebruik van een variabele die de temperatuur opslaat. Op een later tijdstip kan de waarde weer uit die variabele worden opgevraagd.

Elke variabele is van een specifiek datatype. Hiermee wordt van tevoren bepaald wat voor soort waarde er kan worden opgeslagen en hoeveel geheugen hiervoor nodig is. Het simpelste datatype is een Boolean. Dit data type heeft de grootte van 1 bit en kan dus maar 2 waardes bevatten: 0 of 1. Een ander voorbeeld is het datatype Byte. De naam verklapt het al, deze variabele heeft de grootte van 1 byte (8 bits) en kan een waarde bevatten van 0 tot en met 255.

Hieronder staan de basis datatypes van een PLC:

Datatype Grootte (bits) Grootte (bytes) Waarde/bereik
Bool 1 0 – 1
Byte 8 1 0 – 255
Word 16 2 0 – 65.535
DWord 32 4 0 – 4.294.967.295

 

Naast deze basis datatypes zijn er ook nog een aantal andere datatypes die het mogelijk maken om ander soorten waardes op te kunnen slaan. Denk daarbij bijvoorbeeld aan negatieve getallen of komma getallen. Vaak zijn deze datatypes qua geheugengebruik niet groter dan de bovenstaande datatypes, maar ze worden op een andere manier gebruikt en hebben een andere bereik.

Datatype Grootte (bits) Grootte (bytes) Waarde/bereik
Char 8 1 ASCII karakters
Int 16 2 -32.768 – 32.767
DInt 32 4 -4,3E+09
Real 32 4 Variabel:
  Grote waardes: +/-3,402823E+38
  Kleine waardes: +/-1,175495E-38
TIME 32 4 Tijdsduur in milliseconden:
  -24d 20h 31m 23s 648ms – 24d 20h 31m 23s 647ms*
DATE 16 2 01-01-1970 – 31-12-2168*
TIME_OF_DAY 32 4 00:00:00.000 – 23:59:59.999

*  (kan verschillen per merk PLC)

 

Bovenstaande datatypes kunnen, in tegenstelling tot de basis datatypes, zowel positieve als negatieve waardes bevatten (met uitzondering van TIME_OF_DAY). Dit zijn zogenaamde “signed” datatypes. Sommige PLC systemen ondersteunen daarnaast ook het gebruik van “unsigned” datatypes. In tegenstelling tot “signed” kunnen deze alleen positieve waardes bevatten. Een UInt (unsigned integer) is de unsigned variant van de Int. Deze is qua grootte identiek, maar het bereik ligt in dit geval van 0 tot en met 65.535. In wezen is de UInt gelijk aan de Word, maar soms is het wenselijk om hierin toch onderscheid te maken.

Een Array is speciaal soort datatype. Het is een vooraf gedefiniëerde reeks van een bepaald datatype. Bijvoorbeeld: een ‘Array [1..10] of Int’ is een reeks van 10 elementen van het type Int. Elk element van een array is te benaderen door achter de naam van de array het element nummer op te geven: NAAM[2] is het tweede element van deze array en bevat een waarde van het type Int. Let op: Het is soms ook toegestaan om een array te gebruiken die begint bij 0: ‘Array [0..9] of Int’. Ook dit is een array met 10 elementen, maar hier is NAAM[2] het derde element van de array, omdat de array begint bij 0. Het gebruik van een array kan vooral handig zijn om samenhangende gegevens gegroepeerd op te slaan. Denk bijvoorbeeld aan gelijksoortige parameters of een reeks coördinaten.

Een andere speciaal type is de Struct (structure). Dit is een object dat geheel naar wens kan worden ingevuld met verschillende datatypes. Een struct kan bijvoorbeeld een Bool en twee Int’s bevatten. Het voordeel van het gebruik van een struct is dat eenvoudig een variabele gemaakt kan worden die in één keer alle relevante waardes kan opslaan, zoals die zijn vastgelegd in de struct. En ook hier is, net als bij een array, het voordeel dat samenhangende gegevens makkelijk gegroepeerd en gebruikt kunnen worden.