source: trunk/sample/miscellaneous/tenprobs/prob10.mso @ 957

Last change on this file since 957 was 913, checked in by Argimiro Resende Secchi, 13 years ago

Checking new EML.

File size: 7.7 KB
Line 
1#*---------------------------------------------------------------------
2* EMSO Model Library (EML) Copyright (C) 2004 - 2007 ALSOC.
3*
4* This LIBRARY is free software; you can distribute it and/or modify
5* it under the therms of the ALSOC FREE LICENSE as available at
6* http://www.enq.ufrgs.br/alsoc.
7*
8* EMSO Copyright (C) 2004 - 2007 ALSOC, original code
9* from http://www.rps.eng.br Copyright (C) 2002-2004.
10* All rights reserved.
11*
12* EMSO is distributed under the therms of the ALSOC LICENSE as
13* available at http://www.enq.ufrgs.br/alsoc.
14*
15*----------------------------------------------------------------------
16* 10. Dynamics of a heated tank with PI temperature control
17*----------------------------------------------------------------------
18*
19*   Description:
20*      This problem is part of a collection of 10 representative
21*       problems in Chemical Engineering for solution by numerical methods
22*       developed for Cutlip (1998).
23*
24*   Subject:
25*       * Process Dynamics and Control
26*
27*       Concepts utilized:
28*               Closed loop dynamics of a process including first order lag
29*       and dead time. Padé aprroximation of time delay.
30*
31*       Numerical method:
32*               * ODEs
33*               * Generation of step functions
34*               * Simulation of a proportional integral controller
35*
36*   Reference:
37*               * CUTLIP et al. A collection of 10 numerical problems in
38*       chemical engineering solved by various mathematical software
39*       packages. Comp. Appl. in Eng. Education. v. 6, 169-180, 1998.
40*       * More informations and a detailed description of all problems
41*       is available online in http://www.polymath-software.com/ASEE
42*
43*----------------------------------------------------------------------
44* Author: Rodolfo Rodrigues
45* GIMSCOP/UFRGS - Group of Integration, Modeling, Simulation,
46*                                       Control, and Optimization of Processes
47* $Id$
48*--------------------------------------------------------------------*#
49using "types";
50
51
52
53#*---------------------------------------------------------------------
54*       Model of the tank system
55*--------------------------------------------------------------------*#
56Model heated_tank
57        PARAMETERS
58        # Stirred-tank
59        rhoVCp  as Real                 (Default=4e3, Unit='kJ/K');
60        WCp             as Real                 (Default=500, Unit='kJ/min/K');
61        Tis             as temperature  (Brief="Steady-state design temperature", Default=333.15);
62        Tr              as temperature  (Brief="Set point temperature", Default=353.15);
63       
64        # Thermocouple
65        tau_d   as Real                 (Brief="Dead time", Default=1, Unit='min');
66        tau_m   as Real                 (Brief="Time constant", Default=5, Unit='min');
67       
68        # Heater and PI controller
69        tau_I   as Real                 (Brief="Integral time constant", Default=2, Unit='min');
70        Kc              as Real                 (Brief="Proportional gain", Unit='kJ/min/K');
71        Integrator as Switcher  (Brief="Integrator term to heat expression", Valid=["on","off"], Default="on");
72       
73        VARIABLES
74        # Stirred-tank
75        T               as temperature  (Brief="Tank temperature");
76        Ti              as temperature  (Brief="Feed temperature");
77       
78        # Thermocouple
79        To              as temperature  (Brief="Input temperature");
80        Tm              as temperature  (Brief="Measured temperature");
81       
82        # Heater and PI controller
83        errsum  as Real                 (Unit='K*s');
84        q               as heat_rate    (Brief="Heat input", DisplayUnit='kW');
85        qs              as heat_rate    (Brief="Steady-state heat input", DisplayUnit='kW');
86
87        EQUATIONS
88        "Energy balance"
89        diff(T) = (WCp*(Ti - T) + q)/rhoVCp;
90       
91        "Padé approximation"
92        diff(To) = (T - To - 0.5*tau_d*diff(T))*2/tau_d;
93       
94        "Thermocouple equation"
95        diff(Tm) = (To - Tm)/tau_m;
96       
97        switch Integrator
98                case "on":
99                "Heat input"
100                q = qs + Kc*(Tr - Tm) + Kc*errsum/tau_I;
101               
102                case "off":
103                "Heat input"
104                q = qs + Kc*(Tr - Tm);
105        end     
106       
107        "Energy input required at steady-state"
108        qs = WCp*(Tr - Tis);
109       
110        diff(errsum) = Tr - Tm;
111end
112
113
114#*---------------------------------------------------------------------
115*       (a) Dynamics of the heated tank
116*--------------------------------------------------------------------*#
117FlowSheet prob10a as heated_tank
118        SET
119        Kc = 0*'kJ/min/K';
120       
121        EQUATIONS
122        if time<10*'min' then
123                Ti = 333.15*'K';
124        else
125                Ti = 313.15*'K';
126        end
127       
128        INITIAL
129        T  = Tr;
130        To = Tr;
131        Tm = Tr;
132        errsum = 0*'K*s';
133
134        OPTIONS
135        TimeStart = 0;
136        TimeStep = 0.5;
137        TimeEnd = 60;
138        TimeUnit = 'min';
139end
140
141
142#*---------------------------------------------------------------------
143*       (b) Dynamics of the heated tank for PI control
144*--------------------------------------------------------------------*#
145FlowSheet prob10b as heated_tank
146        SET
147        Kc = 50*'kJ/min/K';
148       
149        EQUATIONS
150        if time<10*'min' then
151                Ti = 333.15*'K';
152        else
153                Ti = 313.15*'K';
154        end
155       
156        INITIAL
157        T  = Tr;
158        To = Tr;
159        Tm = Tr;
160        errsum = 0*'K*s';
161
162        OPTIONS
163        TimeStart = 0;
164        TimeStep = 0.5;
165        TimeEnd = 200;
166        TimeUnit = 'min';
167end
168
169
170#*---------------------------------------------------------------------
171*       (c) Dynamics of the heated tank for PI with Kc=500
172*--------------------------------------------------------------------*#
173FlowSheet prob10c as heated_tank
174        SET
175        Kc = 500*'kJ/min/K';
176       
177        EQUATIONS
178        if time<10*'min' then
179                Ti = 333.15*'K';
180        else
181                Ti = 313.15*'K';
182        end
183       
184        INITIAL
185        T  = Tr;
186        To = Tr;
187        Tm = Tr;
188        errsum = 0*'K*s';
189
190        OPTIONS
191        TimeStart = 0;
192        TimeStep = 0.5;
193        TimeEnd = 200;
194        TimeUnit = 'min';
195end
196
197
198#*---------------------------------------------------------------------
199*       (d) Dynamics of the heated tank for P with Kc=500
200*--------------------------------------------------------------------*#
201FlowSheet prob10d as heated_tank
202        SET
203        Kc = 500*'kJ/min/K';
204        Integrator = "off";
205       
206        EQUATIONS
207        if time<10*'min' then
208                Ti = 333.15*'K';
209        else
210                Ti = 313.15*'K';
211        end
212       
213        INITIAL
214        T  = Tr;
215        To = Tr;
216        Tm = Tr;
217        errsum = 0*'K*s';
218
219        OPTIONS
220        TimeStart = 0;
221        TimeStep = 0.5;
222        TimeEnd = 60;
223        TimeUnit = 'min';
224end
225
226
227#*---------------------------------------------------------------------
228*       (e) Dynamics of the heated tank for P with q limits
229*--------------------------------------------------------------------*#
230FlowSheet prob10e
231        PARAMETERS
232        # Stirred-tank
233        rhoVCp  as Real                 (Default=4e3, Unit='kJ/K');
234        WCp             as Real                 (Default=500, Unit='kJ/min/K');
235        Tis             as temperature  (Brief="Steady-state design temperature", Default=333.15);
236        Ti              as temperature  (Brief="Feed temperature");
237       
238        # Thermocouple
239        tau_d   as Real                 (Brief="Dead time", Default=1, Unit='min');
240        tau_m   as Real                 (Brief="Time constant", Default=5, Unit='min');
241       
242        # Heater and PI controller
243        tau_I   as Real                 (Brief="Integral time constant", Default=2, Unit='min');
244        Kc              as Real                 (Brief="Proportional gain", Unit='kJ/min/K');
245       
246        VARIABLES
247        # Stirred-tank
248        T               as temperature  (Brief="Tank temperature");
249        Tr              as temperature  (Brief="Set point temperature");
250       
251        # Thermocouple
252        To              as temperature  (Brief="Input temperature");
253        Tm              as temperature  (Brief="Measured temperature");
254       
255        # Heater and PI controller
256        errsum  as Real                 (Unit='K*s');
257        q               as heat_rate    (Brief="Heat input", DisplayUnit='kW');
258        qlim    as heat_rate    (Brief="Limit input energy", DisplayUnit='kW');
259        qs              as heat_rate    (Brief="Steady-state heat input", DisplayUnit='kW');
260
261        EQUATIONS
262        "Energy balance"
263        diff(T) = (WCp*(Ti - T) + qlim)/rhoVCp;
264       
265        "Padé approximation"
266        diff(To) = (T - To - 0.5*tau_d*diff(T))*2/tau_d;
267       
268        "Thermocouple equation"
269        diff(Tm) = (To - Tm)/tau_m;
270       
271        "Heat input"
272        q = qs + Kc*(Tr - Tm);
273       
274        "Energy input required at steady-state"
275        qs = WCp*(Tr - Tis);
276       
277        diff(errsum) = Tr - Tm;
278
279        if time<10*'min' then
280                Tr = 353.15*'K';
281        else
282                Tr = 363.15*'K';
283        end
284       
285        if q < 0*'kW' then
286                qlim=0*'kW';
287        else
288                if q>=2.6*qs then
289                        qlim=2.6*qs;
290                else
291                        qlim=q;
292                end
293        end
294       
295        SET
296        Kc = 5e3*'kJ/min/K';
297        Ti = 333.15*'K';
298
299        INITIAL
300        T  = 353.15*'K';
301        To = 353.15*'K';
302        Tm = 353.15*'K';
303        errsum = 0*'K*s';
304
305        OPTIONS
306        TimeStart = 0;
307        TimeStep = 0.5;
308        TimeEnd = 200;
309        TimeUnit = 'min';
310end
Note: See TracBrowser for help on using the repository browser.