'Program name: CUES_logger1_Program_20100825.CR3 'SPN1 read by serial port 'Updated: 08/25/2010 -- Kerry J. Claffey (CRREL) 'Phone 603-646-4634, e-mail: kclaffey@crrel.usace.army.mil 'Date written: 10/29/2009 'Jesse Stanley CRREL for CUES Site replaced CR10X Logger with CR3000 'DECLARATIONS 'Use Degrees NOT Radians AngleDegrees 'Change these constants when you change the Radiometers Const PSP_Up=118.2 'SN30309F3 - Installed 04/30/2010 Const PSP_Dwn=161.55 'SN10276f4 - Installed 08/21/2010 14:45 Const PSP_RED_Up=113.64 'SN30102f3 - Installed 04/30/2010 Const PSP_RED_Dwn=119.33 'SN17315f3 - Installed 08/21/2010 14:45 Const PSP_SHDWBND=109.17 'SN27784f3 - Installed 08/21/2010 14:45 Const PIR=269.45 'SN29338F3 - Installed 06/02/2010 13:48 Const con1=0.0010295 Const con2=0.0002391 Const con3=0.0000001568 Const const_S_B=5.6704*PWR(10,-8) Public Time(9) Alias Time(1)=year Alias Time(2)=month Alias Time(3)=jour Alias Time(4)=hour Alias Time(5)=minute Public Sunrise As String *20 Public Sunset As String *20 Public SunFlag As Boolean 'Public Flag(8) As Boolean 'Public Battery 'LongWave Radiatioln Terms Public LongWave_in Public therm_mv Public therm_ohm Public LW_Temp_K Public up_therm2 Public LongWaveIn_mv Public ref_temp Public batt 'Wind Speed from RM Young Terms Public upper_ws Public upper_dir ' Radiometers Public up_clr Public Shadow_bd Public up_red Public down_clr Public down_red 'Sonic Anemometer data 'Public SonicString As String * 45 'Public SonicSplit(6) As String * 10 'Public Sonic_UString As String *10 'Public Sonic_U 'Public Sonic_VString As String *10 'Public Sonic_V 'Public Sonic_WString As String *10 'Public Sonic_W 'Public Sonic_TString As String *10 'Public Sonic_T 'Public Sonic_wnd_Spd_String As String *10 'Public Sonic_Wnd_Spd 'Public Sonic_Wnd_Dir_String As String *10 'Public Sonic_Wnd_Dir ' Delta T shadow band Public SPN_total Public SPN_diff Public sun As Boolean Public SPN1String As String *18 Public SPN1(3) 'Output Table DataTable(Radiometers,1,-1) CardOut(0,-1) DataInterval(0,1,Min,0) Sample (1, sun, Boolean) Average(1, up_clr, IEEE4, 0) Average(1, down_clr, IEEE4, 0) Average(1, up_red, IEEE4, 0) Average(1, down_red, IEEE4, 0) Average(1, SPN_total, IEEE4,0) Average(1, SPN_diff,IEEE4,0) Average(1, LongWave_in, IEEE4, 0) Average(1, LongWaveIn_mv, IEEE4,0) Average(1,LW_Temp_K, IEEE4, 0) Average(1, Shadow_bd, IEEE4, 0) EndTable DataTable(Winds,1,-1) CardOut(0,-1) DataInterval(0,1,Min,0) WindVector(1, upper_ws, upper_dir, IEEE4, 0, 0, 0, 0) FieldNames("PV_WindSpeed:m/s,PV_WindDir:m/s,PV_SD_WndDir:none") ' WindVector(1, Sonic_Wnd_Spd, Sonic_Wnd_Dir, IEEE4, 0, 0, 0, 0) ' FieldNames("Sonic_WindSpeed:m/s,Sonic_WindDir:m/s,Sonic_SD_WndDir:none") EndTable 'DataTable(Sonic,1,-1) MOVED to Logger #3 ' CardOut(0,-1) ' Sample(1, Sonic_U, IEEE4) ' Sample(1, Sonic_V, IEEE4) ' Sample(1, Sonic_W, IEEE4) ' Sample(1, Sonic_T, IEEE4) ' Sample(1,SonicString,String) 'EndTable 'DataTable for SPN1 Sunshine Parameter DataTable(daily,1,-1) CardOut(0,-1) DataInterval(23,24,Hr,0) ' Sample(1,batt,IEEE4) ' Sample(1,ref_temp,IEEE4) Sample(1,sunrise,String) Sample(1,sunset,String) EndTable 'Main Program BeginProg Scan(1,Sec, 3, 0) 'One second scan rate ' Battery(Battery) 'SPN1 NOW sampled through serial port 'VoltSe(SPN_total, 1, mV5000, 7,True, 0,_60Hz, 1, 0) 'VoltSe(SPN_diff, 1, mV5000, 8,True, 0,_60Hz, 1, 0) 'VoltDiff (SPN_total,1,mV5000,4,true,0,250,1.0,0) 'VoltDiff (SPN_diff,1,mV5000,5,true,0,250,1.0,0) 'PortGet(sun,6) 'Young Wind Speed and Direction PulseCount(upper_ws,1, 1, 1, 1, 0.098, 0) BrHalf(upper_dir, 1,mV1000, 1, VX1, 1, 1000,True, 0,_60Hz,355, 0) 'BrHalf(lower_dir, 1, mV5000, 2, VX2, 1, 2500, False, 50000, 250, 3550, 0) 'Longwave Eppley - IN VoltDiff(LongWaveIn_mv, 1, mV20, 2, True, 0,_60Hz, PIR, 0) ' settleing time was 0 -- changed to 10000 BrHalf(therm_mv, 1,mV200, 5, VX3, 1, 100,True,0,_60Hz, 1, 0) ' Calculation for non battery powered PIR. therm_ohm = (7.5*(therm_mv/(1.0-therm_mv)))*1000 LW_Temp_K = 1/(con1+con2*LN(therm_ohm)+con3*(LN(therm_ohm))^3) LongWave_in = LongWaveIn_mv+const_S_B*(LW_Temp_K)^4 'ShortWave Radiomter Measurements VoltDiff(up_clr, 1,AutoRange, 8, true, 0,_60Hz, PSP_Up, 0) VoltDiff(up_red, 1,AutoRange, 9, true,0,_60Hz, PSP_RED_Up, 0) VoltDiff(down_clr, 1,AutoRange, 10, true, 0,_60Hz, PSP_Dwn, 0) VoltDiff(down_red, 1,AutoRange,11, true, 0,_60Hz, PSP_RED_Dwn, 0) VoltDiff(Shadow_bd, 1,AutoRange, 12, true, 0,_60Hz,PSP_SHDWBND , 0) 'Converted Sonic to RS-232 input/output SerialOpen(Com4,9600,0,0,0) Delay(1,5,mSec) SerialOut(Com4,"S","",0,0) 'Delay(1,5,mSec) 'SerialOut(Com4,"B","",0,0) 'Delay(1,5,mSec) 'SerialOut(Com4,"!","",0,0) '** read Sonic Output as string SerialIn(SPN1String,Com4,100,13,18) SerialClose(Com4) ' ** Changes Sonic String into Sonic component numbers 'Sonic_U = Mid(SonicString,1,7) 'Sonic_V = Mid(SonicString,8,7) 'Sonic_W = Mid(SonicString,15,7) 'Sonic_T = Mid(SonicString,22,8) 'Sonic_Wnd_Spd = Mid(SonicString,30,7) 'Sonic_Wnd_Dir = Mid(SonicString,38,6) SplitStr(SPN1(1),Spn1String,"none",3,0) SPN_total = SPN1(1) SPN_diff = SPN1(2) Sun = SPN1(3) If (sunflag = False) If (sun = True) RealTime(time()) Sunrise = year+"/"+month+"/"+jour+" "+hour+":"+minute sunflag = True EndIf EndIf If (sunflag = True) If (sun = False) RealTime(time()) Sunset = year+"/"+month+"/"+jour+" "+hour+":"+minute sunflag = False EndIf EndIf ' Sonic_T = SonicSplit(4) ' Sonic_Wnd_Spd = SonicSplit(5) ' Sonic_Wnd_Dir = SonicSplit(6) ' PanelTemp(ref_temp, 250) ' Battery (batt) ' CallTable Sonic CallTable Winds CallTable Radiometers CallTable daily NextScan EndProg'