Programmerbare logiske styringer

Page 1

Denne boka dekker alle spesifikasjoner og retningslinjer som er angitt i denne standarden. Boka vil derfor være interessant for alle som jobber med eller trenger å lære seg programmering av PLS-er, uansett merke. Dag Håkon Hanssen arbeider som universitetslektor i automasjon ved Institutt for ingeniørvitenskap og sikkerhet ved Universitetet i Tromsø. Materialet er utarbeidet gjennom flere år med undervisning og forskning om automatisering og styring av industrielle produksjonsprosesser.

www.fagbokforlaget.no ISBN 978-82-450-1797-7

,!7II2E5-abhjhh!

PROGRAMMERBARE LOGISKE STYRINGER

Det er en utfordring å lage en universell lærebok i PLS-programmering, da det fins mange produsenter og ulike verktøy for programmering. Heldigvis har de fleste PLS-produsentene i større eller mindre grad tilpasset seg standarden IEC 61131-3, en standard som blant annet spesifiserer syntaksen for 5 ulike programmeringsspråk.

Dag Håkon Hanssen

Dette er ei bok for alle som ønsker å lære om programmering av PLS-er (Programmerbare Logiske Styringer) eller utvikle sine kunnskaper på feltet. Boka er skrevet med hensyn til nybegynnere i programmering, og det forutsettes derfor ingen forkunnskaper for å kunne lese og forstå materialet. Erfarne PLS-brukere vil oppdage nye muligheter og få nyttige tips til mer effektiv og strukturert programmering. Boka inneholder også en god del om hardware, som typiske sensorer og transmittere og tilkopling av utstyr.

Dag Håkon Hanssen

PROGRAMMERBARE LOGISKE STYRINGER En praktisk tilnærming til IEC 61131-3 – Basert på CODESYS® – 4. utgave



Programmerbare Logiske Styringer En praktisk tilnærming til standarden IEC 61131-3 - basert på CoDeSys -

4. utgave

Dag Håkon Hanssen


Copyright © 2015 by Fagbokforlaget Vigmostad & Bjørke AS All Rights Reserved

ISBN: 978-82-450-1797-7

Grafisk produksjon: John Grieg AS, Bergen Formgiving og omslagsillustrasjon: Forfatteren Omslagsdesign ved forlaget

Spørsmål om denne boken kan rettes til: Fagbokforlaget Kanalveien 51 5068 Bergen Tlf.: 55 38 88 00 Faks: 55 38 88 01 e-post: fagbokforlaget@fagbokforlaget.no www.fagbokforlaget.no

Materialet er vernet etter åndsverkloven. Uten uttrykkelig samtykke er eksemplarfremstilling bare tillatt når det er hjemlet i lov eller avtale med Kopinor.


Forord Så lenge det har vært konkurrerende produsenter av PLS-er på markedet, har det vært forskjeller i programmeringsspråk fra et PLS-merke til et annet. Selv om de samme språkene, i begynnelsen Instruksjonslister (IL) og Ladder (LD), ble benyttet av de fleste produsentene, lagde alle sin egen "dialekt" av språkene. Da fysiske programmeringsterminaler ble erstattet av software-baserte programmeringsverktøy, eskalerte forskjellene mellom de ulike produsentenes løsninger. Flere programmeringsspråk så også dagens lys. Denne utviklingen var et naturlig resultat av produsentenes forsøk på å hevde seg i en stadig økende konkurranse, gjennom å utvikle de mest brukervennlige språkene og verktøyene. Da standarden IEC1 61131-3 kom ut i 1993, begynte dette å bedre seg. Standarden var et resultat av et arbeid som hadde pågått over flere år, der det beste fra ulike språk og dialekter fra forskjellige produsenter ble samlet i et dokument. Det er ikke en rigid standard i den forstand at produsentene må følge alle krav og spesifikasjoner, men mer et sett med retningslinjer som produsentene til en visse grad kan velge å følge. I dag har de fleste utstyrsprodusentene innsett fordelen med å innrette seg etter standarden. Alle større produsenter av PLS-er som Telemecanique, Wago, Mitsubishi, Kloeckner Moeller, Allen-Bradley, Omron, Siemens, etc., har derfor, i større eller mindre grad, tilpasset sine programutviklingsverktøy til IEC 61131-3. Denne boka dekker tilnærmet 100 prosent av spesifikasjonene og retningslinjene som er angitt i standarden[1]2. Boka vil derfor være interessant for alle som jobber med, eller skal lære seg, programmering av PLS-er, uansett hvilket PLS-merke de benytter. Målet er at leseren, etter å ha lest boka, skal forstå virkemåten til en PLS, kunne koble til utstyr, og programmere PLS-er på en strukturert og effektiv måte. Boka forutsetter ingen forkunnskaper i databehandling og programmering. Kommentarer og tips til innhold mottas med takk. Boka er delt inn i 5 hoveddeler: • • • • •

1

Del 1: Hardware Del 2: Metodikk Del 3: IEC 61131-3 Del 4: Programmering Del 5: Software

kapittel 1 - 3 kapittel 4 kapittel 5 – 8 kapittel 9 – 13 kapittel 14 og 15.

IEC - International Electrotechnical Committee. Denne utgaven av boka er oppdatert i henhold til 3. utgave av IEC 61131-3, utgitt februar 2013. 2 Standarden [1] introduseres i kapittel 5.


Kapittel 1 inneholder litt historikk og en kort beskrivelse av oppbygning og virkemåte for PLS-er generelt. Kapittel 2 og 3 gir et grunnlag i digitale og analoge signaler, og utstyr for deteksjon, måling og manipulering av diskrete og kontinuerlige størrelser. Kapittel 4 fokuserer på metodikk for planlegging og design av strukturelle effektive program. Der gis det også en innføring i boolsk algebra. Kapittel 5 og 6 introduserer IEC-standarden og begrep som litteral, nøkkelord, datatyper, variable og adressering. Kapitel 7 og 8 dekker henholdsvis standard funksjoner og standard funksjonsblokker. Kapitlene 9 til 13 omhandler programmering: Kapittel 9 dekker programmering med Ladder (LD), kapittel 10 funksjonsblokkdiagram (FBD), kapittel 11 språket strukturert tekst (ST) og kapittel 12 dekker sekvensielle funksjonskart (SFC). Kapittel 13 inneholder noen større praktiske programmeringseksempler. De siste to kapitlene i boka omhandler programmeringsverktøy. Her har jeg valgt å fokusere på CoDeSys. Det er flere årsaker til dette; For det første følger CoDeSys standarden tilnærmet 100 prosent. Videre er CoDeSys et utstyrs-uavhengig programmeringsverktøy som per i dag brukes av mer enn 250 hardwareprodusenter. Sist men ikke minst kan programmet lastes ned gratis og det inneholder en simulator. Det meste av programkoden i boka er skrevet og testet med dette verktøyet. Jeg ønsker å takke følgende personer: - Førsteamanuensis Tormod Drengstig, Universitetet i Stavanger, for flere gode tilbakemeldinger, forslag til forbedringer, samt bidrag med noen eksempler. - Høgskolelektor Inge Vivås, Høgskolen i Bergen, som har gitt sin tillatelse til gjenbruk av noen oppgaver/eksempler (kap. 4.6.4 og oppgave 4-10 og 10-5). - Høgskolelektor Veslemøy Tyssø, Høgskolen i Oslo, for å ha lest gjennom første utgave av boka og kommet med faglige innspill. - Medarbeidere og ledelse ved Universitet i Tromsø, Institutt for Ingeniørvitenskap og Sikkerhet, for mye støtte og tålmodighet. Nytt i 4. utgave: Mange korrigeringer, rettelser og omskrivninger er foretatt. Kapittelet om verktøyet PL7Pro er fjernet i sin helhet. I stedet er det kommet til en grundigere innføring i CoDeSys versjon 2.3.x og versjon 3.5. Funksjonsblokkdiagram (FBD) har fått et større fokus. Andre tillegg som kan nevnes er: - Heltall versus flyttall i aritmetiske beregninger. - Handtering av applikasjoner med flere POU (Kall av program i ulike språk). - Testoppgaver etter hvert kapittel. - Flere eksempler. Desember 2014, Dag Håkon Hanssen


Innholdsfortegnelse 1 OM PLS-ER ................................................................................................... 3 1.1 Historikk............................................................................................................................... 4 1.1.1 Utviklingen de senere år ................................................................................................ 6 1.2 Kort om oppbygning ........................................................................................................... 8 1.2.1 Inn- og Utganger .......................................................................................................... 11 1.3 Kort om virkemåte ............................................................................................................ 15 1.3.1 Prosesskunnskap .......................................................................................................... 16 1.3.2 Standard operasjoner.................................................................................................... 18 1.3.3 Syklisk, løpende eller hendelsesstyrt eksekvering ....................................................... 20 1.4 Testoppgaver ...................................................................................................................... 22

