Post on 05-Sep-2018
1
03 KG, 04 KG, 06 CCG, 07 AM, 09 KG, 10KRS
TTK4175 Instrumenteringssystemer
Laboratorieoppgave
Prosesstyring med ABB AC 800M og
Control Builder
Oppgavetekst
NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET
INSTITUTT FOR TEKNISK KYBERNETIKK
THE NORWEGIAN UNIVERSITY OF SCIENCE AND TECHNOLOGY
DIVISION OF ENGINEERING CYBERNETICS
TRONDHEIM
Versjon 5
2
Generelt Lokalisering: D252
Laboratorieoppgaven er inndelt i fem deler og utføres på rom D251 hvor alt nødvendig utstyr skal
finnes. Del 1 og 2 er en veiledning med eksempler (tutorial) som tar dere gjennom mange av de
viktigste funksjonalitetene i ControlIT og Control Builder Professional 4. Det er stilt spørsmål
underveis som dere må besvare. Etter å ha gjennomført del 1 vil dere være i stand til å løse
oppgavene i del 3 og 4 uten at for mye tid går med til å lete i dokumentasjonen.
Innlevering
Dere skal levere en rapport på PDF-format, via It‟s Learning. Rapporten kan ha hvilken som
helst struktur. Den skal dokumentere at dere har forstått hensikten med oppgaven og klart å løse
den på en tilfredsstillende måte. Den skal inneholde svar på eventuelle spørsmål og skjermbilder
som dokumenterer deres løsning. Gi gjerne også tilbakemeldinger på oppgaven dersom dere har
dette.
Pålogging på PC
Bruker: 800xAService, passord: itklab, logg inn på: KYBPC1486
IndustrialIT oppbygning
IndustrialIT er et konsept hvor alle prosesser i en bedrift er integrert i et og samme system. ABB
prøver med dette å få til en økt standardisering av sine produktet ved å integrere dem på en og
samme plattform. Les mer om IndustrialIT på www.abb.com.
Kontrollflyt og logisk oppbygning i ControlIT
ControlIT er konfigurasjonsplattformen i IndustrialIT konseptet. Ved hjelp av verktøyet Control
Builder kan funksjonaliteten til ABB sine IndustrialIT- enablede kontrollere konfigureres.
Figur 1: Kommunikasjonshierarki i IndustrialIT-konseptet
3
I dag støtter Control Builder Professional 4 konfigurering av AC250, AC800C og AC800M.
Dette er alle distribuerte prosesskontrollere som kan kobles opp mot et stort spekter av analoge og
digitale enheter, feltbusskontrollere, andre kontrollere osv. AC800M er i dag den kontrolleren
ABB satser på å videreutvikle for fremtiden. Figur 1 viser hvilke enheter som kommuniserer
sammen i IndustrialIT konseptet. På laben har vi dette installert på en og samme operatør- og
konfigurasjons-PC.
ControlIT og Control Builder er omfattende og det tar tid å sette seg inn i alle begreper og
programfunksjonalitet. Den beste (og mest tidkrevende) måten å lære seg dette er å sette seg ned
og lese hele online hjelp fra start til slutt. Målet denne laben er i midlertid ikke dype og
tidkrevende studier av dokumentasjonen, men å anvende systemet til å løse en praktisk
problemstilling. Derfor gir vi her en oppsummering av hvordan de enkelte deler i ControlIT og
Control Builder henger sammen.
ControlIT er hierarkisk oppbygd av biblioteker, applikasjoner og hardware. Dette hierarkiet kan
man orientere seg i ved hjelp av Project Explorer (hovedvinduet i Control Builder, se Figur 3).
Libraries: Under libraries er alle kontrollmodultyper (maler) lokalisert (standard og
egendefinerte). Kontrollmoduler som skal benyttes flere ganger lages her som typer og
instansieres under noden Applications. Bibliotekene kan inneholde egendefinerte
datatyper, kontrollmodultyper, funksjonsblokktyper.
Applications: Under applications implementeres kontrollprogrammets funksjonalitet (det
som skal lastes ned i kontrolleren). Funksjonaliteten bygges opp ved hjelp av
kontrollmoduler (objektorientert programmering) og programmer (tradisjonell
programmering ved hjelp av funksjoner og funksjonsblokker).
Controllers: Under controllers definerer man hardware topologien (kontrollere, IO-
moduler, etc.).
Kommunikasjon mellom kontrollmoduler
Det er viktig å få med seg hvordan kontrollmodulene kommuniserer. Kontrollmoduler
kommuniserer ved hjelp av parametere. En kontrollmodul kan ha definert parametere, variabler
(ikke tilgjengelig for andre kontrollmoduler) og eksterne variabler (gir tilgang til globale
variabler). Kommunikasjonen mellom Control Module 1 og Control Module 2 i utføres ved hjelp
av to parametere i hver kontrollmodul. Ved å definere globale variabler under Applications (f.eks.
i Application_1) vil alle kontrollmoduler og programmer ha tilgang til disse.
Figur 2: Kommunikasjon mellom kontrollmoduler
Funksjonsblokker kommuniserer også ved hjelp av parametere. Forskjellen er at
funksjonsblokker ikke har et grafisk grensesnitt.
4
Oppgaver
Kun de viktigste begrepene er beskrevet og mange av de valgene som er tatt vil ikke bli
begrunnet. Dere må derfor benytte programmets online hjelp funksjonalitet (Help → Help Topics
når dere lurer på noe. Bruk også manualene som følger med programvaren (Help→Manuals)
aktivt.
Følgende momenter vil bli gjennomgått i denne laboppgaven:
Del 1 Bli kjent med Control Builder
Opprette et nytt prosjekt
Opprette følgende objekter: Nytt ”Library”, ”Control Module
Type”, ”Control Module”, ”Graphical Object”, ”Interaction
Object”, ”Connection” og ”Data Type”
Oppretting av parametere og variabler til kontrollmodul typer (Control Module Type)
Programmere kontrollmodul typer ved hjelp av programmeringsspråket ”Structured Text”
(ST)
Sette opp dynamiske egenskaper til grafiske objekter
Lage interaksjonsvinduer for endring av kontrollmoduler (som er en instans av en
kontrollmodul type) og parameter online (simulert).
Del 2, 3 og 4: Online (hardware)
Gjøre dere kjent med implementert motorstyring, generator for varmekolbe og målinger
av trykk og temperatur.
Implementere brukergrensesnitt for visning av turtall, varmekolbe, temperatur og trykk,
trending av turtall, varmekolbe, temperatur og trykk og kontroll for manuell setting av
settpunkt for turtall og motortilstand.
Implementere en temperaturregulator.
Del 1 implementeres uten å benytte hardware (simulering). Del 3 og 4 anvender en hardware
Nærmere forklaring av hardware er gitt i del 2.
Lagring og import av prosjekter
Systemet inneholder ikke noe filhierarki, men lagrer prosjektene i en database. Av den grunn er
labkjøring noe kronglete på dette systemet. Det er laget en labmal som må importeres av hver
nye gruppe som skal begynne en lab. Hvis en gruppe vil ta vare på sitt prosjekt må dette
prosjektet eksporteres til en ny fil med endelsen afw. Når en fil importeres vil den overskrive det
tidligere prosjektet med samme navn. Det går ikke ann å kopiere inneholdet i et prosjekt over i et
annet, det er derfor viktig at den malen som har alle koblinger mot hardware blir tatt vare på. I
Control Builder har dette prosjektet navnet ‟lab‟ og finnes som eksportfilen labmal.afw på fagets
hjemmekatalog.
ABB support har anbefalt denne måten å ta vare på prosjekter:
5
Åpne programmene ‟Import Export‟ og ‟My ePlant‟ (på skrivebordsbakgrunnen). I My ePlant,
velg Control Structure i venstre vindu. Utvid Control Network, Control Network. Der finner du
det prosjektet du ønsker å eksportere. Dra dette prosjektet over i venstre vindu i Import/Export
vinduet. Trykk ‟finish‟ og så vil overføringen starte. Når overføringen er ferdig må du trykke
‟save as‟ og velge passende navn til eksportfilen.. Når lagringen er overstått kan du lukke
Import/Eksport og du har nå eksportert prosjektet.
For å importere det eksporterte prosjektet åpner du den eksporterte filen i Import/Eksport. Velg
Actions og Import All. Det vil automatisk komme opp rett sted for å lagre filen. Trykk finish og
YES på alle vinduer som dukker opp(mange). Lukk Import/Eksport og åpne Control Builder, og
åpne prosjektet med det navnet det hadde da det ble eksportert.
Del 1: Rectangle tutorial
Utfør Rectangle tutorial som finnes på fagets hjemmeside.
Dynamisk grafikk (endring av farge, form, tilstand, synlighet) vil i denne delen bli benyttet til å
synliggjøre hvordan kontrollmodul parameter og variabler kobles sammen internt mot grafikk,
programlogikk og mot andre kontrollmoduler. ControlIT følger programmeringsstandarden IEC
61131. Vi har valgt å benytte programmeringsspråket ST (Structured Text) i denne laboppgaven.
1) Hva er forskjellen ”Control Module”, ”Control Module Type” og
”Singel Control Module”?
Del 2: Test av hardware på laben
I denne delen skal ABBs kontroller AC 800M brukes til å styre en prosess. Denne prosessen
består av en likestrømsmotor som driver en generator. Generatoren er koblet til en varmekolbe
som varmer opp passerende vann. Motoren reguleres fra en styringsenhet (DCS 400). Figur 3
viser kontrollsystemets komponenter og hvordan disse er koblet sammen internt og til motor.
6
Figur 3: Instrumenteringsskjema for AC400M og motorstyring
Varmekolben står ved siden av vasken, og rett over dataskjermen står fordelingsskapet S3 som
signalene til og fra prosessen går gjennom. Over vasken skrus vanntilførselen for varmekolben
på. Motor og generator er plassert i en stor hvit lyddempingskasse. Til høyre for skap S3 står S4
med motorstyringsmodulen DCS400, og lengst mot vinduet står kontrolleren PM860 med I/O-
moduler.
Kommunikasjon mellom AC 800M og fordelingsskapet skjer via krysskoblingstavla på veggen til
venstre for inngangsdøra. Kommunikasjon mellom kontrolleren, motorstyring og digital I/O går
over et Profibus-nettverk.
Fordelingsskapet S3 aktiviseres ved å trykke START på fronten av skapet. De fire lys-signalene
har følgende betydning:
Pressostat: Trykket i vannrøret er over en minimumsgrense
Temperatur: Temperaturen i varmekolben er under 70°C
Data: Lasten er satt på fra AC 800M
Last: Lasten er på
Lasten er laget som en OG-funksjon, dvs. de tre første signalene over må
være høye for at lasten skal kunne slå seg på.
Selve prosessen har følgende signaler/målinger:
7
DP Trykkmåler. Analogt signal, 4-20mA
DP Pressostat. Digitalt signal, lavt når trykket er for lavt
PT100 Temperatur. Digitalt signal, lavt når temperaturen i varmekolben overstiger 70°C
M4 Temperaturmåler (pt100). Analogt signal, 4-20mA (tilsv. 0-100°C)
M8 Last (varmekolbe) av/på. Analogt signal, 4-20mA
Forarbeide Dobbeltklikk på filen labmal.afw som ligger på desktoppen. Trykk ”close” hvis ”Loading file
labmal.afw”-vinduet kommer opp og loading er utført. I venstre vindu må du velge ”control
structure” hvis det ikke er der fra før av. Velg <Actions> →Import All>→<ABB lab> og
<Finish>. Lukk Import/Export-vinduet og åpne Control Builder. Trykk file →open project, velg
<lab>→<open>. Ved evt. spørsmål om du vil overskrive eldre data, svar ja i alle tilfeller.
Motorstyringen og kontroller-racket skal være skrudd på. Kontroller at dette er gjort med Main-
Switch knappen på skap S4.
Under Libraries ligger programbibliotekene som er lenket til prosjektet.
Under Applications ligger applikasjonen man arbeider med, dvs. kontrollmoduler, programmer
osv.
Under Controllers ligger hardware og programvare som er lastet ned på kontrolleren. Du finner
igjen de samme enhetene på racket på veggen til høyre. Det kan komme opp noen warnings under
Controller. Dette er fordi Main-Switch-knappen har vært skrudd av over lengre tid og systemet
har brukt mye av reservebatteriene. Hvis Main-Switch-knappen alltid er skrudd på vil disse
advarslene ikke ha noe å si for labben. Det samme gjelder hvis displayet på S4 sier Alarm9 eller
lignende, det kommer av at main-switchen har vært avslått og at det er brukt av reservebatteriene
(husk at systemet er lagt for å fungere i en vanlig fabrikk). Trykk på reset for å få displayet til å
vise hva det egentlig skal, altså motorhastigheten, spenning og strømstyrke..
Variablene som er koblet til de analoge og digitale I/O-modulene er allerede definert som globale
variable i Application_1, slik at dere ikke trenger tenke på dette.
8
Figur 4: Prosesskjema for varmekolben, motor og generator
For motorstyringen er det definert følgende variabler:
Funksjon Variabel Datatype
Avlest referanse,
motorhastighet
Speed_reference dintIO
Settpunkt, motorhastighet Speed_Setvalue dintIO
Main Status Word Main_status_word dintIO
Main Control Word Main_control_word dintIO
Tabell 1: Variabler for motor kontroll og overvåking
Main Status Word angir motorens status, mens Main Control Word styrer motortilstand. Begge
er på 16 bit (se DCS 400 manual, side 163). Motoren kan startes ved å sette de 4 laveste bitene i
Main Control Word:
Bit 3 Bit 2 Bit 1 Bit 0
RUN EME_STOP COAST ON
EME_STOP og COAST (bit 1 og 2) skal alltid være 1. Dette gir tre tilstander:
Tilstand Binær Desimal
OFF 0 1 1 0 6
READY 0 1 1 1 7
RUN 1 1 1 1 15 Tabell 2: Main Control Word tilstander
9
Slå på vannet til venstre for vasken (blått rør, rød hendel)
På skap S3 må Start være aktivert og vri-bryter for Last være i posisjon Inne
På skap S4 må dere skru på On-Off og Run-knappene.
Last så ned konfigurasjonen og gå online:
1. <Project Explorer>→<Tools>→ <Download project and go online>
Eller trykk på knappen med samme navn i Control Builder M (knappen ved siden av
spørsmålstregnet). Det kan være lurt å bruke ”Cold Restart All” hver gang man laster opp
endringer til AC800 for å unngå at eldre data blokkerer for deres nyeste endringer.
Det kan være at det under kompileringen (download) kommer opp ett eller flere varsler. Velg da
Continue. Dette varselet kommer opp fordi de globale variablene forløpig ikke er koblet til noe.
Hvis det kommer opp et vindu som heter ”Difference Report Before Download”, Trykker dere på
grønn ”check-knapp” øverst i venstre hjørne. Nedlasting fullføres.
Det kommer opp en error på AO810 modulen under PM860. Denne enheten er ikke fysisk
tilstede på racket.
a) Kjør motoren ved hjelp av Main Control Word (15), settpunkt. (parameter
”value”) og Speed_Setvalue (parameter ”value”). (Tips: HK, online parameters)
b) Skru av og på lasten. Dere hører et lite dunk i det lasten aktiveres. Hvordan
påvirker dette motorstyringa? (sjekk display på S4). (Tips: Load_on_off).
c) Hva er sammenhengen mellom avlest referanse for motorhastighet og faktisk
hastighet (faktisk hastighet kan avleses i RPM på skap S4). Dere finner
dokumentasjon for DCS 400 på fagets hjemmeside. Alternativt kan dere finne
svaret eksperimentelt (vi anbefaler sistnevnte).
10
Del 3: Skjermbilde for visning og kontroll av prosessen
Dere skal her lage et skjermbilde (CMD) som illustrerer prosessen. Skjermbildet skal lages for
Application_1. Lag knapper som lar deg styre motoren og lasten, og søyler/trendgrafer for å vise
temperatur, last osv. Legg vekt på at prosessbildet skal være oversiktlig og gi en god oversikt
over prosessen (Ta gjerne utgangspunkt i fysisk oppsett).
Følgende informasjon skal presenteres:
Motortilstand (‟Off‟, ‟Ready‟, ‟Running‟, ‟Undefined‟)
Referansehastighet (i RPM).
Trykk og temperatur (verdi med enhet og tilstand)
‟Off‟ = Motoren er ikke klar til å starte (OFF)
‟Ready‟ = Motoren er klar til å starte (READY)
‟Running‟ = Motoren kjører (RUN)
‟Undefined‟ = Representere alle statusverdier som vi ikke har definert.
Alle tilstander kan leses ut i fra Main Status Word. (Ta utgangspunkt i DCS 400 manual, side
163). - Finnes under hjemmesiden → Lab → ABB → Dokumentasjon.
Følgende parameter skal kunne endres fra operatørstasjonen:
Motortilstand (READY, RUN, OFF)
Setpunkt for motorhastighet (i RPM).
Start/Stopp av motoren.
Figur 5 viser et forslag til oppdeling av grafikk i logiske enheter. Linjene mellom
kontrollmodulene er laget med ”Line” verktøyet.
11
Figur 5: Forslag til oppdeling av systemet i logiske enheter
Figurene for motor, generator og varmeveksler finner dere ferdig laget i biblioteket LabIcon.
Tips: Opprett først et nytt bibliotek som dere kaller ”MotorXX”, der XX står for
gruppenummeret deres. I dette biblioteket lager dere modulene dere trenger i resten av
oppgaven.
Det mest hensiktsmessige vil være å lage en kontrollmodul for varmepumpen, en for
motorstyringen og en for generatoren (se Figur 5 og Figur 6). Disse finner dere i
biblioteket ”Labicon 1.0-0”. HK <connected libraries> og legg til dette biblioteket.
Lag ett interaksjonsvindu til hver av disse kontrollmodulene som står for kontroll av
kontrollmodulen og informasjon om kontrollmodulen.
Generator bør har parametrene Load (real) og Load_onoff (bool).
Varmeveksler bør ha parametrene pressure (real ), pressurestate (bool), tempstate
(bool), og temperature (real).
Motor bør ha parametrene controlWord (dint), statusWord (dint), reference (dint) og
setValue (dint).
Bruk Main Status Word til å vise motorstyringens tilstand. Dere finner beskrivelse av
Main Status Word i DCS 400 Manual (side 163) som dere finner på fagets hjemmeside.
12
Det er ikke mulig å tilordne tekst til en variabel av type string i kode. F.eks vil “myText
:= „Dette er en test‟;” gi kompileringsfeil. Dette omgås ved å definere en variabel
(datatype string) med initialverdi lik tekststrengen som man ønsker å tilordne variabelen.
Linjen “myText := min_variabel;” der “min_variabel = „Dette er en test‟” vil ikke gi
kompileringsfeil. Denne problemstillingen vil dere komme komme over når dere vil
sende en tekststreng som angir motorstatus til interaksjonsvinduet.
Alle parametre og variable lages først i et bibliotek før de kobles opp mot hardware ved å
gå på Application_1→ CMD Editor → create → Control Module, og så hente inn de
kontrollmodulene du trenger. For å kunne hente inn en kontrollmodul må det biblioteket
den ligger i, være tilknyttet applikasjonen. Et eksempel på hvordan dette gjøres finner
dere på siste side av Rectangle Tutorial. Det vil da dukke opp et Connections-vindu hvor
dere kobler til deres parametre med faktiske I/O-porter mot hardware (Høyreklikk i
parameterfeltet og velg insert parameter from tree, velg riktig parameter og value).
Hvis Connections-vinduet ikke dukker opp kan dere finne dette ved å høyreklikke på
modulen.
(glemmer dere å benytte dere av insert parameter from tree vil dere få feil, da hver
variabel har flere parametere. Eksempelvis .value)
13
Figur 6: Forslag til kontrollmoduler og bibliotek
14
Del 4: Temperaturregulator Dere skal med utgangspunkt i Del 3 lage en regulator som styrer temperatur ved hjelp av påtrykt
last. Siden lasten reguleres med turtallet til motoren må dere lage en turtallsregulator som tar
temperatur som setpunkt. Benytt en PidCC kontroll modul (legg til biblioteket
ControlStandardLib 1.2-2). Fordi dynamikken i temperaturprosessen er svært treg (en til to
minutter fra pådrag til reaksjon i temperatur) er det ikke særlig lurt å ha D-virkning i regulatoren.
Samtidig ønsker vi best mulig nøyaktighet. Dette oppnår vi ved å ha I-virkning i regulatoren. Det
faller derfor naturlig og benytt PidCC modulen som en PI regulator.
Start ut med å bruk følgende PidCC parameter:
P = 3
I = 240 (sekunder)
dead zone = 0.01 (fjerner støy, temperaturen varierer med ca ±
0.05 grader celsius)
direction = REVERSE (under ”More >>”)
Disse verdiene er kun startverdier, dere må selv finne bedre verdier. Her er det lov å leke . Det
vil ta minst 10 min før steadystate er nådd. Dere må gjerne prøve andre innstillinger for å få ned
transienttiden. Det skal være mulig å angi settpunkt for temperatur fra operatørstasjonen (helst fra
et interaksjonsvindu).
Figur 7: Regulator med konverteringsblokker
15
Test av regulator
Når dere skal teste regulatoren lar dere setpunktet for temperaturen være 25 grader celsius.
Regulatorparametre (P, I etc.) settes i ONLINE modus. Disse er ikke tilgjengelige annet enn når
applikasjonen kjører. Husk å sette regulatoren i Auto (regulator bestemmer output verdi).
Tips:
Ta utgangspunkt i Del 3 og legg til turtallregulatoren (se Figur 7).
I Figur 7 er det benyttet en grafisk kobling mellom regualtoren og MotorControl som
kobler sammen output fra regulator (turtall) og eksternt setpunkt for MotorControl. Dette
er strengt tatt ikke nødvendig. Dere kan koble sammen ved hjelp av parametre direkte.
Temperaturregulator-modulen bør ha parametrene temp (RealIO) og speed (dint)
PidCC tar kun setpunkt (SP) og prosessverdi (PV) som er av datatypen
ControlConnection. Dere må derfor konvertere målt temperatur (RealIO) og setpunkt for
temperatur (real) til datatypen ControlConnection ved å legge til blokker som ligger i
biblioteket ControlStandardLib1.2-2.
PidCC returnerer en utverdi (OUT) mellom 0 og 100 av datatype ControlConnection.
Dere må konvertere denne til dint.
Regulatoren legges til Application_1 på samme måte som de andre modulene.
Parametrene P, I , dead zone og direction settes i regulatorens interaction window.
Se Figur 8 for forslag til oppsett av kontrollmoduler og biblioteker.
16
Figur 8: Forslag til kontrollmoduler og bibliotek med regulator