'****************************** 'Version History '****************************** 'Changes from previous program: 'Removed gas manifold control because it was causing dropped scans. 'Gas manifold control now back on seperate logger. '****************************** SequentialMode Const SCAN_INTERVAL = 100 '100 mSec const CSAT_opt=int(1000/scan_interval) 'compute csat3 execution parameter Const SDM_PER=30 'Declare Public Variables 'Example: Public PTemp_C, batt_volt 'CNR1 Public CM3Up Public CM3Dn Public CG3Up Public CG3Dn Public CNR1TC Public CNR1TK Public NetR Units CM3Up=W/meter² Units CM3Dn=W/meter² Units CG3Up=W/meter² Units CG3Dn=W/meter² Units CNR1TC=Deg C Units CNR1TK=K 'Skye Radiation Sensors Public UVAv Public UVBv Public Quantumv Public UVAm Public UVBm Public Quantumm Public UVAW Public UVBW Public QuantumW Units UVAm=mmol/m2/s2 Units UVBm=mmol/m2/s2 Units Quantumm=mV Units UVAW=W/meter² Units UVBW=W/meter² Units QuantumW=W/meter² Units UVAv=mV Units UVBv=mV Units Quantumv=mV 'Rain Guage 'Public RainTips 'Units RainTips = Pulses 'Sonic CSAT3 public csat(5) alias csat(1)=Ux alias csat(2)=Uy Alias csat(3)=Uz Alias csat(4)=Ts Alias csat(5)=diag 'CS7500 public licor(11) alias licor(1)=CO2mmol alias licor(2)=H2Ommol alias licor(3)=CO2absorb alias licor(4)=H2Oabsorb alias licor(5)=Pressure alias licor(6)=temp alias licor(7)=Aux alias licor(8)=Cooler alias licor(9)=Diagn alias licor(10)=Bandwidth alias licor(11)=delint 'Other Sensors Units Batt_Volt=Volts Units PTemp_C=Deg C 'IRT's Public Temp1 'Top termocouple Public Temp2 Public Temp3 Public Temp4 Public Temp5 Public Temp6 Public Temp7 Public Temp8 Public IRT1 Units Temp1=Deg C Units Temp2=Deg C Units Temp3=Deg C Units Temp4=Deg C Units Temp5=Deg C Units Temp6=Deg C Units Temp7=Deg C Units Temp8=Deg C Units IRT1=Deg C 'Program Variables Dim n 'Number of samples in the on-line covariances. Units n = samples 'Measurement variables without delays. Dim CSAT_in(5) 'CSAT3 data, before adding delay. 'Program Control flags. Public PRG_CNT Public Gas_CNT 'Define Data Tables 'Sonic and CS7500: sample rate 10 Hz DataTable (Fast,true,-1) Sample(5,csat(1),IEEE4) Sample(11,licor(1),IEEE4) EndTable 'Temperature profile DataTable (Temp,True,-1) DataInterval(0,10,Min,0) Average(1,PTemp_C,FP2,False) StdDev(1,PTemp_C,FP2,False) Average(1,Temp1,FP2,False) StdDev(1,Temp1,FP2,False) Average(1,Temp2,FP2,False) StdDev(1,Temp2,FP2,False) Average(1,Temp3,FP2,False) StdDev(1,Temp3,FP2,False) Average(1,Temp4,FP2,False) StdDev(1,Temp4,FP2,False) Average(1,Temp5,FP2,False) StdDev(1,Temp5,FP2,False) Average(1,Temp6,FP2,False) StdDev(1,Temp6,FP2,False) Average(1,Temp7,FP2,False) StdDev(1,Temp7,FP2,False) Average(1,Temp8,FP2,False) StdDev(1,Temp8,FP2,False) Average(1,IRT1,FP2,False) StdDev(1,IRT1,FP2,False) EndTable 'Other Sensors DataTable (Slow,True,-1) DataInterval(0,15,Min,0) Average(1,CM3Up,FP2,False) StdDev(1,CM3Up,FP2,False) Average(1,CM3Dn,FP2,False) StdDev(1,CM3Dn,FP2,False) Average(1,CG3Up,FP2,False) StdDev(1,CG3Up,FP2,False) Average(1,CG3Dn,FP2,False) StdDev(1,CG3Dn,FP2,False) Average(1,CNR1TC,FP2,False) StdDev(1,CNR1TC,FP2,False) Average(1,CNR1TK,FP2,False) StdDev(1,CNR1TK,FP2,False) Average(1,NetR,FP2,False) StdDev(1,NetR,FP2,False) Average(1,UVAm,FP2,False) Average(1,UVBm,FP2,False) Average(1,Quantumm,FP2,False) Average(1,UVAW,FP2,False) Average(1,UVBW,FP2,False) Average(1,QuantumW,FP2,False) StdDev(1,UVAm,FP2,False) StdDev(1,UVBm,FP2,False) StdDev(1,Quantumm,FP2,False) 'Totalize(1,RainTips,FP2,False) EndTable '************************* 'Program '************************* BeginProg n= 1 PRG_CNT=0 'Set all CSAT3 variables to NaN. Move (CSAT_in(1),5,NaN,1) 'Set all LI-7500 variables to NaN. Move (licor(1),11,NaN,1) 'Set the SDM clock speed. SDMSpeed (SDM_PER) 'High-frequency scan at given interval Scan (100,mSec,10,0) 'Get CSAT3 data. CSAT3(csat(1),1,3,91,10) 'Get LI-7500 data. CS7500 (licor(1),1,7,4) 'Delay the CSAT3 measurements by one or four scans. ' CallTable(BUFFER) ' If ( scan_count >= ANASYS_DELAY ) Then 'Load in CSAT3 measurements that have been delayed by one or four scans. ' GetRecord (CSAT_Ux,BUFFER,CSAT_DELAY) 'Swap the LI-7500 diagnostic bit state. ' IRGA_Dia = IRGA_Dia XOR &h00f0 'Turn on the intermediate processing disable flag when the LI-7500 has failed to send data to the 'CR5000 via SDM. ' If ( (IRGA_CO2 < -99990) OR (IRGA_CO2 = NaN) ) Then (IRGA_Dia = &h00ff) 'Set all flags high and rail the AGC to 94. 'Compute the AGC (Automatic Gain Control) ' IRGA_AGC = INT ((IRGA_Dia AND &h000f) * 6.25 + 0.5) ' Else ' scan_count = scan_count+1 ' EndIf ' RealTime(SYS_RealTime) ' If (SYS_RealTime(7) < 50000 AND ((SYS_Realtime(6) MOD 2) = 0)) Then (PRG_CNT = 0) 'less than 50 msec reset timing every 2 seconds If (PRG_CNT = 1) 'Wiring Panel Temperature Logger PanelTemp(PTemp_C,_50Hz) 'Battery Volatage Battery (Batt_Volt) EndIf If (PRG_CNT = 2) 'CNR1 Net Radiometer 'Short-wave in VoltDiff(CM3Up,1,mV20,1,True,0,_50Hz,88.1057,0) EndIf If (PRG_CNT = 3) 'CNR1 Net Radiometer 'Short-wave out VoltDiff(CM3Dn,1,mV20,2,True,0,_50Hz,88.1057,0) EndIf If (PRG_CNT = 4) 'CNR1 Net Radiometer 'Long-wave in VoltDiff(CG3Up,1,mV20,3,True,0,_50Hz,88.1057,0) EndIf If (PRG_CNT = 5) 'CNR1 Net Radiometer 'Long-wave out VoltDiff(CG3Dn,1,mV20,4,True,0,_50Hz,88.1057,0) EndIf If (PRG_CNT = 6) 'UVA VoltDiff(UVAv,1,mV5000,5,True,0,_50Hz,1.0,-0.03) UVAW=UVAv* 0.02082 UVAm=UVAv* 0.059666 EndIf If (PRG_CNT = 7) 'UVB VoltDiff(UVBv,1,mV1000,6,True,0,_50Hz,1.0,0.14) UVBW=UVBv* 0.014755 UVBm=UVBv* 0.036523 EndIf If (PRG_CNT = 8) 'Quantum VoltSe(Quantumv,1,mV5000,13,True,0,_50Hz,1.0,0.08) QuantumW=Quantumv* 0.11926 Quantumm=Quantumv* 0.59988 EndIf If (PRG_CNT = 9) Resistance(CNR1TK,1,mV200,8,Ix1,1,1675,True,True,200,250,0.01,0) PRT(CNR1TK,1,CNR1TK,1,273.15) CNR1TC=CNR1TK-273.15 NetR=(CM3Up-CM3Dn)+(CG3Up-Cg3Dn) EndIf If (PRG_CNT = 10) 'Temp1 TCDiff(Temp1,1,mV20C,9,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 11) 'Temp2 TCDiff(Temp2,1,mV20C,10,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 12) 'Temp3 TCDiff(Temp3,1,mV20C,11,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 13) 'Temp4 TCDiff(Temp4,1,mV20C,12,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 14) 'Temp5 TCDiff(Temp5,1,mV20C,13,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 15) 'Temp6 TCDiff(Temp6,1,mV20C,14,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 16) 'Temp7 TCDiff(Temp7,1,mV20C,15,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 17) 'Temp8 TCDiff(Temp8,1,mV20C,16,TypeT,PTemp_C,True,0,_50Hz,1,0) EndIf If (PRG_CNT = 18) 'IRT1 TCDiff(IRT1,1,mV20C,17,TypeK,PTemp_C,True,0,_50Hz,1,0) EndIf 'Precipitation Tipping Bucket 'PulseCount(RainTips,1,1,2,0,0.2,0) CallTable(Fast) CallTable(temp) CallTable(Slow) PRG_CNT = PRG_CNT + 1 'increase counter for timing If (PRG_CNT = 20) PRG_CNT=0 EndIf NextScan EndProg