Prosesstyring med ABB AC 800M og Control Builder Oppgavetekst

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 7.2
1
Generelt
Lokalisering: D0041
Laboratorieoppgaven er inndelt i fem deler og utføres på rom D0041 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.
Før dere begynner: Les gjennom hele oppgaveteksten.
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
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
2
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 imidlertid 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, IOmoduler, 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.
3
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 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 an å kopiere innholdet 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.
4
ABB support har anbefalt denne måten å ta vare på prosjekter:
Eksport av prosjekt:
Å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.
Import av prosjekt:
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
1) 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.
2) 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.
5
Figur 3: Instrumenteringsskjema for AC400M og motorstyring
Varmekolben står ved siden av vasken, og ved siden av 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 venstre for skap S3 står S4 med
motorstyringsmodulen DCS400, og lengst mot vinduet står kontrolleren PM860 med I/Omoduler.
Kommunikasjon mellom AC 800M og fordelingsskapet skjer via krysskoblingstavla på veggen til
venstre for PM860. 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å.
6
Selve prosessen har følgende signaler/målinger:
 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
For motorstyringen er det definert følgende variabler:
Funksjon
Avlest referanse,
motorhastighet
Settpunkt, motorhastighet
Main Status Word
Main Control Word
Variabel
Speed_reference
Datatype
dintIO
Speed_Setvalue
Main_status_word
Main_control_word
dintIO
dintIO
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 128). Motoren kan startes ved å sette de 4 laveste
bitene i Main Control Word:
Bit 3
RUN
Bit 2
EME_STOP
Bit 1
COAST
Bit 0
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
7
Figur 4: Prosesskjema for varmekolben, motor og generator
Forarbeid:
1) Åpne programmet ”Import/Export” for å importere lab-malen. Trykk <Open> og velg
filen ”labmal.afw” som ligger på skrivebordet. Trykk ”Close” hvis ”Loading file
labmal.afw”-vinduet kommer opp og loading er utført. Trykk
<View>→<Contents>→<Structures>. 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>. Hvis dere ikke ser alternativet <ABB lab> så er det bare å trykke <Finish>.
Ved evt. spørsmål om du vil overskrive eldre data; svar ja i alle tilfeller. Lukk
Import/Export-vinduet og åpne Control Builder. Trykk <file> →<open project>, velg
<lab>→<open>.
2) Motorstyringen og kontroller-racket skal være skrudd på. Kontroller at dette er gjort med
Main-Switch knappen på skap S4.
3) Slå på vannet på kranen tilkoblet systemet (bare litt strømning er OK. Det er nok når
‘’Pressurestate On’’-lampen tennes på skap S3).
4) På skap S3 må Start være aktivert og vri-bryter for Last være i posisjon Inne
5) På skap S4 må On-Off og Run-knappene være inne.
8
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. 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-Switchknappen 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 laget for å fungere i en vanlig fabrikk).
Trykk på Reset-knappen på displayet 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
variabler i Application_1, slik at dere ikke trenger tenke på dette.
Last så ned konfigurasjonen og gå online:
a) <Project Explorer>→<Tools>→ <Download project and go online>
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. Hvis det kommer opp et vindu med ”ReAuthenticate” så skriv inn samme passord og brukernavn som på PCen.
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 forelø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.
b) Høyreklikk på Application_1 under Applications og velg Online editor.
c) Kjør motoren ved å sette tilstanden til RUN i Main Control Word. Dette gjøres ved
sette Value-parameteren i Main_Control_Word til verdien funnet i Tabell 2.
Tilsvarende gjøres med Speed_Setvalue for å sette hastigheten.
d) Skru av og på lasten. Dere hører et lite dunk i det lasten aktiveres. Hvordan påvirker dette
motorstyringa? (sjekk displayet på S4) (Tips: Load_on_off).
e) 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).
9
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
128). 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.
10
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 2.1.0”. Høyreklikk <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. Tilsvarende det dere gjorde i Del 1
for å endre et rektangel.

Generator bør har parameterne Load (real) og Load_on_off (bool).

Varmeveksler bør ha parameterne pressure (real ), pressurestate (bool), tempstate
(bool), og temperature (real).

Motor bør ha parameterne controlWord (dint), statusWord (dint), reference (dint) og
setValue (dint).
11

Bruk Main Status Word til å vise motorstyringens tilstand. Dere finner beskrivelse av
Main Status Word i DCS 400 Manual (side 128) som dere finner på fagets hjemmeside.

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 over når dere vil sende en
tekststreng som angir motorstatus til interaksjonsvinduet.

Det er mulig å velge tekst basert på verdien til en variabel ved å bruke et ”String selector”
objekt.

Alle parameter og variabler 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)
12
Figur 6: Forslag til kontrollmoduler og bibliotek
13
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
14
Test av regulator
Når dere skal teste regulatoren lar dere settpunktet for temperaturen være 25 grader celsius.
Regulatorparameterne (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 regulatoren 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.

Temperaturregulatormodulen bør ha parametrene temp (real) og speed (dint)

PidCC tar kun setpunkt (SP) og prosessverdi (PV) som er av datatypen
ControlConnection. Dere må derfor konvertere målt temperatur (real) 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.
15
Figur 8: Forslag til kontrollmoduler og bibliotek med regulator
16