2 DIGITALE SIGNAL OG DIGITALE INN- OG UTGANGER ......................... 23 2.1 Innledning .......................................................................................................................... 24 2.2 Terminologi ........................................................................................................................ 24 2.2.1 Diskret, digital, logisk og binær ................................................................................... 24 2.2.2 Sensor, transduser og transmitter ................................................................................. 26 2.3 Brytere ................................................................................................................................ 28 2.3.1 Endebrytere .................................................................................................................. 28 2.3.2 Sikkerhetsinnretninger ................................................................................................. 29 2.3.3 Magnetbrytere .............................................................................................................. 30 2.4 Logiske sensorer ................................................................................................................ 30 2.4.1 Induktive sensorer ........................................................................................................ 32 2.4.2 Kapasitive sensorer ...................................................................................................... 33 2.4.3 Fotoceller ..................................................................................................................... 35 2.4.4 Ultralydsensorer ........................................................................................................... 38 2.4.5 Roterende givere (Encodere) ....................................................................................... 39 2.4.6 Andre deteksjonsprinsipper og sensorer ...................................................................... 43 2.5 Tilkopling av logiske sensorer .......................................................................................... 45 2.5.1 Sink/Source .................................................................................................................. 47 2.5.2 Velg sensor med riktig type utgang ............................................................................. 49 2.6 Egenskaper til diskrete innganger ................................................................................... 50 2.7 Diskrete aktuatorer ........................................................................................................... 52


ii

INNHOLDSFORTEGNELSE 2.7.1 Reléer og kontaktorer................................................................................................... 52 2.7.2 Solenoider og magnetventiler ...................................................................................... 54 2.7.3 Transistorutganger vs. Reléutganger............................................................................ 56

2.8 Testoppgaver ...................................................................................................................... 59

3 ANALOGE SIGNALER OG TILKOPLING AV ANALOGT UTSTYR .......... 61 3.1 Innledning .......................................................................................................................... 62 3.2 Digitalisering av analoge signal. ....................................................................................... 62 3.2.1 Filtrering ...................................................................................................................... 63 3.2.2 A/D - konvertering ....................................................................................................... 64 3.3 Analog instrumentering .................................................................................................... 68 3.3.1 Om sensorer ................................................................................................................. 69 3.3.2 Standard signalformat .................................................................................................. 69 3.3.3 Om standarden 4 – 20 mA ........................................................................................... 70 3.3.4 Noen andre egenskaper til sensorer ............................................................................. 71 3.4 Temperaturfølere .............................................................................................................. 72 3.4.1 Termoelement .............................................................................................................. 72 3.4.2 PT100 / NI1000 ........................................................................................................... 73 3.4.3 Termistorer .................................................................................................................. 74 3.5 Tilkobling ........................................................................................................................... 75 3.5.1 Om støy, tap og kabling ............................................................................................... 75 3.5.2 Tilkobling av sensorer ................................................................................................. 78 3.5.3 Tilkobling av PT100 (RTD) ........................................................................................ 79 3.5.4 Tilkobling av termoelement ......................................................................................... 83 3.6 Egenskaper til analoge inngangsmoduler ........................................................................ 84 3.6.1 Måleområder og digitalisering: Oppløsning ................................................................ 84 3.6.2 Viktige egenskaper og parametere ............................................................................... 86 3.7 Analoge utgangsmoduler og standard signalformat ....................................................... 87 3.8 Testoppgaver ...................................................................................................................... 89

4 STRUKTURERT DESIGN............................................................................ 93 4.1 Innledning .......................................................................................................................... 94 4.2 Tallsystem........................................................................................................................... 94 4.2.1 Det desimale tallsystem ............................................................................................... 94 4.2.2 Det binære tallsystem................................................................................................... 95


INNHOLDSFORTEGNELSE

iii

4.2.3 Det heksadesimale tallsystem ...................................................................................... 95 4.2.4 Binærkodede desimaltall.............................................................................................. 97 4.2.5 Omregning mellom tallsystem ..................................................................................... 98 4.3 Digital logikk .................................................................................................................... 100 4.4 Boolsk design.................................................................................................................... 104 4.4.1 Logiske funksjonsuttrykk .......................................................................................... 104 4.4.2 Boolsk algebra ........................................................................................................... 106 4.5 Sekvensiell design ............................................................................................................ 110 4.5.1 Flytskjema ................................................................................................................. 110 4.5.2 Eksempel: Flytskjema for blandeprosess ................................................................... 113 4.5.3 Eksempel: Flytskjema for automatisert pakkelinje .................................................... 115 4.5.4 Sekvensdiagram ......................................................................................................... 121 4.5.5 Eksempel: Sekvensdiagram for blandeprosessen....................................................... 125 4.5.6 Eksempel: Batch-prosess ........................................................................................... 126 4.6 Tilstandsbasert design ..................................................................................................... 128 4.6.1 Hvorfor bruke tilstandsdiagram? ............................................................................... 128 4.6.2 Tilstandsdiagram........................................................................................................ 129 4.6.3 Eksempel: Batch-prosess ........................................................................................... 133 4.6.4 Eksempel: Nivåprosess .............................................................................................. 134 4.6.5 Eksempel: Pakkeanlegg for epler............................................................................... 137 4.7 Oppsummering ................................................................................................................ 140 4.8 Testoppgaver .................................................................................................................... 141

5 INTRODUKSJON TIL STANDARDEN IEC 61131-3 ................................. 149 5.1 Innledning ........................................................................................................................ 150 5.1.1 Svakheter med tradisjonelle PLS-er........................................................................... 151 5.1.2 Forbedringer med IEC 61131-3 ................................................................................. 152 5.1.3 Om implementering av standarden ............................................................................ 153 5.2 Kort presentasjon av språkene ....................................................................................... 155 5.2.1 Strukturert tekst ......................................................................................................... 155 5.2.2 Funksjonsblokk diagram ............................................................................................ 155 5.2.3 Ladderdiagram ........................................................................................................... 156 5.2.4 Instruksjonslister ........................................................................................................ 157 5.2.5 Sekvensielle funksjonskart ........................................................................................ 158 5.3 Programstrukturen i IEC 61131-3 ................................................................................. 159 5.3.1 Eksempel på en konfigurasjon ................................................................................... 162 5.4 Programbehandling ......................................................................................................... 163


iv

INNHOLDSFORTEGNELSE 5.4.1 Utvikling av programmeringsspråk ........................................................................... 163 5.4.2 Fra kildekode til maskinkode ..................................................................................... 164

5.5 Testoppgaver .................................................................................................................... 169

6 IEC 61131-3: FELLES SPRÅKELEMENT ................................................ 171 6.1 Innledning ........................................................................................................................ 172 6.2 Identifikatorer, nøkkelord og kommentarer ................................................................. 172 6.2.1 Identifikatorer ............................................................................................................ 172 6.2.2 Nøkkelord .................................................................................................................. 174 6.2.3 Kommentarer ............................................................................................................. 174 6.3 Om variable og datatyper ............................................................................................... 176 6.4 Pragmas og Litteral ......................................................................................................... 177 6.4.1 Litteral ....................................................................................................................... 177 6.5 Datatyper .......................................................................................................................... 178 6.5.1 Numeriske og binære datatyper ................................................................................. 178 6.5.2 Datatyper for tid og varighet ...................................................................................... 183 6.5.3 Tekststrenger.............................................................................................................. 185 6.5.4 Generiske datatyper ................................................................................................... 187 6.5.5 Brukerdefinerte datatyper .......................................................................................... 189 6.6 Variable ............................................................................................................................ 193 6.6.1 Konvensjonell adressering ......................................................................................... 193 6.6.2 Variabeldeklarering med IEC 61131-3 ...................................................................... 196 6.6.3 Lokale vs. global variable .......................................................................................... 198 6.6.4 Inngangs- og utgangsvariable .................................................................................... 199 6.6.5 Andre variabeltyper ................................................................................................... 201 6.7 Direkte adressering ......................................................................................................... 201 6.7.1 Adresseringsstruktur .................................................................................................. 201 6.7.2 I/O-adressering .......................................................................................................... 204 6.8 Variable vs. I/O-adresser ................................................................................................ 204 6.8.1 Uspesifiserte I/O-adresser .......................................................................................... 205 6.9 Deklarering av multi-element-variable .......................................................................... 207 6.9.1 Tabeller ...................................................................................................................... 207 6.9.2 Datastrukturer ............................................................................................................ 209 6.10 Testoppgaver .................................................................................................................. 212


INNHOLDSFORTEGNELSE

v

