Post on 20-Aug-2015
Workshop
IT-Powered Automation
Multifunctionele besturingen
Voorjaar 2015
Inhoudsopgave
1 Beschrijving van de hardware 1
1.1 Structuur van de starterkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Phoenix Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Overzicht van de PLC’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Specifieke kenmerken voor de 100-reeks . . . . . . . . . . . . . . . . . . 6
2 IEC 61131-3 8
2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Structuur van een applicatie volgens de IEC 61131-3 norm . . . . . . . . . . . . 9
2.3 POU’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Functies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.2 Variabelen en functies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.3 Standaardfuncties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.2 Variabelen en functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . 14
2.5.3 Standaardfunctiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Programma’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.2 Variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Naamgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7.1 Benaming binnen een functiebouwsteen . . . . . . . . . . . . . . . . . . 16
2.7.2 Benaming binnen een programma . . . . . . . . . . . . . . . . . . . . . . 16
2.7.3 Benaming van user defined datatypes . . . . . . . . . . . . . . . . . . . . 17
2.8 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8.1 Numerieke datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8.2 Bitgebaseerde datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8.3 Time-gebaseerde datatypes . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8.4 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8.5 Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8.6 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 Structured Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.1 Selectie statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.2 Iteratie statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Aanmaken van een project 25
3.1 Nieuw project aanmaken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Structuur nieuw project conform de IEC 61131-3 . . . . . . . . . . . . . . . . . . 27
3.3 Aanpassen van de projectinformatie . . . . . . . . . . . . . . . . . . . . . . . . . 28
Inhoudsopgave i
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.3.1 Bus configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2 IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.3 IP configuratie van uw PC . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 IP configuratie van de controller . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 Aanpassen IP-adres via de BootP Server (m.b.v. PC WorX) . . . . . . . . 32
3.4.3 Aanpassen IP-adres via de IP Assigment Tool (IPAssign) . . . . . . . . . . 33
3.4.4 Communicatie opzetten tussen PC en plc . . . . . . . . . . . . . . . . . . 35
3.5 De INTERBUS configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6 Compileren en downloaden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 Uitgewerkt Voorbeeldprogramma 39
4.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Opdrachtomschrijving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Uitwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3.1 Definiëren van de variabelen . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3.2 Aanmaken van een nieuwe POU . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.3 Aanmaken van een nieuwe POU groep . . . . . . . . . . . . . . . . . . . 44
4.3.4 Aanmaken van een variabele . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.5 Aanmaken van een functieblok “Transportband” . . . . . . . . . . . . . . 46
4.3.6 Het hoofdprogramma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.7 Testen van het programma . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3.8 Deel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5 Ladder 54
5.1 Voorbeeld: Transportband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 Structured Text 58
6.1 Voorbeeld: Transportband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7 WebVisit 60
7.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.2 Een project uitwerken in WebVisit . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.2.1 Een nieuw project aanmaken . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.2.2 Een nieuwe webpagina aanmaken . . . . . . . . . . . . . . . . . . . . . 63
7.2.3 Compileren van het project . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.2.4 Downloaden van het project . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.3 Uitbreiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3.1 Figuur invoegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.3.2 Background en Foreground TEQ . . . . . . . . . . . . . . . . . . . . . . . 72
8 Analoge signaalverwerking 74
8.1 Functiebouwsteen voor analoge signaalverwerking . . . . . . . . . . . . . . . . 74
8.1.1 De analoge ingangsmodules . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.1.2 De analoge uitgangsmodule . . . . . . . . . . . . . . . . . . . . . . . . . 76
Inhoudsopgave ii
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.2 Functie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.3 Watch Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.4 Opdracht temperatuursmeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.4.1 Resultaat in FBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.4.2 Resultaat in ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.5 Uitbreiding WebVisit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9 User Defined Datatypes 84
9.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.1.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.1.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.1.3 Combinatie van User Defined Datatypes . . . . . . . . . . . . . . . . . . 88
9.2 Opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
9.3 Aanvullende FB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.3.1 STRING_TO_BUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
10 Modbus 92
10.1 De 1x1-reeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
10.2 Modbus: de basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
10.2.1 Functiecodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
10.2.2 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
10.2.3 Berichtstructuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11 Modbus TCP 97
11.1 Aansluitingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11.2 Toevoegen nodige bibliotheek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.3 Modbus TCP met functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . . 100
11.3.1 Werking functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . . 100
11.3.2 Gebruik in Function Block Diagram . . . . . . . . . . . . . . . . . . . . . . 103
11.3.3 Gebruik in Structured Text . . . . . . . . . . . . . . . . . . . . . . . . . . 103
11.3.4 Uitgewerkt voorbeeld: ILC 171 en EMpro met FB’s . . . . . . . . . . . . . 104
11.4 Modbus TCP met modbusregister . . . . . . . . . . . . . . . . . . . . . . . . . . 107
11.4.1 Modbus-settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
11.4.2 Modbusregister editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
11.5 Modbus kopstation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
11.5.1 Configureren en lezen van de registers . . . . . . . . . . . . . . . . . . . 110
11.5.2 Binnenlezen inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
12 Modbus RTU 115
12.1 Modbus RTU over RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
12.1.1 Benodigde functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . 116
12.1.2 Werking functiebouwstenen . . . . . . . . . . . . . . . . . . . . . . . . . 117
12.1.3 Gebruik in Function Block Diagram . . . . . . . . . . . . . . . . . . . . . . 120
12.2 Modbus RTU met gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
12.2.1 Aansluitingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Inhoudsopgave iii
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
12.2.2 Voordeel gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
12.2.3 Instellen gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
12.2.4 Communicatie met functiebouwstenen . . . . . . . . . . . . . . . . . . . 124
12.2.5 Communicatie met modbusregisters . . . . . . . . . . . . . . . . . . . . 125
13 Uitbreiding 128
13.1 Tips & Trics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
13.1.1 Schermbeheer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
13.1.2 Beheer van variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
13.1.3 Aanmaken project m.b.v. de wizard . . . . . . . . . . . . . . . . . . . . . 130
13.2 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
13.2.1 Functiebouwsteen: analoge technologie . . . . . . . . . . . . . . . . . . 131
13.3 Firmware Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
13.4 Variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.5 Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
13.6 Interbus Diagnose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
13.6.1 Verbinding met controller maken . . . . . . . . . . . . . . . . . . . . . . . 143
13.6.2 Interbus Diagnose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
14 Opdrachten 146
14.1 Een alarmsysteem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
14.2 Openen van een sectionaal poort . . . . . . . . . . . . . . . . . . . . . . . . . . 148
14.3 Temperatuursopvolging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
14.4 Sequentieel programmeren in ST: de rolkraan . . . . . . . . . . . . . . . . . . . 152
14.5 Tapijtoproller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
14.5.1 Overzicht in- en uitgangen opdracht tapijtroller . . . . . . . . . . . . . . 153
14.5.2 Verloop van de oprolcyclus . . . . . . . . . . . . . . . . . . . . . . . . . . 154
14.5.3 Hoofdprogramma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.5.4 Functiebouwsteen Blokgolf . . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.5.5 Functiebouwsteen StartStop . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.5.6 Functiebouwsteen Oprolcyclus . . . . . . . . . . . . . . . . . . . . . . . . 156
14.6 Voorbeeld in ST met array’s en structuren . . . . . . . . . . . . . . . . . . . . . 160
Inhoudsopgave iv
1 Beschrijving van de hardware
1.1 Structuur van de starterkit
De ILC131 starterkit is een combinatie van hardware en software die nodig is om een basis-
project aan te maken. De starterkit is geassembleerd op een bord en bevat een voeding, een
ILC131 met analoge ingangskaart, een potentiometer en een switch module met 8 schake-
laars (zie figuur 1.1).
Figuur 1.1: Opbouw van de starterkit
1 Beschrijving van de hardware 1
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
1.2 Phoenix Contact
1.2.1 Overzicht van de PLC’s
Phoenix Contact volgt de internationale IEC 61131-3 norm voor programmeerbare sturingen.
Figuur 1.2 toont een overzicht van het plc-gamma van Phoenix Contact: de ILC’s, de Axio-
controllers en de softPLC’s.
Figuur 1.2: Overzicht plc’s van Phoenix Contact
ILC’s
De ILC’s uit het gamma van Phoenix Contact zijn ingedeeld in 3 performantieklasses: de 100-
reeks, de 300-reeks en de 400-reeks. Specificaties van de ILC’s binnen iedere reeks zijn te
vinden in tabellen 1.1, 1.2 en 1.3.
Axioline
Binnen de Axioline zijn er twee reeksen: de 1000-reeks en de 3000-reeks. Specificaties van
de Axiocontrollers per reeks zijn te vinden in tabellen 1.4 en 1.5.
SoftPLC’s
Ook is het mogelijk om softwarematig een cyclische plc-werking te verkrijgen op een indus-
triële pc. Specificaties van de mogelijke softPLC’s zijn te vinden in tabel 1.6.
1 Beschrijving van de hardware 2
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 1.1: Specificaties voor ILC’s binnen de 100-reeks van Phoenix Contact
Tabel 1.2: Specificaties voor ILC’s binnen de 300-reeks van Phoenix Contact
1 Beschrijving van de hardware 3
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 1.3: Specificaties voor ILC’s binnen de 400-reeks van Phoenix Contact
Tabel 1.4: Specificaties voor Axiocontrollers binnen de 1000-reeks van Phoenix Contact
1 Beschrijving van de hardware 4
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 1.5: Specificaties voor Axiocontrollers binnen de 3000-reeks van Phoenix Contact
Tabel 1.6: Specificaties voor softPLC’s van Phoenix Contact
1 Beschrijving van de hardware 5
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
1.2.2 Specifieke kenmerken voor de 100-reeks
ILC131 ETH
Dit is een PLC Base-Unit voor de kleine toepassingen. De plc heeft de volgende kenmerken:
– 192kB programma- en datageheugen
– 8kB retain-geheugen
– 1 Ethernetpoort
– Modbus-client geïmplementeerd (4 connecties)
Het geheugen kan uitgebreid worden met een SD-kaart.
ILC151 ETH
Dit is een PLC Standard-Unit voor de basis toepassingen. De plc heeft de volgende kenmer-
ken:
– 256kB programma- en datageheugen
– 8kB retain-geheugen
– 1 Ethernetpoort
– Modbus-client geïmplementeerd (8 connecties)
Het geheugen kan uitgebreid worden met een SD-kaart.
ILC171 ETH 2TX
Deze PLC Advanced-Unit wordt gebruikt in toepassingen voor data-logging en communicatie.
De plc heeft de volgende kenmerken:
– 512kB programma- en datageheugen
– 48kB retain-geheugen
– 2 Ethernetpoorten
– Modbus-client geïmplementeerd (16 connecties)
Het geheugen kan uitgebreid worden met een SD-kaart.
ILC191 ETH 2TX
Deze PLC Advanced-Unit met FPU wordt gebruikt in closed-loop control toepassingen. De plc
heeft de volgende kenmerken:
– 1MB programma- en datageheugen
– 48kB retain-geheugen
1 Beschrijving van de hardware 6
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– 2 Ethernetpoorten
– Modbus-client geïmplementeerd (16 connecties)
– Geïntegreerde FPU voor snellere floating-point bewerkingen
Het geheugen kan uitgebreid worden met een SD-kaart.
ILC151 GSM/GPRS
Deze PLC met geïntegreerde GSM/GPRS modem wordt gebruikt voor Remote Control toepas-
singen. De plc heeft de volgende kenmerken:
– 512kB programma- en datageheugen
– 48kB retain-geheugen
– 1 Ethernetpoort
– Modbus-client geïmplementeerd (8 connecties)
– Nieuw geïntegreerde webserver
Het geheugen kan uitgebreid worden met een SD-kaart.
1 Beschrijving van de hardware 7
2 IEC 61131-3
2.1 Inleiding
De IEC 61131 STANDAARD is een internationale standaard voor programmeerbare sturingen
(PLC’s, soft PLC’s. . . ) en bestaat uit 5 delen:
IEC 61131-1 : Algemeen overzicht;
IEC 61131-2 : Hardware karakteristieken;
IEC 61131-3 : Programmeertalen;
IEC 61131-4 : Richtlijnen voor de gebruiker;
IEC 61131-5 : Communicatie;
+ 2 technische rapporten.
DE IEC 61131-3 NORM is sinds 1993 de internationale standaard voor het programmeren van
industriële controllers. Het definieert 5 verschillende talen. Deze worden wereldwijd door
alle grote PLC-fabrikanten gebruikt. Deze 5 talen zijn de volgende:
• LADDER DIAGRAM (LD), een grafische taal welke gebaseerd is op contactorlogica;
• FUNCTION BLOCK DIAGRAM (FBD);
• INSTRUCTION LIST (IL): een ‘low-level’ taal, vergelijkbaar met assembler;
• SEQUENTIAL FUNCTION CHART (SFC): een grafische taal speciaal ontwikkeld om de af-
loop van sequentiële systemen te programmeren;
• STRUCTURED TEXT (ST): een ‘high-level’ taal om gestructureerd te programmeren.
Deze taal is sterk vergelijkbaar met PASCAL.
2 IEC 61131-3 8
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.2 Structuur van een applicatie volgens de IEC 61131-3 norm
Elke configuratie bevat één of meerdere resources. Een resource voorziet in alle mogelijke
tools om een bepaald gebruikersprogramma uit te voeren. Het is een kenmerk om een be-
paalde processor te ondersteunen. Een resource is het best te begrijpen als een CPU met het
daarbij behorende operating systeem. In elke resource kunnen meerdere tasks actief zijn.
Een task wordt aangemaakt om een aantal programma’s uit te voeren. Een TASK kan een
cyclische (periodische) task, een event-gestuurde task of een systeem-gestuurde (interrupt-)
task zijn.
Een cyclische task wordt cyclisch uitgevoerd met tijdsbewaking.
Meestal wordt een default task voorzien in de engineeringssofware. Dit is een cyclische
taak die steeds opnieuw wordt uitgevoerd. De cyclischtijd is enerzijds afhankelijk van de
verwerkingssnelheid van de CPU van het besturingssyteem, anderzijds van de grootte van
het gebruikersprogramma.
Een event-gestuurde task wordt aangestoten bij een bepaalde gebeurtenis. Bij PC WorX
wordt de event-gestuurde task gebruikt voor de mogelijkheid van sequential processing.
Een systeem-gestuurde task wordt aangestoten door het operatingsysteem (warme start,
koude start, stop, watchdog error, divide by zero. . . ).
In sectie 13.5 op pagina 141 wordt dieper ingegaan op de verschillende tasks.
Het uitvoeringsprogramma gekoppeld aan een task kan bestaan uit verschillende POU’s (Pro-
gram Organisation Unit).
2 IEC 61131-3 9
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 2.1: Structuur van een applicatie volgens de IEC 61131-3 norm
2 IEC 61131-3 10
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.3 POU’s
POU staat voor Program Organisation Units en is de verzamelnaam voor programma’s, func-
tieblokken en functies.
Een overzicht:
POU type Meermaals gebruik als Commentaar
Programma Programma instance Grotere herbruikbare software elementen
binnen een gebruikersprogramma
Functieblok Functieblok instance Kleinere (van complex algoritmes tot
eenvoudige besturingstaken) herbruikbare
software elementen
Functie Functie Herbruikbare software elementen voor
data manipulatie
2 IEC 61131-3 11
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.4 Functies
2.4.1 Algemeen
Een functie is een software-blokje dat meermaals kan gebruikt worden in een andere POU.
Meestal zullen functies gebruikt worden om data te manipuleren. Een functie produceert al-
tijd ogenblikkelijk een definitief resultaat met behulp van een aantal ingangsparameters.
Het resultaat wordt toegekend aan de functienaam zelf. Hiervoor zal een functie altijd van
een bepaald data-type moeten zijn.
• Een functie heeft juist één uitgang
• Voor een identieke set ingangsparameters zal een functie altijd hetzelfde resultaat te-
ruggeven
Figuur 2.2: Voorstelling van een functie
2.4.2 Variabelen en functies
Een variabele in een functie kan van het type VAR en VAR_INPUT zijn. Variabelen van het
type VAR_OUTPUT zijn niet mogelijk omdat een functie slechts één uitgang heeft, nl. de
functienaam zelf.
2.4.3 Standaardfuncties
Er zijn heel wat standaardfuncties. Een greep uit de beschikbare groepen:
• Numerieke functies (ABS, SQRT, LN, LOG, EXP, SIN, COS, TAN, ASIN, ACOS, ATAN).
• Rekenkundige functies (ADD, MUL, SUB, DIV, MOD, EXPT, MOVE)
Deze functies zijn meestal van het data-type ANY_NUM. Dit betekent dat het data_type
van de inputparameters zowel een INT, DINT of REAL kan zijn.
2 IEC 61131-3 12
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
• Bit stringfuncties (SHL, SHR, ROR, ROL).
• Booleaanse bit-functies (AND, OR, XOR, NOT)
De functies van de twee laatste groepen zijn meestal van het data-type ANY_BIT. Dit
betekent dat het data_type van de inputparameters zowel een BIT, BYTE, WORD of
DWORD kan zijn.
• Vergelijkingsfuncties (GT, GE, EQ, LE, LT, NE).
• Karakter stringfuncties (LEFT, RIGHT, MID, CONCAT, INSERT, DELETE, REPLACE, LEN,
FIND) functies om data-types om te zetten.
Voor PC WorX zijn nog heel wat bibliotheken voorhanden met speciale functies.
2 IEC 61131-3 13
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.5 Functiebouwstenen
2.5.1 Algemeen
Een functieblok is een herbruikbaar software element om eenvoudige tot complexe bestu-
ringstaken uit te voeren. Bij het aanmaken van een functiebouwsteen worden variabelen
gedefinieerd. Bij de oproep van deze functiebouwsteen wordt er voor deze variabelen ge-
heugenruimte voorzien. Indien deze functiebouwsteen meerdere malen opgeroepen wordt,
dan moet er meerdere keren geheugenruimte voorzien worden. Daarom wordt er bij de
oproep van een functiebouwsteen een instance gedefinieerd. Deze instance verwijst dan
naar deze specifieke geheugenlocatie. Bij een bepaalde set ingangsparameters zullen de
uitgangsparameters van een functieblok een variërend resultaat hebben in functie van de
tijd.
2.5.2 Variabelen en functiebouwstenen
Een variabele in een functiebouwsteen kan van het type VAR, VAR_GLOBAL, VAR_INPUT en
VAR_OUTPUT zijn. Hierbij zijn de ingangsparameters van het type VAR_INPUT. De uitgangs-
waarden van de FB zijn van het type VAR_OUTPUT. Een variabele kan ook van het type
VAR_IN_OUT zijn. Dergelijke variabele krijgen een inputwaarde meegegeven welke kan ver-
anderen in de uitvoering van de FB. Het gebruik van VAR_GLOBAL wordt vermeden in een
functiebouwsteen. Een voorstelling van een functiebouwsteen is te zien in figuur ??.
Figuur 2.3: Voorstelling van een functiebouwsteen
2.5.3 Standaardfunctiebouwstenen
Er zijn heel wat vooraf gedefinieerde functieblokken. De belangrijkste zijn:
• SR, RS, R_TRIG, F_TRIG
• Counters: CTU, CTD, CTUD
• Timers: TP,TOF, TON
2 IEC 61131-3 14
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.6 Programma’s
2.6.1 Algemeen
Een programma is een groot herbruikbaar software element. Dit element is meestal opge-
bouwd uit verschillende andere software elementen zoals functies en functieblokken. Die
elementen worden in één van de 5 IEC talen geschreven. Een typisch programma bestaat uit
een aantal gelinkte functieblokken die softwarematig data kunnen uitwisselen.
2.6.2 Variabelen
Variabelen kunnen van het type VAR, VAR EXTERNAL, VAR_EXTERNAL_PG en VAR_GLOBAL
zijn.
Globale variabelen worden in programma’s gebruikt en worden nadien gelinkt aan periferie
IO of aan softwarevariabelen.
In het laatste hoofdstuk worden de verschillen tussen deze variabelen onder de loep geno-
men.
2 IEC 61131-3 15
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.7 Naamgeving
De naamgeving van variabelen is onderworpen aan een standaard. De richtlijnen zorgen
ervoor dat bij de diagnose van een probleem de programmeur in één oogopslag het gebruik
van de variabelen kan aflezen aan de hand van de naamgeving.
Algemeen kan gesteld worden dat de opbouw voor de naamgeving van een variabele is vol-
gens figuur 2.4.
Figuur 2.4: Opbouw naamgeving
Ieder datatype heeft zijn eigen afkorting, deze worden weergegeven in tabel 2.1.
Tabel 2.1: Overzicht van afkortingen voor datatypes
De naam zelf dient logisch te zijn en zelfverklarend te zijn. Te lange namen worden logisch
afgekort. Namen die bestaan uit meerdere woorden worden aan elkaar geschreven, waarbij
ieder woord begint met een hoofdletter zoals bv. xEnableDataExchange. Afkortingen worden
in hoofdletters geschreven en van de rest van de naam gescheiden door een underscore
zoals bv. xClearBuffer_RTU.
2.7.1 Benaming binnen een functiebouwsteen
De variabelen binnen een functiebouwsteen krijgen een prefix naargelang hun gebruik, zie
tabel 2.2.
2.7.2 Benaming binnen een programma
De variabelen binnen het hogere programmaniveau krijgen ook een prefix naargelang hun
gebruik, zie tabel 2.3.
2 IEC 61131-3 16
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 2.2: Overzicht van prefixen binnen een functiebouwsteen
Tabel 2.3: Overzicht van prefixen binnen een programma
2.7.3 Benaming van user defined datatypes
Datatypes zoals ARRAYs en STRUCTs worden door de gebruiker gedefinieerd. De benaming
voor het datatype zelf wordt als volgt voorgesteld:
• Array: ARR_x_y_z
– x: Start getal array
– y: Eind getal array
– z: datatype arrayelement
vb. ARR_1_10_BYTE: een array van 10 bytes, ARR_0_9_Settings: een array van 10
elementen van het eerder aangemaakte datatype ‘Settings’.
• Struct: udt<benaming>
vb. udtLaskop
De benaming van de variabele van zo’n datatype volgt de algemene regels van hierboven.
2 IEC 61131-3 17
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.8 Datatypes
2.8.1 Numerieke datatypes
De volgende tabel toont een overzicht van de belangrijkste numerieke datatypes.
Datatype Beschrijving Bits Bereik
SINT Short integer 8 -128 tot +127
INT Integer 16 -32768 tot 32767
DINT Double integer 32 −231 tot +231 − 1
LINT Long integer 64 −263 tot +261 − 1
USINT Unsigned short integer 8 0 tot 255
UINT Unsigned integer 16 0 tot 216 − 1
UDINT Unsigned double integer 32 0 tot 232 − 1
ULINT Unsigned long integer 64 0 tot 264 − 1
REAL Floating point 32 ±10±38
LREAL Long floating point 64 ±10±308
Opmerkingen over de notatie van numerieke datatypes:
• INT#15 of 15
• REAL#8 of 8.0
2.8.2 Bitgebaseerde datatypes
De volgende tabel toont een overzicht van de belangrijkste bitgebaseerde datatypes.
Datatype Beschrijving Bits Bereik
BOOL 1 bit 1 Logisch 1 of 0
BYTE Bitstring van 8 bits 8 Binaire informatie
WORD Bitstring van 16 bits 16 Binaire informatie
DWORD Bitstring van 32 bits 32 Binaire informatie
LWORD Bitstring van 64 bits 64 Binaire informatie
STRING Karakter string Tekst informatie
Opmerkingen over de notatie van bitgebaseerde datatypes:
• WORD#2#1010111100000011 (binaire notatie)
• WORD #16#AF03 (hexadecimal notatie)
• BYTE#2#10100011
2 IEC 61131-3 18
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.8.3 Time-gebaseerde datatypes
De volgende tabel toont een overzicht van de belangrijkste time-gebaseerde datatypes.
Datatype Beschrijving Bits Bereik
TIME Tijdsduur
DATE Kalendergegevens
TIME_OF_DAY Tijd van de dag
DATE_AND_TIME Kalendergegevens + tijd
van de dag
Opmerkingen over de notatie van bitgebaseerde datatypes:
• Opmerkingen over TIME:
– T#3s
– T#16d_5h_3m_4s_20ms (16 dagen, 5 uur, 3 minuten, 4 seconden en 20 millise-
conden)
– TIME#10s
• Opmerkingen over DATE:
– D#2001-10-15 (15 oktober 2001)
– DATE#1999-1-30
• Opmerkingen over TIME_OF_DAY
– TOD#10:10:30 (10 uur, 10 minuten en 30 seconden)
– TIME_OF_DAY#23:59:59 (1 seconde voor middernacht)
• Opmerkingen over DATE_AND_TIME
– DT#2007-03-22-15:36:50
– DATE_AND_TIME#2007-02-01-12:00:00
2 IEC 61131-3 19
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.8.4 Array
‘Array’ datatype is een structuur van verschillende elementen van hetzelfde datatype.
De verschillende elementen kunnen één voor één apart gemanipuleerd worden aan de hand
van een array-index.
Een array datatype moet vooraf gedeclareerd worden. Eens het datatype gedeclareerd is,
dan kunnen variabelen van dit array datatype gedefinieerd worden.
TYPE
(*Typename*) : ARRAY [(*From..To*)] OF (*DATATYPE*);
END_TYPE
Voorbeeld van een ééndimensionale array
Declaratie array datatype
TYPE
ARR_1_23_INT : ARRAY[1..23] OF INT;
END_TYPE
Definitie van variabelen
VAR
arrReeks_1 : ARR_1_23_INT;
iWaarde_4: INT;
END_VAR
CODE in ST
iWaarde_4 := arrReeks_1
Voorbeeld van een multi-dimensionale array
Declaratie array datatype
TYPE
ARR_1_23_INT : ARRAY[1..23] OF INT;
udtResultaten : ARRAY [1..3] OF ARR_1_23_INT;
END_TYPE
2 IEC 61131-3 20
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Definitie van variabelen
VAR
udtProductielijn_1 : udtResultaten;
iOpbrengst_x: INT;
END_VAR
CODE in ST
iOpbrengst_x := udtProductielijn_1 [2] [10];
2.8.5 Struct
‘Struct’ datatype is een structuur van verschillende elementen van een verschillend data-
type.
TYPE
(*Typename*) :
STRUCT
(*Element 1 Name*) : (*DATATYPE*);
(*Element 2 Name*) : (*DATATYPE*);
(*Element 3 Name*) : (*DATATYPE*);
(* . : . *);
(* . : . *);
(*Element n Name*) : (*DATATYPE*);
END_STRUCT;
END_TYPE
2.8.6 String
Een string is een datatype om tekst te verwerken. Het is een verzameling van bytes, waarbij
elke byte een character voorstelt (ASCII-tabel).
TYPE
(*Typename*):STRING((*String length*));
END_TYPE
2 IEC 61131-3 21
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
2.9 Structured Text
Specifiek aan structured text zijn de voorwaardelijke statements. Hierna volgt een kort over-
zicht.
2.9.1 Selectie statements
IF... THEN... ELSE...IF <boolean expression> THEN
<statement>;
ELSE
<statement>;
END_IF;
Met ELSIF wordt het:IF <boolean expression> THEN
<statement>;
ELSIF <boolean expression> THEN
<statement>;
ELSE
<statement>;
END_IF;
2 IEC 61131-3 22
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
CASECASE <integer expression> OF
<integer value_1> : <statement>;
<integer value_2> : <statement>;
<integer value_3> : <statement>;
ELSE
<statement>;
END_CASE;
2.9.2 Iteratie statements
FOR... DO
FOR <initialiserende waarde> TO <eindwaarde> BY <incrementele waarde> DO
(* BY is optioneel. Standaard wordt er met 1 stap verhoogd *)
<statement>;
<statement>;
<statement>;
END_FOR;
WHILE... DO
WHILE <boolean expression> DO
<statement>;
<statement>;
<statement>;
END_WHILE;
2 IEC 61131-3 23
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
REPEAT... UNTIL
REPEAT
<statement>;
<statement>;
<statement>;
UNTIL <boolean expression>
END_REPEAT;
Met het statement EXIT kan een voorwaardelijk einde gemaakt worden aan een iteratie
statement.
2 IEC 61131-3 24
3 Aanmaken van een project
3.1 Nieuw project aanmaken
1. Selecteer “New Project” onder het menu “File” om een nieuw project aan te maken
via een template. De structuur van het project alsook de keuzemogelijkheid van een
controller worden nu voorbereid.
2. Selecteer de gebruikte ILC, bv.: “ILC 131 ETH Rev. > 00/4.00” controller en bevestig
met OK (zie figuur 3.1).
Figuur 3.1: Project templates
3. Selecteer “Save Project As. . . ” onder het menu “File”. Kies een projectnaam, i.f.v. het
gebruik van Webvisit zijn spaties in de naam niet toegelaten, (hier StartersProgram, zie
figuur 3.2) en sla het project op via “Save”, zie figuur 3.2.
Figuur 3.2: Opslaan project
3 Aanmaken van een project 25
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Ieder project wordt opgeslagen als een ∗.mwt bestand en een folder met dezelfde naam.
Op figuur 3.2 is er een ∗.mwt bestand met de naam DEMO_PRO alsook een folder met de
naam DEMO_PRO.
Het is ook mogelijk om het project te zippen tot een ∗.zwt bestand.
Het is interessant om vooraf bij “Options” onder “Extras” de gewenste project directories
in te stellen zoals in figuur 3.3.
Figuur 3.3: Instellen project directories
3 Aanmaken van een project 26
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.2 Structuur nieuw project conform de IEC 61131-3
Figuur 3.4: Structuur bij het aanmaken van een nieuw project in PC WorX
Zie “2.2 Structuur van een applicatie volgens de IEC 61131-3 norm” op pagina 9 voor de
theoretische uitleg.
Zoals te zien is in figuur 3.4 wordt onder de map ‘Logical POU’s’ reeds één programma aan-
gemaakt met de naam Main.
Dit programma wordt een eerste in gebruik genomen via de DEFAULT task. Hierdoor is dit
programma dadelijk compileerbaar.
Indien andere programma’s aangemaakt worden dienen die zeker in een task geactiveerd te
worden (zie verder in deze cursus).
3 Aanmaken van een project 27
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.3 Aanpassen van de projectinformatie
3.3.1 Bus configuratie
Schakel over naar het werkgebied “Bus configuration”. Hier wordt alle projectinformatie
weergegeven (zie figuur 3.5).
Figuur 3.5: De busconfiguratie
3.3.2 IP
Tijdens het aanmaken van het project kent PC WorX automatisch een IP range toe voor een
lokaal netwerk (192.168.0.2 tot 192.168.0.254).
Indien een ander adres moet gebruikt worden, dan moet het start- en eindadres aangepast
worden. Indien nodig moet ook het subnetmask aangepast worden.
Voor de cursus worden volgende IP adressen toegepast:
PC 192.168.0.10/24 (subnetmask 255.255.255.0)
ILC_150 192.168.0.11/24 (subnetmask 255.255.255.0)
Beiden moeten hetzelfde subnetmask hebben.
3.3.3 IP configuratie van uw PC
Belangrijk is om eerst de netwerkinstellingen van de PC te controleren. Via de Command
Prompt wordt met behulp van het commando “ipconfig” het IP-adres van de PC opgevraagd
(zie figuur 3.7).
De PC instellingen aanpassen indien nodig via de eigenschappen voor LAN-verbinding. Bij
het Internet-protocol, kiezen voor de eigenschappen en een vast IP-adres instellen.
3 Aanmaken van een project 28
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 3.6: Configuratie
Figuur 3.7: Ipconfig
Vast IP-adres kiezen Om een vast IP-adres voor de PC te kiezen, moet het netwerkcen-
trum geopend worden. Via ‘adapter-instellingen wijzigen’ wordt een overzicht van alle adap-
ters verkregen. Rechtermuisklik op de gewenste adapter, meestal LAN-verbinding (zie figuur
3.8), en het venster ‘Eigenschappen’ wordt geopend.
Figuur 3.8: Verschillende netwerkadapters in netwerkcentrum
3 Aanmaken van een project 29
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Er wordt gebruik gemaakt van IPv4, dus moeten de eigenschappen van dit protocol geopend
worden, zie figuur 3.9.
Figuur 3.9: IPv4-eigenschappen selecteren
Uiteindelijk kan er een vast IP-adres ingesteld worden dat in dezelfde range van het IP-adres
van de controller moet liggen. Dit wordt weergegeven in figuur 3.10.
Figuur 3.10: Vast IP-adres toekennen
3 Aanmaken van een project 30
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.4 IP configuratie van de controller
3.4.1 Algemeen
De IP-settings binnen PCWorx zijn te zien in figuur 3.11. Om het IP-adres van de plc aan te
Figuur 3.11: IP Settings
passen zijn er de volgende mogelijkheden:
• Voor de eerste keer een IP-adres toekennen
– Via IPAssign (BootP Server)
– Via PC WorX (BootP Server)
– Via de seriële interface
– Via PC Worx, extended settings
• Veranderen van het IP-adres
– Via IPAssign (BootP Server)
– Via PC WorX (BootP Server)
– Via de seriële interface
3 Aanmaken van een project 31
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.4.2 Aanpassen IP-adres via de BootP Server (m.b.v. PC WorX)
Opmerking: De BootP-methode werkt enkel tot en met Windows XP!
Figuur 3.12: BootP opstarten binnen PCWorx
1. Activeer de “BootP Server active” checkbox.
2. Schakel over naar het werkgebied “Bus configuration”.
3. Selecteer de “ILC 131 ETH” controller.
4. Selecteer het tabblad “IP Settings” in het venster “Device Details”.
5. Breng het MAC-adres van de controller in (MAC-adres begint met 00-A0-45).
6. Vul het gewenste IP-adres in.
Figuur 3.13: Aanpassen van het IP-adres
7. Neem de spanning weg van de controller.
8. De spanning terug laten opkomen. Vanaf nu wordt het BootP proces opgestart, de
controller krijgt het ingestelde IP-adres en na een tweetal minuten is het IP-adres geac-
tiveerd.
3 Aanmaken van een project 32
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.4.3 Aanpassen IP-adres via de IP Assigment Tool (IPAssign)
IPAssign is te downloaden op de website van Phoenix Contact.
1. Zorg ervoor dat de BootP Server van PC WorX niet geactiveerd is. Enkel de bedrade
adapter van de PC mag aanliggen, alle andere adapters uitschakelen.
2. Openen IPAssign, klik op volgende en wacht tot het MAC-adres verschijnt, zie figuur
3.14.
3. Indien de controler niet in de lijst verschijnt, neem dan de spanning weg van de control-
ler door de zwarte connector even los te maken, daarna de spanning terug opzetten.
Figuur 3.14: MAC-adres selecteren
4. Klik op het MAC-adres van de controller dat op het scherm verschijnt (MAC-adres begint
met 00-A0-45).
5. Vul het gewenste IP-adres in zoals in figuur 3.15.
Figuur 3.15: IP-adres invullen
3 Aanmaken van een project 33
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 3.16: Wachten op bevestiging
6. Wacht tot de aanpassing bevestigd is. Indien er na een twintigtal seconden nog geen
bevestiging verkregen is, neem dan terug even kort de spanning weg van de controller.
Bij de heropstart neemt de controller het IP-adres aan.
Figuur 3.17: Bevestiging
3 Aanmaken van een project 34
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.4.4 Communicatie opzetten tussen PC en plc
Eens bij de controller en op de PC het juiste IP-adres ingesteld staat kan de communicatie
geactiveerd worden.
Hiervoor wordt de ILC 131 ETH aangeklikt in het window “Bus Structure” (links) en wordt het
tabblad “Communication” gekozen in het window “Device Details”, zie figuur 3.18. Na het
Figuur 3.18: ‘Communication’-tabblad om verbinding te maken
instellen van het juiste IP-adres van de controller kan de communicatie getest worden via de
knop “Test”, zie figuur 3.19.
Figuur 3.19: Testen van de communicatie
Na enkele seconden zal de indicatiebar groen oplichten zoals in figuur 3.20. Vervolgens kan
op ‘Apply’ geklikt worden om te bevestigen. Ter controle zal links in de boomstructuur het
IP-adres wijzigen.
Figuur 3.20: Geslaagde communicatietest
3 Aanmaken van een project 35
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.5 De INTERBUS configuratie
Eens het communicatiepad actief is tussen de controller en de PC kan het INTERBUS systeem
verbonden met de controller automatisch ingelezen worden.
Voor dit project zijn twee INTERBUS modules verbonden met de controller.
• Selecteer het “Connected Bus” commando via het “View” menu om het INTERBUS sys-
teem in te lezen (zie figuur 3.21).
Figuur 3.21: Connected Bus
• Selecteer de juiste controller in het venster “Connected INTERBUS” (zie figuur 3.22).
Figuur 3.22: Selecteer de juiste controller
• De INTERBUS modules worden nu automatisch ingelezen. Eens ingelezen moeten ze
toegevoegd worden aan het project.
3 Aanmaken van een project 36
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
• Klik hiervoor op de controller, rechtermuistoets en kies vervolgens “Import to Project”
en “With Device Description”.
Figuur 3.23: Uitgelezen busstructure
• Het venster “Select Device” toont nu alle modules welke overeenstemmen met de ID
code en met de hoeveelheid processdata van de geconnecteerde modules. Uit deze
lijst moeten de werkelijk verbonden modules geselecteerd worden.
De INTERBUS modules welke in dit project gebruikt zijn:
- IB IL AI 2/SF-ME Beiden moeten hetzelfde subnetsmask hebben.
• Uiteindelijk moet de configuratie opgebouwd zijn zoals op figuur 3.24 wordt weergege-
ven.
Figuur 3.24: Uiteindelijke configuratie
• Tot slot is het beter om nu opnieuw offline te selecteren vooraleer dit venster af te
sluiten.
Figuur 3.25: Opnieuw offline gaan
3 Aanmaken van een project 37
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
3.6 Compileren en downloaden
Het project bevat nu alle informatie omtrent de busconfiguraties (Ethernet & INTERBUS) en
is er een actieve communicatie. Op dit moment is het mogelijk om het project te compileren
en te downloaden om eventuele fouten te herkennen.
compileren→ downloaden naar de controller→ cold start uitvoeren.
Enkele belangrijke sneltoetsen betreffende het compileren:
Figuur 3.26: Compileren en downloaden
Figuur 3.27: Sneltoetsen
3 Aanmaken van een project 38
4 Uitgewerkt
Voorbeeldprogramma
4.1 Inleiding
Hieronder wordt een eenvoudig voorbeeldprogramma stap voor stap omschreven. De be-
oogde werking bestaat uit 2 delen:
1. PC WorX: In PC WorX wordt een eenvoudig programma geschreven die een transport-
band met telfunctie voorstelt. Daarnaast wordt ook een analoge waarde binnengelezen
en gevisualiseerd op een LED-bar.
2. Webvisit: De ILC131 ETH beschikt over een webserver. Bij deze oefening is het de
bedoeling dat een webpagina aangemaakt wordt waarmee de transportband gevisua-
liseerd wordt, alsook de aansturing ervan mogelijk wordt. De toestand van de analoge
ingang zal hier ook worden gevisualiseerd.
4 Uitgewerkt Voorbeeldprogramma 39
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
4.2 Opdrachtomschrijving
Na een correcte hardwareconfiguratie wordt aan de hand van een voorbeeldprogramma de
programmeeromgeving van PC WorX, conform de IEC61131-3 norm, verder toegelicht.
De opdracht omvat een transportband met een bedienkastje en een lampenzuil.
Een motor, die in snelheid regelbaar is, laat de transportband draaien. Met behulp van een
startknop (NO) kan de band gestart worden. Met de stopknop (NC) kan de band gestopt
worden.
Een veiligheidrelais (NC) wordt eveneens op het kastje gemonteerd en wordt als ingang op
de PLC binnen genomen.
De lampenzuil bestaat uit een rode en groene lamp. De rode lamp gaat branden wanneer
de noodstop (veiligheidsrelais) ingedrukt is. De groene lamp brandt continu wanneer de
transportband draait en de werking OK is. De groene lamp brandt niet als de rode lamp
brandt. Wanneer alle voorwaarden OK zijn (geen noodstop), maar er is nog niet gestart, gaat
de groene lamp pulsen (halve seconde hoog, halve seconde laag).
Met behulp van een potentiometer (analoge ingang) kan de transportband in snelheid ge-
stuurd worden (analoge uitgang).
Figuur 4.1: De transportband
4 Uitgewerkt Voorbeeldprogramma 40
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
4.3 Uitwerking
Eerst en vooral moet er omgeschakeld worden naar het werkgebied “IEC Programming”. Met-
een is duidelijk dat PC WorX conform de IEC 61131-3 norm opgebouwd is. In het venster “Pro-
ject Tree Window” zijn er enkele duidelijke onderverdelingen terug te vinden.
Figuur 4.2: Projectstructuur
Er is een mapstructuur voor libraries, voor datatypes, voor
POU’s en er is de Physical Hardware.
Op figuur 4.2 is deze structuur afgebeeld.
Onder “Physical Hardware” is de hoofdstructuur terug te vin-
den. De STD_CNF (standaard configuratie) bestaat uit een
STD_RES (standaard resource) welke hier de ILC 150 ETH is.
Deze resource kan dan verschillende Tasks uitvoeren. Bij de
opstart van een nieuw project is er telkens een “Main program”
voorzien onder het mapje “Logical POU’s” welke geactiveerd is
binnen de “Default task”.
4.3.1 Definiëren van de variabelen
Vooreerst wordt er een onderscheid gemaakt tussen lokale en globale variabelen.
• Lokale variabelen
Lokale variabelen worden gedefinieerd op POU niveau. Deze variabelen kunnen enkel
gebruikt worden binnen de POU waarin ze aangemaakt worden.
Naast het gebruik van lokale variabelen als VAR kunnen lokale variabelen ook op een
ander manier gebruikt worden. Hier wordt onderscheid gemaakt naargelang het type
POU.
Binnen een functie kunnen lokale variabelen als VAR_INPUT gedefinieerd worden. Deze
zullen de ingangsparameters van de functie worden.
Binnen een functiebouwsteen kunnen lokale variabelen als VAR_INPUT, VAR_OUTPUT
en als VAR_IN_OUT. Via deze variabelen worden alle input- en outputparameters van de
functiebouwsteen gedefinieerd.
• Globale variabelen
Globale variabelen worden gedefinieerd op project niveau. Deze variabelen kunnen
over het volledige project afgevraagd of gemanipuleerd worden. Hier moet er onder-
scheid gemaakt worden tussen systeem variabelen en user variabelen.
4 Uitgewerkt Voorbeeldprogramma 41
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– SYSTEM variabelen
Systeem variabelen zijn voorgedefinieerde variabelen, afhankelijk van de gekozen
controller, welke sowieso altijd beschikbaar zijn. Een lijst van alle systeemvariabe-
len is terug te vinden onder het item “Global Variables” in de Project Tree Window,
zie figuur 4.3.
Figuur 4.3: Systeemvariabelen
4 Uitgewerkt Voorbeeldprogramma 42
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– USER variabelen
Naast de systeemvariabelen zal de gebrui-
ker ook een lijst met globale user variabelen.
Deze kunnen beter onderverdeeld worden in
verschillende groepen om dusdanig een goed
overzicht te bewaren tussen alle globale va-
riabelen. Daartoe kunnen nieuwe groepen
aangemaakt worden onder het item “Global
Variables”.
Figuur 4.4: aanmaken groepen voor
globale variabelen
Klik op de lijn “System Variables”, rechtermuistoets en selecteer het item “Insert
Group”. Op die manier kunnen betekenisvolle groepen aangemaakt. Maak 3 groe-
pen aan met de volgende namen:
∗ Analoog
∗ Digitaal I/O
∗ Webvisit
Figuur 4.5: Globale user variabelen indelen
4.3.2 Aanmaken van een nieuwe POU
Het aanmaken van een nieuwe POU kan op twee manieren. Enerzijds links in de boomstruc-
tuur met een rechtermuisklik op “Logical POUs” gevolgd door “Insert” en de gewenste POU.
Anderzijds door bovenaan in de werkbalk rechtstreeks met de 4 aangeduide icons te werken.
Er kan een keuze gemaakt worden tussen een nieuw programma ( ), een nieuwe functie-
bouwsteen ( ) of een nieuwe functie ( ).
4 Uitgewerkt Voorbeeldprogramma 43
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Vervolgens moet de POU in het window “Insert” verder gespecificeerd worden. Eén van de
vijf programmeertalen (conform de norm) moet gekozen worden voor de POU. Enkel in het
geval van een functie moet een “Datatype” of “return value” geselecteerd worden, zie figuur
4.6.
Figuur 4.6: Aanmaken van een functie die een boolean teruggeeft
Per POU worden drie werkbladen aangemaakt:
• NaamPOUT( ); Textveld: alles wat hierin genoteerd wordt, zal verschijnen bij het op-
vragen van de help omtrent deze POU.
• NaamPOUV( ): Veld voor het ingeven van variabelen
• NaamPOU( , , , , ): Programmeerveld
4.3.3 Aanmaken van een nieuwe POU groep
Een POU groep wordt gebruikt om een duidelijkere structuur te creëren in een (groot) pro-
ject. Zo kunnen bv. alle programma’s, functies en functieblokken elk apart een groep krijgen,
maar er kan bv. ook een groep aangemaakt worden voor een aantal functies en/of functie-
blokken die een gemeenschappelijk doel hebben.
Om een POU groep aan te maken wordt er met de rechtermuisknop geklikt op ’Logical POUs’,
klik vervolgens op ’insert’ en ’POU group’ (zie figuur 4.7).
4 Uitgewerkt Voorbeeldprogramma 44
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 4.7: POU groep toevoegen
In deze opdracht zullen er 2 POU groepen aangemaakt worden:
• FBs
• Programs
Na het aanmaken van beide groepen kan het hoofdprogramma “Main” versleept worden naar
de POU groep “Programs”.
4.3.4 Aanmaken van een variabele
Binnen een POU moeten variabelen aangemaakt worden. Dit kan op verschillende manieren
gebeuren:
– Door te dubbelklikken op een ingangs- of uitgangsbolletje van een functiebouwsteen.
– Via een rechtermuisklik ergens in het werkblad en te kiezen voor “Variable”.
– Door de sneltoets ‘F5’ te gebruiken.
In ieder geval verschijnt het “Variable Properties” venster. De variabele moet een naam krij-
gen, een datatype en een scoop (local of global). Afhankelijk van de scoop kan de ‘usage’
geselecteerd worden, bijvoorbeeld VAR_INPUT voor een digitale ingang. De mogelijkheden
zijn te zien in figuur 4.8.
(a) Bij local scope (b) Bij global scope
Figuur 4.8: Mogelijke ‘usage’ voor een variabele
4 Uitgewerkt Voorbeeldprogramma 45
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Opmerking: Indien het niet mogelijk is om de ‘Definition scope’ te wijzigen, moet de check-
box ‘Show all variables of worksheets’ afgevinkt worden.
Om een overzichtelijk project te verkrijgen worden alle variabelen ingedeeld in groepen: één
groep voor input parameters, één voor output parameters. . . Deze groepen moeten aange-
maakt worden in het variabelenveld van de POU ( ). De groepen worden standaard voor-
zien, zelfs als deze niet gebruikt worden, zie figuur 4.9.
De verschillende groepen zijn:
– Input Parameters
– Output Parameters
– InOut Parameters
– Local Parameters
– External Variables
– FB Instances
Figuur 4.9: Indeling van variabelen in groepen
Voor iedere variabele die aangemaakt wordt, kan in het “Variable Properties” venster inge-
steld worden onder welke groep de variabele moet komen. Dit via ‘Local Variable Groups’,
zie opnieuw figuur 4.8.
4.3.5 Aanmaken van een functieblok “Transportband”
• De transportband wordt gemaakt in een functieblok. Om een nieuwe functieblok aan
te maken, kies links bovenaan.
• Selecteer de programmeertaal FBD ("Function Block Diagram") en stel bovenaan de
gewenste bouwsteennaam in (hier: ‘Transportband’).
4 Uitgewerkt Voorbeeldprogramma 46
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 4.10: Nieuwe functieblok aanmaken
• Bevestig met OK. De bouwsteen wordt aangemaakt.
• Dubbelklik op . Maak daar de volgende groepen aan zoals in figuur 4.11:
– Input Parameters
– Output Parameters
– InOut Parameters
– Local Parameters
– External Variables
– FB Instances
Figuur 4.11: Aanmaken van variabelengroepen
• Open het werkblad van de functieblok door te dubbelklikken op
• Nu kan het programma voor de transportband geschreven worden.
• Voeg een ‘Set Reset’ in vanuit de Edit Wizard aan de rechterzijde: selecteer onder
“Favorites” ‘RS’ en sleep het in het werkveld, wijzig de Instance van de bouwsteen naar
4 Uitgewerkt Voorbeeldprogramma 47
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
“oRS_StartStop”, wijzig de Local Variable Group naar “FBs” en bevestig vervolgens met
OK.
Figuur 4.12 Figuur 4.13: Instance voor FB
• Op dezelfde manier wordt een OR functie vanuit de Edit Wizard opgehaald. Let op het
feit dat er voor de OR functie geen instance moet toegekend worden (verschil functie-
bouwsteen en functie).
Figuur 4.14: Transportband FBD
• De uitgang van de OR functie wordt nu met de RESET1 ingang van de bouwsteen
RS_StartStop verbonden.
• Nu moeten enkel nog de lokale variabelen aangemaakt worden. Dit kan op 2 manieren
gebeuren:
– De variabele in- of uitgangen van een bouwsteen zijn gemakkelijk aan te maken
door dubbel te klikken op het bolletje bij de in- of uitgang.
4 Uitgewerkt Voorbeeldprogramma 48
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– Klik op een plaats in het werkblad, klik rechtermuisknop en kies voor het item
“Variable”.
• In beide gevallen wordt het scherm zoals in figuur 4.15 weergegeven.
Figuur 4.15: Lokale variabele aanmaken
• Stel linksboven de gewenste naam in, bv.: i_xVeiligheidsrelais.
• Kies als datatype Bool en kies bij het item “Usage” voor VAR_INPUT.
• De scope voor deze “User Variable” staat ingesteld op local.
• Kies bij “Local Variable Groups” voor Inputs.
• Op dezelfde manier worden volgende variabelen gedeclareerd:
Naam Data type Usage Scope Local Var.
Groups
Global Var.
Groups
i_xStart Bool VAR_INPUT Local Inputs
i_xStop Bool VAR_INPUT Local Inputs
i_xVeiligheidsrelaisBool VAR_INPUT Local Inputs
q_xMotor Bool VAR_OUTPUT Local Outputs
q_xRood Bool VAR_OUTPUT Local Outputs
q_xGroen Bool VAR_OUTPUT Local Outputs
Figuur 4.16 geeft de lijst weer na het invoegen van alle variabelen.
4 Uitgewerkt Voorbeeldprogramma 49
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 4.16: Lijst met variabelen van de functieblok “Transportband”
Vooraleer de functieblok verder gebruikt kan worden moet deze eerst gecompi-
leerd worden!
Figuur 4.17: Compileer de functieblok
4.3.6 Het hoofdprogramma
• In het werkblad “Main” kan de aangemaakte functie-
bouwsteen opgevraagd worden. Voeg deze toe door in
de “Edit Wizard” onder de programmanaam te dubbel-
klikken op de functieblok ’Transportband’. Deze func-
tiebouwsteen kan nu eventueel een tweede keer opge-
vraagd worden om een tweede transportband voor te
stellen.Figuur 4.18
• Nu moeten ook nog alle variabelen toegekend worden. De 8 digitale ingangen en
de 4 digitale uitgangen on board van de ILC 131 ETH, zijn te vinden als systeem-
variabelen. Dubbelklikken op het aansluitpunt (niet op de naam zelf) van de ingang
i_xVeiligheidsrelais:
4 Uitgewerkt Voorbeeldprogramma 50
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 4.19: On-board input toevoegen
• Kies voor Global, en via de selecttoets onder Name kan een keuze gemaakt worden
tussen alle systeemvariabelen. Selecteer de ONBOARD_INPUT_BIT0.
• Het programma kan nu als volgt worden afgewerkt:
Figuur 4.20
Opmerking: Signalen kunnen geínverteerd worden door ter hoogte van de gewenste
in- of uitgang van de functiebouwsteen, net buiten de functiebouwsteen te klikken met
de rechtermuisknop. Dan kan ‘Toggle FP Negation’ geselecteerd worden.
Daarnaast kan dit ook gebeuren door de in- of uitgang van de functiebouwsteen te
selecteren en de sneltoets SHIFT+F5 te gebruiken.
• Vergeet niet alles opnieuw te compileren!
4.3.7 Testen van het programma
Het testen van het programma met de ILC 131 ETH kan tot slot gebeuren na het compileren
downloaden (zie 3.6 op pagina 38) van het project. Met het icoon (Debug On/Off) kan het
opsporen van fouten gestart worden. Onder elke variabele wordt nu zijn status of actuele
waarde weergegeven.
4 Uitgewerkt Voorbeeldprogramma 51
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Door het schakelen van de derde schakelaar op de switchbox kan de transportband geac-
tiveerd worden. De statusveranderingen kunnen nu zowel online als op de modules zelf
worden teruggevonden.
Figuur 4.21
4.3.8 Deel 2
Tijdens het tweede deel van de opdracht zal de knipperlichtfunctie van de groene lamp op-
gebouwd worden.
• Maak in de POU group “FBs” een nieuwe functieblok met de naam “AanUitpuls”.
• Ga naar de lijst met variabelen en maak er opnieuw de groepen ‘Input Parameters’,
‘Output Parameters’, ‘InOut Parameters’, ‘Local Variables’, ‘External Variables’ en ‘FB
instances’ aan.
• Voeg een ‘On delay’ timer, een ‘Puls’ timer en een ‘AND’ functie in vanuit de Edit Wizard.
Benoem deze respectievelijk TON_1 en TP_1. Voor de AND functie moet geen instance
toegekend worden.
• Uiteindelijk moet alles aan elkaar verbonden worden tot de volgende functionaliteit
bekomen wordt:
– Let wel: Het ingangssignaal van de timer-on-delay dient geínverteerd te worden.
Dit kan door te dubbelklikken op de ingang van de functiebouwsteen en het vakje
“negated” aan te vinken.
Figuur 4.22
• Maak de variabelen aan:
4 Uitgewerkt Voorbeeldprogramma 52
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Naam Data type Usage Scope Local Var.
Groups
Global Var.
Groups
i_tTotalePulsTijd Time VAR_INPUT Local Inputs
i_tPulsAanTijd Time VAR_INPUT Local Inputs
i_xEnable Bool VAR_INPUT Local Inputs
q_xPuls Bool VAR_OUTPUT Local Outputs
• Compileer de functieblok!
• Open het werkblad van de functieblok ‘Transportband’
• Voeg daar de functiebouwsteen ‘AanUitpuls’ toe via de ‘Edit Wizard’.
• Vervolledig het programma als volgt:
Figuur 4.23
• Compileer en dowload het project.
• Test het project m.b.v. de ILC 131 ETH.
4 Uitgewerkt Voorbeeldprogramma 53
5 Ladder
5.1 Voorbeeld: Transportband
Om de programmeertaal Ladder Diagram uit te leggen wordt er gewerkt met de basisoefe-
ning ‘Transportband’.
• Maak een nieuwe functieblok aan, selecteer de programmeertaal LD (“Ladder Dia-
gram”) en stel bovenaan de gewenste bouwsteennaam in (hier: ‘Transportband_LD’).
Figuur 5.1: Aanmaken functieblok in LD
• Bevestig met OK. De bouwsteen wordt aangemaakt.
• Dubbelklik op . Maak daar de volgende 4 groepen aan:
– Inputs
– Outputs
– Locals
– FBs
• Open het werkblad van de functieblok door te dubbelklikken op
• Nu kan het programma voor de transportband in Ladder Diagram geschreven worden.
5 Ladder 54
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
• Voeg een nieuw netwerk in via:
Figuur 5.2: Werkbalk LD
• Voeg een ‘Set Reset’ in vanuit de Edit Wizard aan de rechterzijde: selecteer onder
“Favorites” ‘RS’ en sleep het in het zojuist aangemaakte netwerk, wijzig de Instance
van de bouwsteen naar “RS_StartStop”, wijzig de Local Variable Group naar “FBs” en
bevestig vervolgens met OK.
Figuur 5.3
• Klik in de bouwsteen ‘RS_StartStop’ op ‘Reset1’. En klik dan op het icoontje ‘Contact
left’. Contact ‘C002’ komt dan te voorschijn zoals op figuur 5.4.
Figuur 5.4
• Verbind het begin van ’COO2’ met powerrail ’001’.
• Er zijn echter 2 variabelen die de ingang ‘Reset1’ kunnen manipuleren. In Ladder Dia-
gram wordt een OR-functie voorgesteld als een parallele weergaven van contacten. Bij
een AND-functie is dit in serie. Voeg nu parallel met ‘C002’ een nieuw contact in.
5 Ladder 55
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 5.5
• Doe hetzelfde over coil ‘C001’. Hier worden dus twee uitgangen voorgesteld.
• Nu moeten enkel nog de variabelen gedeclareerd worden. Dit gebeurt door op het
contact of de coil te klikken. Ga nu als volgt te werk voor het declareren van bv. ‘COO0’:
Figuur 5.6: Invoegen variabele
– Stel linksboven de gewenste naam in, bv.: i_xStart.
– Kies als datatype Bool en kies bij het item “Usage” voor VAR_INPUT.
– De scope voor deze “User Variable” staat ingesteld op local.
– Kies bij “Local Variable Groups” voor Inputs.
– Kies onderaan voor ‘Contact’.
– Het type mag ongewijzigd blijven.
• Voeg een tweede netwerk toe en zorg ervoor dat uiteindelijk figuur 5.7 bekomen wordt.
5 Ladder 56
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 5.7: Uiteindelijk resultaat
5 Ladder 57
6 Structured Text
6.1 Voorbeeld: Transportband
• Maak een nieuwe functieblok aan volgens figuur6.1, selecteer de programmeertaal ST
(“Structured Text”) en stel bovenaan de gewenste bouwsteennaam in (hier: ‘Transport-
band_ST’).
Figuur 6.1: Aanmaken nieuwe functieblok
• Bevestig met OK. De bouwsteen wordt aangemaakt.
• Dubbelklik op . Maak daar de volgende 4 groepen aan: Inputs,
Outputs, Locals en FBs
• Open het werkblad van de functieblok door te dubbelklikken op
• Nu kan het programma voor de transportband in Structured Text geschreven worden.
• Voeg een ‘Set Reset’ in vanuit de Edit Wizard aan de rechterzijde: selecteer onder
“Favorites” ’RS’ en sleep het in het werkveld, wijzig de Instance van de bouwsteen naar
“oRS_StartStop”, wijzig de Local Variable Group naar “FBs” en bevestig vervolgens met
OK.
• De lokale variabelen moeten ingevuld worden op de plaatsen waar er (* BOOL *) staat.
Dit wordt als volgt gedaan:
6 Structured Text 58
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– Typ de gewenste variabele(n) in. Selecteer de variabele, rechtermuisklik en klik
op ‘Variabele’. Het volgende scherm komt te voorschijn:
Figuur 6.2: Variabel properties
– Laat de naam ongewijzigd. In dit geval is dit dus i_xStart.
– Kies als datatype Bool en kies bij het item “Usage” voor VAR_INPUT.
– De scope voor deze “User Variable” staat ingesteld op local.
– Kies bij “Local Variable Groups” voor Inputs.
• Doe nu hetzelfde voor de andere variabelen en vervolledig als volgt:
Figuur 6.3: Functieblok Transportband in ST
• Vergeet niet iedere regel code met ‘;’ af te sluiten!
6 Structured Text 59
7 WebVisit
7.1 Inleiding
WebVisit is een softwarepakket dat mee geínstalleerd wordt tijdens het installeren van PC
WorX. Met behulp van deze software kan op een grafische manier een webpagina aange-
maakt worden en gedownload worden naar de ILC. Op deze manier kunnen globale variabe-
len van het programma worden gevisualiseerd en gemanipuleerd.
De methode om een variabele in een WebVisit toepassing te gaan gebruiken bestaat er ener-
zijds in de variabele als een VAR_GLOBAL te declareren. Anderzijds moet ook de “PPD check-
box” aangevinkt worden waardoor in het programma vastgelegd wordt dat de variabele te
benaderen is vanaf de webpagina (zie figuur 7.1).
Figuur 7.1: PDD optie aanvinken
Een overzicht van alle globale in- en uitgangen, welke als PDD aangevinkt zijn, is ook te
vinden bij de lijst “Global_Variables” (links in het ‘Project Tree Window’).
Figuur 7.2: PDD controleren in “Global_Variables”-lijst
Om nu een WebVisit toepassing te maken met de transportband moet het programma aan-
7 WebVisit 60
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
gepast worden zoals in figuur 7.3: een OR- poort wordt bij iedere ingang toegevoegd, iedere
keer wordt een nieuwe globale variabele aangemaakt. Bij iedere variabel moet de optie PDD
aangevinkt worden. Op die manier kan de transportband bediend worden met zowel de ana-
loge als de digitale schakelaars via WebVisit. Ook moet er bij elke “ONBOARD_INPUT_BITx”
en “ONBOARD_OUTPUT_BITx” PDD aangevinkt worden.
Figuur 7.3: Main programma voor de transportband
Tijdens het compileren van een PC WorX project wordt er door de software steeds een “PDD.CSV”
bestand gegenereerd. Dit bestand bevat een lijst met de variabelennamen die vanuit de web-
pagina kunnen benaderd worden.
Figuur 7.4: CSV-file van alle weer te geven PDD-variabelen
Figuur 7.4 toont een voorbeeld van een dergelijk bestand. Wanneer Microsoft Office op de PC
geïnstalleerd is zal dit bestand (met extensie .CSV) geopend kunnen worden in Excel.
Het PDD.CSV bestand is terug te vinden in de map horende bij het PC WorX project. PC WorX
maakt namelijk voor elk project een map aan met dezelfde naam als het PC WorX project
en plaatst deze map op dezelfde locatie (directory) als het project zelf. In deze map is het
PDD.CSV bestand terug te vinden onder:
Locatie van het project...\Projectnaam\C\STD\_CNF\R\STD\_RES
7 WebVisit 61
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
7.2 Een project uitwerken in WebVisit
Start de WebVisit software via “Start → Programma’s → Phoenix Contact → AUTOMATION-
WORX Software suite 2013 1.81→ WebVisit 6.21.xx”
7.2.1 Een nieuw project aanmaken
– Sluit eventuele openstaande projecten af door onder “File” voor “Close project” te kie-
zen.
– Een nieuw project aanmaken gebeurt door in het beginscherm op “New Project” te
klikken of onder “File”, “New Project. . . ” te kiezen. In de 7 stappen moet een naam ge-
kozen worden voor het project en een locatie, vervolgens enkele grafische instellingen
en andere opties. Deze kunnen later nog aangepast worden.
– Na het afronden van de ‘New Project’-wizard moeten de belangrijke instellingen gebeu-
ren. Bovenaan kan via “Project→ Project Configurations” en te klikken op het tabblad
‘Project Advanced’ het venster uit figuur 7.5 geopend worden.
Figuur 7.5: PCWorx project + PPO lijst instellen
Het is belangrijk om in te stellen met welk PC WorX project zal gecommuniceerd worden,
en welke het daarbij horende “PDD.CSV” bestand is. Onder PPO Variable List moet het
pad naar het PCWorX project (.mwt bestand) ingesteld wordt, het bijhorende PDD.CSV
bestand zal automatisch opgezocht en ingesteld worden door de WebVisit software.
7 WebVisit 62
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
– In het tabblad ‘Runtime Configurations’ onder de ‘Project Configurations’ kan de ‘Client
Technology’ ingesteld worden, zie figuur 7.6. Tot voor kort was enkel Java mogelijk, wat
problemen gaf voor systemen waarop Java niet geïnstalleerd is.
Met de nieuwe ILC 1x1-reeks kan vanaf firmwareversie 4.30 ook gekozen worden voor
HTML5, wat geen bijkomende software vereist en daarom ideaal is voor visualisaties op
tablets en dergelijke.
Figuur 7.6: Kiezen van de client technology
Het verdere verloop van deze WebVisit cursus is gebaseerd op de eerder aangemaakte oe-
fening. Het is de bedoeling een webpagina aan te maken waarmee de transportband kan
gestart en gestopt worden. Ook de transportband zelf wordt op deze pagina gevisualiseerd.
Het geheel wordt gecontroleerd door een hoofdpagina van waaruit de andere pagina’s opge-
roepen kunnen worden.
7.2.2 Een nieuwe webpagina aanmaken
Een nieuwe webpagina (xxx.teq) invoegen gebeurt als volgt:
7 WebVisit 63
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.7: Nieuwe webpagina aanmaken
• Geef de eerste pagina bijvoorbeeld de naam ‘Transportband’.
• Selecteer de zopas aangemaakte pagina “Transportband.teq” links onder ‘Project Files’.
• Een object toevoegen op de pagina kan door het gewenste object te selecteren in de
‘painters gallery’ (te vinden zowel rechts in de sidebalk, zie figuur 7.8, als boven in de
toolbar) en vervolgens op het werkvlak te klikken. De positie en grootte van het object
kunnen aangepast worden.
Figuur 7.8: Painters gallery
• Voeg in het venster 4 buttons en 2 cirkels toe zoals in figuur 7.9:
7 WebVisit 64
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.9
• Dubbelklik op de bovenste button om de eigenschappen te bekomen. Dit wordt de
startknop. De belangrijkste basiseigenschappen uit het “Properties”-venster zijn:
– General: algemene lay-out instellingen voor het object zoals grootte, positie, kleur,
font voor tekst. . .
– Repaints: instellingen voor data die op het object weergegeven moeten worden.
Zo kan per conditie een andere tekst verschijnen op een button. . .
– Actions: specifieke instellingen per object. Voor een button zijn dit:
∗ Actions Set Variables: enkel voor een button. Met dit kan een toestand van
een variabele veranderd worden naargelang de knop ingedrukt is of niet.
∗ Actions Toggle Increment Variables: enkel voor een button. Met ‘Toggle’ kan
een variabele hoog en laag gezet worden met een muisklik. Increment zorgt
voor een verhoging van een variabele per muisklik.
∗ Actions Jump: enkel voor een button. Om te navigeren tussen verschillende
webpagina’s.
– Border Advanced: mogelijkheid om per conditie een ander kleur te geven aan het
object via vb. 2-kleurenmode.
– Hide-Disable: conditioneel kan een object verschijnen of vervagen.
• Figuur 7.10 toont dat onder “Repaints” de tekst op de drukknop gewijzigd kan worden.
7 WebVisit 65
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.10
• Nu moet er ingesteld worden wat er gebeurt bij de bediening van de startdrukknop.
De werking van de schakelaar wordt opgevat als een ‘Mouse Down/Up’ functie. Dit
betekent dat de ingang ‘1’ wordt bij het indrukken van de knop en terug ‘0’ bij het
loslaten ervan.
• Vink hiervoor onder ‘Actions Set Variables’ zowel de ‘Set Var On Mouse Down’ als ‘Set
Var on Mouse Up’ optie aan. Kies bij beiden voor het type ‘PPO’ en selecteer als naam
“@GV.IN_xWebStart” (zie figuur 7.11). Een ‘PPO’ (Process POint) is een plc-variabele
die zichtbaar gemaakt wordt op de webpagina.
Stel ‘Value = 1’ bij ‘Set Var On Mouse Down’ en ‘Value = 0’ bij ‘Set Var On Mouse Up’.
• Doe hetzelfde voor de tweede button. Dit wordt de stopknop, dus de gekozen ‘PPO’
wordt in dit geval “@GV.IN_xWebStop”.
• De derde en kleinste button wordt de noodknop. In tegenstelling tot de start -en stop-
knoppen moet deze knop ingedrukt blijven bij het loslaten van de muis. Er wordt ge-
bruik gemaakt van de ‘Toggle’ functie. Dit betekent dat de noodstop ingeschakeld wordt
7 WebVisit 66
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
(a) PPO instellen (b) Muisactie instellen
Figuur 7.11: Bediening startknop instellen
bij een eerste maal klikken op de drukknop. Een tweede maal klikken op dezelfde knop
schakelt de noodstop terug uit.
Figuur 7.12: Toggle instellen
• Het koppelen van de bovenste cirkel met de variabele “ONBOARD_OUTPUT_BIT1” zodat
deze de groene lamp voorstelt, gebeurt onder de optie ‘Boarder Advanced’. Daar kan
de binnenkleur van de cirkel veranderd worden afhankelijk van de toestand van de plc-
variabele. Indien de variabele laag (==0) is, zal ‘Color1’ aangenomen worden. Is de
variabele hoog (==1), zal ‘Color2’ gebruikt worden, zie figuur 7.13.
• Doe nu hetzelfde voor de onderste cirkel die de rode lamp voorstelt.
• Om de werking van de motor te visualiseren wordt een tweede webpagina aangemaakt.
Klik dus opnieuw op ‘Project’→ ‘Add to project’→ ‘New...’ en geef de pagina de naam
“Motor.teq”.
7 WebVisit 67
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.13: Kleur veranderen in ‘Border Advanced’ eigenschappen
• De motor wordt voorgesteld als een grote cirkel die rood is als de transportband stil ligt
en groen is als de motor van de transportband werkt. Dit wordt opnieuw ingesteld via
‘Border Advanced’, zie figuur 7.14:
• Als de noodstop ingedrukt is (dus als de rode lamp brandt) moet de tekst “Noodstop is
ingedrukt!” verschijnen. Dit wordt gedaan door gebruik te maken van de ‘hide’ optie,
zie figuur 7.15:
Figuur 7.15: Tekst conditioneel zichtbaar maken
• Het moet het ook mogelijk zijn om te navigeren tussen de verschillende webpagina’s.
7 WebVisit 68
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.14: Conditioneel tussen 2 kleuren switchen
Hiervoor wordt op deze pagina een button toegevoegd met de tekst “Terug”. De link
terug naar de vorige pagina kan zeer eenvoudig ingesteld worden onder ‘Actions Jump’
door de optie ‘Back Jump’ aan te selecteren, zie figuur 7.16.
Figuur 7.16: Jump actie naar vorige pagina instellen
• Ga nu terug naar het scherm ‘Transportband.teq’, selecteer de overgebleven button
en geef deze de naam ‘Transportband’. Deze drukknop moet naar het scherm van de
motor leiden. Onder ‘Actions Jump’ kan de pagina ingesteld worden waarnaar omge-
schakeld moet worden. Figuur 7.17 toont hoe dit moet.
7 WebVisit 69
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.17: Jump actie naar specifieke pagina instellen
Tot slot dient nog 1 instelling te gebeuren om er voor te zorgen dat de ‘Transportband.teq’
wel degelijk als startpagina wordt weergegeven. Via ‘Projects → Project Configurations →Applet Advanced’ wordt het venster zoals in figuur 7.18 terug opgeroepen. Hierin kan de
“Main TEQ” ingesteld worden. Geef hiervoor ‘Transportband.teq’ in zodat dit de startpagina
wordt bij het surfen naar de ILC.
Figuur 7.18: Startpagina instellen
Let ook op de instelling ‘period’. Standaard staat dit ingesteld op 1000ms wat betekent dat
elke seconde het beeld van de webpagina geüpdate wordt. Bij het visualiseren van een knip-
perlicht van 1Hz is dit uiteraard te traag. Daarom zal deze parameter moeten verlaagd wor-
den tot bijvoorbeeld 50ms om een snellere en meer correcte weergave van het knipperlicht
te bekomen.
7.2.3 Compileren van het project
Net als in PC WorX moet een project gecompileerd worden, of met andere woorden, alle
gemaakte instellingen moeten worden vertaald naar HTML code. Dit kan uitgevoerd worden
onder ‘Project’→ ‘Build All’ ( ). Een simulatie van de webpagina’s kan opgeroepen worden
via de simulatieknop ( ). De interactie met de plc blijft in simulatiemode achterwege.
7 WebVisit 70
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
7.2.4 Downloaden van het project
Nu de HTML pagina aangemaakt is kan het project gedownload worden. Om het project naar
de ILC 131 ETH te downloaden wordt gebruik gemaakt van de ftp-server van de ILC, zie figuur
7.19:
• Roep het downloadvenster op:
Figuur 7.19: Downloaden via ftp-server van de ILC
• Geeft het IP-adres van de ILC (192.168.0.11) in en druk op “Connect”, zie figuur 7.20.
Figuur 7.20: Connectie maken met de plc
• De verbinding wordt tot stand gebracht en door een druk op de knop “Download pro-
ject” wordt het project gedownload.
Figuur 7.21: Downloaden naar de plc
• Het oproepen van de webpagina kan nu gebeuren door in een webbrowser (bijvoorbeeld
Internet Explorer) het IP-adres van de ILC in te stellen.
7 WebVisit 71
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
7.3 Uitbreiding
7.3.1 Figuur invoegen
• Selecteer de optie ‘image’ in de ‘Painters Gallery’.
• Kies in het werkgebied de plaats uit waar de afbeelding moet komen.
• Figuur 7.22 toont dat onder “Repaints” een figuur die opgeslagen staat op de computer
ingevoegd kan worden. Als “Adjust Image” aangevinkt wordt, kan de figuur verschaald
worden naar eigen wens. Dit kan gebeuren door de hoogte en de breedte van de figuur
in te stellen via het properties menu of door het formaat van de figuur aan te passen
door de hoekpunten te verslepen.
Figuur 7.22
7.3.2 Background en Foreground TEQ
• Maak 2 nieuwe webpagina’s aan (de uitleg hierover is terug te vinden op pagina 63) en
geef deze de naam “Knoppenbalk.teq” en “Settings.teq”.
• Open de pagina “Knoppenbalk.teq” en voeg onderaan de pagina 3 buttons toe, nl.
“Transportband”, “Motor” en “Settings”.
Figuur 7.23
• Deze knoppen dienen een jump actie uit te voeren naar hun bijhorende pagina. Stel
deze jump acties bij alle 3 de knoppen in.
• Het is de bedoeling dat deze pagina de achtergrond (background) wordt van iedere
pagina. Stel via ‘Project’→ ‘Project Configurations’ in het ‘View Configurations’-tabblad
“Knoppenbalk.teq” in als ‘Background TEQ’ zoals in figuur 7.24 weergegeven wordt.
7 WebVisit 72
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 7.24: Background instellen voor een project
Opmerking: De ingestelde achtergrondpagina wordt enkel toegevoegd bij nieuwe
webpagina’s (pagina’s aangemaakt nadat de achtergrond ingesteld is zoals hierboven).
Voor reeds bestaande pagina’s moet de achtergrond apart toegevoegd worden. Zorg
dat de pagina actief is en stel dan via ‘Project’ → ‘Teq view configurations’, de ‘Back-
ground view’ in, zie figuur 7.25.
Figuur 7.25: Background instellen per view
7 WebVisit 73
8 Analoge signaalverwerking
8.1 Functiebouwsteen voor analoge signaalverwerking
Om het toekennen van procesdata en het gebruik van analoge in- en uitgangen toe te lichten
wordt een tweede functionaliteit voorzien in het bestaande project. Hiervoor wordt opnieuw
een functieblok aangemaakt met de naam ’Analog_In_Out’. Bedoeling is om de analoge
ingang (potentiometer) door te koppelen naar de analoge uitgang (LED bar graph).
• Dit programma kan heel eenvoudig zijn:
Figuur 8.1
• Oproep van deze functiebouwsteen in het programma ’Main’:
Figuur 8.2
• Er moeten nu twee variabelen aangemaakt worden om te linken aan de werkelijke fy-
sische IO. Deze worden op de volgende manier gedeclareerd, en worden onder ’Project
Variables’ geplaatst.
Figuur 8.3: Aanmaken in- en outputvariabele
8 Analoge signaalverwerking 74
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
• Uiteindelijk wordt volgend programma bekomen volgens figuur 8.4:
Figuur 8.4: Uindelijk programma met in- en uitgangsvariabelen
• Via “process data workspace” kunnen deze variabelen aan de fysische IO gekoppeld
worden. In deze werkomgeving is er de onderverdeling met links de softwarevariabelen
en rechts de hardwarevariabelen.
• Onder de groep “Analoog” staan de zopas aangemaakte variabelen.
• Rechts staan alle gebruikte in- en uitgangsmodules. De variabelen worden gekoppeld
door ze naar de desbetreffende module te slepen. Voor “IN_wPotentiometer1” kies “AI
1 Voltage”. “OUT_wLedBar1” wordt gelinkt aan “1.1.1 Output Voltage”.
Dit programma kan nu getest worden.
Na het testen blijkt dat er een probleem is. Slechts de halve range van de ledbar wordt
gebruikt. Het probleem ontstaat omdat het proceswoord gekoppeld aan de ingangs- en uit-
gangsmodule op een verschillende manier gebruikt wordt. Om dit op te lossen worden de
proceswoorden van naderbij bekeken.
8.1.1 De analoge ingangsmodules
• De analoge ingangsmodules gebruiken een tekenbit:
Figuur 8.5: Proceswoord ingangsmodule
• De potentiometer biedt een stroomsignaal aan tussen 0 en 20mA. Uit tabel 8.1 valt af te
leiden dat dit door de analoge inputmodule wordt vertaald naar een inputrange tussen
0 en 30000.
8 Analoge signaalverwerking 75
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 8.1: Omzetfactor analoge signaalverwerking
8.1.2 De analoge uitgangsmodule
• De analoge uitgangsbit gebruikt geen tekenbit. Hierdoor kan een extra bit gebruikt
worden om nuttige data te verzenden.
Figuur 8.6: Proceswoord uitgansmodule
• De analoge outputrange wordt voor deze module vertaald naar een waarde tussen 0
en 65535. (=216)
De waarde moet van de range van 0 tot 30000 aangepast worden naar een range tussen 0
tot 65535. Daarom moet de waarde van de analoge ingangskaart vermenigvuldigd worden
met een schalingsfactor van 65635 gedeeld door 30000, zijnde 2,1845.
Daarom wordt de functiebouwsteen als volgt aangepast:
Figuur 8.7
8 Analoge signaalverwerking 76
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.2 Functie
De zopas uitgevoerde opdracht is louter datamanipulatie. Hiervoor kan i.p.v. een functie-
bouwsteen ook gewoon een functie gebruikt worden.
Voeg een functie toe, kies een naam en een programmeertaal. Let op het feit dat de func-
tienaam een variabele is en er dus ook een datatype moet toegekend worden. Dit datatype
komt overeen met de enige uitgang van de functie.
Figuur 8.8: Functie toevoegen
De functie in ST wordt dan de volgende code:
AnaloogInUit := real_to_word(word_to_real(i_wAnaloogIn) ∗ 2, 1845));
Het programma kan nu gecompileerd en gedownload worden.
8 Analoge signaalverwerking 77
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.3 Watch Window
Figuur 8.9
Een andere handige mogelijkheid om uw programma op te vol-
gen is het Watch Window.
Eens online kan iedere variabele aan het Watch Window toe-
gevoegd worden.
Klik in de programmeeromgeving op een variabele, rechter-
muistoets en dan kiezen voor het item “Add to Watch Window”.
Figuur 8.10
Een andere manier is via het werkblad vari-
abelen van een bepaalde functieblok, func-
tie of programma: klikken op een variabele,
rechtermuistoets en kiezen voor het item
“Add to Watch Window”.
Activeer het “watch window” via volgend icoon .
Figuur 8.11: Watch window
8 Analoge signaalverwerking 78
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.4 Opdracht temperatuursmeting
De potentiometer wordt in de volgende opdracht beschouwd als een temperatuurssensor
welke een temperatuursrange van -50.0 tot +100.0◦C omzet naar een analoge spanning van
0 tot 10V.
Gevraagd wordt om een functiebouwsteen te schrijven welke volgende outputparameters
levert:
• De temperatuur in graden Celsius.
• Een warninguitgang indien de temperatuur kleiner is dan -10.0◦C en groter is dan -20.0◦
C of indien de temperatuur groter wordt dan een warning temperatuursgrens welke
als inputparameter wordt meegegeven en kleiner is dan een alarm temperatuurgrens
welke als inputparameter wordt meegegeven.
• Een alarmuitgang indien de temperatuur kleiner is dan -20.0◦C of indien de tempera-
tuur groter wordt dan een alarm temperatuursgrens die als inputparameter meegeven
wordt.
Verder moet er nagegaan worden indien de inputparameters correct ingegeven worden. Hier-
bij moet de warninggrens kleiner zijn dan de alarmgrens. Indien dit niet zo is wordt de
warninggrens op 40.0◦C geplaatst en zal de alarmgrens op 60.0◦C geplaatst worden.
Deze opdracht wordt uitgewerkt in FBD en/of ST.
Het resultaat wordt een functiebouwsteen waarbij de oproep ervan volgend resultaat heeft.
Figuur 8.12: Functiebouwsteen temperatuursopvolging
Bestuur het resultaat en ga na waarom er hier gebruik gemaakt wordt van VAR_INOUT para-
meters.
8 Analoge signaalverwerking 79
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.4.1 Resultaat in FBD
Figuur 8.13: Interne programmacode in FBD
8 Analoge signaalverwerking 80
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
8.4.2 Resultaat in ST
Figuur 8.14: Interne programmacode in ST
8.5 Uitbreiding WebVisit
Bij deze uitbreiding wordt gebruik gemaakt van de vorige oefening in PC WorX.
• Maak een nieuw project aan in WebVisit met de naam “Temperatuursmeting”.
• Zorg ervoor dat in PC WorX de PDD aangevinkt is bij de globale variabele “OUT_rTemperatuur”.
• Een analoge waarde wordt zeer vaak voorgesteld in de vorm van een “Bargraph” (staaf-
diagram). Voeg dus een staafdiagram toe zoals op figuur 8.15 is aangegeven.
Figuur 8.15: Bargraph in WebVisit
• Selecteer de bargraph om de parameters in te stellen. Onder “Repaints” kan de bronva-
riabele ingesteld worden. Het diagram varieert mee met de PLC-variabele “OUT_rTemperatuur”,
dus wordt als type terug voor PPO gekozen en met de ’select’ button wordt de gewenste
variabele ingesteld:
8 Analoge signaalverwerking 81
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 8.16: Repaints van de bargraph
• Onder “Bargraph Advanced” kunnen de grenzen waartussen de variabele zal variëren,
ingesteld worden. Voor deze uitgang zal dit tussen -50 en 150 zijn.
• De richting en de schaal van de bargraph kunnen eveneens gewijzigd worden via “Bar-
graph Advanced”.
Figuur 8.17: Bargraph Advanced
• Klik op “Init PPO vars”, daar kunnen de verschillende parameters van een bepaalde PPO
gewijzigd worden. Eerst en vooral moet het format gekozen worden. In dit voorbeeld
wordt er bij @GV.OUT_rTemperatuur gekozen voor ’Float’.
8 Analoge signaalverwerking 82
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 8.18: PPO Initialisatie
• Stel daarna het minumum, maximum en de eenheid (unit) in. Deze eenheid wordt
samen met de waarde weergegeven bij een Static Text. Druk op OK.
• Voeg nu een Static Text toe en stel onder “Repaints” de PPO @GV.OUT_rTemperatuur
in.
• Compileer en download het programma.
8 Analoge signaalverwerking 83
9 User Defined Datatypes
9.1 Algemeen
Figuur 9.1: Declaratie User Defined Datatypes
De declaratie van user defined datatypes wordt uitgevoerd op de worksheets van de Data
Types folder. De worksheet ‘sys_flag_types’ is toegevoegd bij elk project in PC WORX en is
nodig voor de systeem datatypes van de controle systemen. De worksheet kan hernoemd
worden, maar de reeds gedefinieerde datatype declaraties mogen niet gewijzigd worden.
Normaal gezien kunnen alle declaraties voor één project gebeuren in één worksheet. Al-
hoewel, om alles gestructureerd te houden, wordt het aangeraden om functiegerelateerde,
individuele worksheets te gebruiken.
9.1.1 Array
Figuur 9.2: Datatype array
Datatype declaraties van het type array zijn een verzameling van elementen in één basis
datatype. Het voorbeeld geeft een verzameling van vier variabelen van het datatype Word
9 User Defined Datatypes 84
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
in één array variabele, gebaseerd op een nieuw datatype. De naam van het nieuwe datatype
kan vrij gekozen worden. Alhoewel, juist als bij alle andere elementen/variabelen in het
programma, is het aangeraden om een conventie te gebruiken voor de namen van user
defined datatypes. Een voorbeeld is hierboven weergegeven.
Figuur 9.3: Declaratie datatype array
Voor het declareren van arrays moet er een bepaald formaat gebruikt worden. Dit kan opge-
roepen worden via de help functie van de edit wizard. De gewenste naam van het datatype,
de onder- en bovengrens van de array (als een positieve integer waarde tussen vierkante
haken) en het basis datatype moeten ingevuld worden.
Het declareren van multi-dimensionele arrays is mogelijk door het volgen van de procedure
beschreven op de vorige pagina’s. Het voorbeeld geeft aan dat de declaratie en dus het la-
tere gebruik van de variabelen van deze datatypes kunnen leiden tot onduidelijkheden. Voor
datatypes die gebaseerd zijn op elkaar, moet de declaratie volgorde binnen de worksheet
worden nageleefd.
Figuur 9.4: Declaratie datatype array
Na het sluiten en compileren van het datatype worksheet ( ) zijn de zonet gedeclareerde
datatypes beschikbaar in de datatype selectielijst.
9 User Defined Datatypes 85
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Twee variabelen van hetzelfde datatype, dit geldt ook voor arrays, kunnen toegekend worden
aan elkaar. Individuele elementen van de array kunnen benaderd worden door het declareren
van de array variabele in de POU en gebruik te maken van een integer constante of een
integer variabele welke gebruikt wordt als index voor de array.
Indien variabelen gebruikt worden voor het benaderen van individuele elementen, dan moet
moet er in het programma verzekerd worden dat de arraygrenzen niet overschreden worden.
9.1.2 Structures
Figuur 9.5: declaratie datatype structure
Datatype declaraties van de het type structures zijn een verzameling elementen van een of
meerdere basis datatypes. Het voorbeeld geeft de verzameling weer van vier variablen van
verschillende datatypes in één structure variabele gebaseerd op een nieuw datatype. De
naam van het nieuwe datatype kan vrij gekozen worden. Alhoewel, juist als bij alle andere
elementen/variabelen in het programma, is het aangeraden om een conventie te gebruiken
voor de namen van user defined datatypes. Een voorbeeld is weergegeven in figuur 9.5.
9 User Defined Datatypes 86
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 9.6: Declaratie datatype structure
Voor het declareren van structures moet er een bepaald formaat gebruikt worden. Dit kan
opgeroepen worden via de help functie van de edit wizard. De gewenste naam van het
datatype moet ingevuld worden en de elementen hierboven afgebeeld moeten opgenomen
worden. Het declareren van multi-dimensionele structures wordt ondersteund. Voor dataty-
pes die gebaseerd zijn op elkaar, moet de declaratie volgorde binnen de worksheet worden
nageleefd.
Figuur 9.7: toekenning declaratie structure
9 User Defined Datatypes 87
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Na het sluiten en compilen van het datatype worksheet ( ) zijn de zonet gedeclareerde
datatypes beschikbaar in de datatype selectielijst. Twee variabelen van hetzelfde datatype,
dit geldt ook voor structures, kunnen toegekend worden aan elkaar. Individuele elementen
van de structure kunnen benaderd worden door het declareren van de structure variabele in
de POU en gebruik te maken van de individuele parameternamen.
9.1.3 Combinatie van User Defined Datatypes
Figuur 9.8: declaratie datatype structure
In veel projecten worden de datatype declaraties van arrays en structures gecombineerd.
Het voorbeeld geeft de declaratie van een datatype weer dat bestaat uit variabelen dat data
van een pomp kan bevatten. De declaratie van een array is gebaseerd op deze declaratie.
De array combineert 20 elementen, index 1 tot 20, van de pomp structure.
Figuur 9.9: combinatie van User Defined Datatypes
De toegang tot een element of een variabele gebaseerd op de pomp array volgt het motto
‘van groot tot klein’. Dit betekent dat eerst van al het nummer van de pomp binnen de array
moet gespecifieerd worden (INT variabele of INT constante tussen vierkante haken) en dan
de parameter van de specifieke pomp (via de naam van de parameter).
9 User Defined Datatypes 88
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
9.2 Opdracht
Er wordt een structure aangemaakt waarin verschillende datum en tijd variabelen beschik-
baar zijn. Onder de map Data Types wordt een nieuw worksheet ‘User_Defined_Datatypes’
toegevoegd. Hierin wordt onderstaande code geïmplementeerd.
TYPE
string10: STRING(10);
string8: STRING(8);
string19: STRING(19);
Tijdsgegevens:
STRUCT
Datum: string10;
Tijd: string8;
Uren: INT;
Minuten: INT;
Seconden: INT;
Datum_Tijd: string19;
END_STRUCT;
END_TYPE
De structure Tijdsgegevens wordt nu in een functieblok geïmplementeerd.
Figuur 9.10: Functieblok Timestamp
Programmacode in ST:
q_udtTime.Uren := RTC_HOURS;
q_udtTime.Minuten := RTC_MINUTES;
q_udtTime.Seconden := RTC_SECONDS;
q_udtTime.Tijd := concat(INT_TO_STRING(RTC_HOURS,’%02d’),’:’);
q_udtTime.Tijd := concat(q_udtTime.Tijd,INT_TO_STRING(RTC_MINUTES,’%02d’));
q_udtTime.Tijd := concat(q_udtTime.Tijd,’:’);
q_udtTime.Tijd := concat(q_udtTime.Tijd,INT_TO_STRING(RTC_SECONDS,’%02d’));
q_udtTime.Datum := concat(INT_TO_STRING(RTC_DAY,’%02d’),’/’);
q_udtTime.Datum := concat(q_udtTime.Datum, INT_TO_STRING(RTC_MONTH ,’%02d’));
q_udtTime.Datum := concat(q_udtTime.Datum,’/’);
q_udtTime.Datum := concat(q_udtTime.Datum,INT_TO_STRING(RTC_YEAR,’%04d’));
9 User Defined Datatypes 89
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
q_udtTime.Datum_Tijd := concat(q_udtTime.Datum, ’ ’);
q_udtTime.Datum_Tijd := concat(q_udtTime.Datum_Tijd, q_udtTime.Tijd);
Via de watch window kan de inhoud van de verschillende variabelen bekeken worden.
Figuur 9.11: Watch window
9 User Defined Datatypes 90
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
9.3 Aanvullende FB
9.3.1 STRING_TO_BUF
Figuur 9.12: functieblok STRING_TO_BUF_1
Beschrijving van de verschillende parameters:
Naam Data type IO Beschrijving
REQ BOOL I Een stijgende flank start het kopiëren van de
stringdata in de buffer
BUF_FORMAT BOOL I False wijst op het gebruik van Intel formaat
BUF_OFFS DINT I Start byte-adres in de buffer
BUF_CNT DINT I Aantal bytes welke dienen gekopieerd te worden
SCR STRING IO STRING uit de welke karakters moeten gekopieerd
worden
BUFFER ANY IO doelbuffer
DONE BOOL O TRUE als alle data correct gekopieerd is in de buf-
fer
ERROR BOOL O Een stijgende flank indien een fout optreedt. De
foutcode kan via STATUS uitgelezen worden ge-
durende de cyclus waarin de stijgende flank op-
treedt.
STATUS INT O Error code
9 User Defined Datatypes 91
10 Modbus
Modbus is een veelvoudig toegepast industrieel communicatieprotocol dat ontworpen is door
‘Group Modicon’ (nu Group Schneider met Telemecanique, Modicon. . . ). In dit hoofdstuk staat
beschreven wat het protocol inhoudt. Omdat de nieuwe 1x1-reeks Modbus TCP ondersteunt,
worden de nieuwigheden van die reeks bekeken.
10.1 De 1x1-reeks
De ILC 1x1-reeks behoort tot de laatste controllers van de ILC familie. Voor de eerste keer is
er een Modbus TCP driver standaard geïntegreerd in de controller. De implementatie van het
protocol laat toe om heel snel en eenvoudig controle- en loggingsoftware te configureren.
Op alle controllers is er ook de mogelijkheid om een SD-kaartje in te pluggen. Hierdoor kan
de gebruiker het flashgeheugen vergroten tot 2GB. Dit is ideaal voor loggingapplicaties en
maakt het ook gemakkelijker om geavanceerde functiebibliotheken rechtstreeks in de PLC te
integreren.
Iedere controller heeft ook een webpagina en kan hiermee eenvoudig worden geconfigu-
reerd. Via DCP (Discovery Configuration Protocol) kan vanuit de webpagina eenvoudig een
IP-adrestoewijzing gebeuren bij Profinet Devices. Dit lukt echter alleen bij controllers met
HW/FW groter dan 01/4.20. Naargelang het type van controller kunnen er maar een maxi-
mum aantal Modbus-connecties worden gemaakt. Deze worden weergegeven in tabel 10.1.
Tabel 10.1: Overzicht van de 1x1-reeks
10 Modbus 92
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
10.2 Modbus: de basics
Het protocol beschrijft enkel de applicatielaag uit het OSI model. De invulling van de onder-
ste lagen is open waardoor er verschillende implementaties van Modbus bestaan, zie figuur
10.1. De belangrijkste zijn Modbus RTU (gebaseerd op het serieel RS485 protocol) dat uitge-
werkt is als een master/slave protocol en Modbus TCP dat uitgewerkt is als een client/server.
Er bestaat ook nog Modbus ASCII. Dit is ook seriële communicatie, maar daarbij worden ie-
dere 8 bits voorgesteld als twee ASCII-karakters. Modbus ASCII wordt niet verder besproken
in de cursus.
Figuur 10.1: Modbus binnen het OSI-model
Het Modbus TCP protocol is zeer eenvoudig en is gebaseerd op het gebruik van de PDU (Pro-
tocol Data Unit). Afhankelijk van de gebruikte fysische lagen wordt er om te communiceren
gebruik gemaakt van een client en een server. De client bouwt een PDU bericht op en aan
de hand van de functiecode weet de server welke actie er ondernomen moet worden met
de data. Het initiatief ligt dus bij de client. Bij Modbus RTU wordt eerder het master/slave
protocol opgezet waarbij slechts één apparaat (de master) transacties, queries kan opstar-
ten. De overige apparaten (de slaves) reageren door de gevraagde actie uit te voeren en de
gevraagde gegevens naar de master te sturen. De communicatie met request- en response-
frame is te zien in figuur 10.2.
Figuur 10.2: Request- en responseframe binnen Modbus
10 Modbus 93
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
10.2.1 Functiecodes
Modbus maakt gebruik van functiecodes, waardoor heel eenvoudig data uit de registers kan
gelezen worden of kan gemanipuleerd worden. In deze cursus worden enkel de publieke
functiecodes nader toegelicht omdat dit de belangrijkste zijn. Tabel 10.2 is een overzicht van
alle mogelijke publieke functiecodes.
Tabel 10.2: Overzicht van de 1x1-reeks
10.2.2 Registers
Intern in een toestel zijn de registers in vier verschillende tabellen genummerd van 1 tot en
met 10000. De indeling wordt weergegeven in figuur 10.3. In de modbusberichten worden
echter adressen gebruikt met een waarde tussen 0 en 9999. Moet bijvoorbeeld de waarde
van uitgang (coil) 18 gelezen worden, dan moet de waarde 17 worden opgegeven als start-
adres in het modbusbericht.
Figuur 10.3: Indeling van het register
10 Modbus 94
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Nog verwarrender is, dat voor bepaalde tabellen een offset moet worden afgetrokken van het
registeradres in het toestel om het goede adres te verkrijgen dat in het modbusbericht moet
worden geplaatst. Dit leidt veelvuldig tot vergissingen. Tabel 10.4 laat de adresbereiken zien
van coils, ingangen en holding registers en de wijze waarop het adres in het modbusbericht
moet worden berekend in functie van het actuele adres in de module.
Figuur 10.4: Overzicht van de adresbereiken
Voor de holding registers (registeradressen in een Modbustoestel 40001 en hoger) worden
de startadressen berekend door 40001 af te trekken van de registeradressen in het toestel.
Zo zal modbusregister 41137 startadres 1136 hebben.
10.2.3 Berichtstructuur
In de server of slave wordt er data ter beschikking gesteld in registers. Deze registers kunnen
worden benaderd met functiecodes. Als er communicatie plaatsvindt, dan bevat het dataveld
afkomstig van client/master extra gegevens die nuttig zijn bij de meegestuurde functiecodes.
Figuur 10.5 toont de onderdelen van een bericht.
Figuur 10.5: Opbouw van een bericht
De velden voorzien in de MBAP (Modbus Application Header) hebben volgende betekenis:
– Transaction Identifier (2 bytes): een volgnummer voor meervoudige berichten langs
eenzelfde TCP verbinding;
– Protocol Identifier (2 bytes): de waarde 0 voor modbus;
– Length (2 bytes): het aantal bytes van de resterende velden (Unit ID + PDU);
– Unit Identifier (1 byte): dient om toestellen te identificeren welke via een gateway op
Modbus RTU gekoppeld zijn. Krijgt de waarde 00h of FFh indien er geen bridge naar
Modbus RTU gebruikt wordt.
10 Modbus 95
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
De PDU (Protocol Data Unit) bevat dan de eigenlijke data en de functiecode, zie figuur 10.6.
Het Dataveld start met het register Address gevolgd door het aantal bytes die moeten ge-
lezen/geschreven worden. Op het einde staan de opgevraagde gegevens of de te schrijven
data.
Figuur 10.6: Protocol Data Unit (PDU)
10 Modbus 96
11 Modbus TCP
In dit hoofdstuk staat beschreven hoe gewerkt kan worden met Modbus TCP. Dit zal verdui-
delijkt worden met behulp van een voorbeeldproject. Het doel van het project is het uitlezen
van meetwaarden (om deze eventueel te loggen). Deze meetwaarden worden door een EM-
pro aangeboden, dit is een meetinstrument van Phoenix Contact om allerhande elektrische
grootheden te meten (zie figuur 11.1). Modbus werkt met registers om gegevens op te slaan,
de EMpro heeft bijgevolg dus ook een register om zijn meetwaarden beschikbaar te maken
aan de gebruiker. De EMpro zal functioneren als Modbus server. Bepaalde waarden zijn
read-only, andere kunnen aangepast worden.
Figuur 11.1: EMpro van Phoenix Contact
11 Modbus TCP 97
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.1 Aansluitingen
De aansluiting van de EMpro is zeer éénvoudig, er moet enkel voor gezorgd worden dat zowel
het meetinstrument als de plc zich in hetzelfde lokale netwerk bevinden. Op de EMpro zelf
kan dan het IP-adres en het bijhorend subnetmask ingesteld worden. Deze moeten uiteraard
overeenkomen met de ranges van het netwerk. Ook het slave-adres voor Modbus RTU kan
ingesteld worden. De EMpro heeft zelf echter geen ethernetpoort. Om dit probleem op te
lossen kan een communicatiemodule op het toestel geplaatst worden. De montage van deze
module is in figuur 11.2 te zien.
Figuur 11.2: Aansluiten van module
11 Modbus TCP 98
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.2 Toevoegen nodige bibliotheek
Het principe van Modbus TCP-communicatie is gebaseerd op het client-server model. Een
client wordt gebruikt omdat het de bedoeling is dat de plc de verbinding opstart, de EMpro
zal nooit zelf een aanvraag doen om een verbinding aan te gaan.
Een 1ste manier om de meetwaarden uit te lezen, is het gebruik maken van functiebouwste-
nen om de holdingregisters uit te lezen. Een tweede manier gebruikmakend van de modbus-
registers in de PLC, wordt verder in de hoofdstuk behandeld. De functiebouwstenen zijn te
vinden in een vrij beschikbare bibliotheek. De benodigde bibliotheek kan gevonden worden
in het downloadcenter van Phoenix Contact. Figuur 11.3 geeft de correcte bibliotheek weer.
De bibliotheek dient gedownload te worden, deze is wel enkel compatibel met een 5.x-versie
van PC Worx. Indien er een andere versie van PC Worx ter beschikking is, kan deze gecon-
verteerd worden. Dit door het project te openen, te compileren en het gewijzigde project op
te slaan.
Figuur 11.3: Downloaden van de bibliotheek
Vervolgens moet deze bibliotheek ook toegevoegd worden aan het desbetreffende project.
Dit gebeurt door te navigeren naar: Project→ add library→ user library. Hierna kan de bibli-
otheek geselecteerd worden en bijgevolg ook toegevoegd worden aan het project, zie figuur
11.4.
Figuur 11.4: Toevoegen van de bibliotheek
11 Modbus TCP 99
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.3 Modbus TCP met functiebouwstenen
Er zijn veel verschillende functiebouwstenen in de bibliotheek te vinden. Het is nu zaak om
de juiste functiebouwstenen te selecteren. Dit is natuurlijk afhankelijk van de toepassing.
Door de helpfunctie te raadplegen (klikken met rechtermuisknop op een FB in de bibliotheek,
zie figuur 11.5) kan een uitgebreide uitleg over iedere functiebouwsteen gevonden worden.
Zo kan afhankelijk van de toepassing een andere functiebouwsteen gekozen worden.
Figuur 11.5: Helpfunctie oproepen
In deze help is te zien dat er 2 grote groepen van functiebouwstenen zijn, de ene groep
is de master/slave of client/server, de andere zijn FB’s die dienen om een commando aan
te maken. Om een werkend geheel te hebben is dus een combinatie van zo’n functie-
bouwstenen nodig. Voor dit project wordt gekozen voor een MB_TCP_Client_V1_22 en een
MT_ReadHoldingReg_V1_20.
11.3.1 Werking functiebouwstenen
De geselecteerde FB’s hebben heel wat in- en outputvariabelen. In figuur 11.6 zijn de funcie-
bouwstenen nog eens te zien. Hier volgt een overzicht van alle in- en outputparameters die
nodig zijn om de FB’s te begrijpen:
Figuur 11.6: Modbus TCP functiebouwstenen
11 Modbus TCP 100
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Inputvariabelen van de TCP Client FB
Deze FB zorgt voor de communicatie tussen de client (plc) en server (EMpro). Om de ver-
binding tot stand te brengen is het dus noodzakelijk om het IP-adres en de poort waar de
server op te bereiken is, te weten. De combinatie van deze twee wordt een socket genoemd.
Standaard wordt de poort voor Modbus TCP-communicatie op 502 ingesteld.
Verder is er de mogelijkheid om te kiezen tussen communiceren via UDP of TCP. Het verschil
tussen deze twee protocollen is dat UDP sneller is door de weinige overhead, maar dat ver-
schil in overhead resulteert wel in een lagere betrouwbaarheid. Een typisch voorbeeld van
het gebruik van UDP is een livestream. Ook zal bij een fout, de informatie verloren gaan.
Een overzicht van de inputvariabelen is te zien in tabel 11.1.
Tabel 11.1: Overzicht van de inputvariabelen van de TCP Client FB
Outputvariabelen van de TCP Client FB
De uitgangen van de functiebouwsteen geven de status van de bouwsteen weer. Zo geven
ze weer als de bouwsteen al dan niet actief is. Bij een fout kan ook de soort fout bekeken
worden. Om de betekenis van de Diagnostic Code te kennen, moet de help geraadpleegd
worden.
Een overzicht van de outputvariabelen is te zien in figuur 11.2.
Tabel 11.2: Overzicht van de outputvariabelen van de TCP Client FB
11 Modbus TCP 101
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Inputvariabelen van de datapakket FB
Net als bij de client kan deze FB geactiveerd of gedeactiveerd worden. Ook een fout mel-
den/bevestigen hoort bij de opties van deze bouwsteen. Om het datapakket samen te stel-
len, heeft deze functiebouwsteen enkele gegevens nodig. De belangrijkste zijn de plaats
waar in het register gelezen moet worden, alsook hoeveel data dat er gelezen moet worden.
Als er via een gateway, een modbus RTU-toestel bereikt dient te worden, dan moet ook het
slave-adres of UID (Unit ID) van dit toestel meegegeven worden. (zie verder in deze cursus)
Standaard mag deze waarde op 1 staan. Om alle verbonden toestellen te bereiken moet 255
ingegeven worden. Dan wordt er niet gekeken naar het UID. Tot slot kan ook het tijdsinterval
waarmee een bericht gestuurd moet worden naar de server ingesteld worden met de para-
meter “UpdateTime".
Een overzicht van de inputvariabelen is te zien in figuur 11.3.
Tabel 11.3: Overzicht van de inputvariabelen van de datapakket FB
Outputvariabelen van de datapakket FB
Standaard wordt ook bij deze FB de status weergegeven: het al dan niet actief zijn wordt
gemeld indien nodig verschijnt een foutmelding met de daarbij horende Diagnostic Code.
De belangrijkste outputvariabele is natuurlijk “RegisterValue", dit is de gevraagde data die
vanuit de server gehaald wordt. Dit is een array van woorden en wordt in dezelfde volgorde
meegegeven vanaf het gekozen startadres als in het register van de server. NDR is een
boolean die weergeeft wanneer een nieuw datapakket ontvangen wordt.
Een overzicht van de outputvariabelen is te zien in figuur 11.4.
Tabel 11.4: Overzicht van de inputvariabelen van de datapakket FB
11 Modbus TCP 102
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Gemeenschappelijke in- en outputvariabelen
Tot slot is er nog een gemeenschappelijke in- en outputvariabele die doorgegeven wordt
tussen de 2 FB’s. Het bevat alle procesdata die nodig is voor de interactie tussen beide
functiebouwstenen. Hier moet enkel een lokale variabele aan gekoppeld worden.
De gemeenschappelijke in- en outputvariabele is te zien in figuur 11.5.
Tabel 11.5: De gemeenschappelijke in- en outputvariabele
11.3.2 Gebruik in Function Block Diagram
Om gebruik te maken van de functiebouwstenen in Function Block Diagram moeten deze
enkel in de gewenste POU gesleept worden, hierna dienen de in- en outputvariabelen gelinkt
te worden aan de functieblokken (zie figuur 11.7). Let wel, in dit specifieke geval moet de
variabele “udtComStruct” een lokale variabele zijn. Dit om de dataoverdracht tussen de
bouwsteen voor het aanmaken van commando’s en de bouwsteen van de TCP_Client op een
correcte manier te laten verlopen. Het linken van een uitgang van de ene functieblok naar
een ingang van de andere kan eenvoudigweg met behulp van een verbindingslijn, maar kan
ook gebeuren door een tussenvariabele. Hier werd gekozen voor de tweede optie, zo kan de
analogie met Structured Text aangetoond worden.
Figuur 11.7: Gebruik in Function Block Diagram
11.3.3 Gebruik in Structured Text
Het gebruik van de functiebouwstenen in Structured Text is in principe hetzelfde als in Func-
tion Block Diagram. Alles wordt gewoon in tekstvorm weergegeven. Door de layout van de
opgeroepen blokken te veranderen, kan praktisch dezelfde weergave als bij FBD bekomen
worden, zie figuur 11.8. Met enkele toetsen op de enter-knop wordt een veel overzichtelijker
geheel gevormd. Het is zo ook duidelijk te zien dat de in- en uitgangen los staan van elkaar.
11 Modbus TCP 103
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Ook hier is de koppeling tussen in- en uitgangen van de verschillende functiebouwstenen
met een lokale variabele voorzien. Logischerwijs zijn de andere in- en uitgangen dan ook
gekoppeld aan in- en outputvariabelen.
Figuur 11.8: Gebruik in Structured Text
11.3.4 Uitgewerkt voorbeeld: ILC 171 en EMpro met FB’s
Als eerste stap wordt er een client gedefinieerd. Belangrijk hierbij is om een correcte socket
te maken. Via de datasheet van de EMpro kan het IP-adres en het poortnummer worden
ingesteld. In de functieblok MB_TCP_Client moet hetzelfde IP-adres komen. Als poortnummer
wordt standaard voor 502 gekozen.
Wanneer alle uitgangen gekoppeld zijn, moet het resultaat uit figuur 11.9 verkregen worden.
Figuur 11.9: Gebruik in Structured Text
Vervolgens moet de functieblok geschreven worden die de registerwaarden zal uitlezen. Om-
dat meerdere meetwaarden uitgelezen moeten worden, wordt er gekozen voor MB_ReadHoldingReg.
In de datatsheet van het meettoestel staan de registerwaarden van de te meten grootheden.
Figuur 11.6 toont een deel van de registerwaarden van de EMpro.
Ook het aantal registers dat moet gelezen worden, wordt als WORD ingegeven. Ook belang-
rijk bij deze FB is dat die maar mag geactiveerd worden nadat de TCP_Client actief is. Indien
dit niet gebeurt, zal er een fout ontstaan.
11 Modbus TCP 104
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tabel 11.6: Registerwaarden uit de EMpro datasheet
Iedere Modbusserver heeft ook een Unit Identifier. Dit is een getal tussen 1 - 255 en is in te
stellen op het apparaat zelf. Samen met deze UID, IPadres en poortnummer wordt een unieke
combinatie gemaakt. Indien de UID niet bekend is, kan ook 255 gekozen worden. Dan wordt
er geen rekening gehouden met deze parameter en zullen alle toestellen met het ingevoerde
IPadres en poortnummer kunnen bereikt worden.
Indien alle variabelen correct zijn aangesloten, kan het resultaat uit figuur 11.10 verkregen
worden.
Figuur 11.10: Holding register inlezen
De communicatie is opgestart, de meetwaarden worden uitgelezen. Als laatste stap moeten
de meetwaarden nog worden geconverteerd. Wanneer meerdere registerwaarden worden
uitgelezen, wordt de data geplaatst in een array. Hier is dit arrReadHolding_RegValue.
11 Modbus TCP 105
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Aparte meetwaarden kunnen worden verkregen door een index in deze array te converteren
naar integer of real, zie figuur 11.11.
Figuur 11.11: Word to integer converteren
Via de debug-mode kunnen de resultaten en de opgevraagde meetwaarden gekeken worden.
Een voorbeeld is afgebeeld in figuur 11.12.
Figuur 11.12: Word to integer converteren
11 Modbus TCP 106
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.4 Modbus TCP met modbusregister
Wanneer communicatie wordt opgezet tussen een Modbus Server en een ILC uit de 1x1 reeks,
dan kan dit nu heel eenvoudig. Er hoeven geen functiebouwstenen geïmporteerd of gecon-
figureerd te worden. Een Modbus Client is reeds geïmplementeerd in de ILC, waardoor het
gebruik van Modbus heel eenvoudig wordt.
11.4.1 Modbus-settings
Voor deze instellingen moet naar de Bus Configuration Workspace genavigeerd worden. On-
der het venster Device Catalog kan een Generic Modbus Device worden toegevoegd. Phoenix
Contact→ Generic→ Device. Dit moet dan gesleept worden onder MODBUS_CLT van de ILC
die over Modbus zal communiceren.
Nu is er een apparaat toegevoegd dat als Modbus server zal functioneren. Enkele parame-
ters moeten nog worden ingevuld opdat de communicatie goed zal verlopen. Dit kan door
het Modbus device te selecteren en naar het tablad Modbus Settings te navigeren. Heel be-
langrijk is het IP Adres en het Port nummer waarmee de Socket wordt gemaakt, zie figuur
11.13.
Figuur 11.13: Modbus-settings instellen
11 Modbus TCP 107
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.4.2 Modbusregister editor
Daarnaast moeten ook nog de lees- of schrijfacties worden ingevoerd. Dit kan met het tab-
blad ModbusRegister Editor. Hier worden de functies gekozen. In dit voorbeeld wordt een
meetwaarde van de EMpro opgevraagd. Daarom wordt er gekozen voor functie 3: Read Mul-
tiple Registers. Een duidelijke naam, een datatype, het aantal registers en het startadres
worden ingegeven. In de datasheets van de EMpro staat te lezen dat bijvoorbeeld de uren-
teller op registerplaats 50501 staat en bestaat uit 2 woorden. De volledige functie wordt
weergegeven in figuur 11.14.
Figuur 11.14: Opvragen urenteller
Daarna wordt er een globale variabele gekoppeld aan deze functie. Een globale variabele
kan snel worden toegevoegd door naar de globale variabelen te gaan in IEC Programming
Workspace. Via de rechtermuisknop kan er een nieuwe globale variabele worden aange-
maakt, zie figuur 11.15.
Figuur 11.15: Aanmaken globale variabele
In Process Data Workspace kunnen uitgangen van de geschreven functies gekoppeld wor-
den met de globale variabelen (zie figuur 11.16). Deze uitgangen zijn de aan de hardware
opgevraagde registergegevens.
Nu rest enkel nog de omzetting van de ontvangen data. In de datasheets is te vinden dat alle
meetwaarden in woorden worden verzonden. Via de functieblok WORD_TO_INT kan dit heel
eenvoudig gebeuren, zie figuur 11.17.
11 Modbus TCP 108
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 11.16: Koppelen met globale variabelen
Figuur 11.17: Word to int converteren
11 Modbus TCP 109
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
11.5 Modbus kopstation
Modbus TCP wordt ook gebruikt om via registers de in- en uitgangskaarten aan te sturen. Dit
gebeurt met een kopstation dat via ethernet verbonden is met een plc (zie figuur 11.18). Het
station houdt de kaarten bij in een register. Op die manier moet de gebruiker de hardware
niet meer in het plc-programma voegen, maar kan er toch aan de hand van het registeradres
een bepaalde in- of uitgang aangesproken worden.
Figuur 11.18: Modbus kopstation
11.5.1 Configureren en lezen van de registers
Het kopstation waarmee gewerkt wordt, is een webbased-kopstation. Door het IP-adres van
dit station in te geven in een webbrowser, wordt de webpagina van het station bereikt. Deze
is weergegeven op figuur 11.19. Hier is niet enkel informatie over het station te vinden, maar
ook verschillende instellingen kunnen bekomen worden.
Figuur 11.19: Webpagina van het kopstation
11 Modbus TCP 110
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Om de kaarten die aan het station gekoppeld zijn te herkennen dient er naar “Inline Station”
genavigeerd te worden. In het submenu “Services” kan plug & play enabled worden. Hier-
door zal na restart en reboot het kopstation alle module herkennen en opslaan in zijn register.
Dit register wordt dan weergegeven in het submenu “Bus Configuration”, zie figuur 11.20.
Figuur 11.20: Webpagina van het kopstation
Zoals afgebeeld in figuur 11.20, heeft dit station 4 digital outputs, 8 digital inputs en 1 ana-
loge output, dat één woord vormt en de procesdata voorstelt. Het is wel belangrijk om te
weten dat de waarden van de ingangsmodule in een holdingregister opgeslagen worden. Dit
houdt in dat de waarden niet met alle functies uit te lezen zijn. Ook kunnen er geen bits
worden uitgelezen, maar moet er telkens een woord uitgelezen worden. Later kan het uitge-
lezen woord worden opgesplitst in enkele bits, waardoor iedere toestand per bit kan worden
bekeken.
Opmerking Wanneer de modules met bijhorende registers herkend zijn door het kopsta-
tion, dient de plug & play modus uitgeschakeld te worden. Dit om geen problemen te hebben
bij het aansturen van de uitgangen van de inline modulen. Ook hier is een save en reboot
noodzakelijk.
11.5.2 Binnenlezen inputs
Om aan de slag te gaan moet eerst het kopstation toegevoegd worden aan de busconfigura-
tie. Deze is te vinden in de Device Catalog. Bij de onderdelen van Phoenix Contact en verder
bij Generic is het gewenste station te vinden. Deze kan in de busconfiguratie geplaatst wor-
den door op het label te klikken met de rechtermuisknop en vervolgens op “Insert Device into
Bus Structure” te klikken, zie figuur 11.21. Dit is wel enkel mogelijk wanneer je met de ILC
1x1-reeks werkt. Een ILC 130 ondersteunt dit niet. Ook moet er verbinding gemaakt worden
11 Modbus TCP 111
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
met de ILC alvorens deze in de configuratie toegevoegd kan worden.
Figuur 11.21: Device toevoegen aan busstructuur
Binnen de omgeving van het device kunnen alle instellingen van het toestel gevonden, inge-
steld en aangepast worden. De belangrijkste zijn het IP-adres met bijhorend Subnetmask en
Trigger Rate, ook kan de Timeout-tijd ingesteld worden en de tijd om te herconnecteren. De
Trigger Rate is het tijdsinterval waarmee de functies uitgevoerd worden.
Figuur 11.22: In te stellen parameters
Het toevoegen van functies is essentieel om de inputs te kunnen uitlezen. Deze mogelijk-
heid is te vinden in het tabblad Modbus Register Editor, zie figuur 11.23. Het binnenlezen
van de inputs gebeurt aan de hand van functie FC03 Read Multiple Registers. Deze keuze
wordt gemaakt omdat de inputs in een holding register bijgehouden worden. Zoals bij de
11 Modbus TCP 112
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
busconfiguratie van het kopstation te zien is, zal het adres van de ingangsmodule 8000 zijn.
Figuur 11.23: In te stellen parameters
Binnen de Proces Data Workspace moeten de globale variabelen terug gedefinieerd worden
aan de hand van de proces data van het kopstation. Er zijn nog 2 andere variabelen bij de
proces data van het station.
– MBT_STATION_DIAG: Een inputvariabele, die de diagnose en status van het station
weergeeft,
– MBT_STATION_CONTROL: Een outputvariabele die onder andere de statische variabelen
kan resetten.
Om gebruik te maken van deze procesdata is het dus noodzakelijk om een globale variabele
van het overeenkomstig type aan te maken. Een overzicht van deze variabelen/structs kan
binnen de Programming Workspace, bij DataTypes verkregen worden. Een voorbeeld hiervan
wordt weergegeven in figuur 11.24.
Figuur 11.24: Overzicht variabelen binnen Programming Workspace
Momenteel wordt reeds een woord binnengelezen dat een samenstelling is van 16 bits. Hier-
van zijn bit 0 tot en met bit 7, de 8 inputs van de ingangsmodule. De bits kunnen gesplitst
worden door het woord te zien als een struct van 16 bits. Het is nu de zaak om deze nog op
te splitsen in booleans per input. Om 1 bit van deze struct te selecteren moet de naam van
het woord ingegeven worden, gevolgd door een punt, X en het nummer van de bit. Om de
11 Modbus TCP 113
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
minst significante bit te bekomen kan er bijvoorbeeld “i_wWoord.X0” ingegeven worden.
Deze waarde kan dan gelijkgesteld worden aan een variabele. Figuur 11.25 geeft weer hoe
deze gebruikt kunnen worden. Binnen de functiebouwsteen wordt input 0 gelijkgesteld aan
Lamp 0, zo worden via deze inputs, de outputs 1 op 1 aangestuurd.
Figuur 11.25: Voorbeeld voor verwerking van woord
11 Modbus TCP 114
12 Modbus RTU
Met behulp van dezelfde Modbusbibliotheek kan ook gewerkt worden met apparaten via Mod-
bus RTU. Modbus situeert zich op de applicatie laag. Daarom kan de fysische laag verschil-
lend zijn. ModbusTCP-berichten worden verzonden over ethernet. Voor Modbus RTU wordt er
gecommuniceerd over RS-485 .Dit wordt verduidelijkt aan de hand van hetzelfde voorbeeld
als gedaan werd om Modbus TCP te verduidelijk. Natuurlijk met dat verschil dat er met een
EMpro gewerkt wordt die via Modbus RTU communiceert. Dit toestel is weergegeven op fi-
guur 12.1. Ook hier is het de bedoeling om waarden uit te lezen, of commando’s te sturen.
Figuur 12.1: EMpro van Phoenix Contact
Om met de EMpro te kunnen communiceren zijn er twee manieren mogelijk. Er eerste mo-
gelijkheid is om een RS485-kaart te koppelen aan de ILC. Hiermee kan er dan rechstreeks
data-overdracht plaatsvinden. Een tweede manier is gebruik maken van een gateway. In de
gateway wordt er een vertaling gedaan naar RS 485. Beide manieren worden in dit hoofdstuk
besproken, startend met de communicatie kaart.
12 Modbus RTU 115
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
12.1 Modbus RTU over RS485
Om de EMpro aan te sluiten is er nood aan een RS485-kaart, bijvoorbeeld de IB IL RS 485/422-
PRO-PAC. Als de datasheet van deze kaart bekeken wordt, is te zien hoe de EMpro aangeslo-
ten moet worden. Figuur 12.2 en figuur 12.3 geven weer waar de aansluiting moet gebeuren.
Op 1.2 en 2.2 moet de EMpro dus aangesloten worden voor het dataverkeer.
Figuur 12.2: Opbouw van de IB IL RS 485/422-PRO-PAC
Figuur 12.3: Aansluiten van module met RS485 kaart
12.1.1 Benodigde functiebouwstenen
Voor dit project wordt gekozen voor een Modbus RTU485 Master en een Modbus RTU dynamic-
functiebouwsteen. Deze heeft namelijk de mogelijkheid om verschillende acties te onder-
nemen (zowel lezen als schrijven). Het is uiteraard ook mogelijk om meerdere functies te
gebruiken om commando’s te maken, met 1 master-functiebouwsteen. De werking hiervan
wordt verduidelijkt in figuur 12.4.
12 Modbus RTU 116
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 12.4: Functiebouwstenen voor seriële werking
12.1.2 Werking functiebouwstenen
De geselecteerde FB’s hebben heel wat in- en outputvariabelen. In figuur 12.5 zijn de func-
tiebouwstenen nog eens te zien. Hier volgt een overzicht van alle in- en outputparameters
die nodig zijn om de FB’s te begrijpen:
Figuur 12.5: Voorstelling van de functiebouwstenen
Input variabelen van de Master FB
In deze functieblok wordt vastgelegd hoe de master en slave moeten communiceren. De
baudrate en datawidth is afhankelijk van de instellingen van de slave. Hier is te zien dat bij
12 Modbus RTU 117
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
een verschillend aantal stopbits en verschillende pariteitscontroles, er een andere datawidth
dient gekozen te worden. Verder is er nog een array waar procesdata in dient te komen.
Door de globale variabele te koppelen aan de procesdata van de RS485-module kan deze
array correct opgevuld worden.
Een overzicht van de inputvariabelen is te zien in tabel 12.1.
Tabel 12.1: Overzicht van de inputvariabelen van de Master FB
Output variabelen van de Master FB
De verschillende booleans geven de status van de functieblok weer. Verder kan bij een fout,
ook de aard van de fout bekeken worden via de diagnostic code. Er wordt ook bijgehouden
hoeveel commando’s verstuurd zijn en hoeveel er afgehandeld zijn. Ook hier moet er pro-
cesdata gedefinieerd worden. Dit op dezelfde manier als de input procesdata.
Een overzicht van de outputvariabelen is te zien in tabel 12.2.
Tabel 12.2: Overzicht van de outputvariabelen van de Master FB
12 Modbus RTU 118
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Input variabelen FB voor commando’s
In deze functieblok moeten alle commando’s gemaakt worden, dit wil zeggen dat alle gege-
vens voor het maken van een commando hier moeten meegegeven worden. De belangrijk-
ste variabelen zijn het slave-adres, de functiecode, de plaats waar in het register een waarde
moet bekeken of geschreven worden en de hoeveelheid data. Het slave-adres is een integer
van 1 tot en met 124, dat ingesteld wordt bij de slave zelf. De functiecode geeft weer wat er
moet gebeuren, lezen of schrijven. Ook is er nog een array waar de te schrijven data in moet
gegeven worden.
Verder is er nog de mogelijkheid om op regelmatige basis een meting op te vragen, het
tijdsinterval hiervoor moet dan ook meegegeven worden. Ook de tijd waarin een slave zeker
moet geantwoord hebben, vooraleer er een foutmelding komt, is instelbaar. Een overzicht
van de inputvariabelen is te zien in tabel 12.3.
Tabel 12.3: Overzicht van de inputvariabelen voor commando’s
Output variabelen FB voor commando’s
Net als bij de MasterFB wordt de status van de FB weergegeven. De response data is een
array met alle opgevraagde gegevens die vanuit de slave verstuurd werden bij een leesop-
dracht. Een overzicht van de outputvariabelen is te zien in tabel 12.4.
Tabel 12.4: Overzicht van de outputvariabelen voor commando’s
12 Modbus RTU 119
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
In- en outputvariabelen
Voor beide functiebouwstenen is er ook nog een in- en outputvariabele, deze is nodig om de
structuur en de parameters voor modbus bij te houden en om een verbinding tussen Interbus
en Modbus te maken. Deze in- en outputvariabele is te zien in tabel 12.5.
Tabel 12.5: Overzicht van de in- en outputvariabelen
12.1.3 Gebruik in Function Block Diagram
Idem zoals bij Modbus TCP, worden alle variabelen aan de functieblokken gekoppeld. Op-
nieuw wordt bij meerdere registers de data weggeschreven in een array, nl. arr_Pd_Out.
Wanneer alle parameters correct zijn ingevuld, kan het resultaat volgens figuur 12.6 beko-
men worden.
Figuur 12.6: Gebruik in Function Block Diagram
12 Modbus RTU 120
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
12.2 Modbus RTU met gateway
Er kan ook gecommuniceerd worden via een gateway. Dit is een seriële apparaatserver die
TCP-berichten kan omzetten naar seriële RS 232, 422 of 485. Met andere woorden, aan de
ene kant kan er gecommuniceerd worden via Modbus TCP en langs de andere zijde via Mod-
bus RTU. De gateway vertaalt de berichten van Modbus TCP naar ModbusRTU. Het datapakket
wordt een klein beetje aangepast. Het is vooral de header die tijdens de vertaling gewijzigd
wordt. Na omzetting en verzending van de nieuwe datapakketen antwoordt de EMpro met de
gevraagde registerwaarden. Opnieuw vertaalt de gateway die berichten naar Modbus TCP,
zodat de PLC de registerwaarden kan ontvangen.
Figuur 12.7: Principe van een gateway
Als gateway wordt er hier gebruik gemaakt van een FL COMSERVER UNI 232/422/485. Deze
converter is te zien in figuur 12.8.
Figuur 12.8: Gateway FL COMSERVER UNI 232/422/485 van Phoenix Contact
12.2.1 Aansluitingen
Wordt via een gateway gewerkt, dan moet die worden aangesloten volgens figuur 12.9. Er
wordt 24V DC voorzien. Ook de aansluitdraden voor RS485 en ethernet-kabel worden gekop-
peld.
12 Modbus RTU 121
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 12.9: Aansluiting met een gateway naar ModbusRTU
12.2.2 Voordeel gateway
Wanneer meerdere apparaten die communiceren over RS485 gebruikt worden en als die bo-
vendien ver van elkaar liggen, kan het gebruik van meerdere gateways de installatie vereen-
voudigen. Bij ieder toestel of bij iedere groep toestellen kan een gateway geplaatst worden
die op zijn beurt gekoppeld is met het bedrijfsnetwerk. Aan de andere kant van het bedrijf
kan een PLC gekoppeld worden met hetzelfde netwerk en op die manier contact leggen met
de verschillende modbusservers. Het gebruik van meerdere gateways wordt geïllustreerd
aan de hand van figuur 12.10
Figuur 12.10: Gebruik van meerdere gateways
12 Modbus RTU 122
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
12.2.3 Instellen gateway
Een eerste stap om de communicatie op te stellen is de configuratie van de gateway. Hier-
voor moet de webpagina van het toestel geraadpleegd worden. Door het IP-adres (standaard
192.168.0.254) in te voeren in een webbrowser, kunnen heel wat parameters ingevoerd wor-
den.
Onder tabblad General Configuration worden alle nodige waarden aangepast. Na invoer van
gebruikersnaam en paswoord (standaard beide private) wordt het scherm uit figuur 12.11
verkregen.
Figuur 12.11: Instellen van de gateway
Nadat het gewenste IP-adres is ingesteld, kan naar het tabblad Serial genavigeerd worden.
Alle parameters die nodig zijn voor de opbouw van de berichten aan de seriële kant worden
hier ingevoerd. Een typsiche instelling voor apparaten van Phoenix Contact is weergegeven
in figuur 12.12.
Figuur 12.12: Seriële configuratie
12 Modbus RTU 123
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Nu de seriële kant geconfigureerd is, moet ook nog de andere zijde worden ingesteld. Er
wordt gekozen voor MODBUS/TCP omdat er tussen de controller en de gateway via TCP wordt
gecommuniceerd. De gateway fungeert ook als slave ten opzichte van de ILC. Het is de PLC
die initiatief neemt om registerwaarden op te vragen. De application settings zijn te zien in
figuur 12.13.
Figuur 12.13: Application settings
12.2.4 Communicatie met functiebouwstenen
Met de gateway tussen de EMpro en de plc, kan er bijgevolg niet rechtstreeks gecommuni-
ceerd worden. Er wordt verbinding gelegd tussen de gateway en plc op basis van Modbus
TCP. En dit gebeurt op geheel dezelfde manier als bij gewone Modbus TCP-communicatie.
Nadat alles is aangesloten, wordt een resultaat volgens figuren 12.14, 12.15 en 12.16 beko-
men.
Figuur 12.14: Functiebouwsteen TCP-Client
12 Modbus RTU 124
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 12.15: Functiebouwsteen ReadHoldingReg
Figuur 12.16: Omzetting WORD naar INT
12.2.5 Communicatie met modbusregisters
Voor de nieuwe ILC 1x1 reeks kunnen de meetwaarden ook uitgelezen worden m.b.v. de
ingebouwde TCP-driver. Hiervoor moet er wel een gateway toegevoegd worden in de Bus
Structure. Deze wordt toegevoegd door een Generic Modbus Device (Gateway) te slepen
naar MODBUS_CLT.
12 Modbus RTU 125
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
De hele busstructuur wordt nagemaakt zoals die in werkelijkheid is. Aan de gateway, hangt
de EMpro. Dus wordt er in PCWorx ook een Generic Modbus Device (RTU) gekoppeld aan de
gateway. RTU, omdat er tussen de EM-pro en gateway over RS-485 wordt geconfigureerd. De
volledige Bus Structure is weergegeven in figuur 12.17.
Figuur 12.17: Busstructuur met gateway
De gateway moet eerst worden geconfigureerd via zijn webpagina. De parameters blijven
hetzelfde vergeleken met Modbus RTU met een gateway en functieblokken. Enkel het IP-
adres, eventuele devicename en protocol moeten worden ingesteld. Er kan opnieuw geko-
zen worden voor TCP of UDP. UDP gaat sneller, maar er is geen foutcontrole op de verzonden
berichten. M.a.w. berichten kunnen verloren gaat zonder een error. De gatewayinstellingen
in PCWorx zijn zoals te zien in figuur 12.18.
Figuur 12.18: Gateway instellingen
12 Modbus RTU 126
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Nu de gateway is geconfigureerd, moet ook nog het modbus Device (de EMpro) ingesteld
worden. Aangezien er met Modbus TCP gecommuniceerd wordt tot aan de gateway, blijft het
IP-adres hetzelfde als dat van de gateway. Ook de Unit ID moet worden ingesteld in de EMpro
en dan overgenomen in de Modbus-Settings. Indien er meerdere Modbus Devices gekoppeld
zijn met de gateway, dan blijven alle instellingen voor beide apparaten identiek op de Unit ID
na, zie figuur 12.19. Ook hier kan de instelling Swap Bytes al dan niet worden geactiveerd.
Deze functie wisselt de 2 bytes in een woord om van plaats. Deze functie moet soms worden
toegepast om een juist resultaat te krijgen.
Figuur 12.19: Device instellingen
Ook de lees- en/of schrijfacties moeten nog worden ingesteld. Opnieuw is het de bedoeling
om meetwaarden van de EMpro te lezen, dus wordt er voor FC03 Read Holding Registers
gekozen. De functie is weergegeven in figuur 12.20. Daarna moet de koppeling tussen de
functie’s en de globale variabelen nog gebeuren. Dit is identiek hetzelfde als bij Modbus TCP
Figuur 12.20: Functie Read Holding Registers
12 Modbus RTU 127
13 Uitbreiding
Dit hoofdstuk behandelt enkele zaken die vaak voorkomen in de praktijk. Enerzijds worden
enkele praktische tips & trics meegegeven. Vervolgens wordt het gebruik van de voorge-
programmeerde functiebouwstenen, upgraden van de firmware en andere zaken hier dieper
uitgespit.
13.1 Tips & Trics
13.1.1 Schermbeheer
• Shortcuts in het werkgebied IEC Programming
<SHIFT> F2 Edit Wizard
<ALT> F2 Message Window
<CTRL> F2 Cross Reference
<SHIFT> F8 Project Tree Window
<ALT> F10 Watch Window
• Indien de schermen totaal ongeordend
staan is een volledige herschikking moge-
lijk.
Selecteer “Options” onder “Extras” en kies
voor het tabblab “General”. Het venster
volgens figuur 13.5. Klik vervolgens op “Re-
set Workspaces”.
Vervolgens dient PC WorX opnieuw opge-
start te worden.
Figuur 13.1: Schermen herschikken
• In het programmeer window kan gemakkelijk in- en uitgezoomd worden via het indruk-
ken van de <CTRL>-toets en tegelijkertijd scrollen met de muis.
13 Uitbreiding 128
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.1.2 Beheer van variabelen
• Verwijderen van ongebruikte variabelen en instan-
ces. Kies “Remove unused variables and FB instan-
ces” onder “Build” zoals weergegeven in figuur 13.2.
Figuur 13.2: Ongebruikte variablen
verwijderen
• De sneltoets om een variabele toe te voegen is F5.
• In FBD
Variabelen losmaken, indrukken van de <SHIFT>-toets, klikken op de variabele en ver-
slepen.
Figuur 13.3: Losmaken van variabelen
Variabelen kopiëren, indrukken van de <CTRL>-toets, klikken op de variabele en ver-
slepen.
Een bit, byte selecteren uit een woord: klik op het bolletje van een ingang, variabelen
properties wordt geopend, selecteer het woord, plaats er een punt achter. Vervolgens
komt een lijst tevoorschijn van alle bits en bytes welke een onderdeel zijn van dit woord.
Dit resultaat wordt weergegeven in figuur 13.4.
13 Uitbreiding 129
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.4: Bits en bytes selecteren uit een woord
• In STL
<CRLT>-toets en de spatiebalk leveren een lijst van alle variabelen op.
Kies een woord, plaats er een punt achter en alle bits en bytes komen te voorschijn
welke in dit woord kunnen geselecteerd worden.
13.1.3 Aanmaken project m.b.v. de wizard
Een handige tool bij het aanmaken van een project is de project Wizard. Bij deze wizard
kunnen de volgende zaken vooraf al ingesteld worden:
• Projectnaam
• Projectpad
• POU naam
• POU taal
• Configuratienaam
• PLC type
• Recourse naam
• Processor type
• Task naam
• Task type
Figuur 13.5
13 Uitbreiding 130
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.2 Libraries
Phoenix Contact biedt heel wat libraries aan met kant en klare functies. Deze functiebouwste-
nen zijn op thema ondergebracht in bibliotheken. Standaard-bibliotheken bevatten bijvoor-
beeld functies waarmee vanuit het besturingsprogramma eenvoudiger toegang verkregen
wordt tot de I/O-klemmen.
Bibliotheken met technologiefuncties bieden voorgeprogrammeerde toepassingen voor re-
gelingstaken, communicatieprotocollen tot en met branchegerichte oplossingen.
Het merendeel van de functiebouwstenen zijn gratis te verkrijgen. Voor enkele bouwstenen
is een runtimelicentie in de besturing vereist. Deze licenties staan op geheugenkaarten, die
in het toebehorenprogramma van de besturingen te vinden zijn.
De belangrijkste zijn:
• BACL_V0_22
• DBFL_SQL_V1_10 (SQL functieblokken)
• IT_Library_V1_11 (Mail functieblok en DNS functieblok)
• AnalogTechnology_V1_09
• Modbus_V1_07
13.2.1 Functiebouwsteen: analoge technologie
De bibliotheek betreffende Modbus werd in een voorgaand hoofdstuk reeds onder de loep
genomen. Als voorbeeld van een functiebouwsteen uit een andere bibliotheek wordt hier
de IL_AI_2_SF_V1_0x functieblok uit de ‘AnalogTechnology_V1_09’-bibliotheek bekeken. Om
de bibliotheek aan een project toe te voegen: klik met de rechtermuistoets op de map “Li-
braries” in het “Project Tree Window” en kies voor “Insert → User Library. . . ”. Selecteer de
bibliotheek ‘AnalogTechnology_V1_09.mwt’ en klik op OK.
13 Uitbreiding 131
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.6: Project Tree Window
De IL_AI_2_SF_V1_0x functieblok is in eerste instantie een verschalingsfunctieblok dat een
waarde uit de analoge inputmodule leest en deze converteert naar een standaardwaarde ge-
specifieerd door de gebruiker. De geconveerteerde waarde ligt tussen de limieten ‘rLO_Limit’
en ‘rHI_Limit’. In tweede instantie genereert de IL_AI_2_SF_V1_0x functieblok ook diagnose
informatie over de IL_AI_2/SF module. De IB_IL_AI_2/SF biedt verschillende formaten (IL, ST,
RT) die kunnen geparametreerd worden. De verschillende bereiken van de module kunnen
ook gedefinieerd worden via parameter. De ingangsmodule, afgebeeld op figuur 13.8, bevat
twee analoge inputkanalen. De kanalen worden gelezen en geconfigureerd met procesdata.
De functieblok kan slechts één kanaal van de module lezen en configureren. Indien beide
kanalen gebruikt worden in de applicatie, dan moeten er twee instanties van de functieblok
bestaan in het PC WORX programma.
Figuur 13.7: IL_AI_2/SF module
13 Uitbreiding 132
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Voorbeeld:
Meetbereik : 0V tot 10V
rLO_Limit : 2000.0
rHI_Limit : 4000.0
Ingelezen actuele waarde : 0V
Waarde rNormValue : 2000.0
Ingelezen actuele waarde : 5V
Waarde rNormValue : 3000.0
Ingelezen actuele waarde : 10V
Waarde rNormValue : 4000.0
Input Parameters
Naam Type Omschrijving
xActivate BOOL Activeert de functieblok
wInputAddress WORD Analoge Input waarde
rHI_Limit REAL Hoogste waarde van het opgegeven bereik
rLO_limit REAL Laagste waarde van het opgegeven bereik
xNoFilter BOOL Deactiveer de filter (In default mode is er een fil-
ter geactiveerd welke een meting genereert van de
laatste 15 waarden. Met deze parameter wordt de
filter gedeactiveerd.
⇒ Voor meer details zie de datasheet
iSelectFormat INT Keuze uit verschillende formaten:
• 0 - (IL) IB-IL-Format (15 Bit)
• 1 - (ST) IB-ST-Format (12 Bit)
• 2 - (RT) IB-RT-Format (15 Bit)
⇒ Voor meer details zie de datasheet
iSelectRange INT Selecteer het bereik:
• 0 - Unipolar (0-10V)
• 1 - Unipolar (0-20mA)
• 2 - Unipolar (4-20mA)
• 3 - Bipolar (+-10V)
• 4 - Bipolar (+-20mA)
⇒ Voor meer details zie de datasheet
13 Uitbreiding 133
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Output Parameters
Naam Type Omschrijving
xActive BOOL TRUE: De functieblok is actief zonder foutmeldin-
gen.
xError BOOL TRUE: Er doet zich een fout voor. Voor meer gede-
tailleerde informatie moeten de parameter ‘wDia-
gCode’ bekeken worden.
wDiagCode WORD Status of Error waarde van de functieblok.
De mogelijke codes worden omschreven in de help-
functie van PC Worx.
wOutputAddress WORD Controle woord voor configuratie van de inline-clip.
Zorg ervoor dat deze parameter met het juiste ka-
naal is verbonden.
⇒ Voor meer details zie de datasheet
rNormValue REAL Genormeerde waarde tussen ’rHO_limit’ en
’rHI_Limit’.
De koppeling van de functieblok met de inline-module gebeurt als volgt. Zorg ervoor de
“wInputAddress” een globale variabele is. Daarna kan in Process Data Workspace de input-
data gekoppeld worden aan deze globale variabele. In de starterskit zit een potentiometer
geschakeld op kanaal één en zal spanning uitlezen. Daarom wordt AI1 Voltage gekoppeld
volgens figuur 13.8.
Figuur 13.8: Hardware koppeling met analoge ingangskaart
Voorbeeld van het gebruik van de functieblok in FBD is weergegeven in figuur 13.9:
13 Uitbreiding 134
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.9: functieblok IL_AI_2_SF_V1_02
13 Uitbreiding 135
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.3 Firmware Update
De technologie staat niet stil. Daarom wordt soms nieuwe firmware uitgebracht. Een voor-
beeld is het gebruik van HTML5. Dit is enkel mogelijk bij een ILC van de 1x1 reeks, maar
moet bovendien een firmware versie hebben hoger dan 4.30.
De nieuwe firmware versies zijn te vinden op de Phoenix site. Tik het artikelnummer in
en selecteer de juiste ILC. Onder het tabblad downloads kan een “Firmware” geselecteerd
worden. In de Firmwaretabel kan de juiste versie geselecteerd worden. Na downloaden en
uitpakken van het zip-bestand, moet het exe-bestand uitgevoerd worden. De wizard volgens
figuur 13.10 start op. Volg de verschillende stappen en uiteindelijke worden 3 PDF’s geopend.
Figuur 13.10: Wizard Firmware update
In één van deze PDF’s wordt het updaten van de firmware uitgebreidt besproken. Verder in
dit hoofdstuk wordt een stappenplan uitgelegd.
Stap 1: Selecteer in PCWorx in het venster Bus Configuration Workspace de ILC. In het tab-
blad “Extended Settings” kan de FTP folder van de controller geopend worden. Een tweede
manier om toegang te krijgen op de FTP-server is om in de adresbalk van de webbrowser
ftp:// + IP-adres van de controller in te geven. Voorbeeld: ftp://192.168.0.11.
Figuur 13.11: Openen van een FTP-server
13 Uitbreiding 136
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Stap 2: Vervolgens moet de firmware-update file op de FTP-server van de controller ge-
plaatst worden.
Figuur 13.12: Kopiëren van file op de FTP-server
Stap 3: Uiteindelijk moet de controller zelf de firmware updaten. Door opnieuw in het
venster Device Details in PCWorx te kiezen voor het tablad “CPU Service Editor”, kan de
Service Library geopend worden. Indien er gewerkt wordt met een ILC uit het 1xx of 1x1
reeks, moet ILC1xx_Service_Common.slb geopend worden.
Figuur 13.13: Openen van Service Library
Stap 4: Selecteer daarna het item Firmware_Update. Start de firmware update door het
commando te verzenden en te klikken op “Send”. Tijdens de firmware updaten zullen de
LED’s op de controller flikkeren. Na de firmware update wordt automatisch ook nog een
reboot uitgevoerd. De firmwareupdate is uitgevoerd nadat de LED’s stoppen met flikkeren
en nadat de ILC kan benaderd worden via de Dialog Box. Dit is weergegeven in figuur 13.14
13 Uitbreiding 137
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.14: Control Dialog Box
Stap 5: Achteraf kan de actuele firmware versie van de controller is. In de Control Dialog
Box in PCWorx, kan op de knop “Info” gedrukt worden. Dan kan de firmware versie bekeken
worden volgens figuur 13.15
Figuur 13.15: Controle Firmware
13 Uitbreiding 138
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.4 Variabelen
Variabelen worden gebruikt om verschillende functieblokken met elkaar te laten communi-
ceren, om de koppeling met hardware te maken, om verschillende toestanden, waarden bij
te houden. . . Er zijn 2 grote types variabelen: de lokalen en de globale.
Onder de globale zit er 1 variable:
• Var Global: Deze variabelen zijn toegankelijk over het volledige project en zijn noodza-
kelijk voor de koppeling tussen hardware en software. Wanneer variabelen als globale
variabelen gedefinieerd worden en wanneer naar de variabelenlijst van het programma
gekeken wordt, dan kan opgemerkt worden, zie figuur 13.16, dat deze variabelen als
VAR_EXTERNAL gebruikt worden. Dit omdat deze variabelen niet op programmaniveau
worden bijgehouden, maar op project niveau.
Figuur 13.16: Definiëring van globale variabelen
Onder de lokale variabelen behoren de Var, Var External en Var External PG.
• Var: dit is de ‘gewone’ variabele die enkel te gebruiken is binnen een 1 POU. Die kan
dus niet op programmaniveau opgeroepen worden.
• Var External
• Var External PG
Figuur 13.17 geeft een overzicht van de verschillende variabelen.
13 Uitbreiding 139
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.17: Overzicht van de verschillende variabelen
13 Uitbreiding 140
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.5 Tasks
In elke configuratie vinden we één of meerdere resources terug. Een resource voorziet in
alle mogelijke tools om een bepaald gebruikersprogramma uit te voeren. Het is een kenmerk
om een bepaalde processor te ondersteunen.Een resource kan het best begrepen worden als
een CPU met het daarbij behorende operating systeem.
In elke resource kunnen meerdere tasks actief zijn. Een task wordt aangemaakt om een
aantal programma’s uit te voeren. Een TASK kan een cyclische (periodische) task, een event-
gestuurde task of een systeem-gestuurde (interrupt-) task zijn.
Een cyclische task ( ) Deze wordt cyclish uitgevoerd. Een tijdsbewaking zorgt ervoor
dat het programma niet in een eindige lus terecht kom. Deze tijdsbewaking of Watchdog
timeout kan ingesteld worden door met de rechtermuisknop te klikken op de task. Dit wordt
afgebeeld in figuur 13.18a. Selecteer daarna “Settings”. In dit venster, zie figuur 13.18b kan
de timeout aangepast worden en kan de Watchdog al dan niet geactiveerd worden.
(a) Task Settings (b) Timeout instellen
Figuur 13.18: Instellingen Default Task
Een event-gestuurde task ( ) Deze wordt aangestoten bij een bepaalde gebeurtenis.
Bij PC WorX wordt de event-gestuurde task gebruikt voor de mogelijkheid van sequential
processing. Opnieuw kan hier ook een Watchdog ingesteld worden. Bij het gebruik van
meerdere even-gestuurde tasks, kan aan iedere task een prioriteit gegeven worden. Beide
parameters kunnen ingesteld worden bij de settings van deze task in het venster volgens
figuur 13.19.
13 Uitbreiding 141
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.19: Instellingen Event Task
Een systeem-gestuurde task ( ) Deze wordt aangestoten door het operatingsysteem
(warme start, koude start, stop, watchdog error, divide by zero, . . . ) Bijvoorbeeld wanneer
gekozen wordt voor “System Event: CPU Overload”, dan zal het programma dat aan die task
gekoppeld is geactiveerd worden om logischerwijs de CPU te ontlasten.
Figuur 13.20: Instellingen System Task
13 Uitbreiding 142
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
13.6 Interbus Diagnose
Foutendiagnose kan eenvoudig gebeuren met Diag+. Deze software tool wordt standaard bij
de AX Suite mee geïnstalleerd. Diag+ is afgestemd op Profinet en Interbus. Zowel netwerk-
fouten als de actuele status van de besturingen en modulen kunnen bekeken worden. Met
deze softwaretool kan ook de beschikbaarheid van een installatie verhogen. Bijvoorbeeld
door preventief de overdrachtskwaliteit van glasvezelsegmenten te bewaken.
13.6.1 Verbinding met controller maken
Naargelang het medium tussen computer en controller, moet de juiste communicatietechno-
logie gekozen worden. In dit geval is dit over Ethernet. Er wordt gekozen voor DCP. Nadien
moet ook de juiste netwerkadapter worden gekozen waarop de controller is verbonden en
dan kan er een scan worden uitgevoerd, zie figuur 13.21
Figuur 13.21: Startscherm Diag+
Indien een apparaat gevonden is, dan zal bovenaan in “Communication Path” het IP-adres
verschijnen. Vervolgens moet er connectie worden gemaakt met het toestel door rechts te
klikken op de knop “Connect”.
Als de connectie is opgebouwd verandert onderaan de werkbalk in het geel en kan er boven-
aan gekozen worden voor INTERBUS Diagnostic volgens figuur 13.22
13 Uitbreiding 143
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.22: INTERBUS Diagnostic
13.6.2 Interbus Diagnose
Onder het tabblad “Bus Architecture” kan de busstructuur bekeken worden. In figuur 13.23
is de busstructuur van dit voorbeeld te zien. De eerste inline module gekoppeld aan de ILC
is een analoge ingangskaart met 2 kanalen. In het tabblad “Statics”, zie figuur 13.24 wordt
bijgehouden hoeveel fouten er zijn gebeurd.
Figuur 13.23: Bus Architecture in Diag+
13 Uitbreiding 144
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 13.24: Statics in Diag+
In voorgaande afbeeldingen zijn er geen fouten gevonden. In figuur 13.25 wordt een fout
gegeven bij de tweede inline module. Onder het tabblad “Solution”, zie figuur 13.26 wordt
het probleem nader uitgelegd en wordt zelfs ook een oplossing voorgesteld. In dit geval klopt
de busconfiguratie ingevoerd in PCWorx niet met de werkelijkheid.
Figuur 13.25: Fout in tweede inline module
Figuur 13.26: Oplossing voorgesteld door Diag+
13 Uitbreiding 145
14 Opdrachten
14.1 Een alarmsysteem
• Een alarmsysteem heeft 3 ingangen, 3 alarmmeldingslampjes, één geluidsmelding, één
bevestigingsingang en één testknop.
• Wordt één van de alarmingangen geactiveerd dan:
– gaat één van de alarmmeldingslampjes aan het pinken.
– treedt er een algemene geluidsmelding in werking.
• Na de bevestiging van het alarm:
– brandt het corresponderende alarmmeldingslampje continu
– stopt de geluidsmelding
• Na het wegnemen van de oorzaak van het alarm, gaat het overeenstemmende alarm-
meldingslampje uit.
• Verdwijnt een alarm vooraleer de operator de kans heeft gekregen te bevestigen, dan
blijven de geluidsmelding en het lampje in werking.
• Een testdrukknop laat toe een lampentest en een geluidstest door te voeren. Bij het in-
drukken van deze knop gaan alle lampjes branden en gaat de geluidsmelding. Wanneer
deze knop terug losgelaten wordt, doven de lampjes en stopt het geluid.
Het uiteindelijke programma (in één geval) moet voldoen aan volgend tijdsdiagram:
Figuur 14.1
• Bovenstaand tijdsdiagram is uitgetekend voor één alarm. Schrijf een functieblok voor
de uitvoering van het gevraagde.
• Maak een totaalprogramma.
14 Opdrachten 146
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Maak gebruik van de functie knipperlicht welke eerder al in deze cursus werd aangemaakt.
Maak vervolgens een functiebouwsteen alarmverwerking. Een mogelijk oplossing voor deze
functiebouwsteen is weergegeven in figuur 14.2.
Figuur 14.2: oplossing FB alarmwerking
Het volledige programma:
Figuur 14.3: volledige oplossing
14 Opdrachten 147
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.2 Openen van een sectionaal poort
Een sectionaal poort moet automatisch gestuurd worden. Met behulp van een startknop
moet de poort geopend worden. Eens open, moet de poort automatisch na 10 seconden
terug sluiten. Volgende voorwaarden moeten gecontroleerd worden:
• In de sectionaal poort is een deur aanwezig. Een sensor controleert of de deur dicht is.
De poort kan niet geopend worden indien de deur niet in het slot zit.
• Eindeloopcontacten signaleren het open en dicht zijn van de poort.
IO-lijst:
Functie signaalgever I/Q Type Bediend Logische naam
Drukknop poort openen I NO Detectie ‘1’ IN_xPoortOpenen
Eindeloop poort dicht I NC Detectie ‘0’ IN_xPoortDicht
Eindeloop poort open I NC Detectie ‘0’ IN_xPoortOpen
Deurcontact I NC Detectie ‘0’ IN_xDeurDicht
Poort openen Q OUT_xPoortOpenen
Poort sluiten Q OUT_xPoortSluiten
Schrijf een passende functieblok:
Figuur 14.4: Voorbeeld functieblokProgrammacode functieblok in LD:
Figuur 14.5: Programmacode functieblok in LD
14 Opdrachten 148
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Uitbreiding:
Een optische sensor controleert of er geen per-
sonen of voorwerpen in de poortopening aan-
wezig zijn. De poort mag uiteraard pas sluiten
indien de doorgang volledig vrij is. Na het vrij-
maken van de poort duurt het 10 sec vooraleer
de poort sluit.
Figuur 14.6: Voorbeeld functieblokIO-lijst:
Functie signaalgever I/Q Type Bediend Logische naam
Drukknop poort openen I NO Detectie ‘1’ IN_xPoortOpenen
Eindeloop poort dicht I NC Detectie ‘0’ IN_xPoortDicht
Eindeloop poort open I NC Detectie ‘0’ IN_xPoortOpen
Deurcontact I NC Detectie ‘0’ IN_xDeurDicht
Optische sensor poort vrij I NO Detectie ‘1’ IN_xPoortVrij
Poort openen Q OUT_xPoortOpenen
Poort sluiten Q OUT_xPoortSluiten
Aangepaste programmacode functieblok in LD:
Figuur 14.7: Aangepaste programmacode functieblok in LD
Programmacode functieblok in ST:
14 Opdrachten 149
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Figuur 14.8: Programmacode functieblok in ST
14 Opdrachten 150
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.3 Temperatuursopvolging
Een temperatuurssensor levert een stroomsignaal van 4mA tot 20mA (0 .. 30.000) en dit voor
een temperatuursbereik van -50◦C tot +100◦C. Met deze sensor moet de procestemperatuur
bewaakt worden en moet binnen het bereik van -25◦C en +55◦C gehouden worden.
Via de webserver op de ILC131 kan de werkelijke temperatuurswaarde opgevolgd worden en
zijn er twee toestandsmeldingen voorzien.
Een toestandmelding ‘WARNING’ indien de temperatuur gelegen is tussen -10◦C en -25◦C of
indien de temperatuur gelegen is tussen +40◦C en +55◦C.
Een toestandsmelding ‘ALARM’ indien de temperatuur lager is dan -25◦C of indien de tempe-
ratuur hoger is dan 55◦C.
Schrijf een functieblok met drie VAR_OUTPUT’s, één voor de werkelijke temperatuurswaarde
in ◦C en twee voor de toestandsmeldingen.
Figuur 14.9
Figuur 14.10
14 Opdrachten 151
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.4 Sequentieel programmeren in ST: de rolkraan
Een rolkraan brengt een product naar een spoelcabine. In deze cabine wordt het product ge-
durende 10 seconden besproeid met water. De watertemperatuur moet gelegen zijn tussen
de 45 en de 70◦C.
Een eindeloop links en rechts geeft de stand van de rolkraan weer. De contacten van de
eindelopen zijn NC.
Via een startknop wordt de rolbrug in werking gezet.
Het volledige proces wordt in verschillende stappan opgedeeld.
Een eerste stap is de initiële stap. Hierin wordt gewacht tot er op de startknop gedrukt wordt.
Indien de temperatuur van het water OK wordt de volgende stap uitgevoerd.
In de tweede stap gaat de rolkraan naar links, richting spoelcabine. Indien de rolkraan de
eindeloop links bereikt wordt de volgende stap geactiveerd.
In de derde stap blijft de rolkraan 10 seconden staan in de spoelcabine.
In een vierde stap beweegt de rolkraan terug naar de oorspronkelijke startplaats.
Deze oefening wordt stap voor stap in de opleiding uitgewerkt.
14 Opdrachten 152
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.5 Tapijtoproller
Bij een tapijtenproducent staat een tapijtoproller. Figuur 14.11 geeft een schematische voor-
stelling van de oprolmachine. De cijfers in de voorstelling stellen de zin van de flow in de
machine voor.
Figuur 14.11: Schematische voorstelling oprolmachine
14.5.1 Overzicht in- en uitgangen opdracht tapijtroller
Tabel 14.1: Overzicht in- en uitgangen
14 Opdrachten 153
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.5.2 Verloop van de oprolcyclus
• Nadat een operator een tapijt op de aanvoerband legt (I1), moet de aanvoerband na 5s
beginnen draaien.
• Ziet sensor I2 het tapijt, dan moet de tussenband ook beginnen draaien. Ziet dezelfde
sensor het tapijt niet meer, dan moet de aanvoerband stilvallen.
• Komt sensor I3 hoog, dan moet de tussenband stilvallen. Na 2 seconden gaat het tapijt
via “Invoerband rolmachine” naar de rolmachine.
• Wanneer het tapijt in de rol-as van de machine zit (I4), dan moet “invoerband rolma-
chine” stoppen met draaien en kan het rollen starten. Zowel de folie-gever als de roller
worden tegelijk geactiveerd. Wanneer het tapijt 5 toeren gedraaid heeft (sensor I5
geeft per toer een puls) dan kan er geknipt worden. Het knippen is een uitgang die ge-
durende een seconde actief is. Wanneer het knippen start, moet de foliegever stoppen.
Het rollen moet nog 3 seconden aangehouden blijven na het knippen.
• Wanneer uiteindelijk ook het rollen stopt, moet de afduwer het tapijt afstoten tot op de
invoerband van de kipper. De afduwer blijft vooruitgaan tot hij aan de eindeloop zit.
(I7)
• Is de ingang I7 hoog, (d.w.z. dat het tapijt op de invoerband van de kipper ligt) dan
moet de invoerband van de kipper geactiveerd worden Ook moet de afduwer zich weer
naar de beginpositie begeven. (afduwer achteruit tot I6 bereikt is)
• Is het tapijt tot aan ingang I8 gevorderd, dan moet de Invoerband kipper stoppen. Wan-
neer de band gestopt is en wanneer de afduwer weer op de beginpositie staat, dan pas
kan het kippen geactiveerd worden. Deze uitgang moet gedurende 5 seconden actief
staan. Op die manier wordt het opgerolde tapijt in een kar gekipt. De cyclus is ten
einde.
• De volledige cyclus moet steeds opnieuw kunnen herhaald worden.
Bediening:
• Wanneer de stopknop bediend wordt, dan moet het huidige tapijt nog volledig afge-
werkt worden en daarna stopt de machine. De machine kan enkel terug opgestart wor-
den wanneer de machine volledig stilgevallen is en als de startknop ingedrukt wordt.
Signalisatie:
• Wanneer de machine in normaal bedrijf is, moet de groene lamp vast branden en is
de rode lamp gedoofd. Wanneer op de stopknop gedrukt wordt, moet de rode lamp
beginnen knipperen (2s hoog, 1s laag). Wanneer het huidige tapijt afgewerkt is, na
bediening van de stopknop, dan brandt de rode lamp continu.
14 Opdrachten 154
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
Tellers:
• De volgende zaken moeten opgevolgd kunnen worden:
– Het aantal meter folie dat verbruikt is. Telkens een tapijt gerold is, wordt ongeveer
2 meter folie verbruikt. (teller1)
– Hoeveelheid afgewerkte tapijten. (teller2)
• Via knop I11 kunnen beide tellers gereset worden.
14.5.3 Hoofdprogramma
Figuur 14.12: Hoofdprogramma roltapijt
14.5.4 Functiebouwsteen Blokgolf
(* Takt *)
TON_Taktpuls(IN := NOT TON_Taktpuls.Q, PT := T#3s);
TP_Blokgolf(IN := TON_Taktpuls.Q, PT:= T#2s);
Q := TP_Blokgolf.Q;
14.5.5 Functiebouwsteen StartStop
R_TRIG_Start(CLK:= i_xStart);
R_TRIG_Stop(CLK:= i_xStop);
Blokgolf_1();
14 Opdrachten 155
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
(* Controlblok *)
IF R_TRIG_Start.Q AND NOT i_xStop THEN
q_xVrijgave := TRUE;
xStartGedrukt := TRUE;
xStopGedrukt := FALSE;
END_IF;
IF R_TRIG_Stop.Q THEN
q_xVrijgave := FALSE;
xStopGedrukt := TRUE;
xStartGedrukt := FALSE;
END_IF;
(* Signalisatie *)
IF xStopGedrukt AND NOT i_xCyclusGedaan THEN
q_xRodeLamp := Blokgolf_1.Q;
q_xGroeneLamp := FALSE;
ELSIF xStopGedrukt AND i_xCyclusGedaan THEN
q_xRodeLamp := TRUE;
q_xGroeneLamp := FALSE;
ELSIF xStartGedrukt THEN
q_xGroeneLamp := TRUE;
q_xRodeLamp := FALSE;
END_IF;
14.5.6 Functiebouwsteen Oprolcyclus
(* Timers *)
TON_TapijtOpAanvoer(IN := i_xTapijtOpAanvoer, PT := T#5s);
q_tTijd_TapijtOpAanvoer := TON_TapijtOpAanvoer.ET;
TON_EindeTussenband(IN := i_xEindeTussenband, PT :=T#2s);
q_tTijd_EindeTussenband := TON_EindeTussenband.ET;
TP_Knippen(IN := xStartKnippen, PT := T#1s);
Tijd_Knippen := TP_Knippen.ET;
TON_Rollen(IN := xStartKnippen, PT := T#3s);
Tijd_EindRollen := TON_Rollen.ET;
TP_Kipper(IN := iStapteller =11, PT := T#5s);
Tijd_Kipper := TP_Kipper.ET;
(* Counter *)
CTU_Rollen(CU := iStapteller = 7 AND i_xTapijtGedraaid, RESET :=CTU_Rollen.Q, PV := 5);
AantalRolPulsen := CTU_Rollen.CV;
14 Opdrachten 156
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
(* Flankdetecties *)
R_TRIG_EindeAanvoer(CLK := i_xEindeAanvoer);
F_TRIG_EindeAanvoer(CLK := i_xEindeAanvoer);
R_TRIG_EindeTussenband(CLK := i_xEindeTussenband);
R_TRIG_TapijtInRolas(CLK := i_xTapijtInRolas);
R_TRIG_AfduwerEind(CLK := i_xAfduwerEind);
R_TRIG_AfduwerBegin(CLK := i_xAfduwerBegin);
R_TRIG_EindeInvoerKipper(CLK := i_xEindeInvoerKipper);
F_TRIG_Kipper(CLK := q_xKipper);
R_TRIG_ResetTellers(CLK := i_xResetTellers);
(* ———–Rolcyclus —————-*)
CASE iStapteller OF
1: q_xCyclusGedaan := TRUE;
IF i_xVrijgave AND TON_TapijtOpAanvoer.Q THEN
iStapteller := iStapteller + 1;
END_IF;
2: q_xCyclusGedaan := FALSE;
q_xAanvoerband := TRUE;
IF R_TRIG_EindeAanvoer.Q THEN
iStapteller := iStapteller + 1;
END_IF;
3: q_xTussenband := TRUE;
IF F_TRIG_EindeAanvoer.Q THEN
iStapteller := iStapteller + 1;
END_IF;
4: q_xAanvoerband := FALSE;
IF R_TRIG_EindeTussenband.Q THEN
iStapteller := iStapteller + 1;
END_IF;
5: q_xTussenband := FALSE;
IF TON_EindeTussenband.Q THEN
iStapteller := iStapteller + 1;
END_IF;
14 Opdrachten 157
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
6: q_xInvoerbandRol := TRUE;
IF R_TRIG_TapijtInRolas.Q THEN
iStapteller := iStapteller + 1;
END_IF;
7: q_xInvoerbandRol := FALSE;
q_xFolieGever := TRUE;
q_xRollen := TRUE;
IF CTU_Rollen.Q THEN
iStapteller := iStapteller + 1;
END_IF;
8: q_xStartKnippen := TRUE;
q_xFolieGever := FALSE;
q_iAantalMeterFolie := q_iAantalMeterFolie + 2;
q_xFolieKnippen := TP_Knippen.Q;
IF TON_Rollen.Q THEN
iStapteller := iStapteller + 1;
END_IF;
9: q_xRollen := FALSE;
q_xStartKnippen := FALSE;
IF i_xAfduwerBegin THEN
iStapteller := iStapteller + 1;
END_IF;
10: q_xAfduwerVooruit := TRUE;
IF R_TRIG_AfduwerEind.Q THEN
q_xAfduwerVooruit := FALSE;
q_xInvoerbandKipper := TRUE;
q_xAfduwerAchteruit := TRUE;
END_IF;
IF R_TRIG_AfduwerBegin.Q THEN
q_xAfduwerAchteruit := FALSE;
xOK1 := TRUE;
END_IF;
14 Opdrachten 158
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
IF R_TRIG_EindeInvoerKipper.Q THEN
q_xInvoerbandKipper := FALSE;
xOK2 := TRUE;
END_IF;
IF xOK1 AND xOK2 THEN
iStapteller := iStapteller + 1;
END_IF;
11: xOK1 := FALSE;
xOK2 := FALSE;
q_xKipper := TP_Kipper.Q;
IF F_TRIG_Kipper.Q THEN
q_iAfgewerkteTapijtjes := q_iAfgewerkteTapijtjes + 1;
iStapteller := 1;
END_IF;
END_CASE;
q_iStap := iStapteller;
(* Reset Tellers *)
IF R_TRIG_ResetTellers.Q THEN
q_iAantalMeterFolie := 0;
q_iAfgewerkteTapijten := 0;
END_IF;
14 Opdrachten 159
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
14.6 Voorbeeld in ST met array’s en structuren
Bedoeling: op een installatie moeten drie events opgevolgd worden. Per uur moet het aantal
keer dat één van deze events opgetreden is bijgehouden worden, alsook in welke minuut.
Om het uur kunnen deze gegevens gewist worden.
Per event moet de naam, het aantal keer per uur en een tabel met het tijdstip bijgehouden
worden.
Uiteindelijk moet volgende structuur bekomen worden:
Figuur 14.13
Hiervoor moeten volgende datatypes aangemaakt worden:
TYPE
logtabel: ARRAY [0..10] of int;
string15 : string(15);
eventgegevens:
STRUCT
eventnaam : string15;
aantal_keer_event : INT;
14 Opdrachten 160
IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT
tijdstippen : logtabel;
END_STRUCT;
eventlogboek: ARRAY [1..3] of eventgegevens;
END_TYPE
Vervolgens wordt een programma aangemaakt.
Een variabele met de naam ‘eventdata’ wordt aangemaakt van het datatype ‘eventlogboek’.
Oplossing in ST:
if uur_vorige_cyclus <> RTC_HOURS then
for eventnr := 1 to 3 do
eventdata[eventnr].aantal := 0;
for index := 1 to 10 do
eventdata[eventnr].tijdstippen[index] := 0;
end_for;
end_for;
end_if;
uur_vorige_cyclus := RTC_HOURS;
R_TRIG_1(CLK:= ONBOARD_INPUT_BIT0);
R_TRIG_2(CLK:= ONBOARD_INPUT_BIT1);
R_TRIG_3(CLK:= ONBOARD_INPUT_BIT2);
if R_TRIG_1.Q then
index := eventdata[1].aantal +1;
eventdata[1].tijdstippen[index] := RTC_MINUTES;
eventdata[1].aantal_keer_event := index;
end_if;
if R_TRIG_2.Q then
index := eventdata[2].aantal +1;
eventdata[2].tijdstippen[index] := RTC_MINUTES;
eventdata[2]. aantal_keer_event := index;
end_if;
if R_TRIG_3.Q then
index := eventdata[3].aantal +1;
eventdata[3].tijdstippen[index] := RTC_MINUTES;
eventdata[3]. aantal_keer_event := index;
end_if;
14 Opdrachten 161