CONTINUOUS_MODEL HXSimCtr ABSTRACT "SIMplified air-to-air latent Heat eXchanger with ConTRol. Simplified latent heat exchanger with control. An effectiveness parameter eta characterizes performance. For dry operation, eta is defined as the supply side temperature effectiveness. It is assumed to be constant, regardless of actual capacity rate relation. Wet operation assumes an apparatus dewpoint which equals the entering temperature of the opposite medium (rather crude, but allows us to interpret a dry eta as (1 - the bypass factor)). Leaving air state lies on a straight line beween entering air state and the apparatus dewpoint. See also CcSimCtr.nmf. If possible, the supply air temperature is ajusted to the given setpoint. Capacity control is attained by adjusting the actual eta up to the given eta. A temperature limit is specified for the exhaust air stream to avoid freezing. Date: Oct 29, 1997 By: Per Sahlin & Mika Vuolle Call: Enthal from PSYCHRO1.NMF HumRat from PSYCHRO2.NMF SatPress from PSYCHRO3.NMF Revisions: 001121 RSC Added control link 990618 MV Possible heating mode is added. When TSupIn and TExhIn changed order, there were not any event. 990418 MV WExhOutMin is limited with MAX function. 990408 MV Energy of condensation is limited with MAX function to guide solver to correct regime. 990223 MV Fixed the case, when TExhIn is less than TExhMin. 981110 MV The previous version assumed that temperature lines are parallel in pshycrometric chart. The enthalpy lines are parallel and that features is used now. The model allowed exhaust (and supply) air, which is below saturated curve. This has been fixed. Energy balance is fixed. The condensation water is added into it. Normaly quit small effect, but anyhow now it is there. 980618 MV Apparatus dewpoint calcs are moved outside of IF-statement 980506 MV Off if eta < 0.001 980109 AB Separate program flows for heating and cooling cases 9712 AB Introduced local enthalpy variables 971114 AB Event for Cap revised. 971107 AB Off if eta==0 " EQUATIONS /* Eta modified with control variable */ eta_:=eta*ctrl; /* calculate enthalpies of entering and possible leaving air streams */ hSupIn := Enthal(TSupIn,WSupIn); hSupOut := Enthal(TSupOut,WSupOut); hExhIn := Enthal(TExhIn,WExhIn); hExhOut := Enthal(TExhOut,WExhOut); /* exhaust side apparatus dewpoint, limited by allowable minimum exhaust temp */ TExhadp := TSupIn; WExhadp := HumRat(PExh + 1E5, SatPres(TExhadp)); /* supply side apparatus dewpoint */ TSupadp := TExhIn; WSupadp := HumRat(PSup + 1E5, SatPres(TSupadp)); IF PosHeat > 0.5 THEN /* Heating supply air */ hSupHeated := Enthal(TExhIn,WSupIn); IF NINT(WetExh) == 1 THEN /* Maximum heat exchange (always positive) */ hExhadp := Enthal(TExhadp,WExhadp); QMax := MIN(MSup*(hSupHeated - hSupIn), MExh*(hExhIn - hExhAdp) + MExh*(WExhIn-WExhAdp)*cp_wat*TExhAdp); /* wet cooling of exhaust air stream */ /* place #1 */ hExhMin := Enthal(TExhOutMin,WExhOutMin); QMaxExh := MExh * (hExhIn - hExhMin) + MExh*(WExhIn-WExhOutMin)*cp_wat*TExhOutMin; ELSE /* both streams dry, setpoint determines exchange */ QMax := MIN(MSup,MExh)*(hSupHeated - hSupIn); hExhMin := Enthal(TExhOutMin,WExhIn); QMaxExh := MExh * (hExhIn - hExhMin) END_IF; Qavail := MAX(MIN(eta_ * QMax, QMaxExh),0.0E0); ELSE /* Cooling supply air */ hExhHeated := Enthal(TSupIn,WExhIn); IF NINT(WetSup) == 1 THEN /* wet cooling of supply air stream*/ /* Maximum heat exchange (always positive) */ hSupadp := Enthal(TSupadp,WSupadp); QMax := MIN(MExh*(hExhHeated - hExhIn), MSup*(hSupIn - hSupadp) - MSup*(WSupIn-WSupAdp)*cp_wat*TSupAdp); ELSE /* both streams dry, setpoint determines exchange */ QMax := ABS(MIN(MSup,MExh)*(hExhHeated - hExhIn)); END_IF; Qavail := -eta_ * QMax; END_IF; TAttain := Drybulb (hSupIn + (QAvail + MSup*(WSupIn-WSupOut)*cp_wat*TSupOut) / MSup, WSupOut); /* The line below is used at place #1. Equation should be out IF THEN ELSE -construction */ WExhOutMin = IF TSupIn > TExhOutMin THEN MIN(WExhIn,HumRat(PExh + 1E5, SatPres(TExhOutMin))) ELSE_IF NINT(WetExh) == 1 AND NINT(On) == 1 THEN MIN((WExhAdp + MAX(0E0,(HExhMin-HExhAdp)/(HExhIn-HExhAdp)*(WExhIn-WExhAdp))), HumRat(PExh + 1E5, SatPres(TExhOutMin))) ELSE WExhIn END_IF; /* actual supply dry bulb */ TSupOut = IF NINT (On) == 1 THEN IF NINT (Cap) == 1 THEN Tattain ELSE TSet END_IF ELSE TSupIn END_IF; WSupOut = IF NINT(On) == 1 AND NINT(WetSup) == 1 THEN /* on and wet */ MIN(WSupIn - (WSupIn - WSupadp) * (HSupIn - HSupOut) / (HSupIn - HSupadp), HumRat(PSup + 1E5, SatPres(TSupOut))) /* temperature fraction is requested supply side eta_ (<= eta_) */ ELSE WSupIn END_IF; Qactual := MSup*(hSupOut - hSupIn) - IF NINT(WetSup) == 1 AND NINT(On) == 1 THEN /* MAX Function is used to limit are to find solutions */ MSup*(WSupIn-WSupOut)*cp_wat*MAX(TSupOut,TSupAdp) ELSE 0 END_IF; /* energy equation for exhaust side*/ Qactual = MExh*(hExhIn - hExhOut) + IF NINT(WetExh) == 1 AND NINT(On) == 1 THEN /* MAX Function is used to limit are to find solutions */ MExh*(WExhIn-WExhOut)*cp_wat*MAX(TExhOut,TExhOutMin) ELSE 0 END_IF; WExhOut = IF NINT(On) == 1 AND NINT(WetExh) == 1 THEN /* on and wet */ MIN(WExhIn - (WExhIn - WExhadp) * (HExhIn - HExhOut) / (HExhIn - HExhadp), HumRat(PExh + 1E5, SatPres(MAX(TExhOut,TExhOutMin)))) ELSE WExhIn END_IF; /* calculate mode of operation for next step */ On := IF eta_ < 0.001 THEN 0 /* off */ ELSE_IF Event(G0, (Tattain - TSupIn)*(TSet - TSupIn)) > 0 THEN 1 /* on, availability same sign as need */ ELSE 0 /* off */ END_IF; /* cap limit * (+ for heat,- for cool)*/ Cap := IF Event(G1, (Tattain - TSet)) * (TSet - TSupIn) < 0 THEN 1 /* full capacity */ ELSE 0 END_IF; WetSup:= IF Event(G2, WSupadp - WSupIn) < 0 THEN 1 /* condensation on supply side*/ ELSE 0 END_IF; WetExh:= IF Event(G3, WExhadp - WExhIn) < 0 THEN 1 /* condensation on exhaust side*/ ELSE 0 END_IF; PosHeat:= IF Event(G4,TSupIn - TExhIn) < 0 THEN 1 ELSE 0 END_IF; LINKS /* type name variables .... */ UniAir SupIn PSup, POS_IN MSup, TSupIn, XSup, WSupIn; UniAir SupOut PSup, POS_OUT MSup, TSupOut, XSup, WSupOut; UniAir ExhIn PExh, POS_IN MExh, TExhIn, XExh, WExhIn; UniAir ExhOut PExh, POS_OUT MExh, TExhOut, XExh, WExhOut; T TempSetPoint TSet; /*leaving air dry bulb temperature setpoint*/ ControlLink Control ctrl; VARIABLES /* type name role def min max description*/ Pressure PSup IN 1325 -BIG BIG "Pressure of entering and leaving supply air" Pressure PExh IN 1325 -BIG BIG "Pressure of entering and leaving exhaust air" MassFlow MSup IN 3.2 0 BIG "Dry air supply massflow rate" MassFlow MExh IN 3.2 0 BIG "Dry air exhaust massflow rate" Temp TSupIn IN 10 ABS_ZERO BIG "Entering supply air temp." Temp TSupOut OUT 15 ABS_ZERO BIG "Leaving supply air temp." Temp TSupadp LOC 25 ABS_ZERO BIG "Supply apparatus dewpoint temp." Temp TExhIn IN 25 ABS_ZERO BIG "Entering exhaust air temp." Temp TExhOut OUT 20 ABS_ZERO BIG "Leaving exhaust air temp." Temp TExhadp LOC 10 ABS_ZERO BIG "Exhaust apparatus dewpoint temp." Temp TSet IN 18 ABS_ZERO BIG "Leaving air dry bulb temp. setpoint" Temp Tattain LOC 14 ABS_ZERO BIG "Attainable leaving drybulb" HumRatio WSupIn IN 0.01 SMALL 1 "Humidity ratio of entering supply air" HumRatio WSupOut OUT 0.01 SMALL 1 "Humidity ratio of leaving supply air" HumRatio WSupadp LOC 0.01 SMALL 1 "Humidity ratio of supply air at apparatus dewpoint" HumRatio WExhOutMin OUT 0.01 SMALL 1 " " HumRatio WExhIn IN 0.01 SMALL 1 "Humidity ratio of entering exhaust air" HumRatio WExhOut OUT 0.01 SMALL 1 "Humidity ratio of leaving exhaust air" HumRatio WExhadp LOC 0.01 SMALL 1 "Humidity ratio of exhaust air at apparatus dewpoint" Enthalpy hSupIn LOC 20 -BIG BIG "Enthalpy sup in" Enthalpy hSupHeated LOC 20 -BIG BIG "Enthalpy sup heated" Enthalpy hSupadp LOC 20 -BIG BIG "Enthalpy sup wet" Enthalpy hSupOut LOC 20 -BIG BIG "Enthalpy sup out" Enthalpy hExhIn LOC 20 -BIG BIG "Enthalpy exh in" Enthalpy hExhHeated LOC 20 -BIG BIG "Enthalpy exh heated" Enthalpy hExhadp LOC 20 -BIG BIG "Enthalpy exh wet" Enthalpy hExhOut LOC 20 -BIG BIG "Enthalpy exh out" Enthalpy hExhMin LOC 20 -BIG BIG "Enthalpy exh min" Fraction_y XSup IN 594 0 BIG "Pollutant fraction supply air" Fraction_y XExh IN 594 0 BIG "Pollutant fraction exhaust air" HeatFlux Qavail LOC 100 -BIG BIG "Available heating or cooling power" HeatFlux Qactual LOC 100 -BIG BIG "Actual heating or cooling power" HeatFlux QMax LOC 100 -BIG BIG "Maximum heating or cooling power" HeatFlux QMaxExh LOC 100 -BIG BIG "Maximum exhaust heating or cooling power" Factor eta_ LOC 0.6 0 1 " Modified supply side effectiveness at capacity" Control ctrl IN 1 0 1 "Control value" GENERIC On A_S 1 0 1 "On/Off mode" GENERIC Cap A_S 0 0 1 "Cap/Modulated mode" GENERIC WetSup A_S 0 0 1 "Wet supply side mode" GENERIC WetExh A_S 0 0 1 "Wet exhaust side mode" GENERIC PosHeat A_S 0 0 1 "Possible heating mode" GENERIC G0 A_S 1 -BIG BIG "G-stop On" GENERIC G1 A_S 1 -BIG BIG "G-stop Cap" GENERIC G2 A_S 1 -BIG BIG "G-stop WetSup" GENERIC G3 A_S -1 -BIG BIG "G-stop WetExh" GENERIC G4 A_S -1 -BIG BIG "G-stop PosHeat" PARAMETERS /* type name role def min max description */ Factor eta S_P 0.6 0 1 "Supply side effectiveness at capacity" Temp TExhOutMin S_P 1 ABS_ZERO 5 "Minimum achievable leaving drybulb" END_MODEL