phoenix contact, workshop "it-powered automation - multifunctionele besturingen"

166
Workshop IT-Powered Automation Multifunctionele besturingen Voorjaar 2015

Upload: cito-benelux

Post on 20-Aug-2015

992 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

Workshop

IT-Powered Automation

Multifunctionele besturingen

Voorjaar 2015

Page 2: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 3: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 4: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 5: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 6: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 7: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 8: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 9: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 10: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 11: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 12: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 13: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 14: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 15: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 16: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 17: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 18: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 19: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 20: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 21: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 22: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 23: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 24: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 25: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 26: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 27: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 28: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 29: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 30: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 31: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 32: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 33: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 34: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 35: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 36: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 37: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 38: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 39: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 40: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 41: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 42: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 43: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 44: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 45: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 46: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 47: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 48: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 49: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 50: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 51: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 52: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 53: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 54: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 55: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 56: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 57: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 58: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 59: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 60: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 61: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 62: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT

Figuur 5.7: Uiteindelijk resultaat

5 Ladder 57

Page 63: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 64: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 65: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 66: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 67: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 68: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 69: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 70: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 71: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 72: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 73: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 74: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 75: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 76: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 77: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 78: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 79: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 80: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 81: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 82: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 83: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 84: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 85: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT

8.4.1 Resultaat in FBD

Figuur 8.13: Interne programmacode in FBD

8 Analoge signaalverwerking 80

Page 86: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 87: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 88: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 89: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 90: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 91: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 92: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 93: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 94: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 95: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 96: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 97: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 98: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 99: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 100: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 101: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 102: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 103: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 104: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 105: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 106: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 107: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 108: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 109: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 110: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 111: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 112: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 113: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 114: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 115: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 116: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 117: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 118: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 119: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 120: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 121: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 122: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 123: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 124: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 125: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 126: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 127: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 128: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 129: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 130: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 131: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 132: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 133: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 134: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 135: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 136: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 137: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 138: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 139: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 140: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT

Figuur 13.9: functieblok IL_AI_2_SF_V1_02

13 Uitbreiding 135

Page 141: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 142: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 143: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 144: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 145: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT

Figuur 13.17: Overzicht van de verschillende variabelen

13 Uitbreiding 140

Page 146: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 147: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 148: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 149: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 150: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 151: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 152: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 153: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 154: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 155: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

IT Powered Automation: multifunctionele besturingen PHOENIX CONTACT

Figuur 14.8: Programmacode functieblok in ST

14 Opdrachten 150

Page 156: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 157: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 158: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 159: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 160: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 161: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 162: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 163: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 164: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 165: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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

Page 166: Phoenix Contact, workshop "IT-powered AUTOMATION - multifunctionele besturingen"

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