Programmeren van een PLC

Voor het programmeren van een PLC zijn er verschillende programmeertalen beschikbaar. Hier worden er een aantal besproken.

Ladder Diagram (LD of LAD)

Deze manier van programmeren wordt veel gebruikt en is een meer visuele manier van een PLC programmeren. Een ladder diagram gebruikt netwerken en binnen elk netwerk kunnen bijvoorbeeld 1 of meerdere ingangen gebruikt worden om een uitgang aan te sturen of een functie uit te voeren. Door ingangen parallel of in serie te plaatsen kunnen AND en OR voorwaarden geprogrammeerd worden. Hieronder zijn enkele voorbeelden van een ladder diagram.


Als #A en #B hoog zijn wordt #C ook hoog.


Als #A of #B hoog is wordt #C ook hoog.


Als #A hoog is en #B of #C hoog is en #D niet hoog is wordt #E hoog.

Naast eenvoudige in- en uitgangen zijn er ook functies en functieblokken beschikbaar waarmee ingewikkelde bewerkingen uitgevoerd kunnen worden. Een voorbeeld is hieronder weergegeven waar de integer waarde van #AA en #BB worden vermenigvuldigd en opgeslagen in als integer waarde in #CC, mits #A hoog is.

Statement List (STL) / Instruction List (IL)

Bij statement list worden op een vergelijkbare wijze in- en uitgangen geprogrammeerd als bij LAD, maar dan in geschreven vorm. Waar LAD de netwerken visueel weergeeft met symbolen wordt bij STL gebruik gemaakt van tekstuele instructies. Zie hieronder dezelfde 3 voorbeelden als bij LAD, maar dan uitgeschreven in STL.

A #A
A #B
= #C

Als #A en #B hoog zijn wordt #C ook hoog.

O #A
O #B
= #C

Als #A of #B hoog is wordt #C ook hoog.

A #A
A (  
O #B
O #C
)  
AN #D
= #E

Als #A hoog is en #B of #C hoog is en #D niet hoog is wordt #E hoog.

Net als bij LAD is het bij STL ook mogelijk om complexe bewerkingen uit te laten voeren met gebruik van functies en functie blokken, zij het op een wat minder doorzichtige manier geschreven.

Structured Text (ST) / Structured Control Language (SCL)

SCL lijkt meer op een hogere programmeertaal dan LAD of STL. Er is bijvoorbeeld de mogelijkheid om gebruik te maken van een IF-constructie of een WHILE-lus. Hierdoor zijn er met SCL ook oplossingen mogelijk die niet met LAD kunnen, zoals bijvoorbeeld bij gebruik van een CASE-constructie.

Hieronder staan de 3 voorbeelden uitgeschreven in SCL.

IF #A AND #B THEN
  #C := true;
END_IF;
Als #A en #B hoog zijn wordt #C ook hoog.

IF #A OR #B THEN
  #C := true;
END_IF;
Als #A of #B hoog is wordt #C ook hoog.

IF #A AND (#B OR #C) AND #D = false THEN
  #E := true;
END_IF;
Als #A hoog is en #B of #C hoog is en #D niet hoog is wordt #E hoog.

Het vermenigvuldigen van 2 integer waardes wordt als volgt genoteerd:
#CC := #AA * #BB;

Met elk van deze programmeertalen is het mogelijk om een functie of functieblok te programmeren. Zo’n functie of functieblok kan op zijn beurt weer worden gebruikt in een ander deel van het PLC programma. Op deze manier kan voor elke bewerking een eigen blokje geschreven worden in de taal die daarvoor het meest geschikt is en vervolgens door elkaar gebruikt worden. Het is dus mogelijk om een LAD functie blok te schrijven dat in 1 van zijn netwerken gebruik maakt van een functieblok dat is geschreven in SCL.