I have an interesting problem with SDI12 that i have never come across before
We are looking at deploying a Sontek SL3100 for flow monitoring and looking at what array of data we can get back
The standard M! commad will report 2 arrays of numbers 4 under D0 and 5 under D1
What i cant figure out is how to get the D1 data?
on teminal investigation the M1 request replies 00429 so is telling the logger to expect 9 numbers
the D0 request gives 4 numbers as i said and then the D1 the remianing 5
how can i get the logger to make the D1 request?
I have also tried the C! command but the format of the repsonse is a sequence of 8 D arrays, D0 - D7
on a test program i set up 2 options on port 1 a standard M request writing to array size 9
on port 3 a C request with array 52
both worked as we moved the sensor around but would only write to the first 4 arrays ( the expected DO response)
code
Public sensor_M(9)
Public sensor_C(52)
SDI12Recorder (sensor_M(),1,0,"M!",1.0,0)
SDI12Recorder (sensor_C(),3,0,"C!",1.0,0)
Any ideas?
has anyone got a recomended setup for the sensor?
I see it has modbus output as well but less familiar with that protocol
any help much appreciated
regards
Paul
What datalogger model and OS version are you using? You might just need to update the datalogger OS. I saw basically the same problem on a CR300 with an older OS version.
With that sensor, the M1! command only works if you first do a M! command.
using a CR800 with std.29 firmware at the moment
Interestingly we have had some success on getting the data, not sure if it is the ideal way but is working
code
Public SL3000_M_D0(4)
Public SL3000_M_D1(5)
Public SL3000_M1_D0(6)
Public SL3000_M2_D0(6)
Public SL3000_M3_D0(6)
Public SL3000_M4_D0(6)
Public SL3000_M5_D0(4)
If IfTime(0,60,Sec)Then
SDI12Recorder (SL3000_M_D0(),1,0,"M!",1.0,0)
End If
If IfTime(50,120,Sec)Then
SDI12Recorder (SL3000_M_D1(),1,0,"D1!",1.0,0)
End If
If IfTime(55,120,Sec)Then
SDI12Recorder (SL3000_M1_D0(),1,0,"M1!",1.0,0)
SDI12Recorder (SL3000_M2_D0(),1,0,"M2!",1.0,0)
SDI12Recorder (SL3000_M3_D0(),1,0,"M3!",1.0,0)
SDI12Recorder (SL3000_M4_D0(),1,0,"M4!",1.0,0)
SDI12Recorder (SL3000_M5_D0(),1,0,"M5!",1.0,0)
End If
adding the delay to allow for the M command to finish then hitting with a D1 command has given the remaining data
sort of counter intuitive but worked
If you updated the datalogger OS, it should work without the delays or the D1 command.