Utvärdering av driftstrategier för biologiska reningsverk

Relevanta dokument
Modellering och styrning av ett biologiskt reningsverk

Modellering och styrning av ett biologiskt reningsverk

Modellering och avancerad styrning av ett biologiskt reningsverk

Magnus Arnell, RISE Erik Lindblom, Stockholm Vatten och Avfall

Räkneuppgifter i Vattenreningsteknik - 2

Statisk olinjäritet. Linjärt dynamiskt system

avloppsvattenrening genom reglerteknik Bengt Carlsson Uppsala universitet

TENTAMEN i Kommunal och industriell avloppsvattenrening

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

TENTAMEN i Kommunal och industriell avloppsvattenrening

Innehåll. Vad är reglerteknik? Forskning inom processtyrning - Resurseffektiv avloppsvattenrening genom reglerteknik

Tentamen i Beräkningsvetenskap I/KF, 5.0 hp,

Operatörer och användargränssnitt vid processtyrning Datorövning 1 - Reglerteknik

TENTAMEN i Kommunal och industriell avloppsvattenrening - 1RT361

MODELLERING AV DYNAMISKA SYSTEM OCH INLUPP 2

REPETITION (OCH LITE NYTT) AV REGLERTEKNIKEN

Laboration: Grunderna i MATLAB

Q, Sin, Xin=0 Q, S, X S, X. Volym V

Modellering av en Tankprocess

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Instruktion för laboration 1

REGLERTEKNIK Laboration 5

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

Inlämningsuppgift 4 NUM131

Läran om återkopplade automatiska system och handlar om hur mätningar från givare kan användas för att automatisk göra förändringar i processen.

Signalanalys med snabb Fouriertransform

Enkel modellering av ett biologiskt reningsverk

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Processidentifiering och Polplacerad Reglering

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Lunds Tekniska Högskola Avdelningen för industriell elektroteknik och automation

Är strängare miljökrav alltid bättre för miljön? Sofia Andersson , NAM19

Systemteknik/Processreglering F2

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Instruktion för laboration 1

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Institutionen för Tillämpad Fysik och elektronik Umeå Universitet BE. Introduktion till verktyget SIMULINK. Grunderna...2

Manual för ett litet FEM-program i Matlab

BIO P PÅ KÄLLBY ARV. Elin Ossiansson Processingenjör

TANA17 Matematiska beräkningar med Matlab

Införande av kväverening i Örebro

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 16 januari Bordsnummer:

För att få ett effektiv driftsätt kan det ibland behövas avancerad styrning.

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

TENTAMEN i Vattenreningsteknik 1TV361

Användarhandledning Version 1.2

Energieffektiv vattenrening

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

MMA132: Laboration 2 Matriser i MATLAB

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

Liten MATLAB introduktion

Matematisk Modellering

Uppgift 1. Minimeringsproblemet löses med en Monte Carlo algoritm:

TSBB14 Laboration: Intro till Matlab 1D

Block 5: Ickelineära. ekvationer? Läroboken. Löpsedel: Icke-lineära. ekvationer. Vad visade laborationen? Vad visade laborationen?

Simulering och reglerteknik för kemister

Miniprojekt: Vattenledningsnäten i Lutorp och Vingby 1

Temperaturreglering. En jämförelse mellan en P- och en PI-regulator. θ (t) Innehåll Målsättning sid 2

Laboration 3. Funktioner, vektorer, integraler och felskattning

Introduktion till Matlab

PC-BERÄKNINGAR. REGLERTEKNIK Laboration 5 och inlämningsuppgift. Inlämningsdatum:... Inlämnad av labgrupp:... Gruppdeltagare:

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

TENTAMEN i Vattenreningsteknik 1TV361

Datorövning 1 Fördelningar

Laboration: Grunderna i Matlab

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Ickelinjära ekvationer

TENTAMEN I TSRT07 INDUSTRIELL REGLERTEKNIK

En översikt av Kap 7. Tillbakablick, återkoppling Informationsteknologi Reglering av vätskenivån i en tank. Framkoppling. Informationsteknologi

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Tentamen i Beräkningsvetenskap I (nya versionen), 5.0 hp, Del A

Stockholms framtida avloppsrening MB Komplettering

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

Effektiv onlinemätning ger energibesparingar och minskade utsläpp

