Innhold:
De viktigste elementene av tuning er tatt med i dette avsnittet, spesielt med tanke på SmpcAppl.
Skalering
(Span)
Det viktigste er at Span for de ulike variablene er avstemt i riktig forhold til
variasjonsområdet. Den enkleste metoden som også ofte vil gi fornuftig intern skalering
er å sette Span til "akseptabel" variasjon.
Eksempel:
MPC med følgende Xvr'er:
Xvr Id Enhet Akseptabelt avvik
Cvr: PropenRenhet mol% 0.2
Cvr: NivaTopp % 5
Mvr: PropenAvdrag T/H 2
Mvr: KokerEffekt MW 0.2
Dvr: FodeMengde T/H 2
Hvis du i utgangspunktet er mer opptatt av nivået reduseres Span på denne. Ved å
balansere på denne måten og samtidig benytte akseptabelt avvik oppnås at Fulf og
MovePnlty bør kunne ligge nær 1 og at du har en "dokumentasjon" av hva som i
startfasen ble betraktet som fornuftige reguleringskrav.
Selv om Span er online tunbar bør den være urørt etter at initielle simuleringer/tuning er utført, dvs. at senere tuningsendringer gjenspeiles gjennom Fulf og MovePnlty.
Pådragsblokking
(Blocking)
Det er relevant med mer enn en blokk kun for SmpcAppl. Vurder dynamikken i prosessen
og andre forhold som kan si noe om hvilke innsvingningstider den regulerte prosessen
bør ha. Jo raskere den ønskes i forhold til prosessens egendynamikk, dess viktigere
er det at siste pådragsblokk først starter omtrent ved ønsket innsvingningstid.
For de fleste applikasjoner vil 4 - 8 blokker pr. Mvr være tilstrekkelig,
med kortest blokklengde i starten.
Eksempel:
Vi tar utgangspunkt i den "lille" MPC'en igjen.
Xvr Id Enhet
Cvr: PropenRenhet mol%
Cvr: NivaTopp %
Mvr: PropenAvdrag T/H
Mvr: KokerEffekt MW
Dvr: FodeMengde T/H
Anta at PropenRenhet respons på KokerEffekt og FodeMengde har en tidskonstant
på 30 min, og at det er ingen (direkte) sammenheng mellom PropenAvdrag og
PropenRenhet. Både PropenAvdrag og KokerEffekt påvirker NivaTopp (integrator).
Du ønsker en innsvingningstid på PropenRenhet på ca. 30 min (tidskonstant på 6 - 8 min).
Da bør den siste blokken på KokerEffekt tidligst starte 30 min ut i horisonten,
slik at den delvis kan kompensere for gjenværende påvirkning fra en endring i
FodeMengde. Men en manipulasjon av KokerEffekt så langt ut i horisonten vil også
påvirke NivaTopp, dermed bør også PropenAvdrag gis fleksibilitet så langt ut.
Stor fleksibilitet i Mvr parametrisering øker regulatorens evne til å dekople responser i prediksjonen. Dette observeres også ved at en plan som legges ved ett sample i stor grad samsvarer med pådragene som implementeres for påfølgende samples, når modellen er god og forstyrrelsene moderate. Men stor fleksibiltet koster også mer beregningstid.
Blocking kan ikke endres on line. Dette betyr at applikasjonen må stoppes og endringer utføres på konfigurasjonsfil.
Avviksvekt
(Fulf)
Dette er avviksvekten fra Cvr settpunkt og Mvr idealverdi. Straffen på avvik er kvadratisk:
For Mvr erstattes settpunkt med idealverdi i likningen over. Dersom
Span er fornuftig balansert
som indikert foran er 1 en brukbar startverdi for Fulf.
Fulf økes dersom Cvr'en ønskes bedre regulert mot settpunkt uten at du ønsker at
en spesifikk Mvr skal øke sine manipulasjoner. Dersom en spesiell Mvr bør brukes mer
for å oppnå bedre Cvr regulering bør du typisk øke noe på Fulf og samtidig redusere
noe på
MovePnlty til den aktuelle Mvr.
Pådragsvekt
(MovePnlty)
Dette er straffen på endring i pådrag fra ett sample til det neste:
Dersom en Mvr brukes for mye øker du MovePnlty. Når
Span er fornuftig balansert
som indikert foran er 1 en brukbar startverdi for MovePnlty.
Relaksasjon Cvr grenser
(HighLimit,
LowLimit,
HighPnlty og
LowPnlty)
Disse brukes til å justere "mykheten" på Cvr høy/lav begrensninger. Den eneste mulige kilden til at SmpcAppl ikke greier å finne en gyldig løsning av problemet er for strenge høy/lav-grenser på Cvr.
HighLimit og LowLimit bestemmer hvor mye løsningen tillates å ligge utenfor spesifisert henholdsvis High / Low. Det anbefales å sette HighLimit/LowLimit stor dersom grensen ikke er absolutt og kritisk.
Med HighLimit/LowLimit stor er grensene i utgangspunktet myke. HighPnlty og LowPnlty bestemmer hvor myke.
Dette er en kvadratisk straff som virker først utenfor grensen, som illustrert i
figuren under.
Dersom variabelen ikke har noe settpunkt vil den kvadratiske HighPnlty/LowPnlty medføre at en
optimal løsning som med hard grense ville ligge eksakt på grenseverdien vil ligge litt
utenfor, siden straffen starter på 0 akkurat på grensen.
Eksempel:
En regulatorutgang er med som Cvr. Av fysiske årsaker har denne grenser på
100 og 0. Likevel bør ikke denne spesifiseres med HighLimit og LowLimit = 0, siden
modellene ofte er usikre og forstyrrelser hele tiden virker inn. En HighLimit/LowLimit
på 0 kan derfor begrense løsningen unødvendig strengt utover i prediksjonen.
Vurder i et slikt tilfelle HighLimit (LowLimit) = 1000 (i praksis myk) og en passende
HighPnlty (LowPnlty) (0.5 - 10).
Modelloppdatering
(BiasTfilt og
BiasTpred)
Parametrene spesifiserer oppdatering av modellert Cvr fra prosessmålingene.
BiasTfilt angir tidskonstant i minutter for lavpassfiltrert oppdatering av øyeblikksavvik. Med støy på målingen vil et typisk valg ligge i området 2-10 ganger sampletiden.
BiasTpred angir tidskonstant i en første ordens ekstrapolasjon (prediksjon) av forstyrrelsen. Ved en trend i den filtrerte biasen antas at denne fortsetter inn i framtiden, men at stigningen på trenden avtar i henhold til en første ordens respons. Dette gir mulighet til raskere regulering ("derivatvirkning"), men bør samtidig brukes med forsiktighet og definitivt ikke uten et fornuftig valg av BiasTfilt først.
Simulering
Dette er et viktig hjelpemiddel både i bestemmelse av initiell tuning på deler av eller hele konfigurasjonen, og i trouble-shooting på en applikasjon i drift.
Anta at vi har bygget en konfigurasjonsfil for en applikasjon med tanke på initiell simulering. Modellene er allerede funnet. For enkelhets skyld viser vi bare hovedstrukturen på denne konfigurasjonsfilen under. Legg da modellfilene og konfigurasjonsfilen på samme katalog på PC, og start Septic. Husk å angi Meas på alle variable.
// Config file seppro.cfg for Propen (T-4702), simulation.
System: Smpc_Propen
MsgBox: PropenMsg
MasterTcip: Master MasterPort= 1234
ExprProc: MPC-PRO
SmpcAppl: MPC-PRO
Cvr: PropenRenhet
Cvr: NivaTopp Integ= 1
Mvr: PropenAvdrag
Dvr: FodeMengde
ExprModl: PropenMod
Når du har funnet en tuning du er fornøyd med lager du en SavedCnfg som så gis navnet som konfigurasjonsfilen til den kjørende applikasjonen skal ha. Overfør denne og modellfilene til den katalogen applikasjonen skal kjøre fra. Erstatt så ExprProc deklarasjonen i konfigurasjonen med det aktuelle prosessgrensesnittet. I tilfellet med en InfoProc vil da den nye hovedstrukturen se slik ut:
// Config file seppro.cfg for Propen (T-4702), online control
System: Smpc_Propen
MsgBox: PropenMsg
MasterTcip: Master MasterPort= 1234
InfoProc: 47+MPC-PRO
InfoCvr: PropenRenhet CvrTag= 47+AY-500
InfoCvr: NivaTopp CvrTag= 47-LIC-110-FL
InfoMvr: PropenAvdrag MvrTag= 47-FIC-114-FV
InfoDvr: FodeMengde DvrTag= 47-FI-100-FL
SmpcAppl: MPC-PRO
Cvr: PropenRenhet
Cvr: NivaTopp Integ= 1
Mvr: PropenAvdrag
Dvr: FodeMengde
ExprModl: PropenMod
Da skal du være klar til å starte opp applikasjonen.
Dersom du har en kjørende applikasjon som du ønsker å simulere er det bare å gå den motsatte veien. Når du lager en SavedCnfg fra en kjørende applikasjon får du med øyeblikksverdien både på målinger, settpunkt og grenser etc., slik at simuleringen kan starte opp fra riktig initialtilstand.
Følgende parametre har betydning for det ekslisitte prioritetshierarkiet:
Cvr HighPrio
Cvr LowPrio
Cvr SetPntPrio
Mvr IvPrio
Alle disse parametrene kan spesifiseres med verdi i området 1-99, der 1 angir høyeste og 99 laveste prioritet.
Prioritetshierarkiet i SmpcAppl aktiviseres ved å skru DoStdSolve ON.
Steady state løseren vil da:
1. Respektere MV ROC (rate of change) type begrensninger (MaxUp/MaxDn)
2. Respektere MV høy/lav type begrensninger (High/Low)
3. Respektere harde CV-begrensninger (HighLimit/LowLimit)
4. Sortere CV/MV spesifikasjonene i henhold til stigende prioritetstall på HighPrio, LowPrio, SetPntPrio og IvPrio.
5. Løse med hensyn på de spesifikasjonene som har lavest prioritetstall, hvis flere på samme nivå vil vekting komme i bildet.
6. Låse den løsningen som finnes med tanke på CV settpunkt og MV idealverdi samt eventuelt utvide CV grenser.
7. Gjentar fra punkt 5 fra neste prioritetsnivå inntil alle spesifikasjoner er håndtert.