7 FUNKSJONER........................................................................................... 215 7.1 Innledning ........................................................................................................................ 216 7.2 Om Funksjoner ................................................................................................................ 216 7.3 Standardens funksjoner .................................................................................................. 218 7.3.1 Tilordning .................................................................................................................. 219 7.4 Boolske operasjoner ........................................................................................................ 220 7.5 Aritmetiske funksjoner ................................................................................................... 221 7.5.1 Overflyt ...................................................................................................................... 223 7.6 Sammenligning ................................................................................................................ 223 7.7 Numeriske operasjoner ................................................................................................... 225 7.7.1 Eksekveringsprioritet ................................................................................................. 227 7.8 Utvalg ................................................................................................................................ 228 7.9 Typeomforming ............................................................................................................... 229 7.10 Bitstrengfunksjoner ....................................................................................................... 230 7.11 Tekststrengfunksjoner .................................................................................................. 232 7.12 Definering av nye funksjoner ....................................................................................... 234 7.13 EN/ENO .......................................................................................................................... 235 7.14 Testoppgaver .................................................................................................................. 237

8 FUNKSJONSBLOKKER ........................................................................... 239 8.1 Innledning ........................................................................................................................ 240 8.1.1 Standardens funksjonsblokker ................................................................................... 240 8.2 Deklarering og kall av funksjonsblokker ...................................................................... 240 8.3 Funksjonsblokker for flankedeteksjon .......................................................................... 242 8.4 Hukommelser (Bistabile element) .................................................................................. 243 8.5 Timere............................................................................................................................... 244


vi

INNHOLDSFORTEGNELSE

8.6 Tellere ............................................................................................................................... 246 8.6.1 Oppteller .................................................................................................................... 246 8.6.2 Nedteller .................................................................................................................... 247 8.6.3 Opp-/Nedteller ........................................................................................................... 248 8.7 Definering av nye funksjonsblokker .............................................................................. 249 8.7.1 Innkapsling av kode ................................................................................................... 249 8.7.2 Andre ikke-standardiserte funksjonsblokker ............................................................. 251 8.8 Program............................................................................................................................ 253 8.8.1 Programkall................................................................................................................ 253 8.8.2 Eksekveringskontroll ................................................................................................. 255 8.9 Testoppgaver .................................................................................................................... 256

9 LADDER (LD) ............................................................................................ 259 9.1 Innledning ........................................................................................................................ 260 9.2 Programstruktur ............................................................................................................. 260 9.2.1 Kontakter og betingelser ............................................................................................ 261 9.2.2 Spoler og aksjoner ..................................................................................................... 262 9.2.3 Grafiske elementer - En oversikt ............................................................................... 264 9.3 Boolske operasjoner ........................................................................................................ 265 9.3.1 OG/ELLER betingelser.............................................................................................. 265 9.3.2 Holdeelement ............................................................................................................. 267 9.3.3 Flankedetekterende kontakter .................................................................................... 271 9.3.4 Eksempel: Styring av en blandeprosess. .................................................................... 272 9.4 Regler for eksekvering .................................................................................................... 275 9.4.1 En utgang – flere betingelser ..................................................................................... 275 9.4.2 Eksekveringsordenens betydning............................................................................... 277 9.4.3 Etiketter, kommentarer og hopp. ............................................................................... 278 9.5 Bruk av standard funksjoner i Ladder .......................................................................... 279 9.6 Utvikling og bruk av egne funksjonsblokker i LD........................................................ 281 9.7 Strukturert programmering i Ladder ........................................................................... 284 9.7.1 Flytskjema vs. RS-basert LD-kode ............................................................................ 288 9.7.2 Tilstandsdiagram vs. RS-basert LD-kode .................................................................. 294 9.8 Oppsummering ................................................................................................................ 301 9.9 Testoppgaver .................................................................................................................... 303


INNHOLDSFORTEGNELSE

vii

10 FUNKSJONSBLOKKDIAGRAM (FBD) .................................................. 307 10.1 Innledning ...................................................................................................................... 308 10.2 Programstruktur ........................................................................................................... 308 10.2.1 Begreper................................................................................................................... 309 10.3 Eksekveringsrekkefølge og løkker ............................................................................... 310 10.3.1 Etiketter og hopp...................................................................................................... 311 10.4 Egendefinerte funksjoner og funksjonsblokker .......................................................... 312 10.5 Heltallsdivisjon .............................................................................................................. 314 10.6 Sekvensiell programmering med FBD ......................................................................... 318 10.7 Testoppgaver .................................................................................................................. 320

11 STRUKTURERT TEKST (ST).................................................................. 325 11.1 Innledning ...................................................................................................................... 326 11.2 Generelt om ST .............................................................................................................. 327 11.2.1 Programstruktur ....................................................................................................... 327 11.3 Standardfunksjoner og operatorer .............................................................................. 329 11.3.1 Tilordning ................................................................................................................ 330 11.4 Kall av funksjonsblokker .............................................................................................. 331 11.4.1 Flankedeteksjon og hukommelser............................................................................ 331 11.4.2 Timere ...................................................................................................................... 335 11.4.3 Tellere ...................................................................................................................... 336 11.5 IF-setninger .................................................................................................................... 337 11.6 CASE-setninger ............................................................................................................. 339 11.7 ST-kode basert på tilstandsdiagram ............................................................................ 341 11.7.1 Eksempel: Kode for nivåprosessen på side 134 ....................................................... 344 11.8 Løkker ............................................................................................................................ 346 11.8.1 WHILE … DO... END_WHILE .............................................................................. 346 11.8.2 FOR … END_FOR.................................................................................................. 347 11.8.3 REPEAT … END_REPEAT ................................................................................... 348 11.8.4 Instruksjonen EXIT.................................................................................................. 348


viii

INNHOLDSFORTEGNELSE

11.9 Eksempel: Definering og kall av funksjon ................................................................... 349 11.10 Testoppgaver ................................................................................................................ 350

12 SEKVENSIELLE FUNKSJONSKART (SFC) .......................................... 355 12.1 Innledning ...................................................................................................................... 356 12.1.1 Generelt om SFC ..................................................................................................... 356 12.2 Struktur og grafikk ....................................................................................................... 357 12.2.1 Oversikt - Grafiske symboler ................................................................................... 359 12.2.2 Alternative sekvenser ............................................................................................... 360 12.2.3 Samtidige sekvenser ................................................................................................ 361 12.3 Trinn (eng: Steps) .......................................................................................................... 362 12.3.1 Trinnadresser ........................................................................................................... 363 12.3.2 SFC i tekstform (for spesielt interesserte…)............................................................ 364 12.4 Transisjoner (eng: Transitions) .................................................................................... 365 12.4.1 Alternativ definering av transisjoner........................................................................ 366 12.5 Aksjoner (eng: Actions)................................................................................................. 368 12.5.1 Aksjonstyper ............................................................................................................ 369 12.5.2 Aksjonskontroll........................................................................................................ 370 12.5.3 Alternativ deklarering og bruk av aksjoner.............................................................. 372 12.6 Kontroll av diagram-utførelsen .................................................................................... 374 12.7 God designteknikk ......................................................................................................... 375 12.8 Testoppgaver .................................................................................................................. 378

13 EKSEMPLER ........................................................................................... 383 13.1 Eksempel 1 – PID- regulator – Funksjonsblokk – ST ................................................ 384 13.2 Eksempel 2 – Stikkprøvetaking – SFC ........................................................................ 386 13.3 Eksempel 3 – Produktkontroll – SFC .......................................................................... 390 13.4 Eksempel 4 – Foringsautomat - ST/SFC/FBD ............................................................ 396 13.4.1 Planlegging og strukturering .................................................................................... 397 13.4.2 Alternativ 1 – SFC ................................................................................................... 398 13.4.3 Alternativ 2 – ST/FBD ............................................................................................. 401


INNHOLDSFORTEGNELSE

ix

14 CODESYS 2.3 .......................................................................................... 407 14.1 Innledning ...................................................................................................................... 407 14.2 Oppstart av programmet .............................................................................................. 408 14.2.1 Et prosjekts innhold ................................................................................................. 410 14.3 Konfigurering av (Wago) PLS...................................................................................... 411 14.4 Kommunikasjon mot PLS............................................................................................. 414 14.4.1 Gateway-serveren .................................................................................................... 415 14.4.2 Lokal tilkopling via Service-kabel ........................................................................... 416 14.4.3 Via Ethernet ............................................................................................................. 417 14.4.4 Kommunisere med PLS tilkoplet en annen PC i nettet ............................................ 419 14.5 Bibliotek ......................................................................................................................... 421 14.6 Definere en POU ............................................................................................................ 422 14.7 Programmering i FBD/LD ............................................................................................ 423 14.7.1 Deklarering av variable ............................................................................................ 423 14.7.2 Programmering med FBD ........................................................................................ 426 14.7.3 Programmering med LD .......................................................................................... 427 14.8 Konfigurering av Task .................................................................................................. 430 14.9 Nedlastning og test av program .................................................................................... 431 14.9.1 Debugging................................................................................................................ 434 14.10 Globale variable og egne datatyper............................................................................ 435

