1987 lines
120 KiB
VB.net
1987 lines
120 KiB
VB.net
Public Class CHeatingOD
|
|
|
|
Dim T As String = "난방기기"
|
|
|
|
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
|
|
|
|
'==================================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 추가
|
|
|
|
'==================================2013.08.18 추가
|
|
Dim system_count As Decimal
|
|
|
|
Dim a_Q_w_b As Decimal = 0
|
|
Dim a_d_op_max_mth As Decimal = 0
|
|
Dim a_t_h As Decimal = 0
|
|
|
|
'//i_ce As Integer 제거함 사용안됨
|
|
Dim i_count_beta As Integer
|
|
Dim Q_h_f As Decimal, Q_h_outg As Decimal, Q_h_g 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
|
|
Dim beta_k_pl As Decimal, beta_k_100 As Decimal, n As Decimal, t_h_op_d As Integer, n_beta As Integer
|
|
Dim theta_i_h_soll As Decimal, theta_VA As Decimal, theta_RA As Decimal
|
|
Dim e As Decimal, f 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_pl As Decimal, P_aux_SB 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_pl As Decimal
|
|
Dim f_L_NA As Decimal, t_h_rL_T As Decimal, t_h_rL As Decimal
|
|
Dim Q_dot_d_in As Decimal, Q_dot_B_h As Decimal, Q_h_g_i As Decimal
|
|
Dim P_Pump As Decimal, f_P_A 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
|
|
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_dot_HP_heating As Decimal, L_HP_heating As Decimal '=======================2010.03.14 추가
|
|
Dim U_i As Decimal
|
|
|
|
Dim a_Q_h_b_i As Decimal = 0
|
|
Dim a_Q_dot_h_max As Decimal = 0
|
|
Dim a_t_h_max As Decimal = 0
|
|
Dim a_t_h_op_d As Decimal = 0
|
|
Dim a_d_op_mth As Decimal = 0
|
|
Dim priod_value As Single = 0
|
|
Dim age As Decimal = 1 '//준공연도에 의한 경년변화값
|
|
Dim age_heating As Decimal = 1
|
|
|
|
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, 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
|
|
|
|
|
|
'==================================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 추가
|
|
|
|
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
|
|
t_Nutz_d = 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
|
|
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
|
|
L_i = 0
|
|
|
|
'====================================2011.07.21 추가
|
|
Q_w_CHP = 0
|
|
Q_w_f_CHP = 0
|
|
'====================================2011.07.21 추가
|
|
|
|
'====================================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 CRenewableOD : Calc_태양.Calc_PhotovoltaicSystem_EN(i_count_month, d_mth)
|
|
|
|
|
|
Dim 보일러정격출력합 As Decimal = 0
|
|
|
|
For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0'", "code")
|
|
If Dr난방.난방급탕구분 = "급탕용" OrElse Dr난방.난방급탕구분 = "난방급탕용" Then
|
|
If IsNumeric(Dr난방.보일러정격출력) Then 보일러정격출력합 += TOSG(Dr난방.보일러정격출력) * TOSG(Dr난방.보일러대수)
|
|
End If
|
|
Next
|
|
|
|
For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0'", "code")
|
|
'=====================2010.2.21 수정
|
|
d_op_max_mth = 0
|
|
'=====================2010.2.21 수정
|
|
|
|
If Dr난방.난방급탕구분 = "급탕용" OrElse Dr난방.난방급탕구분 = "난방급탕용" Then 'DSET1.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
|
|
' Dim Dr존 As DS.tbl_zoneRow '//여기존 할당부분은엑셀하고 다시 비교해야할듯 하다 이존은 아래쪽에 프로시져 넘길떄 사용한다.
|
|
|
|
'//현재난방기기를 급탕생산기기로 사용하는 존을 가져와서 누적시킴
|
|
For Each Dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'", "code")
|
|
'MsgBox(Mon & "/" & Dr존.code)
|
|
|
|
Dim Drow결과() As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & Dr존.code & "'"), DSR.월별에너지분석Row())
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("Zone='" & Dr존.code & "'"), DSR.최대냉난방부하Row())
|
|
Q_w_b = Q_w_b + TOSG(T, Drow결과(0).급탕요구량) * TOSG(Dr난방.보일러정격출력) * TOSG(Dr난방.보일러대수) / (보일러정격출력합) ' Sheets("" & i_count_month & "").Cells(15, 7 + i_count_zone) '//급탕에너지요구량
|
|
|
|
'===================================================================================2010.2.21 수정
|
|
Dim Dr프로필() As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'", "code"), DS.tbl_profile_odRow())
|
|
If Dr프로필.GetUpperBound(0) = -1 Then
|
|
Log.AppendLine(Dr존.설명 & "존의 프로필코드(" & Dr존.프로필 & ") 가 존재하지않습니다")
|
|
'MsgBox(Dr존.설명 & "존의 프로필코드(" & Dr존.프로필 & ") 가 존재하지않습니다")
|
|
Else
|
|
d_op_mth = CInt(TOSG(T, Dr프로필(0)("day" & Format(i_count_month, "00")))) ' Worksheets("설정조건").Range("월간사용일수1").Offset(i_count_month, i_count_profile)
|
|
End If
|
|
|
|
If t_h < Result1o.최대부하.Item(Dr존.code).일일난방최대가동시간 * d_op_mth Then
|
|
t_h = Result1o.최대부하.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 수정
|
|
|
|
If Dr난방.열생산기기방식 = "지역난방" Then '//입력치
|
|
L_i = TOSG(T, Dr존.면적) * 0.168 * 0.255 * 2 '2018.01.15 2배정도 배관길이를 설정
|
|
End If
|
|
|
|
Next
|
|
|
|
'====================================2010.2.21 수정
|
|
d_Nutz_mth = d_op_max_mth
|
|
'====================================2010.2.21 수정
|
|
|
|
|
|
|
|
|
|
|
|
'=================================================2010. 02. 11 수정
|
|
|
|
':중앙순환시스템
|
|
'Q_w_d_i = TOSG(T, 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
|
|
|
|
Q_w_d = Q_w_d + Q_w_d_i '(3.2.9-12)
|
|
|
|
|
|
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 CRenewableOD
|
|
If Dr난방.연결된시스템.Trim <> "" AndAlso Dr난방.연결된시스템 <> "0" AndAlso Dr난방.연결된시스템 <> "(없음)" Then 'Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then
|
|
Dim dr신재생 As DS.tbl_newRow = CType(DSET1.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
|
|
CalcO.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신재생, 3, 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 '============================2010.04.17
|
|
'Case "천연가스" '천연가스"
|
|
CRenew.Calc_CogenerationSystemEN(dr신재생, 3, 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_h_f = Q_h_f + Q_h_f_CHP '============================2010.04.17
|
|
' Case "액화가스" '액화가스"
|
|
' CRenew.Calc_CogenerationSystemEN(dr신재생, 3, 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_h_f = Q_h_f + Q_h_f_CHP '============================2010.04.17
|
|
' Case Else
|
|
' MsgBox("신재생에너지의 가동연료를 확인할 수 없습니다", MsgBoxStyle.Critical, dr신재생.가동연료)
|
|
'End Select
|
|
'=======================================================================2011.007.19 추가
|
|
|
|
End Select
|
|
'End If
|
|
End If
|
|
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
Q_dot_N = TOSG(T, IIf(Dr난방.보일러정격출력 = "", 0, Dr난방.보일러정격출력)) * TOSG(Dr난방.보일러대수) 'Worksheets("난방기기").Range("난방기기정격출력1").Offset(0, i_count_boiler - 1)
|
|
eta_k_100 = TOSG(T, IIf(Dr난방.정격보일러효율 = "", 0, TOSG(T, 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
|
|
|
|
Q_w_g_100 = (f_Hs_Hi - eta_k_100) / eta_k_100 * Q_w_outg_i / d_Nutz_mth '(3.2.9-58)
|
|
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
|
|
Case "천연가스", "액화가스"
|
|
q_B_70 = TOSG(T, (8.5 * Q_dot_N ^ (-0.4)) / 100)
|
|
|
|
Case "난방유"
|
|
q_B_70 = TOSG(T, (8.5 * Q_dot_N ^ (-0.4)) / 100)
|
|
|
|
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
|
|
Q_w_g = Q_w_g + Q_w_g_100 * d_Nutz_mth
|
|
Q_w_g_i = Q_w_g_100 * d_Nutz_mth
|
|
End If
|
|
|
|
|
|
|
|
': 급탕 전기 보조에너지 시작
|
|
|
|
Q_w_ce_aux = 0
|
|
|
|
P_Pump_w = TOSG(T, Dr난방.펌프동력) * 1000 ' Worksheets("난방기기").Range("급탕펌프제어유형1").Offset(1, i_count_boiler - 1)
|
|
c_p1 = 0.25
|
|
c_p2 = 0.94
|
|
|
|
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)
|
|
|
|
If Dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then
|
|
Select Case Dr난방.사용연료.Trim
|
|
Case "천연가스", "액화가스"
|
|
P_aux_100 = TOSG(T, (0.148 * Q_dot_N + 40) / 1000) '(3.2.9-77)
|
|
|
|
Case "난방유"
|
|
P_aux_100 = TOSG(T, 0.045 * Q_dot_N ^ 0.48) '(3.2.9-78)
|
|
|
|
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 + Q_w_g_i
|
|
|
|
Case "전기보일러" '전기보일러"
|
|
use_Elec = use_Elec + Q_w_outg_i + Q_w_g_i + (Q_w_outg_i * 0.09)
|
|
|
|
'====================================================================================2010.03.14 추가
|
|
Case "히트펌프"
|
|
'MsgBox("히트펌프를 급탕에 사용할 경우 건기연에 문의하여 주시기 바랍니다.", vbOKOnly, "건물 에너지 평가 프로그램")
|
|
'======================================================================================================================================================2010.10.05 추가
|
|
Q_dot_HP_waterheating = TOSG(T, Dr난방.보일러정격출력) * TOSG(T, Dr난방.보일러대수) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1)
|
|
|
|
COP_HP_7 = TOSG(T, Dr난방.정격보일러COP) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(2, i_count_boiler - 1)
|
|
|
|
COP_HP_10 = COP_HP_7 * 0.55
|
|
L_HP_waterheating = 10 'TOSG(T, 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(T, COP_HP_total * ((1 - 0.86) / 7 * theta_e + 0.86))
|
|
Else
|
|
COP_HP_total = TOSG(T, 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(T, COP_HP_total * (1 - L_HP_waterheating * 0.002))
|
|
Else
|
|
If Q_dot_HP_waterheating <= 100 Then
|
|
COP_HP_total = TOSG(T, COP_HP_total * (1 - L_HP_waterheating * 0.0009))
|
|
Else
|
|
COP_HP_total = TOSG(T, COP_HP_total * (1 - L_HP_waterheating * 0.0014))
|
|
End If
|
|
End If
|
|
|
|
If t_h = 0 Then
|
|
Q_w_outg_i = 0
|
|
Else
|
|
If Q_w_outg_i / (Q_dot_HP_waterheating * t_h) > 1 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
|
|
End If
|
|
|
|
'======================================================================================================================================================2010.10.05 추가
|
|
|
|
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_ce_aux + Q_w_d_aux + Q_w_s_aux + Q_w_g_aux + W_sol_aux '급탕보조에너지소요량 (3.2.9-7)
|
|
|
|
End If
|
|
|
|
Next
|
|
|
|
If L_i > 0 Then
|
|
Q_w_outg = Q_w_outg + TOSG(T, 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도 '==========2017.12.28 추가
|
|
use_DH = Q_w_outg
|
|
|
|
End If
|
|
|
|
Q_w_f = Q_w_outg + Q_w_g ' - Q_w_reg '(3.2.9-5) 급탕에너지소요량
|
|
|
|
|
|
Result1o.E소요량(i_count_month).급탕 = Q_w_f
|
|
Result1o.E소요량(i_count_month).급탕보조 = Q_w_aux
|
|
|
|
'//열원별에너지소요량 - 급탕에너지소요량
|
|
Result1o.일차E소요량(i_count_month).급탕등유 = use_Oil
|
|
|
|
Result1o.일차E소요량(i_count_month).급탕LNG = use_LNG
|
|
Result1o.일차E소요량(i_count_month).급탕LPG = use_LPG
|
|
Result1o.일차E소요량(i_count_month).급탕지역 = use_DH
|
|
Result1o.일차E소요량(i_count_month).급탕전력 = use_Elec
|
|
|
|
'log.debug(String.format("####### => (i_count_month=%s,Q_w_f=%s,Q_w_aux=%s,use_Oil=%s,use_LNG=%s,use_LPG=%s,use_DH=%s,use_Elec=%s)",i_count_month,Q_w_f,Q_w_aux,use_Oil,use_LNG,use_LPG,use_DH,use_Elec));
|
|
' Console.WriteLine(String.Format("####### => (i_count_month={0},Q_w_f={1},Q_w_aux={2},use_Oil={3},use_LNG={4},use_LPG={5},use_DH={6},use_Elec={7})", i_count_month, Q_w_f, Q_w_aux, use_Oil, use_LNG, use_LPG, use_DH, use_Elec))
|
|
End Sub
|
|
|
|
|
|
|
|
Public Overridable Sub Calc_HeatingSystem(ByVal i_count_month As Integer, ByVal theta_e As Decimal)
|
|
|
|
' 'pLog.Add(String.Format("Enter >> Calc_HeatingSystem i_count_month={0},theta_e={1}", i_count_month, theta_e))
|
|
|
|
d_op_max_mth = 0
|
|
'==================================2010.2.21 수정
|
|
|
|
|
|
'For Each DRpriod As DS.tbl_DescRow In DSET1.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
|
|
|
|
'==================================2013.08.18 추가
|
|
|
|
'Dim system_count_check As Integer '체크여부 리턴값 확인 필요
|
|
'Dim header_check As Integer '체크여부 리턴값 확인 필요
|
|
|
|
U_i = 0D
|
|
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 추가
|
|
|
|
'======================2013.01.13 추가
|
|
system_count = 1
|
|
'======================2013.01.13 추가
|
|
|
|
'//각달별로데이터를 초기화(131020-arin)
|
|
Q_h_aux = 0
|
|
use_Elec = 0
|
|
use_Oil = 0
|
|
use_LNG = 0
|
|
use_LPG = 0
|
|
use_DH = 0
|
|
use_Elec = 0
|
|
|
|
a_Q_h_b_i = 0
|
|
a_Q_dot_h_max = 0
|
|
a_t_h_max = 0
|
|
a_t_h_op_d = 0
|
|
a_d_op_mth = 0
|
|
priod_value = 0
|
|
age = 1 '//준공연도에 의한 경년변화값
|
|
age_heating = 1
|
|
|
|
|
|
|
|
Dim Mon As String = "M" & Format(i_count_month, "00")
|
|
|
|
'//130822
|
|
Dim 보일러정격출력합 As Decimal = 0 '//acc
|
|
Dim 지역난방정격출력합 As Decimal = 0 '=== 2017.12.28 추가
|
|
|
|
For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0' and 헤더적용=true", "code")
|
|
|
|
If Dr난방.난방급탕구분 = "난방용" OrElse Dr난방.난방급탕구분 = "난방급탕용" Then
|
|
If IsNumeric(Dr난방.보일러정격출력) Then 보일러정격출력합 += TOSG(Dr난방.보일러정격출력) * TOSG(Dr난방.보일러대수)
|
|
Else
|
|
Continue For
|
|
End If
|
|
Next '// 2018.08.01 수정(next 위치 이동)
|
|
|
|
|
|
''=======================================================================================================2014.02.24 수정
|
|
'Select Case Dr난방.열생산기기방식.Trim.ToUpper
|
|
' Case "보일러"
|
|
' 보일러정격출력합 += TOSG(Dr난방.보일러정격출력)
|
|
' Case "지역난방"
|
|
' 보일러정격출력합 += TOSG(Dr난방.열교환기정격출력)
|
|
' Case "히트펌프"
|
|
' 보일러정격출력합 += TOSG(Dr난방.히트난방용량)
|
|
' Case "전기보일러"
|
|
' 보일러정격출력합 += TOSG(Dr난방.보일러정격출력)
|
|
'End Select
|
|
''=======================================================================================================2014.02.24 수정
|
|
|
|
|
|
For Each DR존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'") ' For i_count_zone = 1 To DSET1.tbl_zone.Rows.Count
|
|
Dim 판단1 As Boolean = False
|
|
Dim 판단2 As Boolean = False
|
|
|
|
If Program = EProgram.친환경평가 Then
|
|
판단1 = True
|
|
Else
|
|
판단2 = True
|
|
End If
|
|
'If DR존.열생산난방생산기기 = Dr난방.code Then 판단1 = True
|
|
'If DR존.공조난방생산기기 = Dr난방.code Then 판단2 = True
|
|
|
|
If 판단1 And (DR존.냉난방방식 = "냉난방" OrElse DR존.냉난방방식 = "난방") Then
|
|
Dim Dr월에너지 As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("Zone='" & DR존.code & "'"), DSR.최대냉난방부하Row())
|
|
|
|
'system_count = IIf(Dr난방.개별기기적용 = "0", 1, TOSG(DR존.입력존의수)) '===========2013.08.18 추가 '// 2018.08.01 수정
|
|
If system_count = 0 Then system_count = 1
|
|
|
|
|
|
'If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then
|
|
' a_Q_h_b_i += TOSG(Dr월에너지.난방요구량열) / system_count '===========2012.08.18 수정
|
|
'Else
|
|
a_Q_h_b_i += (TOSG(T, Dr월에너지.난방요구량열) + TOSG(T, Dr월에너지.난방요구량공조)) / system_count '===========2012.08.18 수정 ' Sheets("" & i_count_month & "").Cells(7, 7 + i_count_zone)
|
|
'End If
|
|
'=========================================================================================================================================================2010.2.21 수정
|
|
a_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_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
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
|
|
'===================================================================================2010.2.21 수정
|
|
If t_h > t_h_max Then t_h_max = t_h
|
|
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)
|
|
|
|
'//acc
|
|
If d_op_max_mth > a_d_op_max_mth Then a_d_op_max_mth = d_op_max_mth
|
|
If t_h > a_t_h Then a_t_h = t_h
|
|
If t_h_max > a_t_h_max Then a_t_h_max = t_h_max
|
|
If t_h_op_d > a_t_h_op_d Then a_t_h_op_d = t_h_op_d
|
|
End If '//판단1
|
|
|
|
If DR존.냉난방공조 = "냉난방" OrElse DR존.냉난방공조 = "난방" OrElse ((DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예") Then ' 공조기 사용에 따른 난방에너지
|
|
'=========================================================================================================================================================2010.2.21 수정
|
|
'system_count = IIf(Dr난방.개별기기적용 = "0", 1, TOSG(DR존.입력존의수)) '//20130818 '//2018.08.01 수정
|
|
If system_count = 0 Then system_count = 1
|
|
|
|
If 판단2 Then
|
|
|
|
Dim 월에너지분석 As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & Mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
|
|
'If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then '// 2010.11.19 추가
|
|
' a_Q_h_b_i += TOSG(월에너지분석.난방요구량공조) / system_count '=========2013.08.18 수정
|
|
'Else
|
|
a_Q_h_b_i += (TOSG(T, 월에너지분석.공조요구량난방) + TOSG(월에너지분석.난방요구량공조)) / system_count '=========2013.08.18 수정 ' Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone)
|
|
'End If
|
|
|
|
'//
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & DR존.code & "'"), DSR.최대냉난방부하Row())
|
|
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
Q_dot_h_max = TOSG(Q_dot_h_max + TOSG(Drow최대(0).최대난방기기부하)) / system_count '=====2013.08.18 수정 ' 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
|
|
|
|
'//acc
|
|
If Q_dot_h_max > a_Q_dot_h_max Then a_Q_dot_h_max = Q_dot_h_max
|
|
If d_op_mth > a_d_op_mth Then a_d_op_mth = d_op_mth
|
|
If t_h > a_t_h Then a_t_h = t_h
|
|
If d_op_max_mth > a_d_op_max_mth Then a_d_op_max_mth = d_op_max_mth
|
|
If t_h_max > a_t_h_max Then a_t_h_max = t_h_max
|
|
If t_h_op_d > a_t_h_op_d Then a_t_h_op_d = t_h_op_d
|
|
End If
|
|
End If
|
|
Next
|
|
'Next '// 2018.08.01 삭제 수정(앞부분으로 이동)
|
|
|
|
|
|
For Each Dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0'", "code")
|
|
|
|
If Dr난방.난방급탕구분 = "난방용" OrElse Dr난방.난방급탕구분 = "난방급탕용" Then
|
|
'If IsNumeric(Dr난방.보일러정격출력) Then 보일러정격출력합 += Dr난방.보일러정격출력
|
|
Else
|
|
Continue For
|
|
End If
|
|
|
|
Dim 비율 As Decimal
|
|
If 보일러정격출력합 = 0 Then
|
|
비율 = 1
|
|
Else
|
|
|
|
'=======================================================================================================2014.02.24 수정
|
|
Select Case Dr난방.열생산기기방식.Trim.ToUpper
|
|
Case "보일러"
|
|
비율 = TOSG(T, Dr난방.보일러정격출력) * TOSG(T, Dr난방.보일러대수) / 보일러정격출력합
|
|
Case "지역난방"
|
|
Dr난방.열교환기정격출력 = Dr난방.보일러정격출력 '======2017.12.20 추가
|
|
비율 = TOSG(T, Dr난방.열교환기정격출력) * TOSG(T, Dr난방.보일러대수) / 보일러정격출력합
|
|
지역난방정격출력합 += TOSG(T, Dr난방.열교환기정격출력)
|
|
Case "히트펌프"
|
|
Dr난방.히트난방용량 = Dr난방.보일러정격출력 '======2017.12.20 추가
|
|
비율 = TOSG(T, Dr난방.보일러정격출력) * TOSG(T, Dr난방.보일러대수) / 보일러정격출력합
|
|
Case "전기보일러"
|
|
비율 = TOSG(T, Dr난방.보일러정격출력) * TOSG(T, Dr난방.보일러대수) / 보일러정격출력합
|
|
End Select
|
|
'=======================================================================================================2014.02.24 수정
|
|
|
|
End If
|
|
|
|
Calc_난방_개별기기미적용시(Dr난방, Mon, 비율, i_count_month, theta_e)
|
|
|
|
Next
|
|
|
|
|
|
|
|
|
|
|
|
''=================================================2017.12.28 추가 지역난방 배관손실 부분
|
|
|
|
For Each DR존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'")
|
|
|
|
If 지역난방정격출력합 > 0 Then
|
|
Q_h_outg = Q_h_outg + (0.35 * (theta_HK_m_beta_h_d - theta_e) * 0.168 * TOSG(DR존.면적) * t_h_rL) / 1000
|
|
use_DH = use_DH + (0.35 * (theta_HK_m_beta_h_d - theta_e) * 0.168 * TOSG(DR존.면적) * t_h_rL) / 1000
|
|
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 수정
|
|
|
|
'DSETR1.TReqUse.Rows(CEnum.ResultRow.난방에너지소요량)(Mon) = Q_h_f 'Sheets("계산결과").Cells(39, 7 + i_count_month) = Q_h_f
|
|
Result1o.E소요량(i_count_month).난방 = Q_h_f
|
|
|
|
': 난방 전기 보조에너지 연결
|
|
For Each dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code<>'0'", "code")
|
|
'If dr존.열생산난방생산기기 <> "0" Or dr존.냉난방열공급시스템 <> "0" Then 'dr존.냉난방열공급시스템 <> "" Then
|
|
|
|
system_count = TOSG(dr존.입력존의수) '===========2013.08.18 추가
|
|
|
|
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
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_danmalRow In DSET1.tbl_danmal.Select("code <> '0'", "code")
|
|
'===================================================================================2010.2.21 수정
|
|
t_h = CInt(TOSG(Result1o.최대부하.Item(dr존.code).일일난방최대가동시간) * d_op_mth)
|
|
If theta_WA_Grenz - theta_e_min = 0 Then '=============================================2014.03.07 추가
|
|
f_L_WA = 1
|
|
Else
|
|
f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22)
|
|
End If '=============================================2014.03.07 추가
|
|
|
|
|
|
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(Result1o.최대부하.Item(dr존.code).일일난방최대가동시간))
|
|
|
|
If theta_NA_Grenz - theta_e_min = 0 Then '=============================================2014.03.07 추가
|
|
f_L_NA = 1
|
|
Else
|
|
f_L_NA = 1 - (theta_NA_Grenz - theta_e) / (theta_NA_Grenz - theta_e_min) '(3.2.7-20)
|
|
End If '=============================================2014.03.07 추가
|
|
|
|
|
|
|
|
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 = 0 '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 = 0 ' 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 = 0 '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) * system_count ' 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) 난방보조에너지소요량
|
|
'DSETR1.TReqUse.Rows(CEnum.ResultRow.난방보조에너지소요량)(Mon) = Q_h_aux 'Sheets("계산결과").Cells(41, 7 + i_count_month) = Q_h_aux
|
|
Result1o.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 배출량 - 난방에너지소요량
|
|
Result1o.일차E소요량(i_count_month).난방등유 = use_Oil
|
|
Result1o.일차E소요량(i_count_month).난방LNG = use_LNG
|
|
Result1o.일차E소요량(i_count_month).난방LPG = use_LPG
|
|
Result1o.일차E소요량(i_count_month).난방지역 = use_DH
|
|
Result1o.일차E소요량(i_count_month).난방전력 = use_Elec
|
|
|
|
'pLog.Add(String.Format("q_h_aux={0},난방등유={1},LNG={2},LPG={3},지역={4},전력={5}", Q_h_aux, use_Oil, use_LNG, use_LPG, use_DH, use_Elec))
|
|
'Console.WriteLine(String.Format("####### => (i_count_month={0},Q_h_aux={1},use_Elec={2},use_Oil={3},use_LNG={4},use_LPG={5},use_DH={6},use_Elec={7})", i_count_month, Q_h_aux, use_Elec, use_Oil, use_LNG, use_LPG, use_DH, use_Elec))
|
|
End Sub
|
|
|
|
Private Sub Calc_난방_개별기기미적용시(dr난방 As DS.tbl_nanbangkikiRow, mon As String, 비율 As Decimal, i_count_month As Integer, theta_e As Decimal)
|
|
|
|
'pLog.Add(" >> Enter : Calc_난방_개별기기미적용시")
|
|
|
|
'//이 난방기기가 존전체내역에서 사용이되엇나?
|
|
If DSET1.tbl_zone.Select("code <> '0'").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 DSET1.tbl_zone.Select("code <> '0'") ' For i_count_zone = 1 To DSET1.tbl_zone.Rows.Count
|
|
|
|
'//지금 사용하는 존이 공조에의한것인지 아닌지를 판단
|
|
Dim 판단1 As Boolean = False
|
|
Dim 판단2 As Boolean = False
|
|
If Program = EProgram.친환경평가 Then
|
|
판단1 = True
|
|
Else
|
|
판단2 = True
|
|
End If
|
|
'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(DSETR1.월별에너지분석.Select("월='" & mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("Zone='" & DR존.code & "'"), DSR.최대냉난방부하Row())
|
|
|
|
system_count = 1 'IIf(dr난방.개별기기적용 = "0", 1, TOSG(DR존.입력존의수)) '===========2013.08.18 추가
|
|
|
|
'If dr난방.헤더적용 Then
|
|
' 'Q_h_b_i = a_Q_h_b_i
|
|
' 'Q_h_b_i *= 비율 '//130818
|
|
' 'Q_h_b = Q_h_b_i
|
|
' 'Q_dot_h_max = a_Q_dot_h_max
|
|
'Else
|
|
'If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then
|
|
' Q_h_b_i = TOSG(Dr월에너지.난방요구량열) / system_count '===========2012.08.18 수정
|
|
'Else
|
|
Q_h_b_i = (TOSG(T, Dr월에너지.난방요구량열) + TOSG(T, Dr월에너지.난방요구량공조)) / system_count '===========2012.08.18 수정 ' Sheets("" & i_count_month & "").Cells(7, 7 + i_count_zone)
|
|
'End If
|
|
'Q_h_b = Q_h_b + Q_h_b_i '======2017.12.20 수정
|
|
'=========================================================================================================================================================2010.2.21 수정
|
|
Q_dot_h_max = TOSG(Q_dot_h_max + TOSG(Drow최대(0).최대난방기기부하)) ' Worksheets("0").Range("최대난방부하1").Offset(0, i_count_zone - 1)
|
|
'End If
|
|
|
|
|
|
|
|
'===================================================================================2010.2.21 수정
|
|
'If dr난방.헤더적용 Then
|
|
' d_op_mth = a_d_op_mth
|
|
' t_h = a_t_h
|
|
' d_op_max_mth = a_d_op_max_mth
|
|
' t_h_max = a_t_h_max
|
|
' t_h_op_d = a_t_h_op_d
|
|
'Else
|
|
Dim DR프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
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
|
|
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)
|
|
'i_ce = 0
|
|
'End If
|
|
|
|
|
|
|
|
|
|
If Program = EProgram.친환경평가 Then
|
|
eta_L = 1
|
|
eta_C = 0.78
|
|
eta_B = (0.93 + 0.95) / 2
|
|
f_Radiant = 1
|
|
|
|
Else
|
|
eta_L = (0.93 + 0.95) / 2
|
|
eta_B = 1
|
|
eta_C = 0.8
|
|
f_Radiant = 1
|
|
|
|
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
|
|
|
|
|
|
|
|
'//아래 if 문이 모두 공급기기 데이터를 가지고 게산을 하고잇네요 이 부분을 전부 실행못하게 해야합니다.
|
|
'If DR존.냉난방열공급시스템 = "0" Then
|
|
' '//0일떄 특정 변수를 초기화(=0) 하려면 이곳에 입력하세요.
|
|
'Else
|
|
|
|
' Dim Dr공급 As DS.tbl_kongkubRow = CType(DSET1.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 수정
|
|
system_count = 1 'IIf(dr난방.개별기기적용 = "0", 1, TOSG(DR존.입력존의수)) '//20130818
|
|
If 판단2 Then
|
|
|
|
'If dr난방.헤더적용 Then
|
|
' Q_h_b_i = a_Q_h_b_i
|
|
' Q_h_b_i *= 비율 '//130818
|
|
' Q_h_b = Q_h_b_i '//Q_c_b + Q_c_b_i
|
|
|
|
'Else
|
|
Dim 월에너지분석 As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & mon & "' and 존='" & DR존.code & "'")(0), DSR.월별에너지분석Row)
|
|
'If (DR존.냉난방공조 = "환기" OrElse DR존.냉난방공조 = "냉방") And DR존.외기부하처리여부 = "예" Then '// 2010.11.19 추가
|
|
Q_h_b_i = (TOSG(T, 월에너지분석.난방요구량공조) + TOSG(T, 월에너지분석.공조요구량난방)) / system_count '=========2013.08.18 수정
|
|
'Else
|
|
' Q_h_b_i = TOSG(월에너지분석.공조요구량난방) / system_count '=========2013.08.18 수정 ' Sheets("" & i_count_month & "").Cells(19, 7 + i_count_zone)
|
|
'End If
|
|
' Q_h_b = Q_h_b + Q_h_b_i '=====2017.12.20 수정
|
|
'End If
|
|
'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
|
|
|
|
'If dr난방.헤더적용 Then
|
|
' Q_dot_h_max = a_Q_dot_h_max
|
|
' d_op_mth = a_d_op_mth
|
|
' t_h = a_t_h
|
|
' d_op_max_mth = a_d_op_max_mth
|
|
' t_h_max = a_t_h_max
|
|
' t_h_op_d = a_t_h_op_d
|
|
'Else
|
|
'//프로필
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & DR존.code & "'"), DSR.최대냉난방부하Row())
|
|
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
Q_dot_h_max = TOSG(Q_dot_h_max + TOSG(Drow최대(0).최대난방기기부하)) / system_count '=====2013.08.18 수정 ' 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)
|
|
If d_op_max_mth < d_op_mth Then d_op_max_mth = d_op_mth
|
|
If t_h > t_h_max Then t_h_max = t_h
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
End If
|
|
'=========================================================================================================================================================2010.2.21 수정
|
|
|
|
|
|
End If
|
|
'//공조 난방기기 완료 ㅋㅋ 끝
|
|
' End If
|
|
|
|
Next
|
|
|
|
'If dr난방.헤더적용 Then
|
|
' 'Q_h_b = a_Q_h_b_i * 비율
|
|
Q_h_b = Q_h_b_i * 비율 '2018.09.02 수정
|
|
'End If
|
|
|
|
|
|
|
|
|
|
|
|
'==================================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(T, dr난방.보일러정격출력) * TOSG(T, dr난방.보일러대수)
|
|
'Else
|
|
' Q_dot_h_max = TOSG(dr난방.히트난방용량) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1)
|
|
'End If
|
|
|
|
End If
|
|
|
|
If t_h_max = 0 Or Q_dot_h_max = 0 Then '======================================================================2014.043.07 추가
|
|
beta_h_d = 0
|
|
Else
|
|
beta_h_d = (Q_h_b + Q_h_ce) / (Q_dot_h_max * t_h_max) ' t_h 가 t_h_max 일 것으로 추정 추후 검토
|
|
End If '======================================================================2014.043.07 추가
|
|
|
|
|
|
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))
|
|
|
|
|
|
If theta_WA_Grenz - theta_e_min = 0 Then '==================================================================2014.03.07 추가
|
|
f_L_WA = 1
|
|
Else
|
|
f_L_WA = 1 - (theta_WA_Grenz - theta_e) / (theta_WA_Grenz - theta_e_min) '(3.2.7-22)
|
|
End If '==================================================================2014.03.07 추가
|
|
|
|
If d_op_max_mth = 0 Then '==================================================================2014.03.07 추가
|
|
d_h_rB = 0
|
|
Else
|
|
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)
|
|
End If '==================================================================2014.03.07 추가
|
|
|
|
|
|
If theta_NA_Grenz - theta_e_min = 0 Then
|
|
f_L_NA = 1
|
|
Else
|
|
f_L_NA = 1 - (theta_NA_Grenz - theta_e) / (theta_NA_Grenz - theta_e_min) '(3.2.7-20)
|
|
End If
|
|
|
|
|
|
|
|
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 DSET1.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) '2018.09.02 수정
|
|
|
|
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 * system_count '=====2013.08.13 수정 '(3.2.7-1)
|
|
'===================================================================================================================2010.2.21 수정
|
|
|
|
If dr난방.열생산기기방식 = "보일러" Then ' Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then
|
|
'//아래는 급탕생산기기로 지정되어잇는가?
|
|
If DSET1.tbl_zone.Select("code <> '0'").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 DSET1.tbl_zone.Select("code <> '0'", "code")
|
|
Dim Drow최대() As DSR.최대냉난방부하Row = CType(DSETR1.최대냉난방부하.Select("zone='" & Dr입력존.code & "'"), DSR.최대냉난방부하Row())
|
|
Dim Dr월에너지분석 As DSR.월별에너지분석Row = CType(DSETR1.월별에너지분석.Select("월='" & mon & "' and 존='" & Dr입력존.code & "'")(0), DSR.월별에너지분석Row)
|
|
|
|
system_count = IIf(dr난방.개별기기적용 = "0", 1, TOSG(Dr입력존.입력존의수)) '//20130818
|
|
If system_count = 0 Then system_count = 1
|
|
|
|
Q_w_b = TOSG(Q_w_b + TOSG(Dr월에너지분석.급탕요구량)) / system_count 'Sheets("" & i_count_month & "").Cells(15, 7 + i_count_zone)
|
|
'===================================================================================2010.2.21 수정
|
|
Dim Dr프로필 As DS.tbl_profile_odRow = CType(DSET1.tbl_profile_od.Select("code='0'")(0), DS.tbl_profile_odRow)
|
|
|
|
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 CRenewableOD()
|
|
' Dim Dr신재생 As DS.tbl_newRow = CType(DSET1.tbl_new.Rows(0), DS.tbl_newRow)
|
|
If dr난방.연결된시스템.Trim <> "" AndAlso dr난방.연결된시스템 <> "0" Then ' Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then
|
|
Dim Dr신재생 As DS.tbl_newRow = CType(DSET1.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) * system_count '=============2013.08.18 수정
|
|
Q_h_f = Q_h_f + (Q_h_f_hp + Q_h_g_hp_aux) * system_count '=============2013.08.18 수정 '============================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 * system_count '=============2013.08.18 수정
|
|
use_Elec = use_Elec + Q_h_g_hp_aux * system_count '=============2013.08.18 수정
|
|
Q_h_f = Q_h_f + (Q_h_f_hp + Q_h_g_hp_aux) * system_count '=============2013.08.18 수정 '============================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 * system_count '=============2013.08.18 수정
|
|
use_Elec = use_Elec + Q_h_g_hp_aux * system_count '=============2013.08.18 수정
|
|
Q_h_f = Q_h_f + (Q_h_f_hp + Q_h_g_hp_aux) * system_count '=============2013.08.18 수정 '============================2010.04.17 추가
|
|
End Select
|
|
Case "열병합" '//열병합
|
|
'Select Case Dr신재생.가동연료.Trim
|
|
' Case "난방유" '난방유"
|
|
' CRenew.Calc_CogenerationSystemEN(Dr신재생, 1, 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 * system_count '=============2013.08.18 수정
|
|
' Q_h_f = Q_h_f + Q_h_f_CHP * system_count '=============2013.08.18 수정 '============================2010.04.17
|
|
' Case "천연가스" '천연가스"
|
|
CRenew.Calc_CogenerationSystemEN(Dr신재생, 1, 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 * system_count '=============2013.08.18 수정
|
|
Q_h_f = Q_h_f + Q_h_f_CHP * system_count '=============2013.08.18 수정 '============================2010.04.17
|
|
' Case "액화가스" '액화가스"
|
|
' CRenew.Calc_CogenerationSystemEN(Dr신재생, 1, 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 * system_count '=============2013.08.18 수정
|
|
' Q_h_f = Q_h_f + Q_h_f_CHP * system_count '=============2013.08.18 수정 '============================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(T, dr난방.보일러정격출력) * TOSG(T, dr난방.보일러대수) ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(1, i_count_boiler - 1)
|
|
COP_HP_7 = TOSG(T, dr난방.정격보일러COP) * age ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(2, i_count_boiler - 1)
|
|
COP_HP_10 = TOSG(T, dr난방.정격보일러COP) * 0.55 * age ' Worksheets("난방기기").Range("히트펌프사용연료1").Offset(3, i_count_boiler - 1)
|
|
L_HP_heating = 10 '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) / 22 * 15 + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 22
|
|
Else
|
|
COP_HP_total = (COP_HP_7 - COP_HP_10) / 22 * theta_e + COP_HP_7 - 7 * (COP_HP_7 - COP_HP_10) / 22
|
|
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 t_h_max = 0 Or Q_dot_HP_heating = 0 Then '=================================================================================2014.03.07 추가
|
|
Q_h_outg_i = 0
|
|
Else
|
|
'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
|
|
|
|
End If '=================================================================================2014.03.07 추가
|
|
|
|
'======================================================================================================================================================2010.04.23 추가
|
|
Q_h_outg = Q_h_outg + Q_h_outg_i * system_count '=====2013.08.13 수정 '===================================================2013.01.16 추가
|
|
|
|
|
|
End If
|
|
|
|
'===========================================================================================2013.01.13 이동
|
|
|
|
|
|
|
|
If dr난방.열생산기기방식 = "보일러" Then 'Worksheets("난방기기").Range("열생산기기방식1").Offset(0, i_count_boiler - 1) = "보일러" Then
|
|
|
|
' If DSET1.tbl_zone.Select("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 * system_count '=====2013.08.13 수정
|
|
|
|
' Else
|
|
' Q_w_outg_i = 0
|
|
' End If
|
|
|
|
|
|
' 신재생에너지 시스템
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
'태양열(난방+급탕) 시스템
|
|
If dr난방.연결된시스템 <> "0" Then ' Worksheets("난방기기").Range("신재생난방연결1").Offset(0, i_count_boiler - 1) = "시스템연결" Then
|
|
Dim Dr신재생 As DS.tbl_newRow = CType(DSET1.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(DSET1.tbl_zone.Select("code<>'0'", "code")(i_count_zone - 1), DS.tbl_zoneRow)
|
|
CalcO.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 * system_count '=======2013.08.18 수정
|
|
End If
|
|
End Select
|
|
End If
|
|
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
'----------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
Q_dot_N = TOSG(dr난방.보일러정격출력) * TOSG(dr난방.보일러대수) ' Worksheets("난방기기").Range("난방기기정격출력1").Offset(0, i_count_boiler - 1)
|
|
If d_Nutz_mth = 0 Or Q_dot_N = 0 Or d_h_rB = 0 Then '//201.11.20 추가(학교프로파일 적용시 문제점 해결) '=====================2014.03.07 추가
|
|
t_w_100 = 0
|
|
Q_dot_d_in = 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) 난방 또는 난방 및 급탕 '// 2018.08.01 수정
|
|
' 우선 미적용 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) '(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) * system_count '=====2013.08.13 수정 '(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난방.보일러정격출력) * 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)) * system_count '=====2013.08.13 수정
|
|
use_DH = use_DH + (H_DS * (theta_DS - theta_i)) * system_count '========2013.08.18 수정
|
|
'Console.WriteLine("used=" + use_DH.ToString())
|
|
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 * beta_h_d * t_h * (c_p1 + c_p2 / beta_h_d) '(3.2.7-39)
|
|
End If
|
|
|
|
If Program = EProgram.친환경평가 Then
|
|
f_P_A = 1
|
|
|
|
Else
|
|
f_P_A = 0.6
|
|
|
|
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
|
|
|
|
If t_h = 0 Or Q_h_d_aux_i = 0 Then '=========================================================================2014.03.07 추가
|
|
|
|
Else
|
|
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) * system_count) '(3.2.7-40)
|
|
End If '=========================================================================2014.03.07 추가
|
|
|
|
|
|
|
|
|
|
|
|
'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
|
|
|
|
' If Q_dot_h_max = 0 Or t_h = 0 Then '============================================================2014.03.07 추가
|
|
' beta_h_s = 0
|
|
' Else
|
|
' beta_h_s = (Q_h_b + Q_h_ce + Q_h_d) / (Q_dot_h_max * t_h) '(3.2.7-9)
|
|
' End If '============================================================2014.03.07 추가
|
|
|
|
|
|
' 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) * system_count '===2013.08.18 수정 '(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)) * system_count '=====2013.08.18 수정 '(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) * system_count '========2013.08.18 수정
|
|
|
|
Case "천연가스" '천연가스"
|
|
use_LNG = use_LNG + (Q_h_outg_i + Q_h_g_i) * system_count '========2013.08.18 수정
|
|
|
|
Case "액화가스" '액화가스"
|
|
use_LPG = use_LPG + (Q_h_outg_i + Q_h_g_i) * system_count '========2013.08.18 수정
|
|
|
|
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 * system_count '========2013.08.18 수정
|
|
|
|
Case "전기보일러" '전기보일러"
|
|
use_Elec = use_Elec + (Q_h_outg_i + (Q_h_outg_i * 0.09)) * system_count '========2013.08.18 수정 '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 * system_count '========2013.08.18 수정
|
|
|
|
Case "천연가스"
|
|
use_LNG = use_LNG + Q_h_outg_i * system_count '========2013.08.18 수정
|
|
|
|
Case "액화가스"
|
|
use_LPG = use_LPG + Q_h_outg_i * system_count '========2013.08.18 수정
|
|
|
|
End Select
|
|
'====================================================================2010.03.14 추가
|
|
End Select
|
|
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
|