Please excuse this question if you find it trivial. I am a beginner and am trying to move my steps trough this.
I have understood that cr1 files are command files that contain instructions regarding the tasks to be performed by the datalooger to which these files are eventually sent, after being compiled -Is that correct?
I have found an example on the Campbell Scientific webpage and I think it might be a good point to start from: I have one SD12 wind sensor that has to be connected to the data logger and I tought I could adapt the following cr1 file:
'CR1000 Series Datalogger
'5 November 2006
'WindSonic (Option 4); SDI addresses set to 0.
'*** Wiring ***
'CONTROL PORTS
'C1 WindSonic #1 SDI-12 data (green)
'C3 WindSonic #2 SDI-12 data (green)
'C5 WindSonic #3 SDI-12 data (green)
'POWER OUT
'12V WindSonic #1 power (red)
' WindSonic #2 power (red)
' WindSonic #3 power (red)
'G WindSonic #1 power reference (black)
' WindSonic #2 power reference (black)
' WindSonic #3 power reference (black)
' WindSonic #1 shield (black)
' WindSonic #2 shield (black)
' WindSonic #3 shield (black)
Public windsonic(3,3)
Alias windsonic(1,1) = wind_direction_1
Alias windsonic(1,2) = wind_speed_1
Alias windsonic(1,3) = diag_1
Units wind_direction_1 = degrees
Units wind_speed_1 = m/s
Units diag_1 = unitless %<------what is diag??????
Alias windsonic(2,1) = wind_direction_2
Alias windsonic(2,2) = wind_speed_2
Alias windsonic(2,3) = diag_2
Units wind_direction_2 = degrees
Units wind_speed_2 = m/s
Units diag_2 = unitless
Alias windsonic(3,1) = wind_direction_3
Alias windsonic(3,2) = wind_speed_3
Alias windsonic(3,3) = diag_3
Units wind_direction_3 = degrees
Units wind_speed_3 = m/s
Units diag_3 = unitless
Dim disable_flag(3) AS Boolean
Dim one
DataTable (stats,TRUE,-1)
DataInterval (0,30,Min,10) %<-----average data over 30 mins time?
WindVector (1,wind_speed_1,wind_direction_1,IEEE4,disable_flag(1),0,0,0)
FieldNames ("mean_wind_speed_1,mean_wind_direction_1,std_wind_dir_1")
Totalize (1,one,IEEE4,disable_flag(1))
FieldNames ("n_1_TOT")
Totalize (1,one,IEEE4,diag_1<>1)
FieldNames ("diag_1_1_TOT")
Totalize (1,one,IEEE4,diag_1<>2)
FieldNames ("diag_1_2_TOT")
Totalize (1,one,IEEE4,diag_1<>4)
FieldNames ("diag_1_4_TOT")
Totalize (1,one,IEEE4,diag_1<>8)
FieldNames ("diag_1_8_TOT")
Totalize (1,one,IEEE4,diag_1<>9)
FieldNames ("diag_1_9_TOT")
Totalize (1,one,IEEE4,diag_1<>10)
FieldNames ("diag_1_10_TOT")
Totalize (1,one,IEEE4,NOT (wind_direction_1=NaN))
FieldNames ("no_data_1_TOT")
WindVector (1,wind_speed_2,wind_direction_2,IEEE4,disable_flag(2),0,0,0)
FieldNames ("mean_wind_speed_2,mean_wind_direction_2,std_wind_dir_2")
Totalize (1,one,IEEE4,disable_flag(2))
FieldNames ("n_2_TOT")
Totalize (1,one,IEEE4,diag_2<>1)
FieldNames ("diag_2_1_TOT")
Totalize (1,one,IEEE4,diag_2<>2)
FieldNames ("diag_2_2_TOT")
Totalize (1,one,IEEE4,diag_2<>4)
FieldNames ("diag_2_4_TOT")
Totalize (1,one,IEEE4,diag_2<>8)
FieldNames ("diag_2_8_TOT")
Totalize (1,one,IEEE4,diag_2<>9)
FieldNames ("diag_2_9_TOT")
Totalize (1,one,IEEE4,diag_2<>10)
FieldNames ("diag_2_10_TOT")
Totalize (1,one,IEEE4,NOT (wind_direction_2=NaN))
FieldNames ("no_data_2_TOT")
WindVector (1,wind_speed_3,wind_direction_3,IEEE4,disable_flag(3),0,0,0)
FieldNames ("mean_wind_speed_3,mean_wind_direction_3,std_wind_dir_3")
Totalize (1,one,IEEE4,disable_flag(3))
FieldNames ("n_3_TOT")
Totalize (1,one,IEEE4,diag_3<>1)
FieldNames ("diag_3_1_TOT")
Totalize (1,one,IEEE4,diag_3<>2)
FieldNames ("diag_3_2_TOT")
Totalize (1,one,IEEE4,diag_3<>4)
FieldNames ("diag_3_4_TOT")
Totalize (1,one,IEEE4,diag_3<>8)
FieldNames ("diag_3_8_TOT")
Totalize (1,one,IEEE4,diag_3<>9)
FieldNames ("diag_3_9_TOT")
Totalize (1,one,IEEE4,diag_3<>10)
FieldNames ("diag_3_10_TOT")
Totalize (1,one,IEEE4,NOT (wind_direction_3=NaN))
FieldNames ("no_data_3_TOT")
EndTable
BeginProg
one = 1
Scan (1,Sec,3,0)
SDI12Recorder (wind_direction_1,1,0,"R0!",1,0)
If ( wind_direction_1 = NaN ) Then
wind_speed_1 = NaN
diag_1 = NaN
EndIf
disable_flag(1) = (wind_direction_1=NaN) OR (diag_1<>0)
SDI12Recorder (wind_direction_1,3,0,"R0!",1,0)
If ( wind_direction_2 = NaN ) Then
wind_speed_2 = NaN
diag_2 = NaN
EndIf
disable_flag(2) = (wind_direction_2=NaN) OR (diag_2<>0)
SDI12Recorder (wind_direction_1,5,0,"R0!",1,0)
If ( wind_direction_3 = NaN ) Then
wind_speed_3 = NaN
diag_3 = NaN
EndIf
disable_flag(3) = (wind_direction_3=NaN) OR (diag_3<>0)
CallTable stats
NextScan
EndProg
Instead of including 3 sensors, like in the example above, I could focus on one and load that code up to the datalogger. Would that make any sense? Also, I see that in the file there seem to be instruction regarding a 30 minutes average data aquisition (see code). Is that so?
And what is DIAG (see code)? It has no units of measure. Is it something related to quality control?
I have nother question about the wiring:
Red------12V
Black----G
Green---C7 (Tx of COM4)
and what about the other remaining wire? Is it ground or should I connect that to G?
Thank you
Mark
Mark, I'd recommend that you go through our QuickStart video tutorials.
These will show you how to use ShortCut to generate a program including a wiring diagram.
Thank you. Will do.
Janet! I got it! Fixed the wiring, changed the address of my ultrasonic wind sensor (from 1 to 0) and after getting some frustrating NaN, I am getting meanigful numbers!