Pilotförsök Linje 1 MembranBioReaktor

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

1 Förberedelser. 2 Att starta MATLAB, användning av befintliga m-filer. 3 Geometriskt fördelad avkomma

Laboration 3. Funktioner, vektorer, integraler och felskattning

8.3 Variabeltransformationer Frånkoppling. Betrakta ett 2x2-system, som beskrivs med modellen (8.3.1)

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

TMA226 datorlaboration

Newtons metod. 1 Inledning. CTH/GU LABORATION 3 MVE /2014 Matematiska vetenskaper

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Exempel: reglering av en plattreaktor. Varför systemteknik/processreglering? Blockdiagram. Blockdiagram för en (del)process. Exempel: tankprocess

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

Systemteknik Inlämningsuppgift 2 Dynamik för biologisk nedbrytning av avloppsvatten

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Transkript:

Styrning av Biologiska Reningsverk 02/03 1 Mål Utvärdering av driftstrategier för biologiska reningsverk Denna uppgift går ut på att du skall lära dig att använda din modell för att undersöka olika processutformningar och styrstrategier. Genom att utnyttja olika typer av kostnadsfunktioner skall du försöka optimera driften av ett reningsverk. Vidare skall du ha lärt dig att läsa in data från en fil och utnyttja denna data för att driva din modell, vilket möjliggör mera realistiska simuleringar. Uppgiften är ganska omfattande och i princip kan man arbeta med den under flera år utan att bli helt färdig men den erbjuder samtidigt mycket goda möjligheter att förstå inverkan av olika styrstrategier för driften av ett reningsverk. Inledning Efter att ha byggt en relativt avancerad modell av ett reningsverk är nästa naturliga steg att använda sig av modellen för att förbättra driften av verket, detta användningsområde för simuleringsmodeller brukar benämnas optimering. Optimering kan gälla att finna en styrstrategi som t.ex. minimerar utsläpp av vissa ämnen eller minskar energikostnaderna för verket. Ofta innebär optimering att försöka hitta den bästa lösningen trots att kraven är delvis motstridiga (t.ex. minimera behovet av luftning samtidigt som ammoniumhalten i utgående vatten ska minimeras). För att hitta rätt styrstrategi är datorsimuleringar till stor hjälp. För att efterlikna en verkliga situation bör insignalerna till modellen baseras på verkliga data (t.ex. de uppmätta inkommande koncentrationerna och flödet till verket som funktion av tiden). Detta innebär att vi måste ha en metod i Matlab för att läsa från en datafil och utnyttja dessa data som input till vår modell. Avancerade matematiska algoritmer existerar för att genomföra olika typer av optimering. Dessa ligger dock utanför denna kurs omfattning. I denna uppgift ska du istället försöka fundera ut lämpliga driftstrategier och därefter testa dem med hjälp av din datormodell och till sist dra slutsatser från resultaten. Sålunda är huvudmålet att öka förståelsen för hur olika processkonfigurationer och styrstrategier påverkar verket och inte att finna den perfekta optimala lösningen. Verkets konfigurationer Du ska utvärdera tre principiellt olika processkonfigurationer ett verk med fördenitrifikation, ett verk med efterdenitrifikation och ett verk som kombinerar för- och efterdenitrifikation. Det förstnämnda verket överensstämmer principiellt med den modell du utvecklade till inlämningsuppgift 4 medan de övriga två konfigurationerna erhålls genom enkla modifieringar av

Styrning av Biologiska Reningsverk 02/03 2 denna modell (se Figur 1-3). För alla konfigurationerna gäller dock att du själv avgör hur du önskar fördela volymerna mellan de olika biologiska reaktorerna under förutsättning att summan av volymerna alltid är 8000 m 3. Sedimenteringsmodellen ska inte förändras jämfört med inlämningsuppgift 4 och arean av sedimenteringsbassängen skall alltid vara 600 m 2 med höjden 4 m. Din uppgift blir att utvärdera de tre processkonfigurationerna med avseende på den kostnadsfunktion som beskrivs senare i denna handledning samt att utveckla styrstrategier för respektive konfiguration som ytterligare förbättrar driften av verken med avseende på kostnadsfunktionen. Q intr Q in Q f Q e Anox Q u Q r Q w Figur 1. Konfiguration för reningsverk med fördenitrifikation. Q in Q f Q e Anox Q u Q r Q w Figur 2. Konfiguration för reningsverk med efterdenitrifikation. Q in Q intr Q f Q e Anox Anox Q u Q r Q w Figur 3. Konfiguration för reningsverk med kombinerad för- och efterdenitrifikation.