15 CODESYS VERSJON 3.5........................................................................ 437 15.1 Oppstart av et nytt prosjekt ......................................................................................... 437 15.1.1 Device ...................................................................................................................... 439 15.1.2 Application .............................................................................................................. 440 15.2 Programmering og POU-er .......................................................................................... 442 15.2.1 Deklarering av variable ............................................................................................ 446 15.3 Kompilering og kjøring av prosjektet.......................................................................... 446 15.3.1 Start Gateway-server og PLS og sett opp kommunikasjon ...................................... 448 15.4 Oppgaver ........................................................................................................................ 451

STIKKORD.................................................................................................... 457



DEL 1

HARDWARE



1 Om PLS-er PLS (Programmerbare Logiske Styringer) har sin opprinnelse i relébaserte kontrollsystemer, også kalt trådbunnet logikk. Den engelske betegnelsen er PLC som står for Programmable Logic Controller1. Før PLS ble vanlig i industrien, ble all automatisk styring koplet opp av reléer2, kontaktorer, tidsur og tellere, m.m. Slike styringer krevde mye kabling og fylte gjerne store skap med elektromagnetiske reléer. Elektrikere måtte montere styringen etter et på forhånd utarbeidet reléskjema. Reléskjemaene viste hvordan alle brytere, sensorer, motorer, ventiler, reléer osv., skulle kobles sammen. Slike reléskjema er forløperen til programmeringsspråket Ladder (LD), som fremdeles er et vanlig programspråk å benytte ved programmering av PLS.

Figur 1.1 Eksempel på et relé og en timer (montert på en koblingsplate). Det er flere ulemper med slike maskinvarestyringer. I tillegg til at slike tar stor plass, er det veldig arbeids- og tidkrevende å implementere og å gjøre endringer på slike anlegg. En reléstyring kunne gjerne bestå av hundrevis av reléer som var koplet sammen, med ledninger på kryss og tvers. Dersom den logiske funksjonen skal endres eller utvides, må hele den fysiske styringen kobles om, noe som selvfølgelig er også er kostbart i form av arbeidstid. Da reléene var elektromekaniske innretninger, hadde de også en begrenset levetid, noe som førte til hyppige driftsstanser med påfølgende utskiftinger. Det fantes heller ingen mulighet for testing før styringen var koblet opp. Testingen måtte derfor foregå ved å kjøre anlegget. Dersom det var en liten feil i skjemaet, eller elektrikeren koblet en ledning feil, kunne dette få dramatiske følger.

1

Opprinnelig ble betegnelsen PC – Programmable Controller – benyttet. Det skapte naturlig nok forvirring når Personal Computer ble et velkjent begrep. 2 Et relé er en elektromekanisk komponent som fungerer som en elektrisk bryter. En liten strøm (såkalt styrestrøm) aktiverer bryteren slik at en større strøm koples til eller fra.


4

OM PLS-ER

1.1 Historikk Den første PLS kom i kommersiell produksjon etter at General Motors etterlyste en erstatning for reléstyringene. Økt konkurranse og større krav fra kundene krevde større effektivitet, og et naturlig trinn var å få et softwarebasert system som kunne erstatte reléene. Kravet var at det nye systemet måtte kunne: - Konkurrere på pris (med tradisjonelle reléstyringer) - Være fleksibelt - Tåle påkjenninger - Være modulært med hensyn til antall inn- og utganger1 - Være lett å programmere og omprogrammere Flere firma startet arbeidet med å utarbeide en løsning på problemet. Firmaet Bedford Associates, fra Bedford i Massachusetts, foreslo noe de kalte en ”Modular Digital Controller” (MODICON). MODICON 0842 var den første PLS som ble satt i kommersiell produksjon. Nøkkelen til suksessen var trolig programmeringsspråket, Ladder, som var basert på de reléskjema som elektrikerne kjente fra før. I dag er det ikke spørsmål om man skal benytte programmerbare styringer, men snarere hvilken type man skal velge. De første PLS-ene var relativt enkle i den forstand at deres funksjon var å erstatte relélogikk og ingenting annet. Etter hvert ble mulighetene større og større og funksjoner som tellere og tidsforsinkelser kom til. Neste trinn i utviklingen var analoge I/O og aritmetiske funksjoner som for eksempel komparatorer og adderer. Med utviklingen av halvlederteknologien og integrerte kretser fikk programmerbare styringer bred innpass i industrien. Spesielt da mikroprosessoren kom på markedet på begynnelsen av 1970-tallet, skjøt utviklingen virkelig fart. Med dagens PLS-er følger utviklingsverktøy, i form av software, med alle tenkelige ferdige funksjoner. Eksempler er programkode for handtering av kommunikasjon samt prosessfunksjoner, som PID-regulatorer, servostyring, aksestyring, etc. Det er med andre ord samme utviklingsforløp som for PC. I dag produseres det PLS-er som er på størrelse med et enkelt gammeldags relé!

1

Med dette menes at det måtte være mulig å øke antall inn- og utganger ved å sette inn ekstra moduler/kort/ blokker. For å kunne tilby billigere utstyr, finnes det likevel mange PLS-er som ikke er modulære. 2 084 henspiller på at det var det 84. prosjektet til selskapet. Selskapet etablerte etter dette et nytt firma (MODICON) som fokuserte på å produsere PLS-er.


OM PLS-ER

Figur 1.2 Omron Sysmac C20 – Ikke-modulær PLS med diskrete I/O og programmeringsterminal.

Figur 1.3 PLS-er av ulik størrelse fra Telemecanique.

Figur 1.4 Nyere generasjon PLS fra Wago med Profibus coupler og I/O.

5


6

OM PLS-ER

På kommunikasjonssiden var det også en rask utvikling. Det meldte seg fort behov for PLS-er som kunne snakke sammen og som kunne plasseres et stykke unna selve produksjonslinjene. Rundt 1973 utviklet Modicon en kommunikasjonsprotokoll som de kalte Modbus. Dette gjorde det mulig å opprette kommunikasjon mellom PLS-er og PLS-ene kunne også plasseres unna selve produksjonen. Modicon Modbus åpnet også for handtering av analoge signal. Etter hvert som det ble flere produsenter av PLS-er og tilhørende utstyr, ble det også utviklet flere proprietære1 og ikke-proprietære kommunikasjonsprotokoller. Mangelen på standardisering, sammen med en kontinuerlig teknologisk utvikling, gjorde at PLS kommunikasjon ble et mareritt av inkompatible protokoller og ulike fysiske nettverk. Også i dag er dette et problem selv om produsentene nå tilbyr løsninger for kommunikasjon over et utvalg kjente og standardiserte protokoller. Flere programmeringsspråk er også kommet til etter hvert. Tidligere var som nevnt språket Ladder (LD), ensbetydende med PLS-programmering. Instruksjonslister (IL) var også et tidlig språk som har mange likhetstrekk med assemblerspråket som benyttes til programmering av mikroprosessorer. Etter hvert er blant annet det grafiske språket Sequential Function Chart (SFC) kommet til. Dette er spesielt utviklet for implementering av sekvensielle styringer.

1.1.1 Utviklingen de senere år Alle de nevnte språkene omfattes av den internasjonale standarden IEC 61131-3 [1]. Standarden definerer også det grafiske språket Function Block Diagram (FBD) og det tekstbaserte språket Strukturert Tekst (ST). FBD har en symbolpalett som er basert på kjente symboler og funksjoner fra digitalteknikk. ST er et høynivåspråk som gir assosiasjoner til Pascal og C. Før standarden IEC 61131-3 kom, og i mange år etterpå, var det relativt store ulikheter mellom PLS-er fra ulike produsenter. Dette gjaldt spesielt mulighetene for valg av programmeringsspråk og hvordan de språkene som var implementert i PLS-ene var konstruert. Produsentene har i de siste årene, til glede for brukere, begynt å følge IEC 61131-3 i større og større grad. Dette gjør det lettere å gå over fra ett PLS-merke til et annet, i tillegg til at kundene til en viss grad vet hva de får. Det finnes også en del programvarebaserte PLS-er (soft PLC) på markedet i dag. Som navnet indikerer, er dette software beregnet for å kontrollere prosesser direkte fra en PC. Utfordringen har vært å lage systemene tilstrekkelig pålitelige og robuste. Industrien er generelt kritisk til slike løsninger, blant annet ut fra erfaring med mange datakrasj.

1

En proprietær protokoll eies av den produsenten som har utviklet den. Kildekoden er ikke fritt tilgjengelig. En ikke-proprietær protokoll er enten en standard protokoll eller en åpen protokoll som er så utbredt av mange produsenter lager utstyr for kommunikasjon over en slik protokoll.


OM PLS-ER

7

