Public Class CHeating Public Overridable Sub Calc_WaterheatingSystem(ByVal i_count_month As Integer, ByVal d_mth As Integer, ByVal theta_e As Decimal) Dim Q_w_ce As Decimal, Q_w_b As Decimal, theta_NA_Grenz As Decimal, theta_WA_Grenz As Decimal, Q_w_d_i As Decimal, t_h As Decimal Dim L_G As Decimal, B_G As Decimal, n_G As Decimal, h_G As Decimal, V_s As Decimal, f_verbindung As Decimal, q_B_S As Decimal, Q_dot_N As Decimal, theta_g_m As Decimal Dim theta_i As Integer, t_Nutz_d As Integer, d_Nutz_a As Integer Dim eta_k_100 As Decimal, Q_w_g_100 As Decimal, Q_w_outg_i As Decimal, q_B_theta As Decimal, Q_B_w As Decimal, Q_w_g As Decimal, d_h_rB As Decimal Dim theta_e_min As Decimal, f_L_WA As Decimal Dim Q_w_ce_aux As Decimal, Q_w_d_aux As Decimal, Q_w_g_aux As Decimal, P_Pump_w As Decimal, c_p1 As Decimal, c_p2 As Decimal, t_P As Decimal, P_aux_100 As Decimal Dim Q_w_s_aux As Decimal, d_Nutz_mth As Integer, Q_w_s As Decimal, Q_w_d As Decimal, L_i As Decimal, Q_w_outg As Decimal Dim f_Hs_Hi As Decimal, t_w_100 As Decimal, q_B_70 As Decimal, Q_w_f As Decimal, Q_w_aux As Decimal, Q_w_g_i As Decimal Dim use_Oil As Decimal, use_LNG As Decimal, use_LPG As Decimal, use_Elec As Decimal, use_DH As Decimal 'Dim i_count_renewable As Integer Dim Q_h_outg_i As Decimal Dim Q_W_sol_out_m As Decimal, Q_H_sol_out_m As Decimal, W_sol_aux_m As Decimal, W_sol_aux As Decimal Dim system_type As Integer Dim Q_dot_HP_waterheating As Decimal, COP_HP_7 As Decimal, COP_HP_10 As Decimal, L_HP_waterheating As Decimal Dim COP_HP_total As Decimal Dim D_DS As Decimal, B_DS As Decimal, theta_prim_DS As Decimal, theta_DS As Decimal, Psi_DS As Decimal, H_DS As Decimal '==================================2010.2.21 수정 Dim d_op_mth As Integer Dim d_op_max_mth As Integer Dim i_count_profile As Integer d_op_max_mth = 0 '==================================2010.2.21 수정 Dim Q_w_CHP As Decimal, Q_w_f_CHP As Decimal '==============2011.07.19 추가 Dim Q_wp_outg As Decimal, Q_w_f_hp As Decimal, Q_w_g_hp_aux As Decimal '==================================2013.01.13 추가 Q_w_ce = 0 '급탕에서는 공급손실이 없음 theta_NA_Grenz = 10 theta_WA_Grenz = 10 theta_e_min = -11.3 f_verbindung = 1.2 '동일공간의 경우임, 타공간의 경우 (3.2.7-36) 참조 theta_i = 22 '2011.04.01 수정 기존 13에서 주변온도를 22도로 수정(급탕에 대한 설정조건 완화) t_Nutz_d = 11 '2011.04.01 수정 기존 24에서 운영시간를 11로 수정(급탕에 대한 설정조건 완화) Q_w_g_100 = 0 d_Nutz_a = 365 Q_w_g = 0 Q_w_g_aux = 0 Q_w_d_aux = 0 Q_w_s_aux = 0 Q_w_ce_aux = 0 use_Oil = 0 use_LNG = 0 use_LPG = 0 use_Elec = 0 use_DH = 0 Q_w_outg = 0 Q_h_outg_i = 0 W_sol_aux = 0 system_type = 3 '====================================2011.07.21 추가 Q_w_CHP = 0 Q_w_f_CHP = 0 '====================================2011.07.21 추가 '======================2013.01.13 추가 Q_w_f_hp = 0 Q_wp_outg = 0 Q_w_g_hp_aux = 0 '======================2013.01.13 추가 '====================================2010.2.21 수정 'd_Nutz_mth = d_mth ' 연중가동으로 계산 추후 검토 '====================================2010.2.21 수정 Dim Mon As String = "M" & Format(i_count_month, "00") '태양광 시스템 Dim Calc_태양 As New CRenewable : Calc_태양.Calc_PhotovoltaicSystem_EN(i_count_month, d_mth) For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET.tbl_nanbangkiki.Select("code<>'0'", "code") '=====================2010.2.21 수정 d_op_max_mth = 0 '=====================2010.2.21 수정 If DSET.tbl_zone.Select("열생산급탕생산기기='" & Dr난방.code & "' and code <> '0'").GetUpperBound(0) <> -1 Then '//급탕생산기기로 지정되어있는가 '//존에서 이 난방기기가 사용되었는가? ' Worksheets("난방기기").Range("난방생산기기1").Offset(5, i_count_boiler - 1) = "예" Then Q_w_b = 0 Q_w_s = 0 Q_w_d = 0 Q_w_outg_i = 0 Q_w_g_i = 0 W_sol_aux_m = 0 t_h = 0 d_op_max_mth = 0 Q_w_ce_aux = 0 Q_w_d_aux = 0 Q_w_s_aux = 0 Q_w_g_aux = 0 'W_sol_aux_m = 0 If Dr난방.열생산기기방식.Trim = "전기보일러" Then Q_w_b = 0 End If ' Dim Dr존 As DS.tbl_zoneRow '//여기존 할당부분은엑셀하고 다시 비교해야할듯 하다 이존은 아래쪽에 프로시져 넘길떄 사용한다. '//현재난방기기를 급탕생산기기로 사용하는 존을 가져와서 누적시킴 For Each Dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("열생산급탕생산기기='" & Dr난방.code & "' and code <> '0'", "code") 'MsgBox(Mon & "/" & Dr존.code) Dim Drow결과() As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row()) Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("Zone='" & Dr존.code & "'"), DSR.최대냉난방부하Row()) Q_w_b = Q_w_b + TOSG(Drow결과(0).급탕요구량) ' Sheets("" & i_count_month & "").Cells(15, 7 + i_count_zone) '//급탕에너지요구량 '===================================================================================2010.2.21 수정 Dim Dr프로필() As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr존.프로필 & "' and code <> '0'", "code"), DS.tbl_profileRow()) If Dr프로필.GetUpperBound(0) = -1 Then Log.AppendLine(Dr존.설명 & "존의 프로필코드(" & Dr존.프로필 & ") 가 존재하지않습니다") 'MsgBox(Dr존.설명 & "존의 프로필코드(" & Dr존.프로필 & ") 가 존재하지않습니다") Else d_op_mth = CInt(TOSG(Dr프로필(0)("day" & Format(i_count_month, "00")))) ' Worksheets("설정조건").Range("월간사용일수1").Offset(i_count_month, i_count_profile) End If If t_h < Result.최대부하.Item(Dr존.code).일일난방최대가동시간 * d_op_mth Then t_h = Result.최대부하.Item(Dr존.code).일일난방최대가동시간 * d_op_mth End If If d_op_max_mth < d_op_mth Then d_op_max_mth = d_op_mth End If '===================================================================================2010.2.21 수정 Next '====================================2010.2.21 수정 d_Nutz_mth = d_op_max_mth '====================================2010.2.21 수정 If Dr난방.분배시스템방식 = "중앙식" Then ' Dr난방.분배시스템방식 = "중앙식" Then If Dr난방.배관길이 <> "" AndAlso Dr난방.배관길이 <> "0" Then '//입력치 L_i = TOSG(Dr난방.배관길이) * 0.255 Else L_G = TOSG(Dr난방.건물길이) ' Dr난방.건물길이 B_G = TOSG(Dr난방.건물넓이) 'Dr난방.건물넓이 n_G = TOSG(Dr난방.열공급층수) 'Dr난방.열공급층수 h_G = TOSG(Dr난방.층고) 'Worksheets("난방기기").Range("급탕분배건물길이1").Offset(3, i_count_boiler - 1) L_i = TOSG((2 * L_G + 0.0325 * L_G * B_G + 6) * 0.2 + (0.025 * L_G * B_G * h_G * n_G + 2 * (L_G + B_G) * n_G) * 0.255 + (0.1 * L_G * B_G * n_G) * 0.255) '단일배관난방적용 End If '=================================================2010. 02. 11 수정 For Each Dr난방분배 As DS.tbl_nbunbaeRow In DSET.tbl_nbunbae.Select("배관망유형='급탕' and 생산기기구분='" & Dr난방.code & "'", "code") L_i += TOSG(Dr난방분배.배관구간길이) * TOSG(Dr난방분배.열관류율) Next 'For i_count_pipe = 1 To Range("배관구간").Columns.Count ' If Worksheets("난방분배시스템").Range("분배생산기기1").Offset(2, i_count_pipe - 1) = "급탕" Then ' If Worksheets("난방기기").Range("난방생산기기1").Offset(0, i_count_boiler - 1) = Worksheets("난방분배시스템").Range("분배생산기기1").Offset(0, i_count_pipe - 1) Then ' L_i = L_i + Worksheets("난방분배시스템").Range("배관구간방식1").Offset(1, i_count_pipe - 1) * Worksheets("난방분배시스템").Range("배관구간방식1").Offset(2, i_count_pipe - 1) ' End If ' End If 'Next '=================================================2010. 02. 11 수정 If Dr난방.순환유무 = "무" Then ' Worksheets("난방기기").Range("급탕분배방식1").Offset(1, i_count_boiler - 1) = "무" Then ':중앙비순환시스템 Q_w_d_i = TOSG(1 / 1000 * L_i * ((23 * 0.2 ^ (-0.2) - theta_i) * d_Nutz_mth * 24)) '(3.2.9-11) 중앙비순환시스템 L_i 에 U_i 포함 theta_w_m_비순환 는 23*0.2^(-0.2) theta_g_m = 40 Else ':중앙순환시스템 Q_w_d_i = TOSG(1 / 1000 * L_i * d_Nutz_mth * ((50 - theta_i) * t_Nutz_d + 0.5 * (23 * 0.2 ^ (-0.2) - theta_i) * (24 - t_Nutz_d))) '(3.2.9-11) 중앙순환시스템 L_i 에 U_i 포함 theta_w_m_순환 는 50도 theta_g_m = 50 End If Q_w_d = Q_w_d + Q_w_d_i '(3.2.9-12) Else theta_g_m = 40 '2013.01.12 추가 개별식의 경우 비순환시스템으로 적용 End If Select Case Dr난방.축열탱크방식.Trim ' Worksheets("난방기기").Range("난방기기축열탱크1").Offset(0, i_count_boiler - 1) Case "전기가열식" '전기가열식" ':저탕조용량(모를경우) 'f_N = 1 / (t_Nutz_d * 1) '(3.2.9-24) t_Nutz_T 는 t_Nutz_d 로 적용, eta_Sp는 1로 적용 추후 검토 ':심야전기가열 'V_s = 1.42 * Q_w_b_d * f_N * 860 / ((theta_w_m - theta_k) * eta_s) '(3.2.9-33) : 심야전기가열 ':주간전기가열 'V_s = 0.67 * Q_w_b_d * f_N * 860 / ((Q_w_m - Q_k) * eta_s) '(3.2.9-34) : 주간전기가열 V_s = TOSG(Dr난방.축열제척) ' Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) q_B_S = TOSG(0.29 + 0.019 * V_s ^ 0.8) '(3.2.9-30) :1994 이후 Q_w_s = TOSG((55 - theta_i) / 45 * d_Nutz_mth * q_B_S) '(3.2.9-29) : 전기가열식 저탕조 Case "가스가열식" '가스가열식" ':가스가열식 저탕조 V_s = TOSG(Dr난방.축열제척) 'Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) ':1994 이후 q_B_S = TOSG(2 + 0.033 * V_s ^ 1.1) '(3.2.9-38) Q_w_s = TOSG((55 - theta_i) / 50 * d_Nutz_mth * q_B_S) '(3.2.9-37) : 가스가열식 저탕조 Case "간접가열식" '간접가열식" ':간접 가열식 저탕조 ':태양열 복합 저탕조(UA_sb_s_a를 모를 경우) 'q_B_S = (0.4 + 0.2 * (V_s_aux + V_s_sol) ^ 0.4) * V_s_aux / (V_s_aux + V_s_sol) '(3.2.9-26) 'f_N = 1 / (t_Nutz_T * n_Sp) '(3.2.9-24) ':저탕조용량(모를 경우) 'V_s = (Q_w_b_d * f_N * 860) / ((theta_w_m - theta_k) * eta_s) '(3.2.9-23) V_s = TOSG(Dr난방.축열제척) 'Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) If V_s < 1000 Then ':1000이하 ' q_B_S = 'CSng(0.8 + 2 * V_s ^ 0.77) '(3.2.9-18) 여기맞아요? 예 0. q_B_S = 0.8 + 0.02 * V_s ^ 0.77 '(3.2.9-18) '===================================2010.04.24 수정 Else ':1000이상 q_B_S = TOSG(0.39 * V_s ^ 0.35 + 0.5) '(3.2.9-19) End If Q_w_s = f_verbindung * (50 - theta_i) / 45 * d_Nutz_mth * q_B_S '(3.2.9-16) End Select Q_w_outg_i = Q_w_b + Q_w_ce + Q_w_d + Q_w_s '(3.2.9-4) Q_w_outg = Q_w_outg + Q_w_outg_i ' 신재생에너지 시스템 '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- '태양열(급탕) 시스템 'If Dr난방.설명.ToUpper.IndexOf("B-1") <> -1 Then ' MsgBox(Dr난방.code) 'End If Dim CRenew As New CRenewable If Dr난방.신재생연결여부 = "시스템연결" AndAlso Dr난방.연결된시스템 <> "0" Then 'Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then Dim dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code <> '0' and code='" & Dr난방.연결된시스템 & "'")(0), DS.tbl_newRow) ' If dr신재생.기기종류.Trim.IndexOf("태") <> -1 Then Select Case dr신재생.기기종류.Trim Case "태양열" '//태양열 If dr신재생.태양열종류 = "급탕" Then Calc.Renewable.Calc_ThermalSolarSystem_EN(system_type, dr신재생.code, i_count_month, d_mth, Q_h_outg_i, Q_w_outg_i, Q_W_sol_out_m, Q_H_sol_out_m, W_sol_aux_m) Q_w_outg = Q_w_outg - Q_W_sol_out_m Q_w_outg_i = Q_w_outg_i - Q_W_sol_out_m W_sol_aux = W_sol_aux + W_sol_aux_m End If '=======================================================================2011.007.19 추가 Case "열병합" '//열병합 Select Case dr신재생.가동연료.Trim Case "난방유" '난방유" CRenew.Calc_CogenerationSystemEN(dr신재생, i_count_month, Q_w_outg_i, t_h, Q_w_CHP, Q_w_f_CHP) Q_w_outg = Q_w_outg - Q_w_CHP Q_w_outg_i = Q_w_outg_i - Q_w_CHP use_Oil = use_Oil + Q_w_f_CHP Q_w_f = Q_w_f + Q_w_f_CHP '============================2013.01.13 수정 Case "천연가스" '천연가스" CRenew.Calc_CogenerationSystemEN(dr신재생, i_count_month, Q_w_outg_i, t_h, Q_w_CHP, Q_w_f_CHP) Q_w_outg = Q_w_outg - Q_w_CHP Q_w_outg_i = Q_w_outg_i - Q_w_CHP use_LNG = use_LNG + Q_w_f_CHP Q_w_f = Q_w_f + Q_w_f_CHP '============================2013.01.13 수정 Case "액화가스" '액화가스" CRenew.Calc_CogenerationSystemEN(dr신재생, i_count_month, Q_w_outg_i, t_h, Q_w_CHP, Q_w_f_CHP) Q_w_outg = Q_w_outg - Q_w_CHP Q_w_outg_i = Q_w_outg_i - Q_w_CHP use_LPG = use_LPG + Q_w_f_CHP Q_w_f = Q_w_f + Q_w_f_CHP '============================2013.01.13 수정 Case Else MsgBox("신재생에너지의 가동연료를 확인할 수 없습니다", MsgBoxStyle.Critical, dr신재생.가동연료) End Select '=======================================================================2011.007.19 추가 Case "지열" '//지열 Select Case dr신재생.가동연료.Trim Case "전기" '전기" CRenew.Calc_HeatpumpSystem(system_type, 3, dr신재생, Q_w_outg_i, i_count_month, d_op_max_mth, t_h, theta_g_m, theta_i, Q_wp_outg, Q_w_f_hp, Q_w_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_w_outg = Q_w_outg - Q_wp_outg Q_w_outg_i = Q_w_outg_i - Q_wp_outg use_Elec = use_Elec + Q_w_f_hp + Q_w_g_hp_aux Q_w_f = Q_w_f + Q_w_f_hp + Q_w_g_hp_aux '============================2010.04.17 추가 Case "천연가스" '천연가스" CRenew.Calc_HeatpumpSystem(system_type, 3, dr신재생, Q_w_outg_i, i_count_month, d_op_max_mth, t_h, theta_g_m, theta_i, Q_wp_outg, Q_w_f_hp, Q_w_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_w_outg = Q_w_outg - Q_wp_outg Q_w_outg_i = Q_w_outg_i - Q_wp_outg use_LNG = use_LNG + Q_w_f_hp use_Elec = use_Elec + Q_w_g_hp_aux Q_w_f = Q_w_f + Q_w_f_hp + Q_w_g_hp_aux '============================2010.04.17 추가 '//요기맞죠 ^^? Case "액화가스" '액화가스" CRenew.Calc_HeatpumpSystem(system_type, 3, dr신재생, Q_w_outg_i, i_count_month, d_op_max_mth, t_h, theta_g_m, theta_i, Q_wp_outg, Q_w_f_hp, Q_w_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_w_outg = Q_w_outg - Q_wp_outg Q_w_outg_i = Q_w_outg_i - Q_wp_outg use_LPG = use_LPG + Q_w_f_hp use_Elec = use_Elec + Q_w_g_hp_aux Q_w_f = Q_w_f + Q_w_f_hp + Q_w_g_hp_aux '============================2010.04.17 추가 End Select End Select 'End If End If '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- '=========================================================================================================================2013.01.13 히트펌프 위치 수정 If Dr난방.열생산기기방식 = "히트펌프" Then Q_dot_HP_waterheating = TOSG(Dr난방.히트난방용량) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1) COP_HP_7 = TOSG(Dr난방.히트난방정격7) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(2, i_count_boiler - 1) COP_HP_10 = TOSG(Dr난방.히트난방정격10) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(3, i_count_boiler - 1) L_HP_waterheating = TOSG(Dr난방.히트배관길이) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(4, i_count_boiler - 1) If theta_e > 15 Then COP_HP_total = (COP_HP_7 - COP_HP_10) / 17 * 15 + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 17 Else COP_HP_total = (COP_HP_7 - COP_HP_10) / 17 * theta_e + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 17 End If If theta_e < 7 Then If theta_e >= 0 Then COP_HP_total = TOSG(COP_HP_total * ((1 - 0.86) / 7 * theta_e + 0.86)) Else COP_HP_total = TOSG(COP_HP_total * ((0.98 - 0.86) / 7 * (-theta_e) + 0.86)) End If End If If Q_dot_HP_waterheating <= 20 Then COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_waterheating * 0.002)) Else If Q_dot_HP_waterheating <= 100 Then COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_waterheating * 0.0009)) Else COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_waterheating * 0.0014)) End If End If Q_w_outg = Q_w_outg - Q_w_outg_i '===================================================2013.01.16 추가 If Q_w_outg_i / (Q_dot_HP_waterheating * t_h) > 1 Or Dr난방.히트펌프시스템종류 = "실내외분리시스템" Then Q_w_outg_i = Q_w_outg_i / COP_HP_total Else Q_w_outg_i = Q_w_outg_i / (COP_HP_total * (Q_w_outg_i / (Q_dot_HP_waterheating * t_h) * 0.5 + 0.5)) End If Q_w_outg = Q_w_outg + Q_w_outg_i '===================================================2013.01.16 추가 End If '=========================================================================================================================2013.01.13 히트펌프 위치 수정 Q_dot_N = TOSG(IIf(Dr난방.보일러정격출력 = "", 0, Dr난방.보일러정격출력)) 'Worksheets("난방기기").Range("난방기기정격출력1").Offset(0, i_count_boiler - 1) eta_k_100 = TOSG(IIf(Dr난방.정격보일러효율 = "", 0, TOSG(Dr난방.정격보일러효율))) / 100 ' Worksheets("난방기기").Range("난방기기정격효율1").Offset(0, i_count_boiler - 1) / 100 'Select Case Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_boiler - 1) 'Case "난방유" 'f_Hs_Hi = 1.06 'Case "천연가스" 'f_Hs_Hi = 1.11 'Case "액화가스" 'f_Hs_Hi = 1.09 'Case "석탄" 'f_Hs_Hi = 1.04 'Case "갈탄" 'f_Hs_Hi = 1.07 'Case "나무" 'f_Hs_Hi = 1.08 'End Select f_Hs_Hi = 1 ' 국내는 총발열량을 기준으로 입력함으로 우선 1로 설정, 추후 검토 If Dr난방.열생산기기방식 = "보일러" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) Q_w_g_100 = 0 Else Q_w_g_100 = (f_Hs_Hi - eta_k_100) / eta_k_100 * Q_w_outg_i / d_Nutz_mth '(3.2.9-58) End If If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) t_w_100 = 0 Else t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) End If Select Case Dr난방.보일러방식.Trim ' Worksheets("난방기기").Range("보일러방식1").Offset(0, i_count_boiler - 1) Case "가스보일러" '가스보일러" q_B_70 = TOSG((8.5 * Q_dot_N ^ (-0.4)) / 100) Case "기름보일러" '기름보일러" q_B_70 = TOSG((8.5 * Q_dot_N ^ (-0.4)) / 100) Case "저온가스보일러" '저온가스보일러" q_B_70 = TOSG((4.5 * Q_dot_N ^ (-0.4)) / 100) Case "저온기름보일러" '저온기름보일러" q_B_70 = TOSG((4.25 * Q_dot_N ^ (-0.4)) / 100) Case "콘덴싱보일러" '콘덴싱보일러" q_B_70 = TOSG((4 * Q_dot_N ^ (-0.4)) / 100) Case Else MsgBox("난방.보일러방식을 알수없습니다", MsgBoxStyle.Critical, "값=" & Dr난방.보일러방식) End Select q_B_theta = q_B_70 * (theta_g_m - theta_i) / (70 - 20) '(3.2.9-60) Q_B_w = q_B_theta * Q_dot_N / eta_k_100 * (t_Nutz_d - t_w_100) * f_Hs_Hi '(3.2.9-59) f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22) If d_mth = 0 Then d_h_rB = 0 Else d_h_rB = d_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_mth * 24)) '(3.2.7-21) End If ':d_h_rB > d_Nutz_mth 일 경우 If d_h_rB > d_Nutz_mth Then d_Nutz_mth = CInt(d_h_rB) End If Q_w_g = Q_w_g + Q_w_g_100 * d_Nutz_mth + Q_B_w * (d_Nutz_mth - d_h_rB) '(3.2.9-57) Q_w_g_i = Q_w_g_100 * d_Nutz_mth + Q_B_w * (d_Nutz_mth - d_h_rB) Else If Dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then If Dr난방.지역난방방식 = "중온수" Then ' Worksheets("난방기기").Range("지역난방온수방식1").Offset(0, i_count_boiler - 1) = "중온수" Then D_DS = 0.6 theta_prim_DS = 105 'MsgBox("난방기기 단열등급에 등급2/3 등급3/4 등급 4/5 추가해야함") Select Case Dr난방.단열등급.Trim ' Dr난방.단열등급 Case "기본단열" '기본단열" '원래는 등급1/2 이지만 국내에서는 법적단열로 사용 B_DS = 4.9 Case "등급2/3" '등급2/3" B_DS = 4.4 Case "등급3/4" '등급3/4" B_DS = 4 Case "등급4/5" '등급4/5" B_DS = 3.5 End Select End If 'MsgBox("난방기기 지역난방방식에 고온수 0002 추가해야함") --추가는 했으나 엑셀에서는 중온수고정이다 그래서 하위 루틴은 실행되면안된다 If Dr난방.지역난방방식 = "고온수" Then 'Worksheets("난방기기").Range("지역난방온수방식1").Offset(0, i_count_boiler - 1) = "고온수" Then ' MsgBox("난방기기의 지역난방방식은 중온수 고정입니다.", MsgBoxStyle.Information, "확인") D_DS = 0.4 theta_prim_DS = 150 Select Case Dr난방.단열등급.Trim Case "기본단열" '기본단열" '원래는 등급1/2 이지만 국내에서는 법적단열로 사용 B_DS = 4.3 Case "등급2/3" '등급2/3" B_DS = 3.9 Case "등급3/4" '등급3/4" B_DS = 3.5 Case "등급4/5" '등급4/5" B_DS = 3.1 End Select End If theta_DS = D_DS * theta_prim_DS + (1 - D_DS) * 55 ' theta_sek_DS는 55도로 설정 (3.2.7-112) Psi_DS = TOSG(Dr난방.열교환기정격출력) ' .Worksheets("난방기기").Range("난방기기정격출력1").Offset(1, i_count_boiler - 1) H_DS = TOSG(B_DS * Psi_DS ^ (1 / 3)) Q_w_g = Q_w_g + H_DS * (theta_DS - theta_i) use_DH = use_DH + H_DS * (theta_DS - theta_i) End If End If ': 급탕 전기 보조에너지 시작 Q_w_ce_aux = 0 P_Pump_w = TOSG(Dr난방.펌프동력급탕) ' Worksheets("난방기기").Range("급탕펌프제어유형1").Offset(1, i_count_boiler - 1) Select Case Dr난방.펌프제어.Trim 'Worksheets("난방기기").Range("급탕펌프제어유형1").Offset(0, i_count_boiler - 1) Case "비제어" '비제어" c_p1 = 0.25 c_p2 = 0.94 Case "제어" '제어" c_p1 = 0.5 c_p2 = 0.63 Case "(없음)" c_p1 = 0 c_p2 = 0 Case Else MsgBox("[난방기가: " & Dr난방.code & "] 알수없는 펌프제어방식(" & Dr난방.펌프제어.Trim & ")", MsgBoxStyle.Critical, Dr난방.펌프제어) End Select Q_w_d_aux = Q_w_d_aux + P_Pump_w / 1000 * d_Nutz_mth * t_Nutz_d * (c_p1 + c_p2) '(3.2.9-15) Select Case Dr난방.축열탱크방식.Trim ' Worksheets("난방기기").Range("난방기기축열탱크1").Offset(0, i_count_boiler - 1) Case "전기가열식" '전기가열식" 'Q_w_s_aux = Q_w_s_aux + 0 Case "가스가열식" '가스가열식" 'Q_w_s_aux = Q_w_s_aux + 0 Case "간접가열식" '간접가열식" '=================================================================================2010.10.19 추가 Select Case Dr난방.열생산기기방식.Trim 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) Case "보일러" t_P = TOSG(Q_w_outg_i * 1.1 / Q_dot_N) '(3.2.9-28) Case "지역난방" t_P = TOSG(Q_w_outg_i * 1.1 / TOSG(Dr난방.열교환기정격출력)) Case "전기보일러" t_P = 1 Case "히트펌프" t_P = 1 End Select '=================================================================================2010.10.19 추가 Q_w_s_aux = TOSG(Q_w_s_aux + 0.001 * P_Pump_w * t_P) '(3.2.9-27) End Select If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then Select Case Dr난방.보일러방식.Trim 'Worksheets("난방기기").Range("보일러방식1").Offset(0, i_count_boiler - 1) Case "가스보일러" '가스보일러" P_aux_100 = TOSG((0.148 * Q_dot_N + 40) / 1000) '(3.2.9-77) Case "기름보일러" '기름보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) '(3.2.9-78) Case "저온가스보일러" '저온가스보일러" P_aux_100 = TOSG((0.148 * Q_dot_N + 40) / 1000) '(3.2.9-79) Case "저온기름보일러" '저온기름보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) '(3.2.9-80) Case "콘덴싱보일러" '콘덴싱보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) '(3.2.9-81) End Select If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) t_w_100 = 0 Else t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) End If Q_w_g_aux = Q_w_g_aux + P_aux_100 * t_w_100 * d_Nutz_mth '+ P_aux_SB * (24 - t_w_100) * (d_Nutz_mth - d_h_rB) '(3.2.9-7) End If If Dr난방.열생산기기방식 = "보일러" Then ' Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then Select Case Dr난방.사용연료.Trim ' Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_boiler - 1) Case "난방유" '난방유" use_Oil = use_Oil + Q_w_outg_i + Q_w_g_i Case "천연가스" '천연가스" use_LNG = use_LNG + Q_w_outg_i + Q_w_g_i Case "액화가스" '액화가스" use_LPG = use_LPG + Q_w_outg_i + Q_w_g_i End Select Else Select Case Dr난방.열생산기기방식.Trim 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) Case "지역난방" '지역난방" use_DH = use_DH + Q_w_outg_i Case "전기보일러" '전기보일러" use_Elec = use_Elec + Q_w_outg_i + (Q_w_outg_i * 0.09) '2011.03.08 개별전기보일러 생산손실을 내부 생산식저장으로 설정 '====================================================================================2010.03.14 추가 Case "히트펌프" Select Case Dr난방.히트연료 ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(0, i_count_boiler - 1) Case "전기" use_Elec = use_Elec + Q_w_outg_i + Q_w_g_i Case "천연가스" use_LNG = use_LNG + Q_w_outg_i + Q_w_g_i Case "액화가스" use_LPG = use_LPG + Q_w_outg_i + Q_w_g_i End Select '====================================================================================2010.03.14 추가 End Select End If use_Elec = use_Elec + Q_w_ce_aux + Q_w_d_aux + Q_w_s_aux + Q_w_g_aux + W_sol_aux_m Q_w_aux = Q_w_aux + Q_w_ce_aux + Q_w_d_aux + Q_w_s_aux + Q_w_g_aux + W_sol_aux '급탕보조에너지소요량 (3.2.9-7) 2011.03.23 추가 End If Next Q_w_f = Q_w_f + Q_w_outg + Q_w_g ' - Q_w_reg '(3.2.9-5) 급탕에너지소요량 'Q_w_aux = Q_w_ce_aux + Q_w_d_aux + Q_w_s_aux + Q_w_g_aux + W_sol_aux '급탕보조에너지소요량 (3.2.9-7) Result.E소요량(i_count_month).급탕 = Q_w_f Result.E소요량(i_count_month).급탕보조 = Q_w_aux '//열원별에너지소요량 - 급탕에너지소요량 Result.일차E소요량(i_count_month).급탕등유 = use_Oil Result.일차E소요량(i_count_month).급탕LNG = use_LNG Result.일차E소요량(i_count_month).급탕LPG = use_LPG Result.일차E소요량(i_count_month).급탕지역 = use_DH Result.일차E소요량(i_count_month).급탕전력 = use_Elec End Sub Public Overridable Sub Calc_HeatingSystem(ByVal i_count_month As Integer, ByVal theta_e As Decimal) '//i_ce As Integer 제거함 사용안됨 Dim i As Integer, i_count_beta As Integer, i_count_zone As Integer, d_Nutz_mth As Integer Dim Q_h_f As Decimal, Q_h_outg As Decimal, Q_h_g As Decimal, Q_h_reg As Decimal, Q_dot_N As Decimal Dim Q_h_b As Decimal, Q_h_b_i As Decimal, Q_h_ce As Decimal, Q_h_ce_i As Decimal, Q_dot_h_max As Decimal, Q_h_d As Decimal, Q_h_s As Decimal Dim f_hydr As Decimal, f_int As Decimal, f_Radiant As Decimal, L_G As Decimal, B_G As Decimal, n_G As Decimal, h_G As Decimal, L_i As Decimal, U_i As Decimal, f_verbindung As Decimal Dim beta_k_pl As Decimal, beta_k_100 As Decimal, n As Decimal, d_Nutz_a As Integer, t_h_op_d As Integer, theta_i As Decimal, V_s As Decimal, n_beta As Integer Dim theta_NA_Grenz As Decimal, theta_WA_Grenz As Decimal, theta_i_h_soll As Decimal, theta_VA As Decimal, theta_RA As Decimal, theta_e_min As Decimal Dim e As Decimal, f As Decimal, q_B_theta As Decimal, q_B_70 As Decimal, Q_V_g_100 As Decimal, Q_V_g_pl As Decimal, Q_h_g_v_i As Decimal Dim Q_h_ce_aux As Decimal, Q_h_d_aux As Decimal, Q_h_d_aux_i As Decimal, beta_h_s As Decimal, Q_h_s_aux As Decimal, Q_h_g_aux As Decimal, P_h_g_aux As Decimal, P_aux_100 As Decimal, P_aux_pl As Decimal, P_aux_SB As Decimal Dim D_DS As Decimal, Psi_DS As Decimal, H_DS As Decimal, theta_prim_DA As Decimal Dim Q_w_b As Decimal, Q_w_d As Decimal, Q_w_d_i As Decimal, theta_g_m As Decimal, q_B_S As Decimal, Q_w_s As Decimal, Q_w_outg_i As Decimal, Q_w_outg As Decimal Dim eta_L As Decimal, eta_B As Decimal, eta_C As Decimal, eta_h_ce As Decimal, beta_h_d As Decimal, beta_h As Decimal Dim theta_VL_m_beta_h_d As Decimal, theta_RL_m_beta_h_d As Decimal, theta_HK_m_beta_h_d As Decimal, eta_k_100 As Decimal, eta_k_pl As Decimal Dim f_L_WA As Decimal, d_h_rB As Decimal, f_L_NA As Decimal, t_h_rL_T As Decimal, t_h_rL As Decimal, t_Nutz_d As Decimal, t_w_100 As Decimal Dim Q_w_ce As Decimal, Q_dot_d_in As Decimal, Q_dot_B_h As Decimal, Q_h_g_i As Decimal, Q_h_outg_i As Decimal Dim theta_HK_m_beta_h_g As Decimal, f_Hs_Hi As Decimal, theta_prim_DS As Decimal, B_DS As Decimal, theta_DS As Decimal Dim P_Pump As Decimal, c_p1 As Decimal, c_p2 As Decimal, f_P_A As Decimal, t_P As Decimal Dim P_C As Decimal, P_V As Decimal, P_P As Decimal, n_V As Decimal, n_P As Decimal, Q_V_P As Decimal, Q_c As Decimal, Q_h_aux As Decimal Dim t_h_max As Integer, t_h As Integer Dim use_Oil As Decimal, use_LNG As Decimal, use_LPG As Decimal, use_Elec As Decimal, use_DH As Decimal Dim i_count_renewable As Integer Dim Q_h_CHP As Decimal, Q_h_f_CHP As Decimal Dim i_HeatCool As Integer, Q_hp_outg As Decimal, Q_h_f_hp As Decimal, Q_h_g_hp_aux As Decimal Dim Q_W_sol_out_m As Decimal, Q_H_sol_out_m As Decimal, W_sol_aux_m As Decimal, W_sol_aux As Decimal Dim system_type As Integer Dim COP_HP_7 As Decimal, COP_HP_10 As Decimal, COP_HP_total As Decimal, Q_dot_HP_heating As Decimal, L_HP_heating As Decimal '=======================2010.03.14 추가 '==================================2010.2.21 수정 Dim d_op_mth As Integer Dim d_op_max_mth As Integer 'Dim i_count_profile As Integer d_op_max_mth = 0 '==================================2010.2.21 수정 Dim priod_value As Single = 0 Dim age As Single '//준공연도에 의한 경년변화값 Dim age_heating As Single For Each DRpriod As DS.tbl_DescRow In DSET.tbl_Desc.Select("cname<>'0'", "cname") priod_value = CSng(DRpriod.priod) Next If priod_value > 20 Then priod_value = 20 age = (1 - 0.01) ^ priod_value age_heating = (1 - 0.005) ^ priod_value theta_NA_Grenz = 10 theta_WA_Grenz = 10 beta_k_pl = 0.3 beta_k_100 = 1 f_verbindung = 1.2 '동일공간의 경우임, 타공간의 경우 (3.2.7-36) 참조 f_hydr = 1 '리버스리턴 계수로 지금은 1로 적용, 추후 검토 f_int = 1 ' 간헐(0.97-0.98), 지속 1 우선 1로 적용, 추후 검토 f_verbindung = 1.2 theta_i_h_soll = 20 theta_i = 13 ' 비난방공간으로 가정 n = 1.33 '라디에이터 1.33, 바닥난방 1.1, 우선 라디에이터 적용 theta_e_min = -11.3 d_Nutz_a = 365 '연간이용일수 우선 연중가동으로 적용 Q_h_outg = 0 'd_Nutz_mth = d_mth ' 연중가동으로 계산 추후 검토 '================2010.2.21 수정 Q_h_g = 0 Q_h_ce_aux = 0 Q_h_d_aux = 0 Q_h_s_aux = 0 Q_h_g_aux = 0 use_Oil = 0 use_LNG = 0 use_LPG = 0 use_Elec = 0 use_DH = 0 Q_h_outg = 0 Q_w_outg = 0 Q_h_CHP = 0 Q_h_f_CHP = 0 i_HeatCool = 1 Q_hp_outg = 0 Q_h_f_hp = 0 Q_h_g_hp_aux = 0 W_sol_aux = 0 system_type = 1 Q_h_f = 0 '===============================2010.04.17 추가 t_Nutz_d = 24 '==========================2010.04.24 추가 Dim Mon As String = "M" & Format(i_count_month, "00") For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET.tbl_nanbangkiki.Select("code<>'0'", "code") '//이 난방기기가 존전체내역에서 사용이되엇나? If DSET.tbl_zone.Select("(공조난방생산기기 = '" & Dr난방.code & "' and 냉난방공조 <> '기능없음' and (외기부하처리여부 = '예' or 냉난방공조 = '냉난방' or 냉난방공조 = '난방') ) or (열생산난방생산기기='" & Dr난방.code & "' and 냉난방방식 <> '냉방' and 냉난방방식 <> '기능없음') ").GetUpperBound(0) <> -1 Then 'If Worksheets("난방기기").Range("난방생산기기1").Offset(4, i_count_boiler - 1) = "예" Then '"(공조난방생산기기 = '" & Dr난방.code & "' and 냉난방공조 <> '기능없음' and (외기부하처리여부 = '예' or 냉난방공조 = '냉난방' or 냉난방공조 = '난방') ) or (열생산난방생산기기='" & Dr난방.code & "' and 냉난방방식 <> '냉방' and 냉난방방식 <> '기능없음') " Q_h_b = 0 Q_h_ce = 0 Q_dot_h_max = 0 t_h_max = 0 t_h = 0 '원래 식은 t_h = t_h_op + t_h_we 월간 난방 시간 t_h_op_d = 0 Q_h_d = 0 Q_h_s = 0 n_beta = 0 ' 순차가동시 full 부하 대수 Q_h_g_v_i = 0 '==================================2010.2.21 수정 d_op_max_mth = 0 d_Nutz_mth = 0 '==================================2010.2.21 수정 For Each DR존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("(공조난방생산기기 = '" & Dr난방.code & "' and 냉난방공조 <> '기능없음' and (외기부하처리여부 = '예' or 냉난방공조 = '냉난방' or 냉난방공조 = '난방') ) or (열생산난방생산기기='" & Dr난방.code & "' and 냉난방방식 <> '냉방' and 냉난방방식 <> '기능없음') and code <> '0'") ' For i_count_zone = 1 To DSET.tbl_zone.Rows.Count '//지금 사용하는 존이 공조에의한것인지 아닌지를 판단 Dim 판단1 As Boolean = False Dim 판단2 As Boolean = False If DR존.열생산난방생산기기 = Dr난방.code Then 판단1 = True If DR존.공조난방생산기기 = Dr난방.code Then 판단2 = True '//다시 생각을... 'If Worksheets("입력존").Range("입력난방생산기기1").Offset(0, i_count_zone - 1) <> "" And Worksheets("입력존").Range("입력난방생산기기1").Offset(0, i_count_zone - 1) = Worksheets("난방기기").Range("난방생산기기1").Offset(0, i_count_boiler - 1) Then ' If DR존.열생산난방생산기기 = Dr난방.code Then ' Worksheets("난방기기").Range("난방생산기기1").Offset(0, i_count_boiler - 1) Then '=========================================================================================================================================================2010.2.21 수정 '1105 소스백업 If DR존.냉난방방식 = "냉난방" OrElse DR존.냉난방방식 = "난방" Then ' Worksheets("입력존").Range("공조존2").Offset(0, i_count_zone - 1) <> "냉난방" Then If 판단1 And (DR존.냉난방방식 = "냉난방" OrElse DR존.냉난방방식 = "난방") Then Dim Dr월에너지 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("Zone='" & DR존.code & "'"), DSR.최대냉난방부하Row()) If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then Q_h_b_i = TOSG(Dr월에너지.난방요구량열) Else Q_h_b_i = TOSG(Dr월에너지.난방요구량열 + Dr월에너지.난방요구량공조) ' Sheets("" & i_count_month & "").Cells(7, 7 + i_count_zone) End If '=========================================================================================================================================================2010.2.21 수정 Q_h_b = Q_h_b + Q_h_b_i Q_dot_h_max = TOSG(Q_dot_h_max + TOSG(Drow최대(0).최대난방기기부하)) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1) '===================================================================================2010.2.21 수정 Dim DR프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) If i_count_month = 0 Then d_op_mth = 0 Else d_op_mth = CInt(TOSG(DR프로필("day" & Format(i_count_month, "00")))) End If If t_h < TOSG(Drow최대(0).난방최대가동시간) * d_op_mth Then t_h = CInt(TOSG(Drow최대(0).난방최대가동시간) * d_op_mth) End If If d_op_max_mth < d_op_mth Then d_op_max_mth = d_op_mth End If '===================================================================================2010.2.21 수정 If t_h > t_h_max Then t_h_max = t_h End If If t_h_op_d < TOSG(Drow최대(0).난방최대가동시간) Then t_h_op_d = CInt(TOSG(Drow최대(0).난방최대가동시간)) ' Sheets("0").Range("최대난방부하1").Offset(2, i_count_zone - 1) End If 'i_ce = 0 '//아래 if 문이 모두 공급기기 데이터를 가지고 게산을 하고잇네요 이 부분을 전부 실행못하게 해야합니다. If DR존.냉난방열공급시스템 = "0" Then '//0일떄 특정 변수를 초기화(=0) 하려면 이곳에 입력하세요. Else Dim Dr공급 As DS.tbl_kongkubRow = CType(DSET.tbl_kongkub.Select("code='" & DR존.냉난방열공급시스템 & "' and code <> '0'")(0), DS.tbl_kongkubRow) If (DR존.천장고 = "" OrElse TOSG(DR존.천장고) < 4) Then ' Worksheets("입력존").Range("천장고1").Offset(0, i_count_zone - 1) < 4 Then Select Case Dr공급.열공급시스템.Trim ' Dr공급.열공급시스템 Case "노출형방열기(열)" '노출형방열기(열)" eta_L = (0.93 + 0.95) / 2 eta_B = 1 Select Case Dr공급.노출형제어.Trim 'Dr공급.노출형제어 Case "비제어" '비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.88 Case "PI제어" 'PI제어" eta_C = 0.97 End Select Case "바닥난방(열)" '바닥난방(열)" eta_L = 1 Select Case Dr공급.바닥난방열제어.Trim ' Dr공급.바닥난방열제어 Case "비제어" '비제어" eta_C = 0.78 Case "on/off제어" eta_C = 0.88 Case "PI제어" 'PI제어" eta_C = 0.95 End Select Select Case Dr공급.바닥난방열건축부위.Trim ' Worksheets("난방공급시스템").Range("바닥열시스템1").Offset(0, i_ce - 1) Case "습식" '습식" eta_B = (0.93 + 0.95) / 2 Case "반건식" '반건식" eta_B = (0.95 + 0.95) / 2 Case "건식" '건식" eta_B = (0.98 + 0.95) / 2 End Select Case "바닥난방(전기)" '바닥난방(전기)" eta_L = 1 Select Case Dr공급.바닥난방전기제어.Trim ' Dr공급.바닥난방전기제어 Case "비제어" '비제어" eta_C = 0.91 Case "on/off제어" eta_C = 0.93 '2011.05.03 추가, 우선 on/off 제어와 PI제어를 같게 적용, 추후검토 Case "PI제어" 'PI제어" eta_C = 0.93 End Select Select Case Dr공급.바닥난방전기건축부위.Trim ' Worksheets("난방공급시스템").Range("바닥전기시스템1").Offset(0, i_ce - 1) Case "습식" '습식" eta_B = (0.93 + 0.95) / 2 Case "반건식" '반건식" eta_B = (0.95 + 0.95) / 2 Case "건식" '건식" eta_B = (0.98 + 0.95) / 2 End Select Case "전기난방" '전기난방" eta_L = 2 ' eta_h_ce 값을 맞추기 위해서 임의로 설정한 값(전기난방은 eta_h_ce 값이 바로 정해지기때문) eta_B = 2 ' eta_h_ce 값을 맞추기 위해서 임의로 설정한 값(전기난방은 eta_h_ce 값이 바로 정해지기때문) Select Case Dr공급.전기난방제어.Trim ' Dr공급.바닥난방전기제어 Case "비제어" eta_C = -1.1235955 '2011.05.03 추가, 우선 on/off 제어와 비제어를 같게 적용, 추후검토 Case "on/off제어" eta_C = -1.1235955 ' eta_h_ce 0.89 값을 맞추기 위해서 임의로 설정한 값(전기난방은 eta_h_ce 값이 바로 정해지기때문) Case "PI제어" 'PI제어" eta_C = -1.07527 ' eta_h_ce 0.93 값을 맞추기 위해서 임의로 설정한 값(전기난방은 eta_h_ce 값이 바로 정해지기때문) End Select End Select f_Radiant = 1 Else If TOSG(DR존.천장고) >= 4 And TOSG(DR존.천장고) < 10 Then Select Case Dr공급.열공급시스템.Trim ' Dr공급.열공급시스템 Case "노출형방열기(열)" '노출형방열기(열)" f_Radiant = 1 eta_L = 0.9 eta_B = 1 Select Case Dr공급.노출형제어.Trim 'Dr공급.노출형제어 Case "비제어" '비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" 'PI제어" eta_C = 0.97 End Select Case "바닥난방(열)" '바닥난방(열)" f_Radiant = 0.85 eta_L = 0.98 Select Case Dr공급.바닥난방열제어.Trim ' Dr공급.바닥난방열제어 Case "비제어" '비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" 'PI제어" eta_C = 0.97 End Select eta_B = 0.95 Case "바닥난방(전기)" '바닥난방(전기)" f_Radiant = 0.85 eta_L = 0.98 Select Case Dr공급.바닥난방전기제어.Trim ' Dr공급.바닥난방전기제어 Case "비제어" '비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" 'PI제어" eta_C = 0.97 End Select eta_B = 0.95 Case "전기난방" '전기난방" f_Radiant = 1 eta_L = 0.935 eta_B = 1 Select Case Dr공급.바닥난방전기제어.Trim ' Dr공급.바닥난방전기제어 Case "비제어" '비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" 'PI제어" eta_C = 0.97 End Select End Select Else Select Case Dr공급.열공급시스템.Trim Case "노출형방열기(열)" '노출형방열기(열)" f_Radiant = 1 eta_L = 0.72 ' 우선 15m 기준 설정 eta_B = 1 Select Case Dr공급.노출형제어.Trim Case "비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" eta_C = 0.97 End Select Case "바닥난방(열)" '바닥난방(열)" f_Radiant = 0.85 eta_L = 0.92 Select Case Dr공급.바닥난방열제어.Trim Case "비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" eta_C = 0.97 End Select eta_B = 0.95 Case "바닥난방(전기)" '바닥난방(전기)" f_Radiant = 0.85 eta_L = 0.92 Select Case Dr공급.바닥난방전기제어.Trim Case "비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" eta_C = 0.97 End Select eta_B = 0.95 Case "전기난방" '전기난방" f_Radiant = 1 eta_L = 0.78 eta_B = 1 Select Case Dr공급.바닥난방전기제어.Trim Case "비제어" eta_C = 0.8 Case "on/off제어" eta_C = 0.93 Case "PI제어" eta_C = 0.97 End Select End Select End If End If eta_h_ce = 1 / (4 - (eta_L + eta_C + eta_B)) '(3.27-28) Q_h_ce_i = (f_Radiant * f_int * f_hydr / eta_h_ce - 1) * Q_h_b_i '(3.2.7-27) Q_h_ce = Q_h_ce + Q_h_ce_i End If End If '//판단1 //난방생산기기 완료 If DR존.냉난방공조 = "냉난방" OrElse DR존.냉난방공조 = "난방" OrElse ((DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예") Then ' 공조기 사용에 따른 난방에너지 '=========================================================================================================================================================2010.2.21 수정 If 판단2 Then 'MsgBox("열생산기기는 있고 공조생산기기는 공백상태의 검토 필요") Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & DR존.code & "'"), DSR.최대냉난방부하Row()) Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & DR존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) Q_dot_h_max = TOSG(Q_dot_h_max + TOSG(Drow최대(0).최대난방기기부하)) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1) If i_count_month = 0 Then d_op_mth = 0 Else d_op_mth = CInt(TOSG(Dr프로필("day" & Format(i_count_month, "00")))) End If If t_h < TOSG(Drow최대(0).난방최대가동시간) * d_op_mth Then t_h = CInt(TOSG(Drow최대(0).난방최대가동시간) * d_op_mth) End If If d_op_max_mth < d_op_mth Then d_op_max_mth = d_op_mth End If If t_h > t_h_max Then t_h_max = t_h End If If t_h_op_d < TOSG(Drow최대(0).난방최대가동시간) Then t_h_op_d = CInt(TOSG(Drow최대(0).난방최대가동시간)) ' Sheets("0").Range("최대난방부하1").Offset(2, i_count_zone - 1) End If Dim 월에너지분석 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row) If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then '// 2010.11.19 추가 Q_h_b_i = TOSG(월에너지분석.난방요구량공조) Else Q_h_b_i = TOSG(월에너지분석.공조요구량난방) ' Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone) End If Q_h_b = Q_h_b + Q_h_b_i 'Q_h_ce_i = 0 '공조기는 0으로 설정 '==============================================================2010.03.20 수정 공조기는 0으로 설정한 것을 수정 If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then '// 2010.11.19 추가 Else If TOSG(DR존.천장고p) >= 4 Then If TOSG(DR존.천장고p) >= 20 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.71 + 0.97 + 1))) - 1) * Q_h_b_i) Else If TOSG(DR존.천장고p) >= 15 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.78 + 0.97 + 1))) - 1) * Q_h_b_i) Else If TOSG(DR존.천장고p) >= 12 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.84 + 0.97 + 1))) - 1) * Q_h_b_i) Else If TOSG(DR존.천장고p) >= 10 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.87 + 0.97 + 1))) - 1) * Q_h_b_i) Else If TOSG(DR존.천장고p) >= 8 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.91 + 0.97 + 1))) - 1) * Q_h_b_i) Else If TOSG(DR존.천장고p) >= 6 Then Q_h_ce_i = TOSG((1 / (1 / (4 - (0.96 + 0.97 + 1))) - 1) * Q_h_b_i) Else Q_h_ce_i = TOSG((1 / (1 / (4 - (0.99 + 0.97 + 1))) - 1) * Q_h_b_i) End If End If End If End If End If End If End If '===============================================================================================2010.03.20 수정 Q_h_ce = Q_h_ce + Q_h_ce_i End If End If '=========================================================================================================================================================2010.2.21 수정 End If '//공조 난방기기 완료 ㅋㅋ 끝 ' End If Next '==================================2010.2.21 수정 d_Nutz_mth = d_op_max_mth '==================================2010.2.21 수정 'beta_h_d = (Q_h_b + Q_h_ce) / (Q_dot_h_max * t_h_max) ' t_h 가 t_h_max 일 것으로 추정 추후 검토 'theta_VA = TOSG(Dr난방.급수온도) ' Worksheets("난방기기").Range("난방기기급수온도1").Offset(0, i_count_boiler - 1) 'theta_RA = TOSG(Dr난방.환수온도) ' Worksheets("난방기기").Range("난방기기환수온도1").Offset(0, i_count_boiler - 1) 'theta_VL_m_beta_h_d = TOSG((theta_VA - theta_i_h_soll) * beta_h_d ^ (1 / n) + theta_i_h_soll) '(3.2.7.13) 'theta_RL_m_beta_h_d = TOSG((theta_RA - theta_i_h_soll) * beta_h_d ^ (1 / n) + theta_i_h_soll) '(3.2.7.14) 'theta_HK_m_beta_h_d = TOSG(0.5 * (theta_VL_m_beta_h_d + theta_RL_m_beta_h_d)) 'f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22) 'd_h_rB = TOSG(d_op_max_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_op_max_mth * 24))) '(3.2.7-21) '================== d_op_max_mth 2010.2.21 수정'CSng(d_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_mth * 24))) '(3.2.7-21) 'f_L_NA = 1 - (theta_NA_Grenz - theta_e) / (theta_NA_Grenz - theta_e_min) '(3.2.7-20) 't_h_rL_T = 24 - f_L_NA * (24 - t_h_op_d) '(3.2.7-19) 't_h_rL = t_h_rL_T * d_h_rB '(3.2.7-23) '===================================================================2010.11.04 위치수정 및 추가 '2011.03.16 다시 수정 If Dr난방.열생산기기방식 = "히트펌프" Then If Dr난방.운전방식.Trim = "동시가동" Then Q_dot_h_max = TOSG(Dr난방.히트난방용량) * TOSG(Dr난방.보일러대수) Else Q_dot_h_max = TOSG(Dr난방.히트난방용량) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1) End If End If beta_h_d = (Q_h_b + Q_h_ce) / (Q_dot_h_max * t_h_max) ' t_h 가 t_h_max 일 것으로 추정 추후 검토 If beta_h_d > 1 Then beta_h_d = 1 theta_VA = TOSG(Dr난방.급수온도) ' Worksheets("난방기기").Range("난방기기급수온도1").Offset(0, i_count_boiler - 1) theta_RA = TOSG(Dr난방.환수온도) ' Worksheets("난방기기").Range("난방기기환수온도1").Offset(0, i_count_boiler - 1) theta_VL_m_beta_h_d = TOSG((theta_VA - theta_i_h_soll) * beta_h_d ^ (1 / n) + theta_i_h_soll) '(3.2.7.13) theta_RL_m_beta_h_d = TOSG((theta_RA - theta_i_h_soll) * beta_h_d ^ (1 / n) + theta_i_h_soll) '(3.2.7.14) theta_HK_m_beta_h_d = TOSG(0.5 * (theta_VL_m_beta_h_d + theta_RL_m_beta_h_d)) f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22) d_h_rB = TOSG(d_op_max_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_op_max_mth * 24))) '(3.2.7-21) '================== d_op_max_mth 2010.2.21 수정'CSng(d_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_mth * 24))) '(3.2.7-21) f_L_NA = 1 - (theta_NA_Grenz - theta_e) / (theta_NA_Grenz - theta_e_min) '(3.2.7-20) t_h_rL_T = 24 - f_L_NA * (24 - t_h_op_d) '(3.2.7-19) t_h_rL = t_h_rL_T * d_h_rB '(3.2.7-23) '===================================================================2010.11.04 위치수정 및 추가 '2011.03.16 다시 수정 '=================================================2010. 02. 11 수정 For Each Dr난방분배 As DS.tbl_nbunbaeRow In DSET.tbl_nbunbae.Select("생산기기구분='" & Dr난방.code & "' and code <> '0'", "code") 'If Dr난방.code = Dr난방분배.생산기기구분 Then ' Worksheets("난방분배시스템").Range("분배생산기기1").Offset(0, i_count_pipe - 1) Then Select Case Dr난방분배.표준치적용.Trim ' Worksheets("난방분배시스템").Range("분배생산기기1").Offset(1, i_count_pipe - 1) Case "상세입력" '상세입력" L_i = TOSG(Dr난방분배.배관구간길이) '= Worksheets("난방분배시스템").Range("배관구간방식1").Offset(1, i_count_pipe - 1) U_i = TOSG(Dr난방분배.열관류율) ' Worksheets("난방분배시스템").Range("배관구간방식1").Offset(2, i_count_pipe - 1) Select Case Dr난방분배.배관설치장소.Trim ' Worksheets("난방분배시스템").Range("배관구간방식1").Offset(3, i_count_pipe - 1) Case "표준난방존" '표준난방존" Q_h_d = (Q_h_d + U_i * (theta_HK_m_beta_h_d - theta_i_h_soll) * L_i * t_h_rL) / 1000 Case "표준비난방존" '표준비난방존" Q_h_d = (Q_h_d + U_i * (theta_HK_m_beta_h_d - 13) * L_i * t_h_rL) / 1000 Case "외부" '외부" Q_h_d = (Q_h_d + U_i * (theta_HK_m_beta_h_d - theta_e) * L_i * t_h_rL) / 1000 End Select Case "표준치조건" '표준치조건" L_G = TOSG(Dr난방분배.건물길이x) ' Worksheets("난방분배시스템").Range("난방분배건물길이1").Offset(0, i_count_pipe - 1) B_G = TOSG(Dr난방분배.건물길이y) ' Worksheets("난방분배시스템").Range("난방분배건물길이1").Offset(1, i_count_pipe - 1) n_G = TOSG(Dr난방분배.층수) 'Worksheets("난방분배시스템").Range("난방분배건물길이1").Offset(2, i_count_pipe - 1) h_G = TOSG(Dr난방분배.층고) ' Worksheets("난방분배시스템").Range("난방분배건물길이1").Offset(3, i_count_pipe - 1) If Dr난방.배관망유형 = "이중배관" Then ' then Worksheets("난방기기").Range("난방기기배관망1").Offset(0, i_count_boiler - 1) = "이중배관" Then If Dr난방분배.지관장소 = "외부" Then ' then외부" Then L_i = TOSG((2 * L_G + 0.01625 * L_G * B_G * B_G) * 0.2 + (0.025 * L_G * B_G * h_G * n_G) * 0.255 + (0.55 * L_G * B_G * n_G) * 0.255) '외부배관난방적용 Else L_i = TOSG((2 * L_G + 0.0325 * L_G * B_G + 6) * 0.2 + (0.025 * L_G * B_G * h_G * n_G) * 0.255 + (0.55 * L_G * B_G * n_G) * 0.255) '내부배관난방적용 End If Else L_i = TOSG((2 * L_G + 0.0325 * L_G * B_G + 6) * 0.2 + (0.025 * L_G * B_G * h_G * n_G + 2 * (L_G + B_G) * n_G) * 0.255 + (0.1 * L_G * B_G * n_G) * 0.255) '단일배관난방적용 End If Q_h_d = (Q_h_d + (theta_HK_m_beta_h_d - theta_i_h_soll) * L_i * t_h_rL) / 1000 '(3.2.7-36) 'theta_i를 theta_i_h_soll 로 수정 추후 검토 ' U_i는 L_i에 포함 Case Else MsgBox("표준치적용을 알수없습니다", MsgBoxStyle.Critical, Dr난방분배.표준치적용) End Select 'End If Next '=================================================2010. 02. 11 수정 If Dr난방.축열탱크방식 <> "축열탱크없음" Then ' Worksheets("난방기기").Range("난방기기축열탱크1").Offset(0, i_count_boiler - 1) <> "축열탱크없음" Then V_s = TOSG(Dr난방.축열제척) ' Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) q_B_S = TOSG(0.4 + 0.14 * V_s ^ 0.45) '(3.2.7-43) Q_h_s = f_verbindung * (theta_VA - theta_i) / 45 * d_op_max_mth * q_B_S '(3.2.7-41) theta_h_s 는 theta_VA 로 설정'================== d_op_max_mth 2010.2.21 수정 End If '===================================================================================================================2010.2.21 수정 Q_h_outg_i = Q_h_b + Q_h_ce + Q_h_d + Q_h_s '(3.2.7-1) If Dr난방.열생산기기방식 = "전기보일러" Then Q_h_outg_i = Q_h_outg_i / (TOSG(Dr난방.정격보일러효율) * age_heating / 100) End If Q_h_outg = Q_h_outg + Q_h_outg_i '(3.2.7-1) '===================================================================================================================2010.2.21 수정 If Dr난방.열생산기기방식 = "보일러" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then '//아래는 급탕생산기기로 지정되어잇는가? If DSET.tbl_zone.Select("열생산급탕생산기기='" & Dr난방.code & "'").GetUpperBound(0) <> -1 Then 'If Worksheets("난방기기").Range("난방생산기기1").Offset(5, i_count_boiler - 1) = "예" Then Q_w_b = 0 For Each Dr입력존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & Dr난방.code & "'", "code") Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR.최대냉난방부하.Select("zone='" & Dr입력존.code & "'"), DSR.최대냉난방부하Row()) Dim Dr월에너지분석 As DSR.월별에너지분석Row = CType(DSETR.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr입력존.code & "'")(0), DSR.월별에너지분석Row) Q_w_b = TOSG(Q_w_b + TOSG(Dr월에너지분석.급탕요구량)) 'Sheets("" & i_count_month & "").Cells(15, 7 + i_count_zone) '===================================================================================2010.2.21 수정 Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & Dr입력존.프로필 & "'")(0), DS.tbl_profileRow) If i_count_month = 0 Then d_op_mth = 0 Else d_op_mth = CInt(TOSG(Dr프로필("day" & Format(i_count_month, "00")))) End If If t_h < TOSG(Drow최대(0).난방최대가동시간) * d_op_mth Then t_h = CInt(TOSG(Drow최대(0).난방최대가동시간) * d_op_mth) End If If d_op_max_mth < d_op_mth Then d_op_max_mth = d_op_mth End If '===================================================================================2010.2.21 수정 Next End If End If ' 여기에 신재생에너지를 산출하고 Q_h_outg 와 Q_h_outg_i 에서 신재생에너지를 차감해야 '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- '신재생 및 열병합 시스템 Dim CRenew As New CRenewable ' Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Rows(0), DS.tbl_newRow) If Dr난방.신재생연결여부 = "시스템연결" AndAlso Dr난방.연결된시스템.Trim <> "" AndAlso Dr난방.연결된시스템 <> "0" Then ' Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & Dr난방.연결된시스템 & "' and code <> '0'")(0), DS.tbl_newRow) '//식은 맞는듯한게 값이 이상하게 들었네요... 뭘해도 되도록 수정해버리죠 ㅋㅋ Select Case Dr신재생.기기종류.Trim ' Dr난방.연결된시스템.Trim Case "지열" '//지열 Select Case Dr신재생.가동연료.Trim Case "전기" '전기" CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_h_outg_i, i_count_month, d_op_max_mth, t_h, theta_VA, theta_i, Q_hp_outg, Q_h_f_hp, Q_h_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_h_outg = Q_h_outg - Q_hp_outg Q_h_outg_i = Q_h_outg_i - Q_hp_outg use_Elec = use_Elec + Q_h_f_hp + Q_h_g_hp_aux Q_h_f = Q_h_f + Q_h_f_hp + Q_h_g_hp_aux '============================2010.04.17 추가 Case "천연가스" '천연가스" CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_h_outg_i, i_count_month, d_op_max_mth, t_h, theta_VA, theta_i, Q_hp_outg, Q_h_f_hp, Q_h_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_h_outg = Q_h_outg - Q_hp_outg Q_h_outg_i = Q_h_outg_i - Q_hp_outg use_LNG = use_LNG + Q_h_f_hp use_Elec = use_Elec + Q_h_g_hp_aux Q_h_f = Q_h_f + Q_h_f_hp + Q_h_g_hp_aux '============================2010.04.17 추가 '//요기맞죠 ^^? Case "액화가스" '액화가스" CRenew.Calc_HeatpumpSystem(system_type, i_HeatCool, Dr신재생, Q_h_outg_i, i_count_month, d_op_max_mth, t_h, theta_VA, theta_i, Q_hp_outg, Q_h_f_hp, Q_h_g_hp_aux) '=============2010.04.01 수정 Q_h_outg 를 Q_h_outg_i 로 수정 Q_h_outg = Q_h_outg - Q_hp_outg Q_h_outg_i = Q_h_outg_i - Q_hp_outg use_LPG = use_LPG + Q_h_f_hp use_Elec = use_Elec + Q_h_g_hp_aux Q_h_f = Q_h_f + Q_h_f_hp + Q_h_g_hp_aux '============================2010.04.17 추가 End Select Case "열병합" '//열병합 Select Case Dr신재생.가동연료.Trim Case "난방유" '난방유" CRenew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_h_outg_i, t_h, Q_h_CHP, Q_h_f_CHP) Q_h_outg = Q_h_outg - Q_h_CHP Q_h_outg_i = Q_h_outg_i - Q_h_CHP use_Oil = use_Oil + Q_h_f_CHP Q_h_f = Q_h_f + Q_h_f_CHP '============================2010.04.17 Case "천연가스" '천연가스" CRenew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_h_outg_i, t_h, Q_h_CHP, Q_h_f_CHP) Q_h_outg = Q_h_outg - Q_h_CHP Q_h_outg_i = Q_h_outg_i - Q_h_CHP use_LNG = use_LNG + Q_h_f_CHP Q_h_f = Q_h_f + Q_h_f_CHP '============================2010.04.17 Case "액화가스" '액화가스" CRenew.Calc_CogenerationSystemEN(Dr신재생, i_count_month, Q_h_outg_i, t_h, Q_h_CHP, Q_h_f_CHP) Q_h_outg = Q_h_outg - Q_h_CHP Q_h_outg_i = Q_h_outg_i - Q_h_CHP use_LPG = use_LPG + Q_h_f_CHP Q_h_f = Q_h_f + Q_h_f_CHP '============================2010.04.17 Case Else MsgBox("신재생에너지의 가동연료를 확인할 수 없습니다", MsgBoxStyle.Critical, Dr신재생.가동연료) End Select End Select End If '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- '===========================================================================================2013.01.13 이동 If Dr난방.열생산기기방식 = "히트펌프" Then Q_dot_HP_heating = TOSG(Dr난방.히트난방용량) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1) COP_HP_7 = TOSG(Dr난방.히트난방정격7) * age ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(2, i_count_boiler - 1) COP_HP_10 = TOSG(Dr난방.히트난방정격10) * age ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(3, i_count_boiler - 1) L_HP_heating = TOSG(Dr난방.히트배관길이) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(4, i_count_boiler - 1) If theta_e > 15 Then COP_HP_total = (COP_HP_7 - COP_HP_10) / 17 * 15 + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 17 Else COP_HP_total = (COP_HP_7 - COP_HP_10) / 17 * theta_e + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 17 End If If theta_e < 7 Then If theta_e >= 0 Then COP_HP_total = TOSG(COP_HP_total * ((1 - 0.86) / 7 * theta_e + 0.86)) Else COP_HP_total = TOSG(COP_HP_total * ((0.98 - 0.86) / 7 * (-theta_e) + 0.86)) End If End If If Q_dot_HP_heating <= 20 Then COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_heating * 0.002)) Else If Q_dot_HP_heating <= 100 Then COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_heating * 0.0009)) Else COP_HP_total = TOSG(COP_HP_total * (1 - L_HP_heating * 0.0014)) End If End If Q_h_outg = Q_h_outg - Q_h_outg_i '===================================================2013.01.16 추가 '======================================================================================================================================================2010.04.23 추가 '======================================================================================================================================================2012.07.08 추가 If Dr난방.운전방식.Trim = "동시가동" Or Dr난방.운전방식.Trim = "순차가동" Then Q_dot_HP_heating = Q_dot_HP_heating * TOSG(Dr난방.보일러대수) End If If Q_h_outg_i / (Q_dot_HP_heating * t_h_max) >= 1 Or Dr난방.히트펌프시스템종류 = "실내외분리시스템" Then '====2010.04.26 수정 Q_h_outg_i = Q_h_outg_i / COP_HP_total Else If Dr난방.운전방식.Trim = "순차가동" Then For i_count_beta = 1 To CInt(TOSG(Dr난방.보일러대수)) If Q_h_outg_i <= (Q_dot_HP_heating * t_h_max / TOSG(Dr난방.보일러대수) * i_count_beta) Then Q_h_outg_i = ((Q_h_outg_i / COP_HP_total) * (i_count_beta - 1) + (Q_h_outg_i / (COP_HP_total * (Q_h_outg_i / (Q_dot_HP_heating * t_h_max / TOSG(Dr난방.보일러대수)) * 0.5 + 0.5)))) / i_count_beta Exit For End If Next Else Q_h_outg_i = Q_h_outg_i / (COP_HP_total * (Q_h_outg_i / (Q_dot_HP_heating * t_h_max) * 0.5 + 0.5)) '====2010.04.26 수정 End If End If '======================================================================================================================================================2010.04.23 추가 Q_h_outg = Q_h_outg + Q_h_outg_i '===================================================2013.01.16 추가 End If '===========================================================================================2013.01.13 이동 If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then If DSET.tbl_zone.Select("열생산급탕생산기기='" & Dr난방.code & "' and code <> '0'").GetUpperBound(0) <> -1 Then ' If Worksheets("난방기기").Range("난방생산기기1").Offset(5, i_count_boiler - 1) = "예" Then If Dr난방.분배시스템방식 = "중앙식" Then ' Dr난방.분배시스템방식 = "중앙식" Then L_G = TOSG(Dr난방.건물길이) ' Dr난방.건물길이 B_G = TOSG(Dr난방.건물넓이) ' Dr난방.건물넓이 n_G = TOSG(Dr난방.열공급층수) 'Dr난방.열공급층수 h_G = TOSG(Dr난방.층고) ' Dr난방.층고 L_i = TOSG((2 * L_G + 0.0325 * L_G * B_G + 6) * 0.2 + (0.025 * L_G * B_G * h_G * n_G + 2 * (L_G + B_G) * n_G) * 0.255 + (0.1 * L_G * B_G * n_G) * 0.255) '단일배관난방적용 If Dr난방.순환유무 = "무" Then ' Worksheets("난방기기").Range("급탕분배방식1").Offset(1, i_count_boiler - 1) = "무" Then ':중앙비순환시스템 Q_w_d_i = TOSG(1 / 1000 * L_i * ((23 * 0.2 ^ (-0.2) - theta_i) * d_Nutz_mth * 24)) '(3.2.9-11) 중앙비순환시스템 L_i 에 U_i 포함 theta_w_m_비순환 는 23*0.2^(-0.2) theta_g_m = 40 Else ':중앙순환시스템 Q_w_d_i = TOSG(1 / 1000 * L_i * d_Nutz_mth * ((50 - theta_i) * t_Nutz_d + 0.5 * (23 * 0.2 ^ (-0.2) - theta_i) * (24 - t_Nutz_d))) '(3.2.9-11) 중앙순환시스템 L_i 에 U_i 포함 theta_w_m_순환 는 50도 theta_g_m = 50 End If Q_w_d = Q_w_d + Q_w_d_i '(3.2.9-12) End If Select Case Dr난방.축열탱크방식.Trim 'Worksheets("난방기기").Range("난방기기축열탱크1").Offset(0, i_count_boiler - 1) Case "전기가열식" '전기가열식" ':저탕조용량(모를경우) 'f_N = 1 / (t_Nutz_d * 1) '(3.2.9-24) t_Nutz_T 는 t_Nutz_d 로 적용, eta_Sp는 1로 적용 추후 검토 ':심야전기가열 'V_s = 1.42 * Q_w_b_d * f_N * 860 / ((theta_w_m - theta_k) * eta_s) '(3.2.9-33) : 심야전기가열 ':주간전기가열 'V_s = 0.67 * Q_w_b_d * f_N * 860 / ((Q_w_m - Q_k) * eta_s) '(3.2.9-34) : 주간전기가열 V_s = TOSG(Dr난방.축열제척) ' Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) q_B_S = TOSG(0.29 + 0.019 * V_s ^ 0.8) '(3.2.9-30) :1994 이후 Q_w_s = (55 - theta_i) / 45 * d_Nutz_mth * q_B_S '(3.2.9-29) : 전기가열식 저탕조 Case "가스가열식" '가스가열식" ':가스가열식 저탕조 V_s = TOSG(Dr난방.축열제척) ' Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) ':1994 이후 q_B_S = TOSG(2 + 0.033 * V_s ^ 1.1) '(3.2.9-38) Q_w_s = (55 - theta_i) / 50 * d_Nutz_mth * q_B_S '(3.2.9-37) : 가스가열식 저탕조 Case "간접가열식" '간접가열식" ':간접 가열식 저탕조 ':태양열 복합 저탕조(UA_sb_s_a를 모를 경우) 'q_B_S = (0.4 + 0.2 * (V_s_aux + V_s_sol) ^ 0.4) * V_s_aux / (V_s_aux + V_s_sol) '(3.2.9-26) 'f_N = 1 / (t_Nutz_T * n_Sp) '(3.2.9-24) ':저탕조용량(모를 경우) 'V_s = (Q_w_b_d * f_N * 860) / ((theta_w_m - theta_k) * eta_s) '(3.2.9-23) V_s = TOSG(Dr난방.축열제척) ' Worksheets("난방기기").Range("난방기기축열체적1").Offset(0, i_count_boiler - 1) If V_s < 1000 Then ':1000이하 q_B_S = 0.8 + 0.02 * V_s ^ 0.77 '(3.2.9-18) '============================2010.04.24 수정 Else ':1000이상 q_B_S = TOSG(0.39 * V_s ^ 0.35 + 0.5) '(3.2.9-19) End If Q_w_s = f_verbindung * (50 - theta_i) / 45 * d_Nutz_mth * q_B_S '(3.2.9-16) End Select Q_w_outg_i = Q_w_b + Q_w_ce + Q_w_d + Q_w_s '(3.2.9-4) Q_w_outg = Q_w_outg + Q_w_outg_i Else Q_w_outg_i = 0 End If ' 신재생에너지 시스템 '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- '태양열(난방+급탕) 시스템 If Dr난방.신재생연결여부 = "시스템연결" AndAlso Dr난방.연결된시스템 <> "0" Then ' Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then Dim Dr신재생 As DS.tbl_newRow = CType(DSET.tbl_new.Select("code='" & Dr난방.연결된시스템 & "' and code <> '0'")(0), DS.tbl_newRow) Select Case Dr신재생.기기종류.Trim Case "태양열" '//태양열일때 If Dr신재생.태양열종류 = "난방+급탕" Then '난방+급탕" Then 'Dim Dr존 As DS.tbl_zoneRow = CType(DSET.tbl_zone.Select("code<>'0'", "code")(i_count_zone - 1), DS.tbl_zoneRow) Calc.Renewable.Calc_ThermalSolarSystem_EN(system_type, Dr신재생.code, i_count_month, d_op_max_mth, Q_h_outg_i, Q_w_outg_i, Q_W_sol_out_m, Q_H_sol_out_m, W_sol_aux_m) Q_h_outg = Q_h_outg - Q_H_sol_out_m Q_h_outg_i = Q_h_outg_i - Q_H_sol_out_m Q_w_outg = Q_w_outg - Q_W_sol_out_m Q_w_outg_i = Q_w_outg_i - Q_W_sol_out_m W_sol_aux = W_sol_aux + W_sol_aux_m End If End Select End If '---------------------------------------------------------------------------------------------------------------------------------- '---------------------------------------------------------------------------------------------------------------------------------- Q_dot_N = TOSG(Dr난방.보일러정격출력) ' Worksheets("난방기기").Range("난방기기정격출력1").Offset(0, i_count_boiler - 1) If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) t_w_100 = 0 Else t_w_100 = Q_w_outg_i / (Q_dot_N * d_Nutz_mth) '(3.2.9-61) Q_dot_d_in = Q_h_outg_i / (d_h_rB * (t_h_rL_T - t_w_100)) '(3.2.7-69) 난방 또는 난방 및 급탕 ' 우선 미적용 Q_dot_d_in = sigma_Q_h_outg / (t_Betrieb_K - t_W_100) * d_Nutz_mth '(3.2.7-70) 난방, 급탕 및 공조 End If Select Case Dr난방.운전방식.Trim ' Worksheets("난방기기").Range("난방기기운전방식1").Offset(0, i_count_boiler - 1) Case "단독가동" '단독가동" beta_h = Q_dot_d_in / Q_dot_N '(3.2.7-64) : 단일보일러 시설 Case "동시가동" ' 동시가동" beta_h = TOSG(Q_dot_d_in / (Q_dot_N * TOSG(Dr난방.보일러대수))) '(3.2.7-64) : 다수보일러 동시가동 Case "순차가동" '순차가동" For i_count_beta = 1 To CInt(TOSG(Dr난방.보일러대수)) If Q_dot_d_in <= (Q_dot_N * i_count_beta) Then beta_h = (Q_dot_d_in - Q_dot_N * (i_count_beta - 1)) / Q_dot_N * i_count_beta '다수보일러 대수제어 n_beta = i_count_beta - 1 Exit For End If Next End Select '------------------------------------------------------------------------------------ ' 보일러 가동 손실의 경우 국내 데이타 미비로 정격효율을 부분부하효율로 적용 추후 검토 필요 'eta_k_100 = (a + b * Ln(Q_dot_N)) / 100 '(3.2.7-83) 일반보일러 'eta_k_pl = (c + d * Ln(Q_dot_N)) / 100 '(3.2.7-84) 일반보일러 'eta_k_100 = (a + b * Ln(Q_dot_N)) / 100 '(3.2.7-85) 콘덴싱보일러 'eta_k_pl = (c + d * Ln(Q_dot_N)) / 105 '(3.2.7-86) 콘덴싱보일러 'q_B_70 = (E * (Q_dot_N ^ F)) / 100 '(3.2.7-64) 'q_B_theta = q_B_70 * (theta_HK_m_beta_h_g - theta_i) / (70 - 20) '(3.2.7-72) 'Q_dot_B_h = q_B_theta * (Q_dot_N / eta_k_100) * f_Hs_Hi '(3.2.7-71) 정지 대기모드 'beta_h_g = (Q_h_b + Q_h_ce + Q_h_d + Q_h_s) / (Q_dot_h_max * t_h) '(3.2.7-10) 'theta_VL_m_beta_h_g = (theta_VA - theta_i_h_soll) * beta_h_g ^ (1 / n) + theta_i_h_soll '(3.2.7.13) 'theta_RL_m_beta_h_g = (theta_RA - theta_i_h_soll) * beta_h_g ^ (1 / n) + theta_i_h_soll '(3.2.7.-14) 'eta_k_pl_Betrieb = eta_k_pl + H * (theta_g_test_pl - theta_HK_m_beta_h_g) '(3.2.7-76) 'eta_k_100_Betrieb = eta_k_100 + G * (theta_g_test100 - theta_HK_m_beta_h_g) '(3.2.7-75) 'Q_V_g_100 = (f_Hs_Hi - eta_k_100_Betrieb) / eta_k_100_Betrieb * Q_dot_N '(3.2.7-74) 'Q_V_g_pl = (f_Hs_Hi - eta_k_pl_Betrieb) / eta_k_pl_Betrieb * beta_k_pl * Q_dot_N '(3.2.7-73) '-- ------- ----- --- --- --- -- eta_k_100 = TOSG(TOSG(Dr난방.정격보일러효율) * age_heating / 100) ' Worksheets("난방기기").Range("난방기기정격효율1").Offset(0, i_count_boiler - 1) / 100 eta_k_pl = eta_k_100 f = -0.4 If Dr난방.열생산기기방식 = "보일러" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then Select Case Dr난방.보일러방식.Trim ' Worksheets("난방기기").Range("보일러방식1").Offset(0, i_count_boiler - 1) Case "가스보일러" '가스보일러" e = 8.5 f = -0.4 Case "기름보일러" '기름보일러" e = 8.5 f = -0.4 Case "저온가스보일러" '저온가스보일러" e = 4.5 f = -0.4 Case "저온기름보일러" '저온기름보일러" e = 4.25 Case "콘덴싱보일러" '콘덴싱보일러" e = 4 End Select q_B_70 = TOSG((e * (Q_dot_N ^ f)) / 100) Else q_B_70 = 1 End If q_B_theta = q_B_70 '원래는 =q_B_70 * (theta_HK_m_beta_h_g - theta_i) / (70 - 20) 이지만 q_B_theta 와 q_B_70 이 같은 것으로 적용 추후검토 'Select Case Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_boiler - 1) 'Case "난방유" 'f_Hs_Hi = 1.06 'Case "천연가스" 'f_Hs_Hi = 1.11 'Case "액화가스" 'f_Hs_Hi = 1.09 'Case "석탄" 'f_Hs_Hi = 1.04 'Case "갈탄" 'f_Hs_Hi = 1.07 'Case "나무" 'f_Hs_Hi = 1.08 'End Select f_Hs_Hi = 1 ' 국내는 총발열량을 기준으로 입력함으로 우선 1로 설정, 추후 검토 Q_dot_B_h = q_B_theta * (Q_dot_N / eta_k_100) * f_Hs_Hi '(3.2.7-71) Q_V_g_100 = (f_Hs_Hi - eta_k_100) / eta_k_100 * Q_dot_N Q_V_g_pl = (f_Hs_Hi - eta_k_pl) / eta_k_pl * beta_k_pl * Q_dot_N '------------------------------------------------------------------------------------------------------ If beta_h > beta_k_pl Then Q_h_g_v_i = ((beta_h - beta_k_pl) / (1 - beta_k_pl) * (Q_V_g_100 - Q_V_g_pl) + Q_V_g_pl) * (t_h_rL_T - t_w_100) Q_h_g_v_i = Q_h_g_v_i + ((Q_V_g_100 - Q_V_g_pl) + Q_V_g_pl) * (t_h_rL_T - t_w_100) * n_beta Else '======================================================================================== 2010.2.21 수정 If beta_h = 0 Then Q_h_g_v_i = 0 Else Q_h_g_v_i = ((beta_h / beta_k_pl) * (Q_V_g_pl - Q_dot_B_h) + Q_dot_B_h) * (t_h_rL_T - t_w_100) End If '======================================================================================== 2010.2.21 수정 End If Q_h_g = Q_h_g + Q_h_g_v_i * d_h_rB '(3.2.7-66) Q_h_g_i = Q_h_g_v_i * d_h_rB Else If Dr난방.열생산기기방식 = "지역난방" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "지역난방" Then If Dr난방.지역난방방식 = "중온수" Then ' Worksheets("난방기기").Range("지역난방온수방식1").Offset(0, i_count_boiler - 1) = "중온수" Then D_DS = 0.6 theta_prim_DS = 105 'MsgBox("난방기기 단열등급에 등급2/3 등급3/4 등급 4/5 추가해야함") Select Case Dr난방.단열등급.Trim ' Dr난방.단열등급 Case "기본단열" '기본단열" '원래는 등급1/2 이지만 국내에서는 법적단열로 사용 B_DS = 4.9 Case "등급2/3" '등급2/3" B_DS = 4.4 Case "등급3/4" '등급3/4" B_DS = 4 Case "등급4/5" '등급4/5" B_DS = 3.5 End Select End If 'MsgBox("난방기기 지역난방방식에 고온수 0002 추가해야함") --추가는 했으나 엑셀에서는 중온수고정이다 그래서 하위 루틴은 실행되면안된다 If Dr난방.지역난방방식 = "고온수" Then 'Worksheets("난방기기").Range("지역난방온수방식1").Offset(0, i_count_boiler - 1) = "고온수" Then ' MsgBox("난방기기의 지역난방방식은 중온수 고정입니다.", MsgBoxStyle.Information, "확인") D_DS = 0.4 theta_prim_DS = 150 Select Case Dr난방.단열등급.Trim Case "기본단열" '기본단열" '원래는 등급1/2 이지만 국내에서는 법적단열로 사용 B_DS = 4.3 Case "등급2/3" '등급2/3" B_DS = 3.9 Case "등급3/4" '등급3/4" B_DS = 3.5 Case "등급4/5" '등급4/5" B_DS = 3.1 End Select End If theta_DS = D_DS * theta_prim_DS + (1 - D_DS) * 55 ' theta_sek_DS는 55도로 설정 (3.2.7-112) Psi_DS = TOSG(Dr난방.열교환기정격출력) ' .Worksheets("난방기기").Range("난방기기정격출력1").Offset(1, i_count_boiler - 1) H_DS = TOSG(B_DS * Psi_DS ^ (1 / 3)) Q_h_g = Q_h_g + H_DS * (theta_DS - theta_i) use_DH = use_DH + H_DS * (theta_DS - theta_i) End If End If ' 전기보조에너지 Q_h_d_aux 산출 관련 P_Pump = TOSG(Dr난방.펌프동력) ' Worksheets("난방기기").Range("난방펌프제어유형1").Offset(1, i_count_boiler - 1) Select Case Dr난방.펌프제어유형.Trim ' Worksheets("난방기기").Range("난방펌프제어유형1").Offset(0, i_count_boiler - 1) Case "비제어" '비제어" c_p1 = 0.25 c_p2 = 0.75 Case "정압" '정압" c_p1 = 0.75 c_p2 = 0.25 Case "변압" '변압" c_p1 = 0.9 c_p2 = 0.1 End Select If beta_h_d = 0 Then Q_h_d_aux_i = 0 Else Q_h_d_aux_i = P_Pump / 1000 * beta_h_d * t_h * (c_p1 + c_p2 / beta_h_d) '(3.2.7-39) End If Select Case Dr난방.펌프교정계수.Trim ' Worksheets("난방기기").Range("난방펌프교정계수1").Offset(0, i_count_boiler - 1) Case "정상가동" '정상가동" f_P_A = 1 Case "감소가동" '감소가동" f_P_A = 0.6 Case "가동정지" '" f_P_A = 0 End Select Q_h_d_aux = TOSG(Q_h_d_aux + Q_h_d_aux_i * (1.03 * t_h_rL + f_P_A * (t_h - t_h_rL)) / t_h) '(3.2.7-40) If Dr난방.축열탱크방식 = "축열탱크없음" Then P_Pump = 0 ' Dr난방.Worksheets("난방기기").Range("축열펌프정격전력1").Offset(0, i_count_boiler - 1) Else P_Pump = TOSG(Dr난방.펌프정격전력) ' Dr난방.Worksheets("난방기기").Range("축열펌프정격전력1").Offset(0, i_count_boiler - 1) '=================================================================2010.11.04 위치 수정 If Dr난방.열생산기기방식 = "히트펌프" Then If Dr난방.운전방식.Trim = "동시가동" Then Q_dot_h_max = TOSG(Dr난방.히트난방용량) * TOSG(Dr난방.보일러대수) Else Q_dot_h_max = TOSG(Dr난방.히트난방용량) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1) End If End If beta_h_s = (Q_h_b + Q_h_ce + Q_h_d) / (Q_dot_h_max * t_h) '(3.2.7-9) If beta_h_s > 1 Then beta_h_s = 1 t_P = beta_h_s * 24 * d_op_max_mth '(3.2.7-44) Q_h_s_aux = Q_h_s_aux + P_Pump * t_P / 1000 '(3.2.7-44) '=================================================================2010.11.04 위치 수정 End If If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then P_aux_SB = 0.02 Select Case Dr난방.보일러방식.Trim ' Worksheets("난방기기").Range("보일러방식1").Offset(0, i_count_boiler - 1) Case "가스보일러" '가스보일러" P_aux_100 = TOSG((0.148 * Q_dot_N + 40) / 1000) P_aux_pl = TOSG((0.148 * Q_dot_N + 40) / 1000) Case "기름보일러" '기름보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) P_aux_pl = TOSG(0.015 * Q_dot_N ^ 0.48) Case "저온가스보일러" '저온가스보일러" P_aux_100 = TOSG((0.148 * Q_dot_N + 40) / 1000) P_aux_pl = TOSG((0.148 * Q_dot_N + 40) / 1000) Case "저온기름보일러" '저온기름보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) P_aux_pl = TOSG(0.015 * Q_dot_N ^ 0.48) Case "콘덴싱보일러" '콘덴싱보일러" P_aux_100 = TOSG(0.045 * Q_dot_N ^ 0.48) P_aux_pl = TOSG(0.015 * Q_dot_N ^ 0.48) End Select If beta_h > beta_k_pl Then P_h_g_aux = (beta_h - beta_k_pl) / (1 - beta_k_pl) * (P_aux_100 - P_aux_pl) + P_aux_pl '(3.2.7-82) Else P_h_g_aux = (beta_h / beta_k_pl) * (P_aux_pl - P_aux_SB) + P_aux_SB '(3.2.7-81) End If If d_Nutz_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) t_w_100 = 0 Else t_w_100 = Q_w_outg / (Q_dot_N * d_Nutz_mth) End If Q_h_g_aux = Q_h_g_aux + P_h_g_aux * (t_h_rL - t_w_100 * d_op_max_mth * d_Nutz_a / 365) + P_aux_SB * (24 * d_op_max_mth - t_h_rL) '(3.2.7-80) End If If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then Select Case Dr난방.사용연료.Trim ' Worksheets("난방기기").Range("난방기기사용연료1").Offset(0, i_count_boiler - 1) Case "난방유" '난방유" use_Oil = use_Oil + Q_h_outg_i + Q_h_g_i Case "천연가스" '천연가스" use_LNG = use_LNG + Q_h_outg_i + Q_h_g_i Case "액화가스" '액화가스" use_LPG = use_LPG + Q_h_outg_i + Q_h_g_i End Select Else Select Case Dr난방.열생산기기방식.Trim 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) '====================================================================2010.2.21 수정 Case "지역난방" '지역난방" use_DH = use_DH + Q_h_outg_i Case "전기보일러" '전기보일러" use_Elec = use_Elec + Q_h_outg_i + (Q_h_outg_i * 0.09) '2011.03.08 전기보일러 생산손실을 내부 생산식 저장으로 설정 '====================================================================2010.2.21 수정 '====================================================================2010.03.14 추가 Case "히트펌프" Select Case Dr난방.히트연료 ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(0, i_count_boiler - 1) Case "전기" use_Elec = use_Elec + Q_h_outg_i Case "천연가스" use_LNG = use_LNG + Q_h_outg_i Case "액화가스" use_LPG = use_LPG + Q_h_outg_i End Select '====================================================================2010.03.14 추가 End Select End If End If Next '//에너지소요량 - 에너지소요량분석 - 난방에너지소요량 Q_h_f = Q_h_f + Q_h_outg + Q_h_g '- Q_h_reg '(3.2.7-4)신재생에너지는 추후 추가 '===================2010.04.17 수정 'DSETR.TReqUse.Rows(CEnum.ResultRow.난방에너지소요량)(Mon) = Q_h_f 'Sheets("계산결과").Cells(39, 7 + i_count_month) = Q_h_f Result.E소요량(i_count_month).난방 = Q_h_f ': 난방 전기 보조에너지 연결 For Each dr존 As DS.tbl_zoneRow In DSET.tbl_zone.Select("냉난방열공급시스템<>'0' and code<>'0'", "code") 'If dr존.열생산난방생산기기 <> "0" Or dr존.냉난방열공급시스템 <> "0" Then 'dr존.냉난방열공급시스템 <> "" Then Dim Dr프로필 As DS.tbl_profileRow = CType(DSET.tbl_profile.Select("code='" & dr존.프로필 & "' and code <> '0'")(0), DS.tbl_profileRow) If i_count_month = 0 Then d_op_mth = 0 Else d_op_mth = CInt(Dr프로필("day" & Format(i_count_month, "00"))) End If For Each Dr공급 As DS.tbl_kongkubRow In DSET.tbl_kongkub.Select("code='" & dr존.냉난방열공급시스템 & "' and code <> '0'", "code") '===================================================================================2010.2.21 수정 t_h = CInt(TOSG(Result.최대부하.Item(dr존.code).일일난방최대가동시간) * d_op_mth) f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22) If d_op_mth = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) d_h_rB = 0 Else d_h_rB = TOSG(d_op_mth * ((365 - f_L_WA * (365 - d_Nutz_a)) / 365) * (t_h / (d_op_mth * 24))) '(3.2.7-21) End If t_h_op_d = CInt(TOSG(Result.최대부하.Item(dr존.code).일일난방최대가동시간)) f_L_NA = 1 - (theta_NA_Grenz - theta_e) / (theta_NA_Grenz - theta_e_min) '(3.2.7-20) t_h_rL_T = 24 - f_L_NA * (24 - t_h_op_d) '(3.2.7-19) t_h_rL = t_h_rL_T * d_h_rB '(3.2.7-23) P_C = TOSG(Dr공급.제어기의정격전력) ' Worksheets("난방공급시스템").Range("난방공급제어전력1").Offset(0, i_count_ce - 1) P_V = TOSG(Dr공급.팬송풍기정격전력) 'Worksheets("난방공급시스템").Range("난방공급제어전력1").Offset(1, i_count_ce - 1) P_P = TOSG(Dr공급.펌프정격전력) 'Worksheets("난방공급시스템").Range("난방공급제어전력1").Offset(2, i_count_ce - 1) n_V = TOSG(Dr공급.팬송풍기수) ' Worksheets("난방공급시스템").Range("난방공급팬1").Offset(0, i_count_ce - 1) n_P = TOSG(Dr공급.추가펌프수) 'Worksheets("난방공급시스템").Range("난방공급팬1").Offset(1, i_count_ce - 1) Q_V_P = ((P_V * n_V + P_P * n_P) * t_h_rL) / 1000 '(3.2.7-34) Q_c = P_C * d_op_mth * 24 / 1000 '(3.2.7-33) Q_h_ce_aux = Q_h_ce_aux + (Q_c + Q_V_P) * TOSG(dr존.냉난방열공급시스템수) * TOSG(dr존.입력존의수) ' Worksheets("입력존").Range("입력난방공급기기1").Offset(1, i_count_zone - 1) '(3.2.7-32) '////2012.07.08 입력존의 수 추가 Next 'End If Next Q_h_aux = Q_h_ce_aux + Q_h_d_aux + Q_h_s_aux + Q_h_g_aux + W_sol_aux '(3.2.7-5) 난방보조에너지소요량 'DSETR.TReqUse.Rows(CEnum.ResultRow.난방보조에너지소요량)(Mon) = Q_h_aux 'Sheets("계산결과").Cells(41, 7 + i_count_month) = Q_h_aux Result.E소요량(i_count_month).난방보조 = Q_h_aux use_Elec = use_Elec + Q_h_ce_aux + Q_h_d_aux + Q_h_s_aux + Q_h_g_aux + W_sol_aux '//연간 Co2 배출량 - 난방에너지소요량 Result.일차E소요량(i_count_month).난방등유 = use_Oil Result.일차E소요량(i_count_month).난방LNG = use_LNG Result.일차E소요량(i_count_month).난방LPG = use_LPG Result.일차E소요량(i_count_month).난방지역 = use_DH Result.일차E소요량(i_count_month).난방전력 = use_Elec End Sub End Class