Styrning av Biologiska Reningsverk 02/03 3 Extern kolkälla Förutom de styrmöjligheter som vi infört i modellen under de tidigare inlämningsuppgifterna ska vi nu utöka styrmöjligheterna för verket med extra tillförsel av lättnedbrytbart COD (S S ). En extern kolkälla är helt nödvändig att tillföra den anoxa tanken vid efterdenitrifikation eftersom allt lättnedbrytbart COD i det inkommande vattnet då har förbrukats i de aeroba reaktorerna och lätt nedbrytbart kol är ett krav för att någon denitrifikation ska kunna ske. Vid kolbrist i det inkommande vattnet kan en extern kolkälla även förbättra resultatet vid fördenitrifikation. Det är dock av stor vikt att aldrig tillföra mera kolkälla än vad som krävs för den egentliga denitrifikationen eftersom detta skulle leda till ökade kostnader (kolkällan + extra luftningskostnader i de aeroba stegen) och kanske onödigt höga COD halter i utgående vatten. Vi antar att vi har tillgång till ren metanol i en 33-procentig lösning och att denna kolkälla har en COD koncentration på 400 000 mg COD/l. Kolkällan är placerad i tankar bredvid respektive reaktor och flödet till varje tank kan styras direkt via en enkel proportionell regulator. För tank 4 kan koden för detta se ut på följande sätt: CODflow4 = Kkol4*(Sno4 Sno4ref); if CODflow4 < 0 CODflow4 = 0; end; % flow in m3/d där Kkol4 är regulatorns förstärkning (lämpligt värde mellan 1 och 10) och Sno4ref är börvärdet där vi vill att nitratkoncentrationen ska ligga (lämpligt värde mellan 0.5 och 2). Därefter är det bara att lägga till denna extra kolkälla i differentialekvationen som beskriver S S i tank 4, d.v.s. dss4=1/v4*((qin+qr+qintr)*ss3 + CODflow4*400000 (qin+qr+qintr)*ss4)... På liknande sätt kan du enkelt modellera tillförsel av externt kol till vilken reaktor som helst. Kostnadsfunktion För att det skall vara meningsfullt att tala om optimering av en process måste kriterierna för optimeringen vara väldefinierade. Det är ofta svårt att ställa upp adekvata kriterier och detta arbete kan i sig kräva både stor erfarenhet och kunskap. Ytterligare problem är att kriterierna ofta är inbördes motstridiga och det är svårt att jämföra olika kriterier, dvs det är svårt att vikta ihop dem till ett totalindex. Ofta försöker man översätta de olika kriterierna till ekonomiska mått. I vissa länder (Danmark, Nederländerna) har man börjat använda principen att reningsverken skall betala för utsläpp av olika ämnen, t.ex. totalt suspenderat material, total COD och total kväve, där kostnaden är direkt proportionerlig mot mängden utsläppta ämnen. I sådana fall kan man göra en optimering för ett reningsverk baserat på ekonomiska kriterier och till löpande driftskostnader (pumpningskostnader, luftningskostnader mm) kommer då löpande utsläppskostnader. För att inte optimeringsuppgiften skall bli alltför komplicerad skall du i denna uppgift endast ta hänsyn till fyra stycken kostnader : utsläpp av totalkväve (S NO + S NH + S ND i utgående vatten [mg/l]);

