'CR1000 'Created by Short Cut (4.3) 'Declare Variables and Units Dim WindCorr Dim ModSecsInt As Long Public BattV Public PTemp_C Public P Public SR50A(2) Public SR50A_TCDT Public SD Public SlrW Public SlrkJ Public WS Public WD Public NR_Wm2 Public CNR_Wm2 Public ST_5cm Public ST_10cm Public ST_20cm Public ST_100cm Public CS65X(3) Public PB Public AT_1M Public RH_1M Public AT_3M Public RH_3M Public SW12State As Boolean Alias SR50A(1)=SR50A_DT Alias SR50A(2)=SR50A_Q Alias CS65X(1)=SM_10CM_VWC Alias CS65X(2)=SM_10CM_EC Alias CS65X(3)=SM_10CMT Units BattV=Volts Units PTemp_C=Deg C Units P=mm Units SlrW=W/m^2 Units SlrkJ=kJ/m^2 Units WS=meters/second Units WD=degrees Units NR_Wm2=W/m^2 Units CNR_Wm2=Watts/meter^2 Units ST_5cm=Deg C Units ST_10cm=Deg C Units ST_20cm=Deg C Units ST_100cm=Deg C Units PB=mbar Units AT_1M=Deg C Units RH_1M=% Units AT_3M=Deg C Units RH_3M=% Units SM_10CM_VWC=m^3/m^3 Units SM_10CM_EC=dS/m Units SM_10CMT=Deg C 'Define Data Tables DataTable(HrlyMet,True,-1) DataInterval(0,60,Min,10) Totalize(1,P,FP2,False) Sample(1,SR50A_DT,FP2) Sample(1,SR50A_Q,FP2) Sample(1,SR50A_TCDT,FP2) Sample(1,SD,FP2) Average(1,SD,FP2,False) Sample(1,SlrW,FP2) Average(1,SlrW,FP2,False) Totalize(1,SlrkJ,IEEE4,False) Sample(1,WS,FP2) Maximum(1,WS,FP2,False,False) Minimum(1,WS,FP2,False,False) Average(1,WS,FP2,False) Sample(1,WD,FP2) WindVector(1,WS,WD,FP2,False,0,0,0) FieldNames("WS_S_WVT,WD_D1_WVT,WD_SD1_WVT") Sample(1,NR_Wm2,FP2) Average(1,NR_Wm2,FP2,False) Sample(1,CNR_Wm2,FP2) Average(1,CNR_Wm2,FP2,False) Sample(1,PB,IEEE4) Average(1,PB,IEEE4,False) Sample(1,AT_1M,FP2) Maximum(1,AT_1M,FP2,False,False) Minimum(1,AT_1M,FP2,False,False) Average(1,AT_1M,FP2,False) Sample(1,RH_1M,FP2) Sample(1,AT_3M,FP2) Maximum(1,AT_3M,FP2,False,False) Minimum(1,AT_3M,FP2,False,False) Average(1,AT_3M,FP2,False) Sample(1,RH_3M,FP2) EndTable DataTable(HrlySoil,True,-1) DataInterval(0,60,Min,10) Minimum(1,BattV,FP2,False,False) Sample(1,ST_5cm,FP2) Average(1,ST_5cm,FP2,False) Sample(1,ST_10cm,FP2) Average(1,ST_10cm,FP2,False) Sample(1,ST_20cm,FP2) Average(1,ST_20cm,FP2,False) Sample(1,ST_100cm,FP2) Average(1,ST_100cm,FP2,False) Sample(1,SM_10CM_VWC,FP2) Average(1,SM_10CM_VWC,FP2,False) Sample(1,SM_10CM_EC,FP2) Average(1,SM_10CM_EC,FP2,False) Sample(1,SM_10CMT,FP2) Average(1,SM_10CMT,FP2,False) EndTable DataTable(HrlyDiag,True,-1) DataInterval(0,60,Min,10) Sample(1,BattV,FP2) Average(1,BattV,FP2,False) Sample(1,PTemp_C,FP2) Average(1,PTemp_C,FP2,False) EndTable DataTable(Daily,True,-1) DataInterval(0,1,Day,10) Sample(1,BattV,FP2) Average(1,BattV,FP2,False) Maximum(1,BattV,FP2,False,False) Minimum(1,BattV,FP2,False,False) Sample(1,PTemp_C,FP2) Average(1,PTemp_C,FP2,False) Maximum(1,AT_1M,FP2,False,False) Minimum(1,AT_1M,FP2,False,False) Average(1,AT_1M,FP2,False) Maximum(1,AT_3M,FP2,False,False) Minimum(1,AT_3M,FP2,False,False) Average(1,AT_3M,FP2,False) EndTable 'Main Program BeginProg 'Main Scan Scan(60,Sec,1,0) 'Default CR1000 Datalogger Battery Voltage measurement 'BattV' Battery(BattV) 'Default CR1000 Datalogger Wiring Panel Temperature measurement 'PTemp_C' PanelTemp(PTemp_C,_60Hz) 'TE525MM/TE525M Rain Gauge measurement 'P' PulseCount(P,1,1,2,0,0.1,0) 'SR50A/SR50A-EE Sonic Ranging Sensor (SDI-12 Output) measurements 'SR50A_DT' and 'SR50A_Q' and calculations 'SR50A_TCDT' and 'SD' SDI12Recorder(SR50A(),1,"0","M1!",1,0,-1) SR50A_TCDT=SR50A_DT*SQR((AT_1M+273.15)/273.15) SD=2.00-SR50A_TCDT 'CM3 Pyranometer measurements 'SlrkJ' and 'SlrW' VoltDiff(SlrW,1,mV25,3,True,0,_60Hz,1,0) If SlrW<0 Then SlrW=0 'Calculate total flux 'The multiplier to calculate total flux was calculated by Short Cut 'and based on a program execution rate (scan rate) of 60 Seconds. 'If you change the program execution rate outside of Short Cut with the CRBasic Editor 'you will need to recalculate this multiplier. See the sensor manual for more details. SlrkJ=SlrW*4.395605 'Calculate flux density SlrW=SlrW*73.26008 '05108-45 Wind Speed and Direction Sensor measurements 'WS' and 'WD' PulseCount(WS,1,2,1,1,0.1666,0) BrHalf(WD,1,mV2500,7,1,1,2500,True,20000,_60Hz,355,0) If WD>=355 Or WD<0 Then WD=0 'NR-LITE2 Net Radiometer (dynamic wind speed correction) measurement 'NR_Wm2' and 'CNR_Wm2' VoltDiff(NR_Wm2,1,mv25,5,True,0,_60Hz,86.20689,0) If WS>=5 Then CNR_Wm2=NR_Wm2*(1+0.021286*(WS-5)) Else CNR_Wm2=NR_Wm2 EndIf '109 Temperature Probe measurement 'ST_5cm' Therm109(ST_5cm,1,8,1,0,_60Hz,1,0) '109 Temperature Probe measurement 'ST_10cm' Therm109(ST_10cm,1,11,1,0,_60Hz,1,0) '109 Temperature Probe measurement 'ST_20cm' Therm109(ST_20cm,1,12,2,0,_60Hz,1,0) '109 Temperature Probe measurement 'ST_100cm' Therm109(ST_100cm,1,13,2,0,_60Hz,1,0) 'CS650/655 Water Content Reflectometer measurements 'SM_10CM_VWC', 'SM_10CM_EC', and 'SM_10CMT' If TimeIntoInterval(0,1,Hr) Then SDI12Recorder(CS65X(),1,"1","M!",1,0,-1) EndIf 'CS105 Barometric Pressure Sensor measurement 'PB' If TimeIntoInterval(59,60,Min) Then PortSet(2,1) If TimeIntoInterval(0,60,Min) Then VoltSE(PB,1,mV2500,14,1,0,_60Hz,0.184,600) PortSet(2,0) EndIf 'Turn SW12V Switch On PortSet(3,1) Delay(0,3,Sec) 'HC2S3 (SW12V switched power) Temperature & Relative Humidity Sensor measurements 'AT_1M' and 'RH_1M' VoltSe(AT_1M,1,mV2500,1,0,0,_60Hz,0.1,-50) VoltSe(RH_1M,1,mV2500,2,0,0,_60Hz,0.1,0) If RH_1M>100 AND RH_1M<103 Then RH_1M=100 'HC2S3 (SW12V switched power) Temperature & Relative Humidity Sensor measurements 'AT_3M' and 'RH_3M' VoltSe(AT_3M,1,mV2500,3,0,0,_60Hz,0.1,-50) VoltSe(RH_3M,1,mV2500,4,0,0,_60Hz,0.1,0) If RH_3M>100 AND RH_3M<103 Then RH_3M=100 'Turn SW12V Switch Off PortSet(3,0) 'SW12 Timed Control 'Get seconds since 1990 and do a modulo divide by the interval period (60 minutes or 3600 seconds) ModSecsInt=Public.TimeStamp(1,1) MOD 3600 'Turn ON SW12 for 10 minutes every 60 minutes If (ModSecsInt>=0 And ModSecsInt<600) Then SW12State=True 'Turn OFF SW12 only if time runs out and RS232 is not active ElseIf (ComPortIsActive(ComRS232)=False) Then SW12State=False EndIf 'Always turn OFF SW12 if battery drops below 12.0 volts If BattV<12.0 Then SW12State=False 'Set SW12 to the state of 'SW12State' variable SW12(SW12State) 'Call Data Tables and Store Data CallTable HrlyMet CallTable HrlySoil CallTable HrlyDiag CallTable Daily NextScan EndProg