En annen amfibieløsning som er mulig, er å kjøpe et kort til datamaskinen der programkoden kan lastes inn. Kortet er laget for å kunne fortsette jobben selv om datamaskinen skulle krasje. I de senere årene har produsenter benyttet store ressurser til utvikling av løsninger for tilknytting av instrumenter og aktuatorer i nettverk. Slike kommunikasjonsbusser kalles feltbusser, referert til at det er kommunikasjon mellom feltinstrumenter, altså nede på prosessnivå. Flere standarder og de facto1 standarder finnes på markedet. Arbeidet med en IEC-standard for feltbuss startet allerede i 1984/1985. Kravet var naturlig nok at standarden skulle være en åpen feltbussløsning for industriell automatisering. Den skulle dekke enheter som motorstyringer, desentralisert I/O og PLS, i tillegg til prosessindustriens DCS-systemer (Distributed Control Systems) og feltinstrumenter. Videre var målet at standarden skulle dekke alle aktuelle områder som byggautomatisering, prosessautomatisering og generell industriautomatisering. Først på slutten av 1999 kom aktørene frem til en enighet. Resultatet ble at hele 8 (til dels ulike) systemer inngår i standarden som heter IEC 61158. Det er med andre ord ingen åpen løsning. Selv om produsentene og leverandørene argumenter med at det er bra for brukerne å ha valgmuligheter, gjør ikke denne enigheten hverdagen særlig lettere for ingeniører og andre som jobber med automatisering. Flere av de store produsentene tilbyr i dag integrerte løsninger med I/O-moduler for alle de større feltbuss-standardene, der en kontroller (PLS) eller en Gateway handterer kommunikasjon mot de ulike standardene samtidig. En annen trend er at produsenter av utstyr og kommunikasjonsløsninger tilbyr mer og mer utstyr for trådløs kommunikasjon (Ethernet). Det nye her er at dette også omfatter enkeltsensorer og enkeltinstrumenter. Dermed er det mulig å implementere trådløse systemer helt ut til sensornivå.

1

De facto er et latinsk uttrykk som betyr «faktisk» eller «i virkeligheten». De facto er det motsatte av de jure som betyr «etter lov». Hvis noe er de facto betyr det at det er allment anerkjent. En de facto standard er altså en standard som er så utbredt at alle følger den, som om det skulle være en autorisert standard. (Kilde: Wikipedia)


8

OM PLS-ER

1.2 Kort om oppbygning Det finnes som sagt veldig mange typer PLS på markedet. Hundrevis av produsenter som i sitt sortiment har PLS-er av ulik størrelse. De minste PLS-ene har relativt liten minnekapasitet og regnekraft, og har som regel begrensede eller ingen mulighet for utvidelse av antall I/O. De største har prosessorkraft på linje med kraftige datamaskiner, har et stort antall I/O, og takler også multitasking1. Slike PLS-er har gjerne også en overordnet funksjon (Master) i industrielle datanettverk, der mindre PLS-typer kan inngå som slaver. Dersom vi gjør en forenkling kan vi si at en PLS fungerer på samme måte som en datamaskin. Skjematisk kan vi dele en PLS opp i 6 hoveddeler som vist i figur 1.5. Strømforsyning Brytere Sensorer etc.

Innganger

Sentralenhet (CPU) Minne

Utganger

Motorer Ventiler Pumper Lys Alarmer

Kommunikasjon

Figur 1.5 Blokkskjematisk fremstilling av en PLS. Hoveddelene består altså av en sentral prosesseringsenhet (eng: CPU - Central Processing Unit), minne, strømforsyning, kretsmoduler for å motta og sende ut data (I/O-enheter) og kommunikasjonsmoduler. Her kunne vi kanskje også føyd til display/ indikatorlys siden de fleste PLS-er i har et sett med LED-lys som viser tilstanden til PLS-en og/eller til de diskrete I/O-ene. Noen har også display som kan gi ytterligere informasjon. For at vi skal forstå hvordan en PLS opererer og fungerer, er det nødvendig å se litt nærmere på hovedkomponentene. Hovedenhetene er knyttet sammen med ledninger/kopperbaner som kalles busser. All kommunikasjon mellom hoveddelene i PLS-en foregår via disse bussene. En buss er en samling av et antall ledere, for eksempel 8, der informasjonen overføres binært (1 bit per leder parallelt). Typisk vil en PLS ha 4 busser: Adressebuss, databuss, kontrollbuss og systembuss: • Databussen brukes for overføring av data mellom CPU, minne og I/O. • Adressebussen brukes for å overføre adressene til hvor i minnet data skal hentes eller sendes. En adresse kan angi for eksempel plasseringen til et ord i 1

Kan kjøre flere parallelle programsesjoner samtidig.


OM PLS-ER

9

et bestemt register. En adressebuss på 16 linjer kan overføre 216 = 65536 ulike adresser. • Kontrollbussen brukes til synkronisering og styring av trafikkretningen. • Systembussen brukes til I/O-kommunikasjon. CPU (sentral prosesseringsenhet) Dette er hjernen i PLS-en. Her utføres alle instruksjonene og beregninger og den styrer informasjonsflyten og hvordan programmene utføres. Som regel er CPU-en en del av en fysisk blokk som også inneholder minne, kommunikasjonsporter, statuslys og iblant strømforsyningen. Minne Størrelsen på minnet varierer fra et PLS-merke til et annet, men minnet kan ofte utvides ved å montere et ekstra minnekort, for eksempel i PCMCIA-format. En PLS vil vanligvis ha følgende hukommelser: • ROM (Read Only Memory) for permanent lagring av operativsystem og systemdata. Siden den lagrede informasjonen i et ROM normalt ikke kan slettes, benyttes EPROM (Erasable Programmable ROM) til dette formålet. Dermed blir det mulig å oppdatere PLS-ens operativsystem. • RAM (Random Access Memory) for lagring av program. Dette fordi at RAM er veldig raskt. Siden informasjon i et Ram ikke kan opprettholdes uten strøm, og for at ikke programkoden skal gå tapt ved et strømbrudd, har PLS-er batteri. Enkelte PLS-er har også mulighet for lagring av program i EPROM. RAM benyttes også under kjøring av programkoden. Dette brukes for eksempel til mellomlagring av data, for eksempel I/O-verdier, og tilstander til timere/tellere. • Enkelte PLS-er tilbyr mulighet for å sette inn ekstra minne. Da benyttes ofte EPROM, eventuelt EEPROM1. Figur 1.6 viser et typisk minnekart for en PLS som har EPROM for sikkerhetskopi av programmet.

1

Den første E’en i EEPROM står for Electrical og viser til at data kan slettes elektronisk i stedet for med ultrafiolett lys som benyttes til å slette data i EPROM.


10

OM PLS-ER

ROM

Operativsystem Data

Innebygd RAM

Program Konstanter

FLASH EPROM

Brukerprogram Backup

Figur 1.6 Typisk minnekart. Kommunikasjonsenhet Kommunikasjonsenheten inneholder blant annet en eller flere protokoller for handtering av kommunikasjon. Alle PLS-er har en tilkopling for programmeringskabel og eventuelt for operatørpanel, skrivere, eller nettverk. Ulike fysiske standarder benyttes, både på programmeringsporten og på portene for tilkopling av annet utstyr. Dagens PLS-er programmeres som regel fra en vanlig PC med et programmeringsverktøy utviklet for den aktuelle typen PLS. Derfor foregår programmeringen som regel via RS232, RS485 eller USB. Sistnevnte blir naturlig nok mer og mer vanlig da den erstatter PC-ens RS232 porter. Det er ikke alltid nødvendig med en direktekopling mellom PLS og PC for overføring av programkoden til PLS-en. Dette er imidlertid mest vanlig - i alle fall for mindre systemer. Iblant kan programmeringen skje via et nettverk bestående av flere PLS-er og annet utstyr, eller via Ethernet. Noen PLS-er har også innebygd webserver. Utviklingen av instrumenteringsbusser har medført at PLS-produsenter også leverer innebygde, eller modulære, løsninger for kommunikasjon via et stort antall ulike protokoller. Eksempler på slike er AS-i buss, PROFIBUS, Modbus og CANbus. Dagens utvikling går mot utstrakt bruk av Ethernet som protokoll for høyhastighetskommunikasjon, og flere og flere leverandører tilbyr løsninger for dette.

Strømforsyning Alle PLS-er må tilkoples forsyningspenning. Som regel er strømforsyningen en utskiftbar modul, men enkelte mindre PLS-er har strømforsyningen som en integrert del av prosessor- og kommunikasjonsmodulen. Selv om elektronikken i PLS-en opererer på 5 volt, er det uhensiktsmessig å bruke dette som driftsspenning. De fleste leverandører leverer derfor kraftforsyninger i flere utgaver: 220 Volt AC, 110 Volt AC og 24 Volt DC. Dersom det ikke er tilgang til nettspenning (220V, 50Hz) i området PLS-


OM PLS-ER

11

en plasseres, kan en variant med 24V DC være løsningen. Det er som regel tilgang til 24V ute i anlegget, da dette spenningsnivået er standard for de fleste sensorer og transmittere. Fordelen med å kunne benytte en kraftforsyning som tilkobles nettspenningen, er at det ofte er 24V uttak på disse som kan benyttes til driftsspenning for sensorer. Det er hensiktsmessig at strømforsyningen er en utskiftbar modul. Dermed kan den byttes ut om PLS-en skal benyttes et annet sted i prosessen der det ikke er tilgang til samme spenningsnivå.