Styrning av Biologiska Reningsverk 02/03 4 energikostnader för luftning (summan av luftflödena till alla aeroba bassänger [m 3 /d]); energikostnader för pumpning (returslampumpning och intern recirkulation [m 3 /d]); kolkälla för denitrifikation (summan av allt extra tillfört COD [g/d]); Dessa kostnader skall vägas samman till en totalkostnad (index) enligt följande formel: total kostnad = a ((utsläpp av kväve) b ) + c luftning + d pumpning + e kolkälla där a = 1/100; b = 2; c = 1/8 000; d = 1/250 000; e = 1/3 000 000. Parametrarna a-e är empiriskt valda för att ge ett rimligt sammanvägt kostnadsindex av alla de fyra delkostnaderna. Valet av kostnadsfunktion avspeglar att vi ser allvarligt på utsläpp av kväve eftersom denna kostnad upphöjs med två medan de övriga kostnaderna endast ökar linjärt. För att enkelt beskriva hur de fyra kostnaderna ackumuleras med tiden skapar du fyra nya tillstånd i din modell på samma sätt som då du skapade en I-del för syreregulatorerna så att kostnaderna i varje ögonblick integreras (summeras ihop). Dessa tillstånd ges initialvärdena 0. Nedan ges ett kodexempel på hur detta kan se ut: if t>45 Ncost = ((Sno4 + Snh4 + Snd4)^2)/100; AIRcost = (qair1*v1 + qair2*v2 + qair3*v3 + qair4*v4)/8000; PUMPcost = (Qr + Qintr)/250000; %försumma kostnaden för Qw CODcost = (CODflow1 + CODflow2 +... CODflow3 + CODflow4)*400000/3000000; else Ncost = 0; AIRcost = 0; PUMPcost = 0; CODcost = 0; end; dncost = Ncost; daircost = AIRcost; dpumpcost = PUMPcost; dcodcost = CODcost; Den totala kostnaden fås sedan genom att summera det sista värdet i respektive kostnadsvektor när simuleringen är avslutad. Orsaken till att vi inte uppdaterar kostnadstillstånden förrän t>45 dagar förklaras i avsnittet Kvasi-stationära värden. Att minimera den totala kostnaden för drift och utsläpp för ett reningsverk genom att styra verket på ett intelligent och effektivt sätt kan i många fall innebära stora såväl ekonomiska som miljömässiga vinster. Beskrivning och manipulering av datafilen

Styrning av Biologiska Reningsverk 02/03 5 För att kunna göra realistiska simuleringar är det nödvändigt att du kan använda dig av verkliga data som input till din modell. I många simuleringsprogram är detta direkt förberett men i vår egen Matlabmodell krävs det litet speciella grepp. Först måste du ha en datafil och den kan du hitta på nätet via kursens hemsida: http://www.iea.lth.se/sbr/ Öppna filen med din browser och välj Save frame as... för att lagra filen med namnet data.txt på din lokala disk. När du tankat hem filen kan du läsa in den i Matlab genom att skriva: load data.txt -ascii Titta gärna på help load om du får problem. Se till att Matlabs path inkluderar den katalog där du sparat data.txt (eller flytta filen till samma katalog där du har din modell). Den datamatris som du nu har läst in har tio kolumner, en för varje variabel (inklusive tid). Din modell har tidigare haft 12 invariabler (inklusive Q in ). Det är dock så att vissa invariabler antas vara konstanta, nämligen: inkommande S O, S NO och X BA. Dessa variabler sätts till de värden som du använt tidigare (0 mg (-COD)/l, 1 mg N/l och 0 mg COD/l respektive). De tio kolumnerna i data.txt är i ordning: tid, S S, X BH, X S, X IP, S NH, S I, S ND, X ND och Q in. data.txt innehåller data för 50 dagar, där värdena under de första 45 dagarna är konstanta medan data för de sista 5 dagarna representerar verkliga dynamiska indata till ett verk i samband med två kraftiga oväder. Under denna dynamiska period är data samplade ungefär en gång per timme. Datamatrisen kommer att förse modellen med skiftande värden på invariablerna som funktion av tiden. Plotta gärna de olika invariablerna så att du får en uppfattning om hur de varierar innan du börjar arbeta med dem. För att kunna komma åt matrisen data från din modell måste du göra data global i både Matlab workspace och i dina m-filer. Därefter krävs ett litet trick för att kunna läsa in ett nytt värde på invariablerna vid varje simulerad ny timma. Genom att använda sig av en funktion i Matlab som heter find kan detta göras ganska lätt. find fungerar så att den ger index till alla element som uppfyller villkoret i argumentet. Eftersom resultatet från find oftast är en vektor måste find kombineras med kommandot max enligt nedan: element=max(find(data(:,1)<=t)); Detta kommando kommer att ge index (radnummer) för det största elementet i vektorn data(:,1) (som innehåller tidsvektorn) som är lika med eller mindre än t (som är tidsvariabeln i differentialekvationsmodellen). Följdaktligen kommer invariabelns värde att hållas konstant (samma som föregående värde) tills dess att nästa timme infaller och ett nytt värde blir tillgängligt. Detta brukar i reglersammanhang kallas sample-and-hold. En algoritm för inläsning av data kan ha följande principiella utseende: global data % gör data tillgängligt inne i ode-funktionen... % plats för annan kod i=max(find(data(:,1)<=t)); % hitta index till den data som gäller nu % tilldela alla dynamiska input variabler, här ges tre exempel av de nio SS_in=data(i,2); Xbh_in=data(i,3); qin=data(i,10);

