'Program name: 5Hz_CUES_Logger3_20100825.CR3 'SONIC MUST be set to 5Hz, NO Averaging to use this Program '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*10^(-8) 'Public Time(9) 'Public TimeSonic As String *40 'Alias Time(1)=year 'Alias Time(2)=month 'Alias Time(3)=jour 'Alias Time(4)=hour 'Alias Time(5)=minute 'Alias Time(6)=second 'Alias Time(7)=microSecond 'Alias Time(9)=jd 'Public microsecondLong As Long '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 '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) CardOut(0,-1) DataInterval(0,200,mSec,0) ' Sample(1, TimeSonic,String) 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 -- Currently not working '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(200,mSec, 3, 0) 'One second scan rate ' Battery(Battery) ' VoltSe(SPN_total, 1, mV5000, 7,False, 0,_60Hz, 1, 0) ' VoltSe(SPN_diff, 1, mV5000, 8,False, 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) 'If (sunflag = 0) ' If (sun = 1) ' RealTime(time()) ' Sunrise = year+"/"+month+"/"+jour+" "+hour+":"+minute ' sunflag = 1 ' EndIf 'EndIf 'If (sunflag = 1) ' If (sun = 0) ' RealTime(time()) ' Sunset = year+"/"+month+"/"+jour+" "+hour+":"+minute ' sunflag = 0 ' EndIf ' EndIf 'Young Wind Speed and Direction ' PulseCount(upper_ws,1, 1, 1, 1, 0.098, 0) ' BrHalf(upper_dir, 1,mV1000, 1, VX1, 1, 1000,False, 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) ' Calculate Time for output JD - HH:mm:ss.sss ' RealTime (Time()) ' TimeSonic = "jd = "+jd+", "+"Time = "+hour+":"+minute+":"+second+"."+ microsecond 'Converted Sonic to RS-232 input/output SerialOpen(Com4,38400,0,0,0) 'Delay(1,1,mSec) 'SerialOut(Com4,"M","",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(SonicString,Com4,100,13,43) 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(SonicSplit(1),SonicString,"none",6,0) Sonic_U = SonicSplit(1) Sonic_V = SonicSplit(2) Sonic_W = SonicSplit(3) 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'