Our full technical support staff does not monitor this forum. If you need assistance from a member of our staff, please submit your question from the Ask a Question page.


Log in or register to post/reply in the forum.

SD1-12 D1! command ( Sontek SL 300 acoustic profiler)


PPeters Feb 1, 2017 10:44 PM

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


JDavis Feb 1, 2017 10:53 PM

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.


PPeters Feb 1, 2017 11:15 PM

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


JDavis Feb 1, 2017 11:55 PM

If you updated the datalogger OS, it should work without the delays or the D1 command.

Log in or register to post/reply in the forum.