Styrning av Biologiska Reningsverk 02/03 6 SO_in=0; SNO_in=1; Xba_in=0; % dessa input är konstanta Observera att tidskolumnen (kolumn 1) bara används till att hitta rätt index i dataserien och inte till något annat, dvs du ska aldrig tilldela den interna tidsvariabeln t i matlabfunktionen värdet från kolumn 1 i dataserien. Kvasi-stationära värden För att en jämförelse av kostnadsfunktionen mellan olika processkonfigurationer och styrstrategier ska vara relevant måste man utgå från samma scenario i alla körningar. Det scenario som vi är intresserade av att undersöka i denna uppgift är hur verken beter sig under de dynamiska förhållanden som råder mellan dag 45 och 50 i datafilen. Emellertid beror ju resultaten under dessa fem dagar på i vilka tillstånd verket befinner sig i när scenariot inleds. Eftersom styrningen av verket alltid är aktiv så existerar inget verkligt steady state tillstånd, inte ens när input till modellen är konstanta. Detta beror på att sedimenteringsbassängen alltid måste styras för att förhindra att den fylls med slam, styrning av returslamflödet mm. Istället så väljer vi att låta verken ställa in sig under de första 45 dagarna i ett sk kvasi-steady state tillstånd, dvs anpassa sig till de konstanta input som definieras i data filen under denna tid. Detta innebär att starttillståndet för verket kommer att se litet olika ut då själva scenariot inleds med dock att varje verk och styrstrategi har haft möjlighet att ställa in sig så bra som möjligt efter de förutsättningar som just detta verk/styrstrategi medför. Således måste du alltid simulera systemet under alla 50 dagarna då du vill studera kostnadsfunktionerna och kunna jämföra med resultat från tidigare körningar (för att systemet ska nå ett kvasi-steady state innan det utvalda scenariot inleds). Annars blir resultaten för de olika styrstrategierna omöjliga att jämföra och således irrelevanta. För att erhålla ett kvasi-steady state som är så rättvisande som möjligt vid olika körningar så ska du modifiera styrningen av slamuttaget från sedimenteringsbassängen jämfört med den styrning du använde till inlämningsuppgift 4, detta för att garantera att situationen i sedimenteringen är ungefär densamma varje gång ett scenario inleds. Utnyttja följande kodavsnitt för att modifiera din styrning av slamuttaget:

