PLC programmeren

Programmeren binnen de Industriële Automatisering kan met behulp van verschillende talen. De beschikbare talen zijn afhankelijk van het type systeem dat wordt gebruikt. De meeste gebruikte programmeertalen binnen de Industriële Automatisering zijn:

Er zijn verschillende methodieken beschikbaar binnen de Industriële Automatisering. We bespreken de meest belangrijkste:

ISA-88
ISA-95
PackML

De talen uitgelegd

Hieronder staan de verschillende programmeertalen uitgelegd. Voor de leesbaarheid kun je ze per stuk openen en sluiten.

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.

Voorbeeld van een Ladder diagram AND
Als #A en #B hoog zijn wordt #C ook hoog.
Voorbeeld van een Ladder diagram OR
Als #A of #B hoog is wordt #C ook hoog.
Voorbeeld van een Ladder diagram AND OR NOT
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.

Voorbeeld van een meer complex Ladder diagram
de integer waarde van #AA en #BB worden vermenigvuldigd en opgeslagen in als integer in #CC

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.

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 ladder de netwerken visueel weergeeft met symbolen wordt bij statement list 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)

Structure text lijkt meer op een hogere programmeertaal dan ladder of statement list. Er is bijvoorbeeld de mogelijkheid om gebruik te maken van een IF-constructie of een WHILE-lus. Hierdoor zijn er met structure tekst ook oplossingen mogelijk die niet met ladder kunnen, zoals bijvoorbeeld bij gebruik van een CASE-constructie.

Hieronder staan de 3 voorbeelden uitgeschreven in structure text.

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 ladder functieblok te schrijven dat in één van zijn netwerken gebruikt maakt van een functieblok dat is geschreven in structure text.

Sequential Function Chart (SFC)

Sequential function chart is een grafische programmeertaal. Deze programmeertaal is gebaseerd op GRAFCET. Hieronder staan de drie voorbeelden uitgeschreven in Sequential function chart.

Sequential function chart and
Als #A en #B hoog zijn wordt #C ook hoog.
Sequential Function Chart OR voorbeeld
Als #A of #B hoog is wordt #C ook hoog.
Sequential Function Chart voorbeeld AND OR NOT
Als #A hoog is en #B of #C hoog is en #D niet hoog is wordt #E hoog.



Programmeertalen

Afhankelijk van het softwarepakket zijn er verschillende programmeertalen mogelijk. Hieronder een overzicht van de verschillende pakketten, maar de daarbij mogelijke programmeertalen.

Siemens – Step 7Ladder (LD)
Statement List (STL)
Structured Control Language (SCL)
Function Block Diagram (FBD)
GRAPH
Siemens – TIA PortalLadder (LD)
Structured Control Language (SCL)
Function Block Diagram (FBD)
GRAPH
Siemens – WinCCVBScript
ANSI C
B&R – Automation StudioLadder (LD)
Structure Text (ST)
Instruction List (IL)
Sequential Function Chart (SFC)
Function Block Diagram (FBD)
Continuous Function Chart (CFC)
ANSI C
B&R – MappViewExtensible Markup Language (XML)
Rockwell – RSLogix 5000Ladder (LD)
Function Block Diagram (FBD)
Pakketten en talen in de Industriële Automatisering



Methodieken in de Industrieële Automatisering

Er zijn een hele reeks methodieken ontwikkeld om te zorgen dat er betere software ontwikkeld worden. Deze methodieken helpen mee om structuur aan te brengen, waardoor software eenvoudiger en sneller ontwikkeld kan worden. Daarnaast zijn er minder fouten en is de software beter te onderhouden.

Hieronder drie van de meest gebruikte methodieken in het kort uitgelegd.

ISA-88

ISA-88 is een standaard batchprocesbesturing. Het is een ontwerpfilosofie voor het beschrijven van apparatuur en procedures. Deze filosofie is zowel toepasbaar op automatische als handmatige-gecontroleerde batches. De standaard bevat de volgende onderdelen:

  • ANSI / ISA-88.01-2010 Batch Control Part 1: Models and terminology
  • ANSI / ISA-88.00.02-2001 Batch Control Part 2: Data structures and guidelines for languages
  • ANSI / ISA-88.00.03-2003 Batch Control Part 3: General and site recipe models and representation
  • ANSI / ISA-88.00.04-2006 Batch Control Part 4: Batch Production Records
  • ISA-TR88.00.02-2008 Machine and Unit States: An Implementation Example of ISA-88

ISA-88 biedt een consistente set standaarden en terminologie voor batchcontrole en definieert het fysieke model, de procedures en recepten. De standaard trachtte de volgende problemen aan te pakken; het ontbreken van een universeel voor batchcontrole, problemen bij het communiceren van gebruikersvereisten, integratie tussen leveranciers van batchautomatisering, moeilijkheden bij het configureren van batchcontrole.

ISA-95

ISA-95 is een internationale standaard voor het ontwikkelen van een geautomatiseerde interface tussen ondernemingen en controlesystemen. Deze standaard is ontwikkeld voor wereldwijde fabrikanten. Het is ontwikkeld om toe te passen in alle industrieën en in allerlei processen, zoals batchprocessen, continue- en repetitieve-processen.

