PLC programmeren. Een gratis minitraining.

PLC programmeren binnen de Industriële Automatisering kan met behulp van verschillende talen. De beschikbare talen zijn afhankelijk van het type en merk PLC die wordt gebruikt. Meer over merken lees je op deze pagina. 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

Hoe moet je een PLC programmeren? Daarvoor zijn een aantal verschillende programmeertalen. 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 PLC 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. Toch is dit een veelgebruikte manier om PLC’s te programmeren. 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.

Function Block Diagram (FB)

Een andere manier om een PLC te programmeren is met Function Block Diagram. Function Block Diagram is een meer grafische manier van programmeren. Een functie wordt beschreven als een set elementaire blokken. In- en uitgangen zijn via verbindingslijnen met blokken verbonden. Deze verbindingen zijn georiënteerd, wat betekent dat de lijn de bijbehorende gegevens van de linkerkant naar de rechterkant draagt. Hieronder dezelfde 3  voorbeelden uitgeschreven in Function Block Diagram.

Function Block Example And
Als #A en #B hoog zijn wordt #C ook hoog.
Als #A of #B hoog is, wordt #C ook hoog.
Function Block Example And Or Not
Als #A hoog is en #B of #C hoog is en #D niet hoog is wordt #E hoog

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.

CodeSys

CODESYS is een ontwikkelomgeving voor het programmeren van controllertoepassingen volgens de internationale industriële standaard IEC 61131-3.

CODESYS is ontwikkeld en op de markt gebracht door het Duitse softwarebedrijf CODESYS GmbH, gevestigd in de Beierse stad Kempten. Het bedrijf werd opgericht in 1994 onder de naam 3S-Smart Software Solutions.

Versie 1.0 van CODESYS werd uitgebracht in 1994. Licenties van het CODESYS Development System zijn gratis en kunnen legaal geïnstalleerd worden zonder kopieerbeveiliging op andere werkstations. Het softwarepakket omvat verschillende aspecten van industriële automatiseringstechnologie in één omgeving. Het pakket is onafhankelijk van apparaat fabrikanten en wordt daarom gebruikt in verschillende controllers en PLC’s, zowel voor gebouwautomatisering maar meestal voor industriële doeleinden.

Geïntegreerde compilers zetten de door CODESYS gecreëerde applicatiecode om in native machinebode (binaire code) die vervolgens naar de controller wordt gedownload. Zodra CODESYS eenmaal verbonden is met de controller, biedt het een uitgebreide fout opsporingsfunctionaliteit.

CODESYS V3.x is gebaseerd op het zogenaamde CODESYS Automation Platform, een automatiseringsraamwerk dat apparaat fabrikanten kunnen uitbreiden met hun eigen plug-in modules.

De CODESYS Professional Developer Edition biedt de mogelijkheid om componenten toe te voegen aan de tool die onderhevig zijn aan licenties bijvoorbeeld geïntegreerde UML-ondersteuning, een verbinding met het Apache Subversion-versiecontrolesysteem, online runtime-prestatieanalyse, statische code-analyse van de applicatiecode of op script gebaseerde geautomatiseerde testuitvoering.

De CODESYS Application Composer dient om applicaties te maken met behulp van bestaande modules. De gebruiker stelt de benodigde modules samen, stelt parameters in en verbindt ze om een complete applicatie te vormen. Deze configuratie vereist geen kennis van PLC-programmering en kan daarom worden uitgevoerd door technici zonder programmeerervaring. Interne generatoren creëren complete, goed gestructureerde IEC-61131-3 toepassingen, inclusief IO-mapping en visualisaties. De Application Composer heeft een licentie nodig om modules te ontwikkelen en samen te stellen. Verder zijn er vrij te gebruiken modules, die zonder licentie kunnen worden gebruikt.

CODESYS wordt onder andere gebruikt door de volgende fabrikanten:

  • Raspberry Pi
  • Janztec
  • WAGO
  • Siemens
  • Phoenix Contact
  • IFM

Visualisation in CodeSys

Een geïntegreerde editor helpt de gebruiker om complexe visualisatiemaskers rechtstreeks in het programmeersysteem CODESYS te maken en deze te animeren op basis van toepassingsvariabelen. Om de procedure te vereenvoudigen zijn geïntegreerde visualisatie-elementen beschikbaar.

Een optionele tool kit stelt de gebruiker in staat om zijn eigen visualisatie-elementen te creëren. De gemaakte maskers worden onder meer gebruikt voor applicatietesten en inbedrijfstelling tijdens de online werking van het programmeersysteem.

Met optionele visualisatieclients kunnen de gemaakte maskers ook worden gebruikt om de machine of installatie te bedienen, bijvoorbeeld op controllers met geïntegreerd display (CODESYS TargetVisu) of in een HTML5-compatible webbrowser (CODESYS WebVisu).

Voor vereenvoudigd gebruik is er een gratis Android-app beschikbaar voor CODESYS WebVisu (CODESYS Web View).




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)
Phoenix Contact – PLCNEXT ENGINEERFunction Block Diagram (FBD)
Ladder Diagram (LD)
Structured Text (ST)
Sequential Function Chart (SFC)
C++
C#
Pakketten en talen in de Industriële Automatisering



Methodieken voor beter PLC programmeren 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 en het PLC programmeren 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).

  • Training programming Siemens STL (in TIA Portal)
    Training programming Siemens STL (in TIA Portal)
    399,00
  • Training programming Siemens SCL
    Training programming Siemens SCL
    399,00
  • Training programming Siemens STL (in Step7 classic)
    Training programming Siemens STL (in Step7 classic)
    399,00
  • Training PLC Programming Languages Fundamentals
    Training PLC Programming Languages Fundamentals
    399,00