Styrning av Biologiska Reningsverk 02/03 7 qw = 0.25*(Xx7 3000) + 50; % Xx7 = SS-halten i lager nummer 7 if qw<0 qw=0; end; if qw>500 qw=500; end; Denna styrning är avsevärt mjukare jämfört med den du tidigare utnyttjade, eftersom qw kontinuerligt ändras så att mängden slam i sedimenteringsbassängen hålls ungefär konstant. Beräkningshastighet Modellen som du har byggt innehåller många tillstånd och som du kanske har märkt tar det längre och längre tid att simulera t.ex. en dag, trots att du har tillgång till en snabb dator. Det finns olika möjligheter att snabba upp beräkningarna, beroende på vilken noggrannhet man kräver. I ode15s talar man om två olika typer av noggrannheter: relativ noggrannhet och absolut noggrannhet. Beräkningarna för varje iterationsteg kommer att fortsätta tills felet e blir mindre än antingen den relativa eller den absoluta noggrannheten: e(i) PD[5HO7RODEV\L$EV7ROL I de beräkningar som du gör med ode15s kommer det acceptabla felet att variera beroende på vilket tillstånd vi tittar på, eftersom storleksordningen skiljer sig avsevärt mellan t.ex. syrehalten (mellan 0 och 5) och slamhalten (mellan 1000 och 10000). Det är därför lämpligt att du låter det relativa felet vara det styrande och en lämplig noggrannhet för denna uppgift är 10%. För att ytterligare snabba upp beräkningarna väljer vi också att reducera ordningen för ekvationslösaren till max 3 (jämfört med normala 5). För att ändra dessa inställningar i Matlab 5 skriver du på raden innan ode15s funktionen anropas följande: options = odeset( RelTol, 0.1, MaxOrder, 3); och sedan skickar du med options till ode15s som ett argument. Eftersom indata under de första 45 dagarna är konstanta så kommer lösningsalgoritmen att ta mycket stora tidssteg vid varje iteration. För att undvika att den hoppar över alla de dynamiska variationerna i datafilen mellan dag 45 och 50 måste du därför köra simuleringen i två steg först fram till dag 45 och sedan starta om körningen (mellan tid 45 och 50) med de initialdata som blev slutresultatet av den första körningen. Hela koden för detta ges nedan:

Styrning av Biologiska Reningsverk 02/03 8 options = odeset( RelTol, 0.1, MaxOrder, 3); %ta fram kvasi steady state värden för alla tillstånd [t, y] = ode15s( modellfil, [0 45], x0, options); [n, m] = size(y); %använd slutresultatet som starttillstånd för scenariet x0 = y(n,:); options = odeset( RelTol, 0.1, MaxOrder, 3); %simulera det dynamiska scenariot %45.04 garanterar att start sker vid första dynamiska input [t, y] = ode15s( modellfil, [45.04 50], x0, options); Denna kod kommer att ställa om den relativa noggrannheten till 10% och den kommer att vara den styrande. I normalfallet (default) är den relativa noggrannheten 0.1 % och den absoluta noggrannheten 1E-6. Trots dessa förändringar så får du beräkna att varje simulering av 50 dagars data kommer att ta ca 5 minuter på din dator (Pentium 100 MHz). Således gäller det att tänka efter innan man gör en simulering för att minimera antalet nödvändiga körningar. Skulle du upptäcka efter en simulering att någon variabel har blivit negativ någon gång under simuleringens gång eller att någon variabel verkar gå mot orimliga värden så måste du minska den relativa toleransen igen (t.ex. till 0.05 enligt metoden ovan) och köra igen. Om du använder Matlab 4 gör du ändringen av tolerans och ordning i samband med att du anropar stf15 lösaren enligt nedan: [t,x]=stf15( modellfil,[0 45],x0,intopt( rtol,0.1, maxorder,3)); I övrigt gäller samma princip för de två anropen till ekvationslösaren som beskrevs ovan. För att kunna exekvera kommandot intopt krävs att du har tillgång till ytterligare två m-filer getopt.m och setopt.m vilka medföljde de m-filer du hämtade tillsammans med stf15 för Matlab 4. För att ytterligare minska exekveringstiden är det mycket viktigt att de initiala värdena i tillståndsvektorn är ganska korrekta då du ska göra en simulering under 50 dagar. Detta åstadkommer du genom att göra en simulering för enbart de första 45 dagarna i datafilen (då input till modellen är konstant) för de tre olika processkonfigurationerna och använda dessa kvasi-steady state värden för att initiera dina respektive system vid de dynamiska simuleringarna. På detta sätt kommer simuleringen av de första 45 dagarna att gå mycket fort och datorkraften läggs på att simulera de sista fem dagarna med dynamiska inputvärden. Observera att även den modifierade styrningen av slamuttaget bidrar till att minska exekveringstiden. Regulatorerna och deras defaultvärden Ett antal regulatorer har utvecklats under de olika inlämningsuppgifterna. I detta avsnitt redovisas koden för samtliga regultatortyper samt rimliga värden för förstärkningar, börvärden mm. De redovisade värdena är de som definieras som defaultvärden i uppgifterna i nästa avsnitt och är lämpliga att börja med då respektive konfiguration (Figur 1-3) ska testas för första gången med ett scenario. Därefter kan parametrar och börvärden trimmas ytterligare. 1) Regulator som styr den interna recirkulationen från sista aeroba (i detta fall nr 4) till första anoxa tanken. Styrningen baseras på mätning av nitrathalten i den sista aeroba tanken.

