TITLE MULTI VESSEL BATCH DISTILLATION # # Plant consists of 3 column sections, 2 intermediate vessels, # reboiler, total condenser and accumulator (trays are numbered # from the top and down). # Vapor bypassing the intermediate vessels # # There are 4 components. The lightest product is accumulated # in the condenser, the second lightest in the upper vessel, # the third lightest in the lower vessel and the heaviest in # the reboiler. # # The mathematical model assumes constant relative volatility # (relative to the heaviest component) and linear tray # hydraulics. Separation is taking place in the vessels too. # # Control algorithm: 3 PI-controllers which control the # temperature in the middle of the column sections. # Manipulated variable is the liquid flow from the vessel # above. Set points for the controllers are average boiling # temperature between the two separated components # # The termination criterion is based on approach to steady # state; max[xt(t)-xt(t-0.01)] in the condenser, vessels and # reboiler. # # Two report forms: Multi_vessel and Summary. # #--------------------------------------------------------------- # # Dummy variable XT in most models. Reason: Can not use derivative # variable (xt) in input/output streams (use xo instead). # # Composition changes as separate variables in condenser, # vessels and reboiler. Reason: Can not use arrays in connections. # #--------------------------------------------------------------- # # Author: Bernd Wittgens, based on E. Sorensen # Date: 10.10.95 # **** OPTIONS ROUTINES DAE EXECUTION PRINTLEVEL = 2 # level of output during solution TARGET = terminal # device to which output is directed REL_TOL = 1E-8 # relative tolerence ABS_TOL = 1E-8 # absolute tolerence EVENT_TOL = 1E-8 # event tolerance INTERVALS = 100 # number of time steps for dynamic solution TIME_STEP = 0.1 # length of time step for storing data DEBUG = OFF # switch for additional information **** DECLARE TYPE FLOWRATE = 10.0 : 0 : 50 Unit = "kmol/hr" MOLE_FRACTION = 0.5 : 0 : 1 Unit = "-------" MOLAR_HOLDUP = 3.0 : 0 : 25 Unit = "kmol" REFLUX_RATIO = 1 : 0 :1.0E10 Unit = "-------" EQ_CONST = 1 : 0.01 : 100 Unit = "-------" NOTYPE = 1 : -100 : 250 Unit = "-------" TEMPERATURE = 90 : 50 : 130 UNIT = "deg. C " STREAM MAINSTREAM SET NC = 4 TYPE FLOWRATE, MOLE_FRACTION(NC) **** MODEL CONDENSER # Condenser model # SET NC TYPE LO,VI,L_CNTR AS FLOWRATE XO,YI,XD,XT AS ARRAY(NC) OF MOLE_FRACTION HT,HC AS MOLAR_HOLDUP R AS REFLUX_RATIO T AS TEMPERATURE TB AS ARRAY(NC) OF TEMPERATURE SS_XT_1,SS_XT_2 AS NOTYPE SS_XT_3,SS_XT_4 AS NOTYPE MINUS AS NOTYPE STREAM INPUT 1 VI,YI OUTPUT 1 LO,XO CONNECTION 1 L_CNTR # From controller # CONNECTION 2 SS_XT_1 # Approach to steady_state # CONNECTION 3 SS_XT_2 # Approach to steady_state # CONNECTION 4 SS_XT_3 # Approach to steady_state # CONNECTION 5 SS_XT_4 # Approach to steady_state # CONNECTION 6 T EQUATION # Material balance # $HT = VI - LO ; HC * $XT + XT * $HT = VI * YI - LO * XD ; HT = HC ; XT = XO = XD ; # Reflux ratio # R * VI = LO ; # Controller # LO = L_CNTR ; # Temperature # T = Tb(1)*xt(1)+Tb(2)*xt(2)+Tb(3)*xt(3)+Tb(4)*xt(4); # Steady state measure = xt(t)-xt(t-minus) # SS_XT_1 = XT(1) - (DELAY XT(1) BY MINUS) ; SS_XT_2 = XT(2) - (DELAY XT(2) BY MINUS) ; SS_XT_3 = XT(3) - (DELAY XT(3) BY MINUS) ; SS_XT_4 = XT(4) - (DELAY XT(4) BY MINUS) ; **** MODEL PI_CONTROLLER # Proportional controller SET CLIP = 1 TYPE MEASURE, SET_POINT AS NOTYPE BIAS,GAIN, reset AS NOTYPE ERROR, I_error, eps AS NOTYPE CALC_VALUE,CONT AS NOTYPE CONTROL_ACTION AS NOTYPE MAX,MIN AS NOTYPE CNTR_FLAG,SET_FLOW AS NOTYPE STREAM CONNECTION 1 MEASURE CONNECTION 2 CONTROL_ACTION EQUATION ERROR = SET_POINT - MEASURE ; $I_error = eps ; CALC_VALUE = BIAS + GAIN * (error + I_error/reset) ; # Clip if required # IF CLIP = 1 THEN IF CALC_VALUE > MAX THEN CONT = MAX ELSE IF CALC_VALUE < MIN THEN CONT = MIN ELSE CONT = CALC_VALUE ENDIF ENDIF ELSE CONT = CALC_VALUE ENDIF ; IF CNTR_FLAG = 1 THEN CONTROL_ACTION = CONT ELSE CONTROL_ACTION = SET_FLOW ENDIF ; # antiwindup IF < OR max> > then eps = 0.0 else eps = error endif; **** MODEL P_CONTROLLER # Proportional controller SET CLIP = 1 TYPE MEASURE, SET_POINT AS NOTYPE BIAS,GAIN,ERROR AS NOTYPE CALC_VALUE,CONT AS NOTYPE CONTROL_ACTION AS NOTYPE MAX,MIN AS NOTYPE CNTR_FLAG,SET_FLOW AS NOTYPE STREAM CONNECTION 1 MEASURE CONNECTION 2 CONTROL_ACTION EQUATION ERROR = SET_POINT - MEASURE ; CALC_VALUE = BIAS + GAIN * ERROR ; # Clip if required # IF CLIP = 1 THEN IF CALC_VALUE > MAX THEN CONT = MAX ELSE IF CALC_VALUE < MIN THEN CONT = MIN ELSE CONT = CALC_VALUE ENDIF ENDIF ELSE CONT = CALC_VALUE ENDIF ; IF CNTR_FLAG = 1 THEN CONTROL_ACTION = CONT ELSE CONTROL_ACTION = SET_FLOW ENDIF ; **** MODEL REBOILER # Reboiler model # SET NC TYPE LI,VO AS FLOWRATE XI,YO,XN,XT AS ARRAY(NC) OF MOLE_FRACTION HT,HN AS MOLAR_HOLDUP K AS ARRAY(NC) OF EQ_CONST SS_XT_1,SS_XT_2 AS NOTYPE SS_XT_3,SS_XT_4 AS NOTYPE MINUS AS NOTYPE T AS TEMPERATURE TB AS ARRAY(NC) OF TEMPERATURE STREAM INPUT 1 LI,XI OUTPUT 1 VO,YO CONNECTION 1 SS_XT_1 # Approach to steady_state # CONNECTION 2 SS_XT_2 # Approach to steady_state # CONNECTION 3 SS_XT_3 # Approach to steady_state # CONNECTION 4 SS_XT_4 # Approach to steady_state # CONNECTION 5 T EQUATION # Material balance # $HT = LI - VO ; HT * $XT + XT * $HT = LI * XI - VO * YO ; HT = HN ; XT = XN ; # Phase equilibrium # YO(2:NC) * XN(1) = K(2:NC)/K(1) * XN(2:NC) * YO(1) ; SIGMA(YO) = 1.0 ; # Temperature # T = Tb(1)*xt(1)+Tb(2)*xt(2)+Tb(3)*xt(3)+Tb(4)*xt(4); # Steady state measure = xt(t)-xt(t-minus) # SS_XT_1 = XT(1) - (DELAY XT(1) BY MINUS) ; SS_XT_2 = XT(2) - (DELAY XT(2) BY MINUS) ; SS_XT_3 = XT(3) - (DELAY XT(3) BY MINUS) ; SS_XT_4 = XT(4) - (DELAY XT(4) BY MINUS) ; **** MODEL STEADY_STATE # Returns maximum change in composition over time interval # SET NNC=16 TYPE COND_SS_XT_1,COND_SS_XT_2 AS NOTYPE COND_SS_XT_3,COND_SS_XT_4 AS NOTYPE V_A_SS_XT_1,V_A_SS_XT_2 AS NOTYPE V_A_SS_XT_3,V_A_SS_XT_4 AS NOTYPE V_B_SS_XT_1,V_B_SS_XT_2 AS NOTYPE V_B_SS_XT_3,V_B_SS_XT_4 AS NOTYPE REB_SS_XT_1,REB_SS_XT_2 AS NOTYPE REB_SS_XT_3,REB_SS_XT_4 AS NOTYPE SS AS ARRAY(NNC) OF NOTYPE MAX_SS AS NOTYPE STREAM CONNECTION 1 COND_SS_XT_1 # From condenser # CONNECTION 2 COND_SS_XT_2 CONNECTION 3 COND_SS_XT_3 CONNECTION 4 COND_SS_XT_4 CONNECTION 5 V_A_SS_XT_1 # From vessel_A # CONNECTION 6 V_A_SS_XT_2 CONNECTION 7 V_A_SS_XT_3 CONNECTION 8 V_A_SS_XT_4 CONNECTION 9 V_B_SS_XT_1 # From vessel_B # CONNECTION 10 V_B_SS_XT_2 CONNECTION 11 V_B_SS_XT_3 CONNECTION 12 V_B_SS_XT_4 CONNECTION 13 REB_SS_XT_1 # From reboiler # CONNECTION 14 REB_SS_XT_2 CONNECTION 15 REB_SS_XT_3 CONNECTION 16 REB_SS_XT_4 EQUATION # All composition changes in an array # SS(1) = COND_SS_XT_1 ; SS(2) = COND_SS_XT_2 ; SS(3) = COND_SS_XT_3 ; SS(4) = COND_SS_XT_4 ; SS(5) = V_A_SS_XT_1 ; SS(6) = V_A_SS_XT_2 ; SS(7) = V_A_SS_XT_3 ; SS(8) = V_A_SS_XT_4 ; SS(9) = V_B_SS_XT_1 ; SS(10) = V_B_SS_XT_2 ; SS(11) = V_B_SS_XT_3 ; SS(12) = V_B_SS_XT_4 ; SS(13) = REB_SS_XT_1 ; SS(14) = REB_SS_XT_2 ; SS(15) = REB_SS_XT_1 ; SS(16) = REB_SS_XT_2 ; # Largest steady state deviation # MAX_SS = SMAX(SS) ; **** MODEL TRAY # Column tray model # SET NC TYPE LO_INIT,LI,VO,VI,LO AS FLOWRATE XI,XO,YO,YI,XT AS ARRAY(NC) OF MOLE_FRACTION X1,X2,X3,X4 AS MOLE_FRACTION HI_INIT,HI,HT AS MOLAR_HOLDUP K AS ARRAY(NC) OF EQ_CONST TAU AS NOTYPE T AS TEMPERATURE TB AS ARRAY(NC) OF TEMPERATURE STREAM INPUT 1 LI,XI INPUT 2 VI,YI OUTPUT 1 LO,XO OUTPUT 2 VO,YO CONNECTION 1 X1 # Composition of component 1 # CONNECTION 2 X2 # Composition of component 2 # CONNECTION 3 X3 # Composition of component 3 # CONNECTION 4 X4 # Composition of component 4 # CONNECTION 5 T EQUATION # Material balance # $HT = LI + VI - LO - VO ; HT * $XT + XT * $HT = LI * XI + VI * YI - LO * XO - VO * YO ; HT = HI ; XT = XO ; # Constant molar flows # VI = VO ; # Phase equilibrium # YO(2:NC) * XO(1) = K(2:NC)/K(1) * XO(2:NC) * YO(1) ; SIGMA(YO) = 1.0 ; # Temperature # T = Tb(1)*xt(1)+Tb(2)*xt(2)+Tb(3)*xt(3)+Tb(4)*xt(4); # Tray hydraulics # (LO - LO_INIT) * TAU = HI - HI_INIT ; TAU = 2/3 * HI/LO ; # Measurements used by controllers # X1 = XO(1) ; X2 = XO(2) ; X3 = XO(3) ; X4 = XO(4) ; **** MODEL VESSEL # Intermediate storage vessel model # SET NC TYPE LI,LO,L_CNTR AS FLOWRATE XI,XO,XT AS ARRAY(NC) OF MOLE_FRACTION HT,HI AS MOLAR_HOLDUP SS_XT_1,SS_XT_2 AS NOTYPE SS_XT_3,SS_XT_4 AS NOTYPE MINUS AS NOTYPE T AS TEMPERATURE TB AS ARRAY(NC) OF TEMPERATURE STREAM INPUT 1 LI,XI OUTPUT 1 LO,XO CONNECTION 1 L_CNTR # From controller # CONNECTION 2 SS_XT_1 # Approach to steady_state # CONNECTION 3 SS_XT_2 # Approach to steady_state # CONNECTION 4 SS_XT_3 # Approach to steady_state # CONNECTION 5 SS_XT_4 # Approach to steady_state # CONNECTION 6 T EQUATION # Material balance # $HT = LI - LO ; HT * $XT + XT * $HT = LI * XI - LO * XO ; HT = HI ; XT = XO ; # Controller # LO = L_CNTR ; # Temperature # T = Tb(1)*xt(1)+Tb(2)*xt(2)+Tb(3)*xt(3)+Tb(4)*xt(4); # Steady state measure = xt(t)-xt(t-minus) # SS_XT_1 = XT(1) - (DELAY XT(1) BY MINUS) ; SS_XT_2 = XT(2) - (DELAY XT(2) BY MINUS) ; SS_XT_3 = XT(3) - (DELAY XT(3) BY MINUS) ; SS_XT_4 = XT(4) - (DELAY XT(4) BY MINUS) ; **** FLOWSHEET # Liquid flows (top and down).. # reflux to column section A STREAM L1_FEED OUTPUT 1 OF cond IS INPUT 1 OF TRAY_A1 STREAM L2_FEED OUTPUT 1 OF TRAY_A1 IS INPUT 1 OF TRAY_A2 STREAM L3_FEED OUTPUT 1 OF TRAY_A2 IS INPUT 1 OF TRAY_A3 STREAM L4_FEED OUTPUT 1 OF TRAY_A3 IS INPUT 1 OF TRAY_A4 STREAM L5_FEED OUTPUT 1 OF TRAY_A4 IS INPUT 1 OF TRAY_A5 STREAM L6_FEED OUTPUT 1 OF TRAY_A5 IS INPUT 1 OF TRAY_A6 STREAM L7_FEED OUTPUT 1 OF TRAY_A6 IS INPUT 1 OF TRAY_A7 STREAM L8_FEED OUTPUT 1 OF TRAY_A7 IS INPUT 1 OF TRAY_A8 STREAM L9_FEED OUTPUT 1 OF TRAY_A8 IS INPUT 1 OF TRAY_A9 STREAM L10_FEED OUTPUT 1 OF TRAY_A9 IS INPUT 1 OF TRAY_A10 STREAM L11_FEED OUTPUT 1 OF TRAY_A10 IS INPUT 1 OF TRAY_A11 STREAM L12_FEED OUTPUT 1 OF TRAY_A11 IS INPUT 1 OF VESSEL_A STREAM L13_FEED OUTPUT 1 OF VESSEL_A IS INPUT 1 OF TRAY_B1 STREAM L14_FEED OUTPUT 1 OF TRAY_B1 IS INPUT 1 OF TRAY_B2 STREAM L15_FEED OUTPUT 1 OF TRAY_B2 IS INPUT 1 OF TRAY_B3 STREAM L16_FEED OUTPUT 1 OF TRAY_B3 IS INPUT 1 OF TRAY_B4 STREAM L17_FEED OUTPUT 1 OF TRAY_B4 IS INPUT 1 OF TRAY_B5 STREAM L18_FEED OUTPUT 1 OF TRAY_B5 IS INPUT 1 OF TRAY_B6 STREAM L19_FEED OUTPUT 1 OF TRAY_B6 IS INPUT 1 OF TRAY_B7 STREAM L20_FEED OUTPUT 1 OF TRAY_B7 IS INPUT 1 OF TRAY_B8 STREAM L21_FEED OUTPUT 1 OF TRAY_B8 IS INPUT 1 OF TRAY_B9 STREAM L22_FEED OUTPUT 1 OF TRAY_B9 IS INPUT 1 OF TRAY_B10 STREAM L23_FEED OUTPUT 1 OF TRAY_B10 IS INPUT 1 OF TRAY_B11 STREAM L24_FEED OUTPUT 1 OF TRAY_B11 IS INPUT 1 OF VESSEL_B STREAM L25_FEED OUTPUT 1 OF VESSEL_B IS INPUT 1 OF TRAY_C1 STREAM L26_FEED OUTPUT 1 OF TRAY_C1 IS INPUT 1 OF TRAY_C2 STREAM L27_FEED OUTPUT 1 OF TRAY_C2 IS INPUT 1 OF TRAY_C3 STREAM L28_FEED OUTPUT 1 OF TRAY_C3 IS INPUT 1 OF TRAY_C4 STREAM L29_FEED OUTPUT 1 OF TRAY_C4 IS INPUT 1 OF TRAY_C5 STREAM L30_FEED OUTPUT 1 OF TRAY_C5 IS INPUT 1 OF TRAY_C6 STREAM L31_FEED OUTPUT 1 OF TRAY_C6 IS INPUT 1 OF TRAY_C7 STREAM L32_FEED OUTPUT 1 OF TRAY_C7 IS INPUT 1 OF TRAY_C8 STREAM L33_FEED OUTPUT 1 OF TRAY_C8 IS INPUT 1 OF TRAY_C9 STREAM L34_FEED OUTPUT 1 OF TRAY_C9 IS INPUT 1 OF TRAY_C10 STREAM L35_FEED OUTPUT 1 OF TRAY_C10 IS INPUT 1 OF TRAY_C11 STREAM L36_FEED OUTPUT 1 OF TRAY_C11 IS INPUT 1 OF REB # Vapour flows (bottom and up).. STREAM V1_FEED OUTPUT 1 OF REB IS INPUT 2 OF TRAY_C11 STREAM V2_FEED OUTPUT 2 OF TRAY_C11 IS INPUT 2 OF TRAY_C10 STREAM V3_FEED OUTPUT 2 OF TRAY_C10 IS INPUT 2 OF TRAY_C9 STREAM V4_FEED OUTPUT 2 OF TRAY_C9 IS INPUT 2 OF TRAY_C8 STREAM V5_FEED OUTPUT 2 OF TRAY_C8 IS INPUT 2 OF TRAY_C7 STREAM V6_FEED OUTPUT 2 OF TRAY_C7 IS INPUT 2 OF TRAY_C6 STREAM V7_FEED OUTPUT 2 OF TRAY_C6 IS INPUT 2 OF TRAY_C5 STREAM V8_FEED OUTPUT 2 OF TRAY_C5 IS INPUT 2 OF TRAY_C4 STREAM V9_FEED OUTPUT 2 OF TRAY_C4 IS INPUT 2 OF TRAY_C3 STREAM V10_FEED OUTPUT 2 OF TRAY_C3 IS INPUT 2 OF TRAY_C2 STREAM V11_FEED OUTPUT 2 OF TRAY_C2 IS INPUT 2 OF TRAY_C1 STREAM V12_FEED OUTPUT 2 OF TRAY_C1 IS INPUT 2 OF TRAY_B11 STREAM V13_FEED OUTPUT 2 OF TRAY_B11 IS INPUT 2 OF TRAY_B10 STREAM V14_FEED OUTPUT 2 OF TRAY_B10 IS INPUT 2 OF TRAY_B9 STREAM V15_FEED OUTPUT 2 OF TRAY_B9 IS INPUT 2 OF TRAY_B8 STREAM V16_FEED OUTPUT 2 OF TRAY_B8 IS INPUT 2 OF TRAY_B7 STREAM V17_FEED OUTPUT 2 OF TRAY_B7 IS INPUT 2 OF TRAY_B6 STREAM V18_FEED OUTPUT 2 OF TRAY_B6 IS INPUT 2 OF TRAY_B5 STREAM V19_FEED OUTPUT 2 OF TRAY_B5 IS INPUT 2 OF TRAY_B4 STREAM V20_FEED OUTPUT 2 OF TRAY_B4 IS INPUT 2 OF TRAY_B3 STREAM V21_FEED OUTPUT 2 OF TRAY_B3 IS INPUT 2 OF TRAY_B2 STREAM V22_FEED OUTPUT 2 OF TRAY_B2 IS INPUT 2 OF TRAY_B1 STREAM V23_FEED OUTPUT 2 OF TRAY_B1 IS INPUT 2 OF TRAY_A11 STREAM V24_FEED OUTPUT 2 OF TRAY_A11 IS INPUT 2 OF TRAY_A10 STREAM V25_FEED OUTPUT 2 OF TRAY_A10 IS INPUT 2 OF TRAY_A9 STREAM V26_FEED OUTPUT 2 OF TRAY_A9 IS INPUT 2 OF TRAY_A8 STREAM V27_FEED OUTPUT 2 OF TRAY_A8 IS INPUT 2 OF TRAY_A7 STREAM V28_FEED OUTPUT 2 OF TRAY_A7 IS INPUT 2 OF TRAY_A6 STREAM V29_FEED OUTPUT 2 OF TRAY_A6 IS INPUT 2 OF TRAY_A5 STREAM V30_FEED OUTPUT 2 OF TRAY_A5 IS INPUT 2 OF TRAY_A4 STREAM V31_FEED OUTPUT 2 OF TRAY_A4 IS INPUT 2 OF TRAY_A3 STREAM V32_FEED OUTPUT 2 OF TRAY_A3 IS INPUT 2 OF TRAY_A2 STREAM V33_FEED OUTPUT 2 OF TRAY_A2 IS INPUT 2 OF TRAY_A1 STREAM V34_FEED OUTPUT 2 OF TRAY_A1 IS INPUT 1 OF COND # Controlling composition 1 in Condenser.. CONNECTION 1 OF CNTR_1 IS CONNECTION 5 OF TRAY_A6 CONNECTION 2 OF CNTR_1 IS CONNECTION 1 OF COND # Controlling composition 2 in Vessel A.. CONNECTION 1 OF CNTR_2 IS CONNECTION 5 OF TRAY_B6 CONNECTION 2 OF CNTR_2 IS CONNECTION 1 OF VESSEL_A # Controlling composition 3 in Vessel B.. CONNECTION 1 OF CNTR_3 IS CONNECTION 5 OF TRAY_C6 CONNECTION 2 OF CNTR_3 IS CONNECTION 1 OF VESSEL_B # Connections for composition change measure # CONNECTION 1 OF ST_STATE IS CONNECTION 2 OF COND CONNECTION 2 OF ST_STATE IS CONNECTION 3 OF COND CONNECTION 3 OF ST_STATE IS CONNECTION 4 OF COND CONNECTION 4 OF ST_STATE IS CONNECTION 5 OF COND CONNECTION 5 OF ST_STATE IS CONNECTION 2 OF VESSEL_A CONNECTION 6 OF ST_STATE IS CONNECTION 3 OF VESSEL_A CONNECTION 7 OF ST_STATE IS CONNECTION 4 OF VESSEL_A CONNECTION 8 OF ST_STATE IS CONNECTION 5 OF VESSEL_A CONNECTION 9 OF ST_STATE IS CONNECTION 2 OF VESSEL_B CONNECTION 10 OF ST_STATE IS CONNECTION 3 OF VESSEL_B CONNECTION 11 OF ST_STATE IS CONNECTION 4 OF VESSEL_B CONNECTION 12 OF ST_STATE IS CONNECTION 5 OF VESSEL_B CONNECTION 13 OF ST_STATE IS CONNECTION 1 OF REB CONNECTION 14 OF ST_STATE IS CONNECTION 2 OF REB CONNECTION 15 OF ST_STATE IS CONNECTION 3 OF REB CONNECTION 16 OF ST_STATE IS CONNECTION 4 OF REB **** UNIT ACC IS AN ACCUMULATOR **** UNIT CNTR_1 IS A PI_CONTROLLER **** UNIT CNTR_2 IS A PI_CONTROLLER **** UNIT CNTR_3 IS A PI_CONTROLLER **** UNIT COND IS A CONDENSER **** UNIT REB IS A REBOILER **** UNIT ST_STATE IS A STEADY_STATE **** UNIT TRAY_A1 IS A TRAY **** UNIT TRAY_A10 IS A TRAY **** UNIT TRAY_A11 IS A TRAY **** UNIT TRAY_A2 IS A TRAY **** UNIT TRAY_A3 IS A TRAY **** UNIT TRAY_A4 IS A TRAY **** UNIT TRAY_A5 IS A TRAY **** UNIT TRAY_A6 IS A TRAY **** UNIT TRAY_A7 IS A TRAY **** UNIT TRAY_A8 IS A TRAY **** UNIT TRAY_A9 IS A TRAY **** UNIT TRAY_B1 IS A TRAY **** UNIT TRAY_B10 IS A TRAY **** UNIT TRAY_B11 IS A TRAY **** UNIT TRAY_B2 IS A TRAY **** UNIT TRAY_B3 IS A TRAY **** UNIT TRAY_B4 IS A TRAY **** UNIT TRAY_B5 IS A TRAY **** UNIT TRAY_B6 IS A TRAY **** UNIT TRAY_B7 IS A TRAY **** UNIT TRAY_B8 IS A TRAY **** UNIT TRAY_B9 IS A TRAY **** UNIT TRAY_C1 IS A TRAY **** UNIT TRAY_C10 IS A TRAY **** UNIT TRAY_C11 IS A TRAY **** UNIT TRAY_C2 IS A TRAY **** UNIT TRAY_C3 IS A TRAY **** UNIT TRAY_C4 IS A TRAY **** UNIT TRAY_C5 IS A TRAY **** UNIT TRAY_C6 IS A TRAY **** UNIT TRAY_C7 IS A TRAY **** UNIT TRAY_C8 IS A TRAY **** UNIT TRAY_C9 IS A TRAY **** UNIT VESSEL_A IS A VESSEL **** UNIT VESSEL_B IS A VESSEL **** OPERATION SET WITHIN COND MINUS=0.1 , TB=<64.7,78.3,97.2,117.7> WITHIN CNTR_1 SET_POINT=71.5, BIAS=10.0, GAIN=-.25, reset = 250, MIN=0.0, MAX=20.0, CNTR_FLAG=1, SET_FLOW=10.0 # CNTR_FLAG = 1 for automatic WITHIN TRAY_A1 #K=<10.2,4.5,2.3,1.0> LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A2 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A3 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A4 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A5 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A6 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A7 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A8 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A9 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A10 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_A11 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN VESSEL_A MINUS=0.1 TB =<64.7,78.3,97.2,117.7> WITHIN CNTR_2 SET_POINT=87.75, BIAS=10.0, GAIN=-.25, reset = 250, MIN=0.0, MAX=20.0, CNTR_FLAG=1, SET_FLOW=10.0 WITHIN TRAY_B1 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B2 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B3 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B4 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B5 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B6 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B7 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B8 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B9 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B10 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_B11 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN VESSEL_B MINUS=0.1 , TB=<64.7,78.3,97.2,117.7> WITHIN CNTR_3 SET_POINT=107.2, BIAS=10.0, GAIN=-.25, reset = 250, MIN=0.0, MAX=20.0, CNTR_FLAG=1, SET_FLOW=10.0 WITHIN TRAY_C1 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C2 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C3 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C4 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C5 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C6 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C7 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C8 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C9 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C10 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN TRAY_C11 LO_INIT=10.0, HI_INIT=0.01, K=<10.2,4.5,2.3,1.0> TB=<64.7,78.3,97.2,117.7> WITHIN REB K=<10.2,4.5,2.3,1.0>, MINUS=0.1, VO=10.0 TB=<64.7,78.3,97.2,117.7> # base case XT=<0.25,0.25,0.25,0.25>, # XT=<0.25,0.23,0.27,0.25>, # XT=<0.3,0.1,0.4,0.2> INITIAL WITHIN COND XT=<0.3,0.1,0.4,0.2>, HT=2.5 within cntr_1 I_error = 0.0 WITHIN TRAY_A1 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A2 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A3 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A4 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A5 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A6 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A7 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A8 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A9 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A10 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_A11 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN VESSEL_A XT=<0.3,0.1,0.4,0.2>, HT=2.5 within cntr_2 I_error = 0.0 WITHIN TRAY_B1 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B2 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B3 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B4 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B5 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B6 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B7 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B8 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B9 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B10 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_B11 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN VESSEL_B XT=<0.3,0.1,0.4,0.2>, HT=2.5 within cntr_3 I_error = 0.0 WITHIN TRAY_C1 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C2 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C3 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C4 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C5 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C6 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C7 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C8 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C9 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C10 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN TRAY_C11 XT=<0.3,0.1,0.4,0.2>, HT=1.0E-2 WITHIN REB XT=<0.3,0.1,0.4,0.2>, HT = 2.5 #HT =10.0-33*1.0E-2 - 3*2.5 # account for tray holdup when # start from empty column **** CONDITIONS IF ST_STATE.MAX_SS < 1.0E-6 Then Stop 1000 ST_STATE.MAX_SS Code 1000 FORMAT (1H,'Steady state reached! Maximum deviation=',G14.5) $Endcode # has to be in the first column!! **** REPORT MULTI_VESSEL FIELDS LOWLIMIT = 1.0E-6 ZERO = 1.0E-8 DECIMALS = 1 &6 = CNTR_1.SET_POINT ; &7 = CNTR_1.MEASURE ; &8 = CNTR_1.GAIN ; &13 = CNTR_2.SET_POINT ; &14 = CNTR_2.MEASURE ; &15 = CNTR_2.GAIN ; &20 = CNTR_3.SET_POINT ; &21 = CNTR_3.MEASURE ; &22 = CNTR_3.GAIN ; DECIMALS = 2 &1 = T ; &2 = TRAY_A1.VO ; &5 = COND.LO ; &9 = TRAY_A11.LO ; &12 = VESSEL_A.LO ; &16 = TRAY_B11.LO ; &19 = VESSEL_B.LO ; &23 = TRAY_C11.LO ; &25 = REB.VO ; DECIMALS = 3 &3 = COND.HT ; &4 = COND.XT(1) ; &10 = VESSEL_A.HT ; &11 = VESSEL_A.XT(2) ; &17 = VESSEL_B.HT ; &18 = VESSEL_B.XT(3) ; &24 = REB.HT ; &26 = REB.XT(4) ; DECIMALS = 2 &27 = REB.K(1) ; &28 = REB.K(2) ; &29 = REB.K(3) ; &30 = REB.K(4) ; DISPLAY ******************************************************************** * MULTI VESSEL BATCH DISTILLATION TIME = %%%%%%%% hr * ******************************************************************** * * * FLOW = %%%%% KMOL/HR /----------------\ * * --------------| HT = %%%%% KMOL| CONDENSER * * /|\ | XT = %%%%% | * * | \----------------/ * * | | FLOW = %%%%% KMOL/HR * * ------------ \|/ * * | |---------------- * * | TRAYS_A | /|\ * * | | | | X_S = %%%%% * * | |-------| X_M = %%%%% * * ------------ KP = %%%% * * /|\ | * * | | FLOW = %%%%% KMOL/HR * * | \|/ * * /-----------------\ * * | HT = %%%%% KMOL | * * | XT = %%%%% | VESSEL_A * * \-----------------/ * * /|\ | FLOW = %%%%% KMOL/HR * * | |---------- * * | \|/ /|\ * * ------------ | | X_S = %%%%% * * | | | X_M = %%%%% * * | TRAYS_B |------- KP = %%%% * * | | * * | | * * ------------ * * /|\ | * * | | FLOW = %%%%% KMOL/HR * * | \|/ * * /-----------------\ * * | HT = %%%%% KMOL | * * | XT = %%%%% | VESSEL_B * * \-----------------/ * * /|\ | FLOW = %%%%% KMOL/HR * * | |---------- * * | \|/ /|\ * * ------------ | | X_S = %%%%% * * | | | X_M = %%%%% * * | TRAYS_C |------- KP = %%%% * * | | * * | | * * ------------ * * /|\ | * * | | FLOW = %%%%% KMOL/HR * * | \|/ * * /-----------------\ REBOILER * * | |_______\ * * | HT = %%%%% KMOL | / VAPOUR = %%%%% KMOL/HR * * | XT = %%%%% |/_______ * * | |\ * * \-----------------/ * * * * 4 COMPONENT MIXTURE - K = %%%%%, %%%%%, %%%%%, %%%%% * * * ******************************************************************** **** REPORT SUMMARY FIELDS LOWLIMIT = 1.0E-6 ZERO = 1.0E-8 DECIMALS = 2 &1 Left = T ; DECIMALS = 3 &2 Left = COND.HT ; &3 Left = VESSEL_A.HT ; &4 Left = VESSEL_B.HT ; &5 Left = REB.HT ; DECIMALS = 4 &6 Left = COND.XT(1) ; &7 Left = VESSEL_A.XT(1) ; &8 Left = VESSEL_B.XT(1) ; &9 Left = REB.XT(1) ; &10 Left = COND.XT(2) ; &11 Left = VESSEL_A.XT(2) ; &12 Left = VESSEL_B.XT(2) ; &13 Left = REB.XT(2) ; &14 Left = COND.XT(3) ; &15 Left = VESSEL_A.XT(3) ; &16 Left = VESSEL_B.XT(3) ; &17 Left = REB.XT(3) ; &18 Left = COND.XT(4) ; &19 Left = VESSEL_A.XT(4) ; &20 Left = VESSEL_B.XT(4) ; &21 Left = REB.XT(4) ; DISPLAY ******************************************************************** * SUMMARY MULTI VESSEL BATCH DISTILLATION TIME = %%%%%% hr * ******************************************************************** * * * CONDENSER: VESSEL_A: VESSEL_B: REBOILER: * * * * HT(KMOL) %%%%% %%%%% %%%%% %%%%% * * * * XT(1) %%%%%%%% %%%%%%%% %%%%%%%% %%%%%%%% * * XT(2) %%%%%%%% %%%%%%%% %%%%%%%% %%%%%%%% * * XT(3) %%%%%%%% %%%%%%%% %%%%%%%% %%%%%%%% * * XT(4) %%%%%%%% %%%%%%%% %%%%%%%% %%%%%%%% * * * ******************************************************************** ****