De doelstellingen van ISA-95 zijn om consistente terminologie te bieden die basis vormt voor communicatie tussen leveranciers en fabrikanten, om consistente informatiemodellen te bieden en om consistente operationele modellen te bieden die een basis vormen voor het verduidelijken van de toepassingsfunctionaliteit en hoe informatie moet worden gebruikt. De standaard bevat de volgende onderdelen:

  • ANSI / ISA-95.00.01-2000 Enterprise-Control System Integration Part 1: Models and Teminology. Deze bestaat uit standaardterminologie en objectmodellen, die kunnen worden gebruikt om te beslissen welke informatie moet worden uitgewisseld.
  • ANSI / ISA-95.00.02-2001 Enterprise-Control System Integration Part 2: Object Model Attributes. Deze bestaat uit attributen voor elk object dat is gedefinieerd is deel 1. De objecten en attributen van deel 2 kunnen worden gebruikt voor de uitwisseling van informatie tussen verschillende systemen, maar deze objecten kunnen ook worden gebruikt als basis voor relationele databases.
  • ANSI / ISA-95.00.03-2005 Enterprise-Control System Integration Part 3: Models of Manufacturing Operations Management. Deze richt zich op de functies en activiteiten op niveau 3 (Productie / MES-laag). Het geeft richtlijnen om de productieniveaus van verschillende sites op een gestandaardiseerde manier te beschrijven en te vergelijken.
  • ISA-95.00.04 Object Models & Attributes Part 4 of ISA-95: “Object models and attributes for manufacturing Operations Management”. Deze technische specificatie definieert objectmodellen die bepalen welke informatie wordt uitgewisseld tussen MES-activiteiten (die zijn gedefinieerd in deel 3 door ISA-95). De modellen en attributen uit deel 4 vormen de basis voor het ontwerp en de implementatie van interfacestandaarden en zorgen voor een flexibel verloop van de samenwerking en informatie-uitwisseling tussen de verschillende MES-activiteiten.
  • ISA-95.00.05 B2M Transactions Part 5 of ISA95: “Business to manufacturing transactions”. Deze technische specificatie definieert de werking tussen kantoor- en productie-automatiseringssystemen die samen met de objectmodellen uit deel 1 en 2 kunnen worden gebruikt. De bewerkingen verbinden en organiseren de productieobjecten en activiteiten die zijn gedefinieerd in eerdere delen van de standaard. Dergelijke operaties vinden plaats op alle niveaus binnen een bedrijf, maar de focus van deze technische specificatie ligt op de interface tussen Enterprise- en controlesystemen. Aan de hand van modellen zal de operatie worden beschreven en wordt de bewerking logisch uitgelegd.

Binnen productiegebieden worden activiteiten uitgevoerd en wordt de informatie heen en weer doorgegeven. De standaard biedt referentiemodellen voor productieactiviteiten, kwaliteitsactiviteiten, onderhoudsactiviteiten en voorraadactiviteiten.

PackML

PackML (Packaging Machine Language) is een technische industriestandaard voor de besturing van verpakkingsmachines, als onderdeel van industriële automatisering.

PackML is gemaakt door de Organization for Machine Automation and Control (OMAC) in samenwerking met de International Society of Automation (ISA). Het primaire doel van PackML is om een gemeenschappelijke “look and feel” en operationele consistentie te geven aan alle machines die deel uitmaken van een automatische installatie.

PackML biedt het volgende:

  • Standaard gedefinieerde machinetoestanden en operationele stroom;
  • Overall Equipment Effectiveness (OEE) gegevens;
  • Root Cause Analysis (RCA) gegevens;
  • Flexibele receptschema’s en gemeenschappelijke SCADA- en MES-ingangen.

Deze bepalingen worden mogelijk gemaakt door de definities van “Line Types” (“Guidelines for Packaging Machinery Automation v3.1” beschikbaar op de OMAC-website) die zijn opgesteld door de OMAC Packaging Workgroup, en door gebruik te maken van de ISA-88 State Model-concepten. PackML-definities zijn bedoeld om machines beter bruikbaar te maken en gemakkelijker opnieuw in te zetten. PackML-concepten vinden ook toepassingen in de andere discrete besturingsomgevingen zoals werktuigmachines en robotica.

De focus van de subcommissie PackML (Packaging Machinery Language) was het ontwikkelen van een methode om snel een reeks machines te integreren zonder zich zorgen te maken over welke veldbus de dataset zou dragen tussen machines, SCADA en MES. Na verschillende iteraties was de gekozen aanpak om het ISA-88 State Model-concept uit te breiden naar de verpakkingsindustrie.

Later in het ontwikkelingsproces werd het concept van PackTags geïntroduceerd om een uniforme set naamgevingsconventies te bieden voor gegevenselementen die binnen het staatsmodel worden gebruikt. PackTags worden gebruikt voor machine-to-machine-communicatie. Bovendien zijn PackTags ontworpen om OEE-berekeningen aan te pakken. PackTags kunnen worden gebruikt om gegevens uit te wisselen tussen machines en informatiesystemen op een hoger niveau, zoals Manufacturing Operations Management en Enterprise Information Systems.



Meer leren over PLC programmeren?

IA Professionals biedt diverse online en offline trainingen om echt alles over Software Engineering in de Industriële Automatisering te leren. Bekijk het hele pakket op iaprofacademy.nl. We raden bezoekers van deze pagina vooral de training PLC programming languages fundementals aan. Deze training voor starters in de IA leert je merkonafhankelijke tekstbaseerde talen (Instruction List en Structured Text) en grafische programmeertalen (Ladder, Function Block en Sequential Flowchart).