Styrning av Biologiska Reningsverk 02/03 9 Kintr=10000; Snoref=8; qintr=kintr*(sno4 Snoref)+40000; qintr=max(0,min(qintr,80000)); 2) Regulator som styr returslampumpningen från sedimenteringen till första reaktorn. Styrningen baseras på mätning av slamhalten (TSS) i den första reaktorn. Xx00=0.75*(Xs1+Xip1)+0.9*(Xba1+Xbh1); Kr=100; Xxref=3000; qr=kr*(xxref Xx00)+10000; qr=max(0,min(qr,30000)); 3) Traditionell PI-syrereglering här exemplifierat för reaktor 2 (samma parametrar för övriga, förutom offset värdena: 0.27, 0.17, 0.12 för reaktor 2, 3 och 4). K2=1; Ti2=0.1; Soref2=2; e2=(soref2 So2); dipart2 = K2/Ti2*e2; u2=k2*e2+ipart2+0.27; if u2 > 1 u2=1; elseif u2 < 0 u2=0; end qair2=u2*7; 4) Kaskadreglering av syre. Regulatorn nedan beräknar ett börvärde för en traditionell syreregulator enligt (3). Styrningen baseras på mätning av ammoniumhalten i den aktuella tanken (i detta fall tank 4). Ksp=0.25; Snhref = 1.0; Soref4=Ksp*(Snh4 Snhref); if Soref4 < 0.5 Soref4=0.5; elseif Soref4 > 5 Soref4=5; end; 5) Reglering av flödet av extern kolkälla. Styrningen baseras på mätning av nitrathalten i aktuell bassäng (i detta fall tank 4). Kkol4=2; Snoref4 = 0.5; CODflow4=Kkol4*(Sno4 Snoref4); if CODflow4<0 CODflow4=0; end;

Styrning av Biologiska Reningsverk 02/03 10 6) Den nya typen av reglering för att styra uttaget av överskottsslam är redovisad i detalj tidigare i denna handledning. Uppgifter 1) Modifiera din modell från inlämningsuppgift 4 (dvs konfiguration enligt Figur 1) med den nya styrstrategin för överskottsslamuttag. Inför tillstånd och ekvationer som beskriver kostnadsfunktionen. Testa att modellen fungerar och att kostnadsfunktionerna ger vettiga resultat. 2) Modifiera ditt program så att modellen automatiskt läser data från den erhållna datafilen och testa att detta fungerar. 3) Beräkna kvasi-stationära värden för modellen med input från datafilen (dag 0 till 45). Dessa bör vara ungefär lika med de värden som redovisas i Tabell 1. Resultatet beror till viss del på vilka förstärkningar och börvärden du använder i dina regulatorer. Resultaten i Tabell 1 är erhållna med de defaultvärden för regulatorerna som beskrevs i föregående avsnitt (enhet i Tabell 1 är mg/l). Redovisa dina egna resultat. Variabel Anox 1 2 3 S I 19.8 19.8 19.8 19.8 S S 7.4 4.0 2.7 1.9 X IP 2025 2027 2030 2032 X S 84 45 25 19 X BH 1521 1538 1541 1535 X BA 56 57 57 57 S O 0 2.0 2.0 0.5 S NO 0.5 3.9 6.7 7.5 S NH 8.9 4.5 1.8 1.0 S ND 0.6 1.0 0.9 0.8 X ND 4.3 2.7 1.8 1.5 Tabell 1. Kvasi-stationära värden enligt uppgift 3. 4) Simulera hela scenariot och plotta de fyra individuella kostnaderna och redovisa totalkostnaden. Om du använder defaultvärdena för regulatorerna bör de individuella kostnaderna likna dem i Figur 4 och totalkostnaden bör ligga omkring 10.4±0.1. Redovisa dina resultat och kommentera utseendet på kostnadsfunktionerna. Varför blir det så här?

