'HP26 Temp Controlled Fan
'INPUTS 'OUTPUTS 'Variables
symbol HP = pin0 : symbol Rplen = 1 : symbol FeedTemp = b0
symbol ORANGE = pin1 : symbol Roil = 2 : symbol RetTemp = b1
symbol WH2 = pin2 : symbol ConFroze = 3 : symbol DiffTemp = b2
symbol DFT = pin3 : symbol RSU = 4 : symbol OutTemp = b3
symbol STAT = pin7 symbol RFL = 5 : symbol FrostLevel = b4
symbol Rfan = 6 : symbol TimerSA = b5
symbol FSFW = 0 : symbol TimerSB = b6
symbol Yellow = 7 symbol Timerfrost = b7
symbol ManFan = b8
symbol DFStart = b9
symbol DFStop = b9
symbol FanRunning = b10
symbol FanDisplay = b15
symbol SAaux = b16
symbol SBaux = b17
symbol DFaux = b18
main:
setint %00001110,%00001110
readadc 0 ,b4 'Frost level
readadc 1 ,b8 'Man Fan
readadc 2 ,b9 'DF Start and DF end
readadc 3 ,b10 'Fan Running
ff:
readtemp 4 ,b0 'Feed Temp
readtemp 4 ,b11
if b0<>b11 then ff
gg:
readtemp 5 ,b1 'Return Temp
readtemp 5 ,b12
if b1<>b12 then gg
readtemp 6 ,b3 'Outdoor Temp
sertxd(" STAT"," HP"," DFT"," FEED"," RET"," DIFF"," FROST",cr,lf)
sertxd(" ",#b22," ",#b13," ",#b14," ",#b0," ",#b1," ",#b2," ",#b4,cr,lf)
sertxd(" ",cr,lf)
sertxd(" FAN"," TA"," TB"," TDF"," SAaux"," SBaux"," DFaux",cr,lf)
sertxd(" ",#b15," ",#b5," ",#b6," ",#b7," ",#b16," ",#b17," ",#b18,cr,lf)
sertxd(" ",cr,lf)
sertxd(" Fan Fail"," FSFW"," Con Froze"," KW Timer"," KWA"," KWB"," KWC",cr,lf)
sertxd(" ",#b20," ",#b21," ",#b19," ",#b23," ",#b25," ",#b26," ",#b27,cr,lf)
sertxd(" ",cr,lf)
wait 13
let DiffTemp=FeedTemp-RetTemp
if b19>1 then high Rfan let FanDisplay=1 endif '----Contactor Froze Keep Fan Running
if HP=1 and FeedTemp>25 or ManFan>10 or ORANGE=1 then high Rfan let FanDisplay=1 endif '----FAN
if Stat=0 and FeedTemp>30 or ManFan>10 then high Rfan let FanDisplay=1 endif
if FeedTemp<26 and ManFan<10 and HP=0 and b19<2 then low Rfan let FanDisplay=0 endif
if DiffTemp<18 and HP=1 and ORANGE=0 and WH2=0 then let TimerSA=TimerSA+1MAX 92 endif
if DiffTemp<18 and HP=0 or ORANGE=1 or WH2=1 then let TimerSA=0 endif
if DiffTemp>18 and HP=1 and ORANGE=0 and WH2=0 then let TimerSA=0 endif
if TimerSA>90 then let SAaux=1 else let SAaux=0 endif '------------------------------------TS-A
if HP=1 and ORANGE=0 and WH2=0 then let TimerSB=TimerSB+1MAX 102 else let TimerSB=0 endif
if TimerSB>100 then let SBaux=1 else let SBaux=0 endif '-------------------------------------TS-B
if HP=1 and DFStart>100 and DFT=1 and DFStop<10 and TimerFrost<2 then let DFaux=1 endif '-----Tfrost
if HP=1 and FrostLevel>111 and ORANGE = 0 and DFT = 1 and DFStop<10 and TimerFrost<2 then let DFaux=1 endif
if HP=1 and DFT=1 and FrostLevel>100 or DFStart>100 then let TimerFrost=TimerFrost+1MAX 32 endif
if TimerFrost>30 or DFStart<10 and FrostLevel<50 then let DFaux=0 endif
if DFT=0 or FrostLevel<50 and DFStart<101 then let TimerFrost=0 endif
if DFStop>10 and DFStop<101 then let TimerFrost=0 endif
if SAaux=1 or DFaux=1 then high Rplen endif 'Plenum Heater
if SAaux=0 and DFaux=0 then low Rplen endif
if SBaux=1 then high Roil else low Roil endif 'Oil
if FrostLevel<5 or FrostLevel>200 then let b21=b21+1MAX 11 endif '------Frost sensor failure warning
if b21>5 then high FSFW,RFL endif
if FrostLevel>4 and FrostLevel<201 then low FSFW let b21=0 endif '--------Put Defrost in Time Mode
if TimerFrost>25 and b10<10 and ORANGE=0 and WH2=0 then high RSU,RFL endif '---Speed-Up 4 and RFL 5
if FrostLevel>9 and FrostLevel<151 and DFT=0 or DFStop>10 then low RFL endif
if STAT=1 then let b22=1 else let b22=0 endif 'Sertext "STAT 1" else Sertext "STAT 0"
if HP=1 then let b13=1 else let b13=0 endif 'Sertext "HP 1" else Sertext "HP 0"
if DFT=1 then let b14=1 else let b14=0 endif 'Sertext "DT 1" else Sertext "DT 0"
if HP=1 and STAT =0 then let b19 = b19 + 1MAX 3 endif 'Heat Pump contactor froze. Alarm and keep fan running
if HP=0 then let b19=0 endif
if b19>1 then high ConFroze else low ConFroze endif
if b0>25 and b0<45 and b10<100 and HP=1 then let b20=b20+1MAX 10 endif 'Fan Failure
if b0<26 and b10<100 and STAT=1 and ORANGE=1 then let b20=b20+1MAX 10 endif
if b0>50 and b10<100 then let b20=b20+1MAX 10 endif
if b0<26 and b10<100 and STAT=1 then let b20=0 endif
if b10>99 then let b20=0 endif
if b20>2 then high Yellow else low Yellow endif 'Stop Haet Pump or Oil Burner
b23=b23+1
if HP=1 then let b24=b24+1 endif
if b23=240 then let b23=0 let b24=0 endif 'b23 should be 240
if b23>238 and b26>1 then cc 'b23 should be > 238
if b23>238 and b27>1 then bb
if b23>238 then aa
goto main
aa:
let b27=b24*35/240
goto main
bb:
let b26=b27
let b27=b24*35/240
goto main
cc:
let b25=b26
let b26=b27
let b27=b24*35/240
goto main
interrupt:
wait 1
low RSU '--------------------------------------------------------------------End Speed-Up 4
return