1.2.1 Inn- og Utganger Dette er en PLS sin kontakt med omverdenen. For en modulær PLS, inngår alle innog utganger i blokker eller moduler som er konstruert for å ta imot ulike typer signaler og å sende ut signaler på ulike format. Det finnes inngangsblokker for diskrete signal, analoge signal, termoelement og termokoplere, encodere, og så videre. Videre finnes ulike utgangsblokker for diskrete og analoge signal samt blokker for spesielle formål. Hver inngang og utgang har en unik adresse som kan benyttes i programkoden. I/Omodulene sørger for elektrisk isolasjon for å beskytte PLS-en, og har ofte innebygde funksjoner for signalbehandling. Dette gjør at inn- og utsignaler som regel kan koples direkte til uten å måtte bruke ekstra elektroniske kretser. Kapittel 2 omhandler diskrete signaler, sensorer og aktuatorer, og i kapittel 3 er temaet analoge signaler og standard signalformat. På de neste sidene følger derfor bare en generell innføring om PLS-ens innganger og utganger. Figur 1.7 på neste side viser en skisse av et prosessavsnitt som kontrolleres av en PLS. På figuren er det tegnet inn diverse signalkabler for illustrasjonen skyld. Prosessen er utstyrt med 3 trykktransmittere og 1 strømningsmåler (flow transmitter). Disse utgjør inngangssignalene til PLS-en i figuren. Basert på blant annet disse målingene, er PLS-en programmert til å kontrollere 2 pumper. Signalene til pumpene utgjør altså utgangssignalene fra PLS-en. Figuren viser også et eksempel på hvordan et PLS-“rack” kan være satt sammen. Fra venstre mot høyre finnes her: - Selve kontrolleren (CPU, minne, statuslamper, etc.) med innebygd Ethernet (Enheten har i dette tilfellet også innebygd webserver) - En strømforsyning (kan forsyne sensorer og annet mindre utstyr) - I/O-moduler (Digitale utganger, telle-modul, analoge inn- og utganger) - Endemodul som terminerer den interne kommunikasjonsbussen


12

OM PLS-ER

Outputs

Controller med Ethernet-kopler Tilkopling av servicekabel og plass til ekstra minne

Inputs

Endemodul Diverse I/O-moduler Strømforsynings-modul

Figur 1.7 Illustrasjon av et prosessavsnitt som styres av en PLS.


OM PLS-ER

13

1.2.1.1 Innganger Diskrete inngangssignaler har som regel et potensial på 24V DC, mens den interne spenningen i PLS-en er 5V. For å beskytte elektronikken i PLS-en, benyttes vanligvis optokoplere (optiske isolatorer) i inngangsmodulene. En optokopler består i hovedsak av en LED (lysemitterende diode) og en fototransistor1. Figur 1.8 illustrerer prinsippet. Dioden og transistoren er elektronisk separert, men lys kan passere mellom dem. Når signalet på inngangsklemmene er logisk høyt, vil den lysemitterende dioden avgi et (infrarødt) lys. Dette lyset tenner så transistoren og resulterer i et logisk høyt signal i de elektroniske kretsene i modulen, der potensialet er 5 volt. Elektronisk skille

Sensor

+ 5V

+ LED

24V

Fototransistor

_ %I - Signal til PLS

Figur 1.8 Prinsippskisse for en optokopler. Gapet mellom LED og fototransistor gjør at den ytre kretsen er elektrisk atskilt fra den indre elektronikken i modulen. Den indre elektronikken er dermed beskyttet, så selv om PLS-en internt opererer med 5V, er det mulig å benytte spenningsnivåer på inngangen fra 5 V til 230 Volt. Hvor mye strøm en enkelt inngang tåler, fremkommer av den tekniske spesifikasjonen for den aktuelle inngangsmodulen. Det er imidlertid sjelden at dette har noen betydning, siden de fleste sensorer/givere har lav driftsstrøm. Analoge signaler leses inn i PLS-en via analog-til-digital omformere (A/D-omformere). Omformerne er innebygd i de analoge inngangsmodulene/kortene. Et analogt signal blir da kontinuerlig samplet og omgjort til binære verdier. Mens det i prinsippet kun behøves 1 bit for å lagre tilstanden til diskret inngang, benyttes ofte 16 bit for å lagre verdien til en analog inngang.

1

En fototransistor er en en type bipolar transistor med en transparent innkapsling. Når basekollektor overgangen belyses tilstrekkelig, blir overgangen forspent og transistoren tenner.


14

OM PLS-ER

1.2.1.2 Utganger Standard diskrete utgangsmoduler fås ofte i tre ulike hovedtyper: 1. Relè-utganger 2. Transistorutganger 3. Triacutganger Reléutganger Denne typen utganger har den fordelen at de tåler stor belastning og kan tilkobles både DC- og AC-laster, og ulike spenningsnivå Når CPU-en setter en utgang høy, vil det tilhørende utgangs-releet i den aktuelle modulen slå inn, og den ytre kretsen hvor lasten er koplet til bli sluttet. Se figur 1.9. Reléene gjør at de små strømmene i PLS-en kan aktivere belastninger der strømmer på opptil noen ampere kan passere. I tillegg gir reléene isolasjon mellom PLS og ytre kretser. 5V

_ Utgang

%Q

~

+

Last

Figur 1.9 Prinsippskisse for en reléutgang. Transistorutganger Sammenlignet med transistorutganger er reléutganger relativt trege. En annen fordel som gjør transistorutganger populære, er at de er billigere enn reléutgangsmoduler. Som navnet antyder, benytter slike moduler transistorer for å slutte de ytre kretsene. Det er den elektroniske svitsjingen som gjør slike moduler betydelig raskere enn reléutganger, som svitsjer med mekaniske reléer1. Ulempen med transistorutganger er at de, dersom man ikke bruker et eksternt relé i tillegg, kun kan anvendes til svitsjing av DC. De tåler heller ikke feil polaritet eller særlig overbelastning. For å beskytte utgangene brukes derfor sikringer eller innebygd elektronikk. Optokoplere benyttes også for elektrisk isolasjon. Se figur 1.10 på neste side. Virkemåten til kretsen i figuren er som følger: Når utgangs-adressen settes høy av programmet, tennes den lysfølsomme transistoren. Denne tenner den neste transistoren og

1

Nå finnes det såkalte “solid state”- reléer som svitsjer elektronisk. Hvorvidt slike er blitt tatt i bruk av produsentene i produksjon av utgangsblokker med reléutganger vet jeg ikke.


OM PLS-ER

15

dermed sluttes den ytre kretsen. Seriekoplingen av transistorer (som ofte betegnes Darlington-kopling), benyttes for å øke strømstyrken på utgangstrinnet. %Q Utgang

Last + _

Com

Figur 1.10 Prinsippskisse for transistorutgang. Du kan lese mer om rele- og transistorutganger i kapittel 2.7.3. Triacutganger er ikke så vanlige. De benyttes i de tilfeller en trenger hurtig svitsjing av AC. Slike utganger er også veldig følsomme for overstrøm og beskyttes med sikringer.

1.3 Kort om virkemåte Som nevnt fungerer en PLS i prinsippet på samme måte som en PC. Det betyr at en PLS må programmeres for at den skal kunne utføre arbeid. For en PLS innebærer dette som regel å kontrollere og overvåke en prosess. Dette noe diffuse begrepet anvendes som et generelt ord for å beskrive et avgrenset fysisk miljø: − En prosess kan være rom i en bygning med varmeovner, lys og ventilasjon. Da kan en PLS ha som oppgave å kontrollere fysiske størrelser som temperatur, CO2-innhold og luftfuktighet i rommene. − En prosess kan også bestå av et transportbånd med varer, sensorer, pneumatiske stempler og en etiketteringsmaskin. Oppgaven til en PLS kan da typisk være å kontrollere merkingen av varene, telle varer, sortere og gruppere. Ofte brukes ordet tilstand for å beskrive de ulike operasjonsmodi til en prosess. Hvilke tilstander en prosess har, avhenger av prosessens natur (type prosess). En prosess kan for eksempel ha følgende tilstander: Fylle tank - røre om - varme opp - tømme. Ordet tilstand kan også brukes mer spesifikt, som for eksempel at en temperatur har nådd en viss verdi. Det er også prosessens natur som avgjør hvilke sensorer og aktuatorer som behøves. Fysiske størrelser som skal registreres kan være avstand, nærhet, nivå, trykk, temperatur, strømning, hastighet, turtall, og så videre. Når sensorene som registrerer de fysiske størrelsene er koplet til en PLS inngangsmoduler, har den all informasjon som


16

OM PLS-ER

