Execute
Save
Share
Share link
share
share
share
Team
Public Teams
Comments
0
Created By:
Guest
Title:
Instagramuser
Title
Description
Edit
Copy Link
Login
Email *
Password *
Login
OR
Create Account
Screen Name *
Email *
Password *
Retype Password *
Team Access Code
Register
Public CodeBins
HELP
--Select Theme--
Ambiance
Blackboard
Cobalt
Eclipse
Elegant
Erlang-Dark
Lesser-Dark
Monokai
Neat
Night
Rubyblue
Vibrant-Ink
Xq-Dark
New CodeBin
CodeBins Versions
Instagramuser- V.3
05/14/2020- V.2
05/14/2020- V.1
Compare Versions
Recent CodeBins
View All CodeBins
Option Explicit 'Constants for Operational data Private Const conStmDeaTin = 217 ' Steam Plant dearator temp Private Const conSt6AhtRis = 220 '#6 Power Boiler Air heater rise Private Const conKrfDeaTin = 310 ' Kraft Deaerator temperatures Private Const conWoodroomEnergy = 14 'Woodroom Energy set to 14 GJ Private Const conGlandStm = 1000 ' TG6 Gland Steam Usage set to 1000 lb / hr Private Boiler3Flow As Variant Private Boiler4Flow As Variant Private Boiler6Flow As Variant Private ReboilerFlow As Variant Private BDig160Flow As Variant Private BEvaps60Flow As Variant Private BBchFlow As Variant Private BConcentratorFlow As Variant Private PM5SouthFlow As Variant Private PM5NorthFlow As Variant Private PM5SteamBoxAndRmHeatFlow As Variant Private PM5DryersFlow As Variant Private PM5GlyHeatersFlow As Variant Private PM5StmBoxFlow As Variant Private PM5AuxFlow As Variant Private ARecHandV As Variant Private BRecHandV As Variant Private ADigHandV As Variant Private BBlcHandV As Variant Private BMacHandV As Variant Private BRcsHandV As Variant Private StmHandV As Variant Private rs As Recordset Private Sub Main() Dim StartDate As Date Dim EndDate As Date GetSyncDates StartDate, EndDate 'For specific day and time debugging ' StartDate = "8/28/2014 10:00:00 PM" 'EndDate = "8/28/2014 10:00:00 PM" Data.ClearStmEnergy StartDate, EndDate Data.StmValues StartDate, EndDate Data.StmEnergy StartDate, EndDate Set rs = Data.rsStmEnergy Do Until Data.rsstmValues.EOF rs.AddNew SteamEnergy SteamEnergyTotals rs!edate = Data.rsstmValues!edatetime Data.rsstmValues.MoveNext Loop rs.UpdateBatch rs.Close Data.rsstmValues.Close End Sub Private Sub SteamEnergy() On Error Resume Next With Data.rsstmValues If !c22TT150PNT < 21 Then ARecHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 150000) BRecHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 330000) ADigHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 165000) BBlcHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 280000) BRcsHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 130000) BMacHandV = HandVEnergy(!c22TT150PNT, !c64PT09STM, !c64TT09STM, "60", 277, 180000) StmHandV = HandVEnergy(!c22TT150PNT, !c22PT55STM, !c22TT56STM, "35", 250, 140000) End If rs!Boiler3 = Energy(!c22PT01STM, !c22TT314STM, !c22FI310APNT, "850", , Boiler3Flow) rs!Boiler4 = Energy(!c22PT01STM, !c22TT414STM, !c22FT410STM, "850", , Boiler4Flow) rs!Boiler6 = Energy(!c42PT36ASTM, !c42TT07STM, !c42FI0001APNT * 1000, "850", , Boiler6Flow) rs!Reboiler = Energy(!c04PIC1420MEAS * 0.14504, !c04TT1421PNT * 1.8 + 32, !c04FT1422PNT * 2.2046, "c35", , ReboilerFlow) rs!BoilerCRec = Energy(!c91PT0158PNT, !c91TT0160PNT, !c91FT0159PNT * 1000, "850") rs!B3Deaerator = B3DeaeratorEnergy(!c22PT55STM, !c22TT56STM) rs!B4Deaerator = B4DeaeratorEnergy(!c22PT55STM, !c22TT56STM) rs!ReboilerDeaerator = ReboilerDeaeratorEnergy(!c22PT55STM, !c22TT56STM) rs!B6Deaerator = B6DeaeratorEnergy(!c64PT09STM, !c64TT09STM) rs!TMPMainLine = Energy(!c22PT53STM, !c22TT1079STM, !c22FT12STM, "140") rs!TMP140 = Energy(!c04PT1811PNT * 0.14504, !c04TT1812PNT * 1.8 + 32, !c04FT1813PNT * 2.2046, "c140") rs!PMGenHeating140 = Energy(!c22PT61STM, !c22TT94STM, !c22FT95STM, "140") rs!PM5South = Energy(!c22PT55STM, !c15TT2101PNT * 1.8 + 32, !c15FQ2102BMEAS * 2.2046, "35", "c35", PM5SouthFlow) rs!PM5North = Energy(!c22PT55STM, !c15TT2101PNT * 1.8 + 32, !c15FQ2102AMEAS * 2.2046, "35", "c35", PM5NorthFlow) rs!PM5Dryers = Energy(!c15PT2110PNT * 0.14504, !c15TT2111PNT * 1.8 + 32, !c15FQ2112MEAS * 2.2046, "c35", "c35", PM5DryersFlow) rs!PM5GlyHeaters = Energy(!c15PT2120MEAS * 0.14504, !c15TT2121PNT * 1.8 + 32, !c15FQ2122MEAS * 2.2046, "c35", "c35", PM5GlyHeatersFlow) rs!PM5StmBox = Energy(!c15PIC540MEAS * 0.14504, !c15TIC541MEAS * 1.8 + 32, !c15FT539PNT * 2.2046, "c35", "c35", PM5StmBoxFlow) rs!Deink = Energy(!c22PT55STM, !c15TT2101PNT * 1.8 + 32, !c05FT1507PNT * 2.2046, "35", "c35") rs!TMP35 = Energy(!c04PT1801PNT * 0.14504, !c04TT1802PNT * 1.8 + 32, !c04FT1803PNT * 2.2046, "35", "c35") rs!PMGenHeating35 = Energy(!c22PT55STM, !c22TT56STM, !c22FT17STM, "35") rs!BDig60 = Energy(!c64PT09STM, !c64TT09STM, !c36FT04STM * 2.2046, "60") rs!BDig160 = Energy(!c64PT08STM, !c64TT08STM, !c36FT02STM * 2.2046, "160", , BDig160Flow) rs!BBlch60 = Energy(!c64PT09STM, !c64TT09STM, !c38FQ128STM, "60", , BBchFlow) rs!BBlchPulpHeater = Energy(!c64PT08STM, !c64TT08STM, !c38FIC369MEAS * 2.2046, "160") rs!BBlchOxyMixer = Energy(!c64PT08STM, !c64TT08STM, !c38FIC373MEAS * 2.2046, "160") rs!BMch60 = Energy(!c64PT09STM, !c64TT09STM, !c39FT61STM, "60") rs!BMch160 = Energy(!c64PT08STM, !c64TT08STM, !c39FT60STM, "160") rs!Chm60 = Energy(!c64PT09STM, !c64TT09STM, !c70FT298STM, "60") rs!Chm160 = Energy(!c64PT08STM, !c64TT08STM, !c70FT87STM, "160") rs!CRec60 = Energy(!c64PT09STM, !c64TT09STM, !c91FT0656PNT * 1000, "60") rs!CRec160 = Energy(!c63PT900STM, !c63TT897STM, !c91FT0640PNT * 1000, "160") rs!CConc1A = Energy(!c64PT09STM, !c64TT09STM, !c90FIC0005MEAS * 1000, "60") rs!CConc1B = Energy(!c64PT09STM, !c64TT09STM, !c90FIC0002MEAS * 1000, "60") rs!AtmVent60 = Energy(!c64PT09STM, !c64TT09STM, !c64FT404STM, "60") rs!AtmVent125 = Energy(!c64PT09STM, !c64TT09STM, !c22FT032PNT, "140") ' flow is currently dead rs!BConcentrator = Energy(!c64PT09STM, !c64TT09STM, !c41FT148STM, "60", , BConcentratorFlow) rs!BEvaps60 = Energy(!c64PT09STM, !c64TT09STM, !c41FT24STM, "60", , BEvaps60Flow)'rs!RecaustHX = RecaustHXEnergy(!c64PT09STM, !c64TT09STM) ' turned off ' PM5SteamBoxAndRmHeatFlow = PM5SouthFlow - PM5NorthFlow ' If PM5SteamBoxAndRmHeatFlow < 0 Then PM5SteamBoxAndRmHeatFlow = 0 'If !Turbine3 = 0 Then ' rs!Turbine3 = Energy(!c22PT01STM, !c22TT80STM, !c22FT16STM, "850")'Else ' rs!Turbine3 = !Turbine3 'End If If !TG4_MWh = 0 Then rs!Turbine4 = Energy(!c63PT899STM, !c64TT421STM, !c64FT401STM, "850") Else rs!Turbine4 = !TG4_MWh End If If !TG5_MWh = 0 Then rs!Turbine5 = Energy(!c42PT36ASTM, !c64TT04STM, !c64FT04STM, "850") Else rs!Turbine5 = !TG5_MWh End If rs!Turbine6 = Energy(!C64PI6100A, !C64TI6100A, !C64FT6100A * 1000, "850") rs!TurbineGlandStm = Energy(!c64PT08STM, !c64TT08STM, conGlandStm, "160") End With rs!B6AirHeater = B6AirHeater() rs!B3AirHeater = B3AirHeater(rs!B6AirHeater) rs!B4AirHeater = B4AirHeater(rs!B6AirHeater) rs!StmHandV = StmHandV ' rs!Turbine3EnergyDrop = EnergyDrop(3) rs!Turbine4EnergyDrop = EnergyDrop(4) rs!Turbine5EnergyDrop = EnergyDrop(5) rs!Woodroom = conWoodroomEnergy End Sub Private Sub SteamEnergyTotals() If rs!Reboiler < 0 Then rs!Reboiler = 0 rs!B3TotalInternal = rs!B3AirHeater + rs!B3Deaerator + (rs!StmHandV / 2) rs!B4TotalInternal = rs!B4AirHeater + rs!B4Deaerator + (rs!StmHandV / 2) rs!ReboilerInternal = rs!ReboilerDeaerator rs!B6TotalInternal = rs!B6AirHeater + rs!B6Deaerator rs!CRecTotalInternal = rs!CRec60 + rs!CRec160 - (rs!CConc1A + rs!CConc1B)'+ rs!RecaustHX ' rs!BEvaps60 + rs!BConcentrator + rs!ABRecHandV = ARecHandV + BRecHandV rs!Boiler3Net = rs!Boiler3 - rs!B3TotalInternal rs!Boiler4Net = rs!Boiler4 - rs!B4TotalInternal rs!ReboilerNet = rs!Reboiler - rs!ReboilerInternal rs!Boiler6Net = rs!Boiler6 - rs!B6TotalInternal rs!CRecNet = rs!BoilerCRec - rs!CRecTotalInternal - rs!ABRecHandV rs!MillStmTotal = rs!Boiler3 + rs!Boiler4 + rs!Reboiler + rs!Boiler6 + rs!BoilerCRec rs!TotalInternal = rs!B3TotalInternal + rs!B4TotalInternal + rs!ReboilerInternal + rs!B6TotalInternal + rs!CRecTotalInternal + rs!ABRecHandV rs!NetStmTotal = rs!Boiler3Net + rs!Boiler4Net + rs!ReboilerNet + rs!Boiler6Net + rs!CRecNet rs!BiomassSteam = rs!Boiler3Net + rs!Boiler6Net rs!PM5SteamBoxandRmHeat = rs!TMPMainLine - rs!TMP140 If rs!PM5SteamBoxandRmHeat < 0 Then rs!PM5SteamBoxandRmHeat = 0 ' PM5AuxFlow = (((PM5SouthFlow - PM5NorthFlow) + ReboilerFlow + PM5SteamBoxAndRmHeatFlow) - (PM5GlyHeatersFlow + PM5DryersFlow + PM5StmBoxFlow)) ' If PM5AuxFlow < 0 Then PM5AuxFlow = 0 ' rs!PM5Aux = Energy(!c22PT55STM, !c15TT2101PNT, PM5AuxFlow, "35", "c35") rs!PM5Aux = (((rs!PM5South - rs!PM5North) + rs!ReboilerNet + rs!PM5SteamBoxandRmHeat) - (rs!PM5GlyHeaters + rs!PM5Dryers + rs!PM5StmBox)) rs!TMPTotal = rs!TMP140 + rs!TMP35 ' + rs!TMPMainLine rs!PM5Total = rs!PM5South - rs!PM5North + rs!Reboiler + rs!PM5SteamBoxandRmHeat + rs!PMGenHeating140 + rs!PMGenHeating35 rs!NewsTotal = rs!PM5Total + rs!TMPTotal + rs!Deink rs!BDigTotal = rs!BDig160 + rs!BDig60 rs!BBlTotal = rs!BBlch60 + rs!BBlchPulpHeater + rs!BBlchOxyMixer rs!BMchTotal = rs!BMch160 + rs!BMch60 rs!BKrfHandV = BBlcHandV + BRcsHandV + BMacHandV + ADigHandV rs!ChmTotal = rs!Chm160 + rs!Chm60 rs!BKrfTotal = rs!ChmTotal + rs!BBlTotal + rs!BDigTotal + rs!BKrfHandV + rs!BMchTotal rs!TG6Total = rs!Turbine6 + rs!TurbineGlandStm 'Measured Venting If rs!AtmVent60 < 0 Then rs!AtmVent60 = 0 If rs!AtmVent125 < 0 Then rs!AtmVent125 = 0 rs!MeasuredVenting = rs!AtmVent60 + rs!AtmVent125 ' Backpressure Turbine Steam Usage ' rs!BackPTurbineTotal = rs!Turbine4EnergyDrop + rs!Turbine5EnergyDrop ' Overall Kraft Mill Steam Balance rs!KraftBalance = rs!CRecNet - rs!BKrfTotal If rs!KraftBalance > 0 Then rs!KraftSurplus = rs!KraftBalance rs!KraftDeficit = 0 Else rs!KraftSurplus = 0 rs!KraftDeficit = rs!KraftBalance End If 'Overall News Mill Steam Balance rs!NewsBalance = rs!ReboilerNet - rs!NewsTotal If rs!NewsBalance > 0 Then rs!NewsSurplus = rs!NewsBalance rs!NewsDeficit = 0 Else rs!NewsSurplus = 0 rs!NewsDeficit = rs!NewsBalance End If ' Turbine 6 Biomass Steam Balance rs!TG6Balance = rs!BiomassSteam - rs!TG6Total If rs!BiomassSteam > rs!Turbine6 Then rs!BiomassToProcess = rs!BiomassSteam - rs!TG6Total rs!Boiler4ToTurbine6 = 0 Else rs!BiomassToProcess = 0 rs!Boiler4ToTurbine6 = rs!TG6Total - rs!BiomassSteam ' Boiler4ToTurbine should not be > B3TotalInternal + B6TotalInternal End If ' Total Site Steam Balance rs!Unaccounted = rs!KraftBalance + rs!NewsBalance + rs!TG6Balance + rs!Boiler4Net - rs!BackPTurbineTotal - rs!MeasuredVenting End Sub Private Function EnergyDrop(Turbine As Integer) As Variant EnergyDrop = rs("Turbine" & Turbine) / 0.27778 / 1000 / 0.98 End Function Private Function B6AirHeater() As Variant Dim ahr As Variant 'Tubular Air Heater Rise Dim atsh As Variant ' Air Temp entering steam heater Dim pb6ahs As Variant With Data.rsstmValues ahr = !c42TE010_1PNT - !c42TE010_2PNT atsh = ahr + !c42TE010_3PNT pb6ahs = !c42FT031PNT * 0.254 * (!c42TE010_4PNT - atsh) / Enthalpy(!c64PT09STM, !c64TT09STM, "60") B6AirHeater = pb6ahs End With End Function Private Function B3AirHeater(pb6ahs As Variant) As Variant If Boiler6Flow < > 0 Then B3AirHeater = pb6ahs * Boiler3Flow / Boiler6Flow Else B3AirHeater = pb6ahs * Boiler3Flow * 0.022 ' factor is based on averaging PB6 air heater/PB6 steam flow data from May-October 2015. End If End Function Private Function B4AirHeater(pb6ahs As Variant) As Variant If Boiler6Flow <> 0 Then B4AirHeater = pb6ahs * Boiler4Flow / Boiler6Flow Else B4AirHeater = pb6ahs * Boiler4Flow * 0.022 ' factor is based on averaging PB6 air heater / PB6 steam flow data from May - October 2015. End If End Function Private Function B6DeaeratorEnergy(Pressure As Variant, Temperature As Variant) As Variant Dim Flow As Variant Dim A As Variant With Data.rsstmValues BEvaps60Flow = BEvaps60Flow * !c41HV035AOPEN BDig160Flow = BDig160Flow * !c36HV125BOPEN BConcentratorFlow = BConcentratorFlow * !c41HV154BOPEN 'Assume condensate returns at dearator temperature Flow = ((WaterEnth(conKrfDeaTin) - WaterEnth(!c42TT1030PNT)) * (Boiler6Flow - BEvaps60Flow - BDig160Flow - BConcentratorFlow)) / _ (Enthalpy(Pressure, Temperature, "60") - WaterEnth(!c42TT1030PNT)) If Flow < 0 Then Flow = 0 End With B6DeaeratorEnergy = Energy(Pressure, Temperature, Flow, "60") End Function Private Function B3DeaeratorEnergy(Pressure As Variant, Temperature As Variant) As Variant Dim Flow As Variant With Data.rsstmValues If Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS) = 0 Then ' Avoiding division by zero error Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * Boiler3Flow Else Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * Boiler3Flow _ / (Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS)) End If If Flow < 0 Then Flow = 0 End With B3DeaeratorEnergy = Energy(Pressure, Temperature, Flow, "35") End Function Private Function B4DeaeratorEnergy(Pressure As Variant, Temperature As Variant) As Variant Dim Flow As Variant With Data.rsstmValues If(Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS)) = 0 Then Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * Boiler4Flow Else Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * Boiler4Flow _ / (Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS)) End If If Flow < 0 Then Flow = 0 End With B4DeaeratorEnergy = Energy(Pressure, Temperature, Flow, "35") End Function Private Function ReboilerDeaeratorEnergy(Pressure As Variant, Temperature As Variant) As Variant Dim Flow As Variant With Data.rsstmValues If(Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS)) = 0 Then Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * ReboilerFlow Else Flow = (WaterEnth(conStmDeaTin) - WaterEnth(!c22TIC3450MEAS)) * ReboilerFlow _ / (Enthalpy(Pressure, Temperature, "35") - WaterEnth(!c22TIC3450MEAS)) End If If Flow < 0 Then Flow = 0 End With ReboilerDeaeratorEnergy = Energy(Pressure, Temperature, Flow, "35") End Function Private Function HandVEnergy(c22TT150PNT As Variant, Pressure As Variant, Temperature As Variant, _ TrapType As String, Value1 As Variant, Value2 As Variant) As Variant Dim Flow As Variant Flow = ((70 - (c22TT150PNT * 9 / 5 + 32)) * 0.017 * Value2) _ / (Enthalpy(Pressure, Temperature, TrapType) - Value1) * 60 HandVEnergy = Energy(Pressure, Temperature, Flow, TrapType) End Function Private Function Energy(ByVal Pressure As Variant, ByVal Temperature As Variant, _ ByVal Flow As Variant, PressTrapType As String, Optional TempTrapType As String, _ Optional ByRef FlowVar As Variant) As Variant 'Energy function is based on IAPWS-95 formulation Dim p As Double, T As Double, f As Double, tu As Double Dim a1 As Double, a2 As Double, a3 As Double, a4 As Double Dim a5 As Double, a6 As Double, g1 As Double, g2 As Double Dim g3 As Double Dim b01 As Double, b02 As Double, ex1 As Double, b0 As Double Dim b1 As Double, b3 As Double, b12 As Double, bx As Double Dim ex10 As Double Dim db01 As Double, db0 As Double, f0 As Double, dg1 As Double Dim f11 As Double, f12 As Double, f13 As Double, dg2 As Double Dim f31 As Double, f32 As Double, f33 As Double, dg3 As Double Dim f121 As Double, f122 As Double, f123 As Double, f1 As Double Dim f3 As Double, hprime As Double Dim cp1 As Double, cp2 As Double, cp3 As Double, fp0 As Double Dim y As Double, fprime As Double, h1 As Double, h2 As Double Dim h As Double, hvap As Double If IsNull(Pressure) Or IsNull(Temperature) Or IsNull(Flow) Then Energy = 0 Exit Function End If Pressure = Trap(Pressure, PressTrapType & "p") If TempTrapType = "" Then Temperature = Trap(Temperature, PressTrapType & "t") Else Temperature = Trap(Temperature, TempTrapType & "t") End If If Not IsMissing(FlowVar) Then FlowVar = Flow End If T = Temperature If T <= 100 Then T = 100 ' converts to absolute atmospheres p = (Pressure + 14.6959) / 14.6959 ' converts to kelvin from farenheit T = (T - 32) * (5 / 9) + 273.2 f = Flow tu = 1 / T a1 = 82.546 a2 = -162460 a3 = 0.21828 a4 = -126970 a5 = 0.0003635 a6 = -6.768E+32 g1 = a1 * tu + a2 * (tu ^ 2) g2 = a3 + a4 * (tu ^ 2) g3 = a5 + (a6 * (tu ^ 24)) * 1E+32 b01 = 1.89 b02 = -2641.62 ex1 = 80870 b0 = b01 + b02 * tu * (10 ^ (ex1 * (tu ^ 2))) b1 = (b0 ^ 2) * g1 * tu * p b3 = (b0 ^ 4) * g2 * ((tu * p) ^ 3) b12 = (-b0 ^ 13) * g3 * ((tu * p) ^ 12) bx = b0 + b1 + b3 + b12 ex10 = (10 ^ (ex1 * (tu ^ 2))) db01 = b02 * tu * ex10 * 2.302585 * (2 * ex1 * tu) db0 = b02 * ex10 + db01 f0 = b0 + tu * db0 dg1 = a1 + 2 * a2 * tu f11 = 2 * b0 * db0 * g1 * (tu ^ 2) f12 = (b0 ^ 2) * dg1 * (tu ^ 2) f13 = (b0 ^ 2) * g1 * 2 * tu dg2 = 2 * a4 * tu f31 = 4 * (b0 ^ 3) * db0 * g2 * (tu ^ 4) f32 = (b0 ^ 4) * dg2 * (tu ^ 4) f33 = (b0 ^ 4) * g2 * 4 * (tu ^ 3) dg3 = 24 * a6 * (tu ^ 23) * 1E+32 f121 = 13 * (b0 ^ 12) * db0 * g3 * (tu ^ 13) f122 = (b0 ^ 13) * dg3 * (tu ^ 13) f123 = (b0 ^ 13) * g3 * 13 * (tu ^ 12) f1 = f11 + f12 + f13 f3 = f31 + f32 + f33 f12 = -1 * (f121 + f122 + f123) hprime = 2502.36 cp1 = 1.472 cp2 = 0.00075566 cp3 = 47.8365 fp0 = 698.6493 y = hprime - fp0 fprime = cp1 * T + (cp2 / 2) * (T ^ 2) + cp3 * Log(T) + y h1 = p * f0 + (f1 / 2) * (p ^ 2) + (f3 / 4) * (p ^ 4) h2 = (f12 / 13) * (p ^ 13) h = (h1 + h2) / 9.8722 + fprime ' converts J / gram to Btu / lb hvap = 0.43 * h ' Uses flow to calculate energy in GJ' s for the period Energy = hvap * Flow * 1.054615 / 1000000 End Function Private Function Enthalpy(ByVal Pressure As Variant, _ ByVal Temperature As Variant, TrapType As String) As Variant Dim p As Double, T As Double, f As Double, tu As Double Dim a1 As Double, a2 As Double, a3 As Double, a4 As Double Dim a5 As Double, a6 As Double, g1 As Double, g2 As Double Dim g3 As Double Dim b01 As Double, b02 As Double, ex1 As Double, b0 As Double Dim b1 As Double, b3 As Double, b12 As Double, bx As Double Dim ex10 As Double Dim db01 As Double, db0 As Double, f0 As Double, dg1 As Double Dim f11 As Double, f12 As Double, f13 As Double, dg2 As Double Dim f31 As Double, f32 As Double, f33 As Double, dg3 As Double Dim f121 As Double, f122 As Double, f123 As Double, f1 As Double Dim f3 As Double, hprime As Double Dim cp1 As Double, cp2 As Double, cp3 As Double, fp0 As Double Dim y As Double, fprime As Double, h1 As Double, h2 As Double Dim h As Double, hvap As Double If IsNull(Pressure) Or IsNull(Temperature) Then Enthalpy = 0 Exit Function End If Pressure = Trap(Pressure, TrapType & "p") Temperature = Trap(Temperature, TrapType & "t") T = Temperature If T <= 100 Then T = 100 'Converts to absolute atmospheres p = (Pressure + 14.6959) / 14.6959 ' Converts to kelvin from farenheit T = (T - 32) * (5 / 9) + 273.2 tu = 1 / T a1 = 82.546 a2 = -162460 a3 = 0.21828 a4 = -126970 a5 = 0.0003635 a6 = -6.768E+32 g1 = a1 * tu + a2 * (tu ^ 2) g2 = a3 + a4 * (tu ^ 2) g3 = a5 + (a6 * (tu ^ 24)) * 1E+32 b01 = 1.89 b02 = -2641.62 ex1 = 80870 b0 = b01 + b02 * tu * (10 ^ (ex1 * (tu ^ 2))) b1 = (b0 ^ 2) * g1 * tu * p b3 = (b0 ^ 4) * g2 * ((tu * p) ^ 3) b12 = (-b0 ^ 13) * g3 * ((tu * p) ^ 12) bx = b0 + b1 + b3 + b12 ex10 = 10 ^ (ex1 * (tu ^ 2)) db01 = b02 * tu * ex10 * 2.302585 * (2 * ex1 * tu) db0 = b02 * ex10 + db01 f0 = b0 + tu * db0 dg1 = a1 + 2 * a2 * tu f11 = 2 * b0 * db0 * g1 * (tu ^ 2) f12 = (b0 ^ 2) * dg1 * (tu ^ 2) f13 = (b0 ^ 2) * g1 * 2 * tu dg2 = 2 * a4 * tu f31 = 4 * (b0 ^ 3) * db0 * g2 * (tu ^ 4) f32 = (b0 ^ 4) * dg2 * (tu ^ 4) f33 = (b0 ^ 4) * g2 * 4 * (tu ^ 3) dg3 = 24 * a6 * (tu ^ 23) * 1E+32 f121 = 13 * (b0 ^ 12) * db0 * g3 * (tu ^ 13) f122 = (b0 ^ 13) * dg3 * (tu ^ 13) f123 = (b0 ^ 13) * g3 * 13 * (tu ^ 12) f1 = f11 + f12 + f13 f3 = f31 + f32 + f33 f12 = -1 * (f121 + f122 + f123) hprime = 2502.36 cp1 = 1.472 cp2 = 0.00075566 cp3 = 47.8365 fp0 = 698.6493 y = hprime - fp0 fprime = cp1 * T + (cp2 / 2) * (T ^ 2) + cp3 * Log(T) + y h1 = p * f0 + (f1 / 2) * (p ^ 2) + (f3 / 4) * (p ^ 4) h2 = (f12 / 13) * (p ^ 13) h = (h1 + h2) / 9.8722 + fprime Rem converts J / gram to Btu / lb hvap = 0.43 * h Enthalpy = hvap End Function Private Function WaterEnth(ftemp As Variant) As Double Dim heat As Double If ftemp <= 0 Or IsNull(ftemp) Then heat = 0 ElseIf ftemp > 0 And ftemp < 320 Then heat = (ftemp * 1.004288) + (-32.446) ElseIf ftemp >= 320 And ftemp < 450 Then heat = (ftemp * 1.071093) + (-53.1254) ElseIf ftemp >= 450 And ftemp < 520 Then heat = (ftemp * 1.154) + (-89.4) ElseIf ftemp >= 520 And ftemp < 600 Then heat = (ftemp * 1.283) + (-155.75) Else heat = (ftemp * 1.7405) + (-431.16) End If WaterEnth = heat End Function Private Function Trap(Value As Variant, Optional TrapType As String) As Variant Select Case TrapType Case "850t" If Value < 700 Or Value > 1000 Then Value = 850 End If Case "850p" If Value < 700 Or Value > 1000 Then Value = 850 End If Case "450t" If Value < 600 Or Value > 800 Then Value = 720 End If Case "450p" If Value < 300 Or Value > 450 Then Value = 370 End If Case "160t" If Value < 350 Or Value > 500 Then Value = 375 End If Case "160p" If Value < 150 Or Value > 180 Then Value = 170 End If Case "140t" If Value < 400 Or Value > 475 Then Value = 450 End If Case "140p" If Value < 110 Or Value > 130 Then Value = 120 End If Case "60t" If Value < 380 Or Value > 450 Then Value = 420 End If Case "60p" If Value < 50 Or Value > 75 Then Value = 68 End If Case "35t" If Value < 400 Or Value > 600 Then Value = 550 End If Case "35p" If Value < 27 Or Value > 45 Then Value = 35 End If Case "c140t" Value = Value * 24 * 9 / 5 + 32 If Value < 400 Or Value > 475 Then Value = 420 End If Case "c140p" Value = Value * 24 / 6.8948 If Value < 110 Or Value > 140 Then Value = 120 End If Case "c35t" Value = Value * 24 * 9 / 5 + 32 If Value < 250 Or Value > 330 Then Value = 290 End If Case "c35p" Value = Value * 24 / 6.8948 If Value < 27 Or Value > 45 Then Value = 35 End If Case Else Trap = Value End Select Trap = Value End Function Private Sub GetSyncDates(StartDate As Date, EndDate As Date) Dim CmdLine Dim CmdLnLen Dim InArg Dim NumArgs Dim cmdArgs(3) Dim c Dim i NumArgs = 0: InArg = False CmdLine = Command() CmdLnLen = Len(CmdLine) For i = 1 To CmdLnLen c = Mid(CmdLine, i, 1) If(c < > " " And c < > vbTab) Then If Not InArg Then If NumArgs = 3 Then Exit For NumArgs = NumArgs + 1 InArg = True End If cmdArgs(NumArgs) = cmdArgs(NumArgs) & c Else InArg = False End If Next i If UBound(cmdArgs()) > 0 Then If IsDate(cmdArgs(1)) Then EndDate = cmdArgs(1) If IsNumeric(cmdArgs(2)) Then StartDate = DateAdd("d", -(CInt(cmdArgs(2))), EndDate) EndDate = cmdArgs(1) & " 11:59:59 PM" Else StartDate = EndDate EndDate = cmdArgs(1) & " 11:59:59 PM" End If ElseIf IsNumeric(cmdArgs(1)) Then If cmdArgs(2) = "TIME" Then EndDate = Now StartDate = DateAdd("h", -(cmdArgs(1)), EndDate) Else EndDate = Date StartDate = DateAdd("d", -(CInt(cmdArgs(1))), EndDate) EndDate = Date & " 11:59:59 PM" End If Else EndDate = Date & " 11:59:59 PM" StartDate = Date End If Else EndDate = Date & " 11:59:59 PM" StartDate = Date End If End Sub '####OLD CALCULATION CODE##### ' Private Function B6DeaeratorEnergy(Pressure As Variant, Temperature As Variant) As Variant ' ' Dim Flow As Variant ' With Data.rsstmValues ' Flow = ((WaterEnth(conKrfDeaTin) - WaterEnth(!c42TT1030PNT)) _ ' * (Boiler6Flow - BEvaps60Flow - BDig160Flow)) / (Enthalpy(Pressure, Temperature, "60") - WaterEnth(conKrfDeaTin)) ' If Flow < 0 Then Flow = 0 ' End With ' ' B6DeaeratorEnergy = Energy(Pressure, Temperature, Flow, "60") ' 'End Function ' Private Function RecaustHXEnergy(Pressure As Variant, Temperature As Variant) As Variant ' ' Dim Flow As Variant ' ' With Data.rsstmValues ' Flow = (((!c35TIC0129MEAS - (!c58TIC76MEAS * 9 / 5 + 32)) * (!c35FIC1261MEAS * 60 * 8.3)) / 1000000 * 1.055) _ ' / (Enthalpy(Pressure, Temperature, "60"))' If Flow < 0 Then Flow = 0 ' End With ' ' RecaustHXEnergy = Energy(Pressure, Temperature, Flow, "60")' ' End Function 'Private Function AirHeater(BoilerFlow As Variant) As Variant ' AirHeater = BoilerFlow * conSt6AhtRis * 0.2 / 1000 ' AirHeater = AirHeater / 1000 ' End Function
Bottom of Page
In Head
On Load
On Ready
Setting
Validate
Copy
Format
Setting
Validate
Copy
Format
No Doc Type
HTML5
HTML 4.01 Transitional
HTML 4.01 Strict
HTML 4.01 Frameset
XHTML 1.1
XHTML 1.0 Transitional
XHTML 1.0 Strict
XHTML 1.0 Frameset
Copy
Format
Download
×
Code Description
×
Difference of Versions
HTML
CSS
JS
×
JS Error
×
CSS Error
Errors
Warnings
×
JavaScript Setting
JS Libraries:
Chrome Frame 1.0.3
Dojo 1.8.0
Dojo 1.7.3
Dojo 1.7.2
Ext Core 3.1.0
jQuery 1.8.0
jQuery 1.7.2
jQuery 1.6.0
jQuery 1.5.0
jQuery 1.4.4
jQuery 1.4.0
jQuery-min 1.7.2
jQueryUI-min 1.8.21
MooTools more-1.4.0.1-full
MooTools core-1.4.5-full
MooTools core-1.4.1-full
Prototype 1.7.1.0
script.aculo.us 1.9.0
SWFObject 2.2
Twitter Bootstrap 2.0.4
WebFont Loader 1.0.28
yui 3.5.1
User Libraries:
Upload File
JavaScript URL(s):
×
CSS Setting
CSS Libraries:
jQueryUI 1.8.21
Twitter Bootstrap 2.0.4
User Libraries:
Upload File
CSS URL(s):