# Septic brukertips

##

Innhold:

1. Tuning av SmpcAppl
   - Skalering
   - Pådragsblokking
   - Avviksvekt
   - Pådragsvekt
   - Relaksasjon Cvr grenser
   - Modelloppdatering
   - Simulering
2. Prioritetshierarki i SmpcAppl
3. Neste

## 1. Tuning av SmpcAppl

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.

Til toppen av dokument

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.

Til toppen av dokument

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.

Til toppen av dokument

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.

Til toppen av dokument

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).

Til toppen av dokument

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.

Til toppen av dokument

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.

Til toppen av dokument

## 2. Prioritetshierarki i SmpcAppl

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.

Til toppen av dokument