GORTO Prosessbeskrivelse Konseptvalg Modell oppbygging oppdatering strrelse Objektfunksjon
GORTO Prosessbeskrivelse Konseptvalg Modell oppbygging – oppdatering - størrelse Objektfunksjon, optimalitet, bruk av mellomprodukt tank MV / CV / DV Gruppeinndeling, prioritetshierarki, sensitivitetsmatrise Løsningsmetodikk SEPTIC Brukerforum 2007 Stig Strand, F&T PRA PROK
2 GORTO Kalundborg Optimalisering av gassolje (diesel) produksjon ved raffineriet i Kalundborg
3 Ideen bak GORTO prosjektet Prosessbeskrivelse for Kalundborgs gassolje produksjon: M Analyzers/ Sample Min. 5 timer Fraksjonering Hydrotreating 4 stk. pluss mellomprodukttanker 3 stk. pluss mellomprodukttank Inline Mixing, Sample Point Analyzers/Lab. 2 stk. pluss kombinert Ferdigprodukter
4 GORTO systemerne
5 Konseptvalg • Dynamisk eller stasjonær modell? – relativt hyppige endringer i fødesammensetning og produktspesifikasjoner – labmålinger av produktkvalitet hver 12. time – tilgjengelige pådrag har svært ulik dynamisk respons mot ferdig produkt, med spenn i tidskonstanter fra 4 -5 timer til få minutt – viktig å kunne koordinere pådragene dynamisk optimalt slik at produktet hele tiden er nær spesifikasjon på de optimalt begrensende egenskapene – dersom en av fraksjonatorene ikke greier å ”henge med” lenger vil dette kreve ny optimalisering, og det skjer ofte og er ganske upredikerbart – konklusjon: dynamisk modell for optimalisering – MPC – RTO – DRTO? • Lineær eller ulineær modell? – blandelikninger: noen egenskaper blander volumetrisk lineært (eks tetthet og svovel), noen blander ulineært (eks cloud, flash, viskositet), mens for destillasjon (eks temperatur der 85 vol% av blanding er destillert) må blandestrømmenes destillasjonskurver benyttes i iterativ blanding – konklusjon: ulineær modell – modellen må i tillegg være tilstandsbasert for å kunne representere et vell av oppliningsmuligheter, og for å muliggjøre intern oppdatering med propagering videre til produktene
6 Modell oppbygging (1)
7 Deltabasert (som Expr. Modl) dvs endring inn endring Modell oppbygging (1) ut GH 010 BL 1. Desc GH 010 BL 1. Line. Up GH 010 BL 1. Flow = "C-201 LGO to Sek 800"; = &(pm->GH 010 BL 1_LUP); = &(pm->GH 010 BL 1_FLOW); GH 010 BL 1. Flow. Controlled = 1; Lgo. Split. In. Stream = &LGO; Lgo. Split. add. Out. Stream(&GO 001 BL 1); Lgo. Split. add. Out. Stream(&GH 010 BL 1); Gas. Oil. Stream. Response Lgo. Split. add. Out. Stream(&GH 010 BL 2); LGO_LGO 95 MV Lgo. Split. add. Out. Stream(&PS 014 BL 1); Gas. Oil. Stream Gas. Oil. Split LGO Lgo. Split. add. Out. Stream(&PS 014 BL 2); Lgo. Split. add. Out. Stream(&GH 060 BL 1); Lgo. Split. add. Out. Stream(&PS 227 BL 1); Gas. Oil. Stream. Response Gas. Oil. Stream LVGO_LGO 95 MV GH 010 BL 1 Gas. Oil. Stream LVGO Gas. Oil. Stream. Response LVGO_LVGO 95 MV Gas. Oil. Stream VP 016 BL 1 Gas. Oil. Stream. Response Gas. Oil. Stream VBGO_VBGO 95 MV VBGO Gas. Oil. Stream VB 638 BL 1 Neste slide
8 Modell oppbygging – Sek 800 avsvovling void Gas. Oil. Mix: : Calc(int cmd) (et utsnitt) { *(Out. Stream->Rec 95) = Temp. At. Evap(0. 95); Deltabasert (som Expr. Modl) for (i=0; i<ninstreams; i++) { double voli dvs endring inn endring ut = In. Streams[i]->get. Flow()/suminflows; cloud += pow(1. 078, *(In. Streams[i]->Cloud. Pnt))*voli; density += *(In. Streams[i]->Dens)*voli; } *(Out. Stream->Cloud. Pnt) = min(gortobad, max(-100, log(cloud)/log(1. 078))); *(Out. Stream->Dens) = min(gortobad, max(0, density)); } GB 810 BL 2 GB 810 BL 1 PS 202 BL 3 Gas. Oil. Mix. Feed 800 Statisk GH 010 BL 1 Gas. Oil. Stream. Dynamics Feed. Mix. Sek 800 Dyn. Feed. Sek 800 VP 016 BL 1 Gas. Oil. Stream VB 638 BL 1 Feed. Sek 800 B. Copy(&Feed. Sek 800); *Feed. Sek 800 B. Rec 95 += Sek 800_Delta. Rec 95; *Feed. Sek 800 B. Rec 90 += Sek 800_Delta. Rec 90; *Feed. Sek 800 B. Rec 85 += Sek 800_Delta. Rec 85; *Feed. Sek 800 B. Rec 80 += Sek 800_Delta. Rec 80; *Feed. Sek 800 B. Rec 50 += Sek 800_Delta. Rec 50; *Feed. Sek 800 B. Cloud. Pnt += Sek 800_Delta. Cloud; Feed. Sek 800 B. Calc(cmd); Gas. Oil. Stream. Dynamics Gas. Oil. Stream Feed. Sek 800 B Sek 800 Prod. Sek 800
9 Modell oppbygging – Sek 800 avsvovling (2) Si. So. Model Sek 800 modell: Klasse GHQ 023_GHFC 017 Antall Gas. Oil. Mix 1 Gas. Oil. Stream 4 Si. So. Model 8 Gas. Oil. Stream. Dynamics 2 Prop. Filter 3 Gas. Oil. Stream. Response 3 CV: GHQ 023 Si. So. Model GHQ 023_GHTC 013 GHC 021 TA Meas Si. So. Model MV: GHTC 013 GHC 021 TA_GHTC 013 Model: : Calc(UPDT) GHC 021 TA Si. So. Model MV: GHFC 017 GB 810 BL 2 GB 810 BL 1 PS 202 BL 3 GHC 021 TA_GHFC 017 Gas. Oil. Mix. Feed 800 SUL 800 = exp(7. 839 -0. 0693612*GHC 021 TA+0. 0457378*REC 95+0. 0230973*Feed 800); Statisk GH 010 BL 1 Gas. Oil. Stream. Dynamics Feed. Mix. Sek 800 Dyn. Feed. Sek 800 VP 016 BL 1 Gas. Oil. Stream. Response Prod 800_SUL 800 Gas. Oil. Stream. Response Gas. Oil. Stream VB 638 BL 1 Prod 800_GHR 804 Feed. Sek 800 Strippedamp (MV) -> Flash Gas. Oil. Stream Feed. Sek 800 B. Copy(&Feed. Sek 800); *Feed. Sek 800 B. Rec 95 += Sek 800_Delta. Rec 95; *Feed. Sek 800 B. Rec 90 += Sek 800_Delta. Rec 90; *Feed. Sek 800 B. Rec 85 += Sek 800_Delta. Rec 85; *Feed. Sek 800 B. Rec 80 += Sek 800_Delta. Rec 80; *Feed. Sek 800 B. Rec 50 += Sek 800_Delta. Rec 50; *Feed. Sek 800 B. Cloud. Pnt += Sek 800_Delta. Cloud; Feed. Sek 800 B. Calc(cmd); Prod. Sek 800 Gas. Oil. Stream. Dynamics Feed. Sek 800 B Sek 800
10 Modell størrelse • Variable – Svr: 169 – Evr: 101 – Tvr: 151 – Mvr: 23 – Cvr: 60 – 21 subgrupper – 38 prioritetsnivå • Modellobjekt – Gas. Oil. Stream: 73 – Si. So. Model: 27 – Gas. Oil. Stream. Response: 22 – Gas. Oil. Stream. Dynamics: 13 – Gas. Oil. Mix: 8 – Prop. Filter: 7 – Gas. Oil. Split: 5
11 Objektfunksjon • Planlegning: Gassoljetrekkene skal stilles inn slik at de har like marginale kvaliteter på den begrensende Run. Down-kvalitet – – dvs hvis Cloud er begrensende på Run. Down så skal gassoljetrekkene ha lik marginal Cloud dvs Cloud på den neste dråpen som trekkes ut som resultat av at det trekkes litt tyngre skal være lik for fraksjonatortrekkene • Dette karakteriserer optimal løsning (under gitte betingelser) – praktisk objektfunksjon (direkte avledet av almen oppfatning): Maksimaliser totalt gassoljetrekk – CV: GBGOSUM = LAGO_FLOW + LVGO_FLOW + VBGO_FLOW – Uten andre begrensninger enn blandet cloud < cloudmax, og uten kobling mellom fraksjonatortrekkene gir optimal løsning ens marginal cloud på trekkene • Modifisert objektfunksjon – LVGO som dumpes krakkes på ny (hvis plass) og kommer dermed delvis tilbake som fraksjonatorføde, mens dumping i de andre fraksjonatorene går til fuel-produksjon – CV: GBGOSUM = LAGO_FLOW + LGO_FLOW + 0. 6*LVGO_FLOW + VBGO_FLOW – Dermed vil ikke optimal løsning kunne karakteriseres med ens marginale egenskaper lenger – Objektfunksjonen gjør jobben, men det kan av og til være hardt å akseptere løsningen. . , og å få den til å spille riktig i forhold til alle andre regulerings- og optimaliseringsønsker
12 Objektfunksjon – optimalitet – bruk av TK 1337 Steady state opt: - ønsket mengde fra TK 1337 (GBFC 818. Iv) - bestemmer optimale frak-trekk for maks GBGOSUM - kvalitet Set. Pnt reberegnes til grense eller innenfor Calc: - Set. Pnt som beregnes til grense gis Fulf > 0 TK 1337 reduserer give-away dynamisk - raskt håndtak mot RD - lett, godt stoff i forhold til de fleste egenskaper -langsom dynamikk mot RD - skal i snitt ligge på PPL plan, styrt av fremtidig produksjon -begrenset endringshastighet så fracs kan henge med - brukes dynamisk aktivt for å redusere off-spec eller give-away -skal helst ikke ha for mye oversving i i forhold til SS opt T = 50 min, d = 5 min T = 40 min, d = 10 min T = 16 min, d = 10 min Prop: T 1 = 10 min, T 2 = 40 min, d = 110 min
13 Sensitivitetsmatrise • Standardapplikasjon med eksperimentelle modeller – fjerner noen modeller som er ”små” – fjerner noen modeller som er signifikant men som en ikke ønsker å utnytte – dupliserer noen MV’er som DV’er og overfører modeller dit • GORTO beregner sensitivitetsmatrise (MV CV) ved MV endring modellsimulering – alle modellerte sammenhenger fremtrer i matrisa, alle muligheter ses dermed – alle små numeriske avvik (eks delta dynamiske modeller) vil opptre E-7 element i matrisa – prioritetsmekanismer og move penalties avhjelper problemet, men noen uønskete aksjoner (planer) ble observert • Manipulasjon av matrise – Calc: subrmpcgain(CVRTAG, MVRTAG) gir steady state gain fra matrise – Calc: subrzerosens(CVRTAG, MVRTAG, ZEROFLAG) nuller sammenheng i matrise hvis ZEROFLAG = 1
14 Løsningsmetodikk for GORTO • Prediksjonshorisonten simuleres med konstante MV’er (CONSTMVR) ”open loop” respons • MV’er steppes etter tur simulering for hvert step over hele horisont antar samme respons for blokker lenger ut endring fra open-loop blir sensitivitet fra aktuell MV mot alle CV’er • Nulling av små eller spesielle element i sensitivitetsmatrise • Steady state optimalisering (inntil 40 ganger) for å løse prioritetshierarki • Justering av spesifikasjoner internt i tråd med steady state løsning • Dynamisk optimalisering en gang, ingen iterasjon • Sett ut pådrag, vent 5 min før neste sample som starter med modelloppdatering • eksekverer på 5 – 10 sek • og virker
- Slides: 14