er nødvendig for å kunne kontrollere og overvåke prosessen. Det som mangler da er aktuatorer og et brukerprogram. • Aktuatorers funksjon er å påvirke og å endre tilstandene til en prosess. Type prosess avgjør derfor hvilke aktuatorer som trenges. Det kan være pumper, ventiler, kontaktorer eller motorer. • Brukerprogrammet anvender tilgjengelig informasjon fra sensorer, internt lagrede data og utgangenes tilstand, til å foreta beslutninger og kalkulere nye utsignaler til aktuatorene. Programvare I de aller fleste tilfeller, eksisterer det et eget dataverktøy for utvikling av programmene. Brukeren kan sitte på kontoret og arbeide med programkoden helt til han/hun er sikker på at den kommer til å fungere i PLS-en. Mange av disse programmeringsverktøyene har innebygde funksjoner for feilsøking og simulering, noe som gjør jobben betraktelig enklere. Når brukeren er ferdig med programkoden, kan PLS-en koples til PC via en medfølgende programmeringskabel og programmet overføres fra PC til PLS. Når dette er gjort, kan PC koples fra og PLS-en er klar til å utføre sine kontrolloppgaver.

1.3.1 Prosesskunnskap Før en PLS kan programmeres, er det nødvendig med god kjennskap til den prosessen (delen av anlegget) som PLS-en skal kontrollere. En god prosessforståelse er viktig for å oppnå et godt resultat, og iblant for at styringen skal fungere overhodet. Dette kan være en tidkrevende del av jobben og forutsetter ofte tilgang til den kompetansen som driftspersonell sitter inne med. Husk at ingen kjenner en prosess bedre enn de som har sitt daglige arbeid med å drifte den! Når dette er sagt så har gjerne driftspersonalet sterke meninger om prosessen og hvordan den skal fungere/kontrolleres og dette er ikke nødvendigvis den optimale måten å gjøre ting på. Det kan være vanskelig å tenke nytt og se andre muligheter når ting har vært gjort på samme måte over lengre tid. Forsøk å fremskaffe tilgjengelig dokumentasjon som tekniske data, koblingsskjema rapporteringsskjema, avviksskjema, vedlikeholdsrutiner, etc. I/O-liste En I/O-liste utgjør en del av grunnlaget for å velge rett PLS og riktig tilbehør. I/O-lista må derfor inneholde oversikt over alle nødvendige inn- og utsignal. Det er naturlig å gruppere disse etter type, som diskrete og analoge. De analoge kan videre grupperes etter standard signalformat, som 4-20 mA, 0-10 volt, type temperatursensorer, etc. Iblant er det spesielle signalformat som stiller ekstra krav til hardware. De diskrete signalene kan også grupperes. Det finnes for eksempel tellerinnganger og egne tellermoduler som er konstruert for å registrere pulser med høyere frekvens enn


OM PLS-ER

17

hva en normal diskret inngang kan takle. Eksempel på slike hurtigskiftende signal er fra encodere som er en type utstyr som brukes ved turtalls- og posisjonsstyring. Skal inngangsblokkene være type sink eller source1? Type aktuatorer spiller inn på valg av riktig type utgangsblokker: Skal du bruke reléutganger eller transistorutganger? Hvordan skal de ulike aktuatorer forsynes? I tillegg til flyten i prosessen, ønsket oppførsel og behovet for sensorer, aktuatorer og I/O-moduler, er det også nødvendig å vurdere andre aspekter om og rundt driften: • Sikkerhet for personell • Eventuell brann- eller eksplosjonsfare • Alarmhandtering Sikkerhet Dette er et omfattende tema som jeg bare så vidt berører her. Det finnes selvfølgelig lover og forskrifter for å sikkerhet og jeg viser bare til dette. Allikevel kan du prøve å beskrive hva som skal skje ved strømbrudd, kommunikasjonsavbrudd, aktivering av stopp og nødstopp m.m. Sikkerhet for mennesker og dyr er noe som selvfølgelig må tas alvorlig. Dersom for eksempel en person setter seg fast i et drivverk, må, som et minimum, den aktuelle aktuatoren deaktiveres og en alarm gå av. Ved et strømbrudd må du avgjøre om styringen skal starte der den stoppet idet strømbruddet skjedde, eller om sekvensen skal starte på nytt. Tilsvarende ved et kommunikasjonsbrudd. Det bør ligge inne en overvåking av kommunikasjonen mellom PLS og HMI/SCADA2/operatørpanel slik at ikke styringen blir avskåret fra manuell påvirkning. De aller fleste prosessanlegg vil også ha en eller flere nødstopp, motorvern og lignende. Handteringen av slike hendelser må også beskrives for senere programmering. Dette gjelder også omkoblinger mellom auto og manuell i en regulator, selv om det ikke er like kritisk. Dette er ofte en naturlig del av prosesskontrollen. Alarmhandtering Selv om det er viktig å sette opp alarmer for å si fra om at noe er skjedd, er det ofte slik at en operatør drukner i alarmer. Gjør derfor en nøye vurdering av hvilke signaler som trengs å overvåkes spesielt, hvilke avbrudd som må håndteres av PLS-en, og hva som for eksempel et HMI skal handtere. Både alarmhandtering og sikkerhetshandtering vil ha betydning for hvordan programmet organiseres (deles opp og grupperes i kritiske og mindre kritiske programdeler).

1 2

Se kapittel 2.5.1 på side 45. Human-Machine Interface / Supervisory Control And Data Acquisition


18

OM PLS-ER

Programmessige forhold For å forenkle programmeringa, kan det allerede på dette stadiet være lurt å formulere noe om flyten i prosessen. Som regel er det sekvensielle forløp i prosessen som skal styres, og disse er det greit å identifisere. Du oppdager lett om flyten i prosessen går fra en tilstand til den neste i en bestemt rekkefølge (for eksempel fylling – oppvarming - røring – tømming). Noen ganger skal flere ting hende samtidig, altså parallelt, og noen ganger vil manuelle betjeninger eller prosess-styrte hendelser avgjøre hva som blir det neste trinn i sekvensen. Det er ofte lurt å beskrive disse sekvensene med ord og/eller ved bruk av flytskjema, tilstandsdiagram eller liknende. Hvilke signal og hendelser påvirker overgangen fra et trinn til neste i sekvensen? Hva skal utføres i de ulike trinn? Hvilke aktuatorer skal aktiveres og når skal de aktiveres? Iblant er prosessen som skal kontrolleres av en slik natur at overgangen fra en tilstand til en annen ikke følger et bestemt mønster, men foregår i et mer tilfeldig mønster. Slike systemer refereres til som kombinatoriske. (Dette til tross for at utgangenes tilstander godt kan være en funksjon av tid også.) For slike systemer kan det være aktuelt å bruke en litt annen fremgangsmåte for å utvikle algoritmene til styringen. Det finnes metoder som kan benyttes for å finne disse algoritmene på en systematisk måte, og en av disse er beskrevet i kapittel 4.

1.3.2 Standard operasjoner En prosess er i kontinuerlig endring. Selv om prosessen har nådd en stasjonær tilstand, for eksempel at væskenivået i en tank har nådd 80 %, vil det være forstyrrelser i form av trykkfall i rør, endret uttak av væske og lignende, som krever at PLS-en kontinuerlig sjekker tilstanden til innsignalene og korrigerer utsignalene. Alle PLS-er i normal driftstilstand1 utfører derfor de samme 4 operasjonene2 i en repeterende syklus: 1. Intern prosessering 2. Lese innganger 3. Programutførelse 4. Oppdatere utganger

1

Med det mener jeg en PLS som er i RUN modus. Andre typiske modus er programmering, stopp, error og diagnostisering (feilsøking). 2 Dette er en litt grov fremstilling, da CPU-en gjør mindre operasjoner i tilknytning til de som er nevnt. For eksempel sjekker CPU-en hvorvidt noen av inngangene eller utgangene er tvunget (eng: Forced) til bestemte tilstander av brukeren (programmereren). I tillegg utføres kommunikasjonsoppgaver som nevnt under Intern prosessering.


OM PLS-ER

19

Figur 1.11 Operasjoner som utføres i RUN. 1. Intern prosessering En PLS sjekker alltid sin egen tilstand før den utfører brukerrelaterte operasjoner. Ved manglende respons fra hardware som I/O- eller kommunikasjonsmoduler, gir PLS-en beskjed om dette ved å sette et eller flere flagg. Dette er interne boolske adresser som kan sjekkes av brukeren og/eller er tilknyttet display eller indikatorlys som gir beskjed til operatøren om en feiltilstand. Ved alvorlige feil, avsluttes normal operasjon og systemet går over i en feiltilstand. Feil på enkeltinnganger og enkeltutganger rapporteres også ved å sette flagg. Eksempel kan være at systemet registrerer 0 strøm på en inngang konfigurert for standard 4-20 mA signal, eller at en utgang er overbelastet. Software-relaterte handlinger som utføres i den interne operasjonen er oppdatering av klokker, endring av modus mellom run, stopp og program og nullstilling av watchdog1-tider, med mer. 2. Lese innganger I denne operasjonen kopieres inngangenes status over til minnet. Hvor lang tid dette tar, avhenger av antall inngangsmoduler og antall innganger på hver modul som er i bruk. Analoge innganger tar betydelig lengre tid å lese, da det innbefatter en digitalisering av de analoge verdiene. For at ikke dette skal redusere oppdateringsfrekvensen av 1