Styrning av Biologiska Reningsverk 02/03 11 Kostnadsindex 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 Air Carbon Ntot Pumping Individuella kostnader 0 45 45.5 46 46.5 47 47.5 48 48.5 49 49.5 50 Tid (dagar) Figur 4. De individuella kostnaderna för uppgift 4 med defaultvärden på regulatorerna. 5) Utöka modellen med en extern kolkälla till den anoxa zonen och testa att detta fungerar. *** DU ÄR NU REDO ATT BÖRJA ARBETA PÅ ALLVAR *** 6) Studera hur koncentrationerna i reaktorerna och sedimenteringsbassängen varierar mellan dag 45 och 50 och försök med hjälp av denna information och kostnadsfunktionernas utseende modifiera verket med avseende på styrstrategin i första hand och ändringar av volymfördelningen i andra hand för att minska den totala kostnaden för scenariot. Du har full frihet att modifiera alla befintliga regulatorer (börvärden och förstärkningar), byta regulatortyper, införa nya regulatorer (t.ex. för extern kolkälla) mm. Din fantasi sätter gränserna. Om du ändrar offset eller min och max gränserna för regulatorernas utsignaler bör du dock ha starka skäl för detta. Du bör redovisa minst tre olika försök att minska den totala kostnaden vad du har modifierat i verket, vilka var dina motiv för dessa åtgärder, hur blev resultatet, varför blev resultatet så, vad hade du förväntat dig! Även om du inte lyckas sänka den totala kostnaden så kan du säkert dra intressanta slutsatser varför du inte lyckades. Du kan samtidigt förklara varför slammängden i reaktorerna minskar så kraftigt

Styrning av Biologiska Reningsverk 02/03 12 omkring dag 48 (glöm inte att studera hur indatafilen ser ur). OBS! Börja varje simulering med samma initialvärden i tillståndsvektorn. 7) Gör en kopia av din modell och modifiera den så den beskriver konfigurationen i Figur 2. Modifiera på enklaste sätt dina regulatorer för att passa denna konfiguration. Kör scenariot och visa vad som händer med de individuella och den totala kostnaden jämfört med resultatet i uppgift 6. Motivera dessa resultat. Redovisa ytterligare två försök att förbättra resultatet och redovisa allt du gör och vilka slutsatser du drar på samma sätt som i föregående uppgift. OBS! Börja varje simulering med samma initialvärden i tillståndsvektorn. 8) Gör en kopia av din modell och modifiera den till konfigurationen enligt Figur 3. Modifiera på enklaste sätt dina regulatorer för att passa denna konfiguration. Kör scenariot och visa vad som händer med de individuella och den totala kostnaden jämfört med resultatet i uppgift 6 och 7. Motivera dessa resultat. Redovisa ytterligare två försök att förbättra resultatet och redovisa allt du gör och vilka slutsatser du drar på samma sätt som i föregående uppgift. OBS! Börja varje simulering med samma initialvärden i tillståndsvektorn. 9) Frivillig extrauppgift! Vi på IEA har som bäst lyckats erhålla totalkostnaden 7.0 för verket i uppgift 8 utan att använda några andra typer av regulatorer än de vi beskrivit i denna handledning (dock modifierade avseende börvärden, förstärkningar mm och fördelning av volymerna mellan reaktorerna). Om du kan redovisa en bättre lösning har du bevisat att du är av det rätta virket för att inleda doktorandstudier hos oss efter examen (OBS! Doktorandtjänst kan dock inte garanteras!). Redovisning Redovisning av uppgiften kan ske antingen genom e-mail eller traditionell inlämning på papper. Om rapporten lämnas via e-mail (som en s.k. attached file ) så krävs att den är skriven i MS Word. Rapporten skall innehålla programutskrifter av era m-filer (kommenterad kod!), lämpliga Matlab-grafer samt beskrivande kommentarer och diskussion av resultaten. Då inlämningsuppgifterna ligger till grund för godkännande på kursen är dessa individuella, vilket innebär att alla kursdeltagare skall lämna in en personlig rapport. Senaste inlämningsdatum är fredagen 28 februari 2003. Rapporter via e-mail skickas till: jon.bolmstedt@iea.lth.se Jon Bolmstedt kommer att finnas tillgänglig för frågor angående uppgiften på torsdagar mellan kl. 10.30 och 12.30 på sitt tjänsterum. Om du är i behov av assistans vid andra tidpunkter går det bra att söka upp Jon (men ingen garanti finns att han är tillgänglig just då). Ännu bättre är att skicka eventuella frågor via e-mail så blir dessa besvarade så fort som möjligt.