Dette er timere (”taimere”, tids-ur) som systemet anvender for å at utførelsen av en operasjon ikke overskrider en fastsatt makstid. Dersom systemet ikke blir ferdig med å eksekvere brukerprogrammet innen et halvt sekund, for eksempel, kan det være at programmet ikke kommer ut en while-løkke eller lignende. Dette resulterer i en error-tilstand.


20

OM PLS-ER

utgangen, venter ikke PLS-en til nye verdier er tilgjengelig, men fortsetter i stedet med neste operasjon i syklusen. Det betyr at selv om de fysiske verdiene endrer seg kontinuerlig, kan den samme avleste verdien bli benyttet hundrevis av ganger før en oppdatert verdi er tilgjengelig i minnet. Hvorfor kopiere verdiene til minnet i stedet for å lese verdiene der de anvendes i programkoden? Det er to årsaker til dette. For det første er det raskere å lese inne alle verdiene i samme operasjon. Viktigere er det at man unngår mulige problemer når samme inngangsadresse er brukt flere steder i programkoden. Dersom tilstanden på inngangen endrer seg i løpet av programutførelsen, kan dette få store konsekvenser for utfallet av programmet. Et lite minus med at inngangsverdiene leses inn samlet, er at systemet overser inngangspulser av kortere varighet enn den totale skanntiden (syklustiden). 3. Programutførelse Eksekvering av programkoden foregår primært i den rekkefølgen koden er skrevet av brukeren. Mindre programmer kan skrives i en sammenhengende blokk med kode, mens større applikasjoner krever en annen strukturering av koden. Standarden IEC 61131-3 definerer retningslinjer for angivelse av prioritet. Avbruddsrutiner og overordnede rutiner tildeles en høyere prioritet enn hovedprogrammet. Aktivering av nødstopp er en vanlig hendelse som bør forårsake avbrudd fra utførelsen av hovedprogrammet. Andre årsaker til endring av eksekveringsrekkefølgen er betingede hopp eller kall av subrutiner, funksjoner og funksjonsblokker. I løpet av programutførelsen oppdateres interne variable og utgangs-adresser i minnet. Den fysiske endringen av utgangsverdiene endres imidlertid ikke før i siste operasjon. 4. Oppdatere utganger I denne siste operasjonen i syklusen, avleses utgangsminnet slik at tilstanden og verdiene til de diskrete og analoge utgangene blir oppdatert. Vi skal senere i boka se at det faktum at utgangene først oppdateres etter at programkoden er eksekvert, kan ha betydning for hvordan programkoden skal utformes. Merk at en PLS i stoppmodus fortsatt vil utføre intern prosessering og lese inngangene. Utgangene blir enten satt til en brukerbestemt tilstand/verdi (fallback) eller opprettholde sist satte tilstand (eng: maintain)

1.3.3 Syklisk, løpende eller hendelsesstyrt eksekvering De fire operasjonene beskrevet ovenfor, repeteres som nevnt kontinuerlig. Hver gjennomgang av operasjonene kalles et skann (engelsk: scan) og tiden det tar systemet å gjennomføre et skann, kalles skanntiden eller syklustiden. Denne er proporsjonal med programmets størrelse, minnekapasitet og type prosessor. Som regel er det snakk om millisekunder, og syklusen gjentas derfor mange titalls ganger i sekundet.


OM PLS-ER

21

Den effektive skanntiden kan variere fra et skann til et neste. I et skann kan plutselig en ny hendelse ha inntruffet, som aktiverer en annen del av programkoden. Med de aller fleste PLS-typer er det dog mulig å konfigurere hvordan og hvor ofte et nytt skann skal utføres. En kontroll med måten programmene utføres på, oppnås gjennom å knytte programmene til en Task1. De 3 vanlige måtene en Task eksekveres på er: - Syklisk - løpende (eng. Freewheeling) - Hendelsesstyrt Syklisk eksekvering er basert at det er et fast intervall mellom starten på hvert skann. Dette intervallet må selvfølgelig settes langt nok til slik at ikke utførelsen av et enkelt skann overgår intervalltiden. En slik kontroll med eksekveringshastigheten kan gjerne utnyttes i programkoden, for eksempel til timing eller telling. En programblokk som inkluderer en regulator er et eksempel på kode som bør (må) eksekveres med faste intervall. Ved løpende eksekvering, starter et nytt skann så snart det forrige er avsluttet. Siden koden som regel inneholder mange betingelsesstyrte hendelser, vil dermed skanntiden variere noe fra et skann til det neste. Dette er den hurtigste måten å kjøre program på. Hendelsesstyrt eksekvering er basert på at task-en (med tilhørende program), kun blir eksekvert dersom en (boolsk) betingelse er oppfylt. Dette kan være nyttig å bruke for et program som normalt ikke skal utføres, og som skal trigges av en bestemt hendelse. Eksempel på slike program kan være nødstopprutine, oppstartrutine eller andre ekstraordinære hendelser. Man kan også kontrollere hvor ofte CPU-en skal skanne en bestemt programenhet gjennom å angi en prioritet for tasken(e). Tasks med høyere prioritet vil bli overvåket og skannet oftere. Slike task-er vil typisk inneholde nyttige programenheter som skal handtere kritiske hendelser som nødstopp eller alarmer. En slik kontroll med utførelsen og prioritering programkoden, gjør det mulig å bygge opp multi-applikasjoner og/eller en hierarkisk struktur på programenhetene.

1

Begrepet Task blir nærmere beskrevet i kapittel 5.3.


22

OM PLS-ER

1.4 Testoppgaver Oppgave 1-1 a)

Hvilken type styring ble erstattet av PLS-en?

b)

Hvilke fordeler oppnås med å anvende en PLS?

c)

Nevn noen forskjeller mellom en nyere PLS og en PLS fra 70-tallet.

d)

De fleste PLS-er har et batteri i seg. Hvorfor tror du de har det?

e)

Hva er en CPU?

f)

Velg den en tilfeldig PLS fra en tilfeldig valgt produsent og gjør et søk på Internett etter mulige moduler til den PLS-en. Lag en liste med minst 15 ulike moduler som kan monteres i racket til den valgte PLS-en.

Oppgave 1-2 a)

Nevn fordeler og ulemper med transistorutganger og reléutganger.

b)

Hva er hensikten med en optokopler og hvilke 2 sentrale komponenter inngår?

c)

Redegjør for operasjonene som PLS-en gjennomfører i løpet av et skann.

d)

Hva er hensikten med at PLS-en, i hvert skann, sjekker status til alle inngangene før programkoden utføres, og ikke underveis?

e)

Hva er syklisk og løpende eksekvering?



Denne boka dekker alle spesifikasjoner og retningslinjer som er angitt i denne standarden. Boka vil derfor være interessant for alle som jobber med eller trenger å lære seg programmering av PLS-er, uansett merke. Dag Håkon Hanssen arbeider som universitetslektor i automasjon ved Institutt for ingeniørvitenskap og sikkerhet ved Universitetet i Tromsø. Materialet er utarbeidet gjennom flere år med undervisning og forskning om automatisering og styring av industrielle produksjonsprosesser.

www.fagbokforlaget.no ISBN 978-82-450-1797-7

,!7II2E5-abhjhh!

PROGRAMMERBARE LOGISKE STYRINGER

Det er en utfordring å lage en universell lærebok i PLS-programmering, da det fins mange produsenter og ulike verktøy for programmering. Heldigvis har de fleste PLS-produsentene i større eller mindre grad tilpasset seg standarden IEC 61131-3, en standard som blant annet spesifiserer syntaksen for 5 ulike programmeringsspråk.

Dag Håkon Hanssen

Dette er ei bok for alle som ønsker å lære om programmering av PLS-er (Programmerbare Logiske Styringer) eller utvikle sine kunnskaper på feltet. Boka er skrevet med hensyn til nybegynnere i programmering, og det forutsettes derfor ingen forkunnskaper for å kunne lese og forstå materialet. Erfarne PLS-brukere vil oppdage nye muligheter og få nyttige tips til mer effektiv og strukturert programmering. Boka inneholder også en god del om hardware, som typiske sensorer og transmittere og tilkopling av utstyr.

Dag Håkon Hanssen

PROGRAMMERBARE LOGISKE STYRINGER En praktisk tilnærming til IEC 61131-3 – Basert på CODESYS® – 4. utgave


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.