5.4. SDI-12 Protocol#
Protocol Overview#
The VX60 surface velocity radar supports communication via the SDI-12 (Serial Data Interface at 1200 baud) protocol. The instrument responds to standard SDI-12 measurement commands by returning measured surface velocity and related data, and, in addition to standard measurement commands, the device implements a set of custom SDI-12 commands that allow users to read and modify internal configuration parameters, retrieve diagnostic information, and execute specific service operations such as restoring factory default settings.
In the command tables below, a represents the device address. CR and LF denote carriage return / line feed pair which is sent at the end of each response. The response contains no space character – in the table below the spaces are inserted between response elements to improve readability only.
Standard SDI-12 Commands#
Device Address Query#
Device will identify by returning its SDI-12 address. The factory default address is 0.
Request |
Response |
Example |
|---|---|---|
|
|
→
?!←
0 |
Ping Sensor#
The device will return its address if the address in the request matches the device address. This command is used to verify that the device is active, at a given address, and responding to requests.
Request |
Response |
Example |
|---|---|---|
|
|
→
0!←
0 |
Change Address#
The device will reconfigure to change its SDI-12 device address, and will respond with the new address. All subsequent requests to the device should be addressed to the new address. Take care when changing address, if improperly set on multi-sensor bus this can cause address collision.
Request |
Response |
Example |
|---|---|---|
|
|
→
0A5!←
5 |
Get Device Identification#
The device will respond with its identification information:
13= SDI protocol version 1.3GEOLUXVX60= device namefff= current firmware version
Request |
Response |
Example |
|---|---|---|
|
|
→
0I!←
013GEOLUXVX60 100 |
Verify Device#
This command is executed in two steps. First, the master sends the command aV! to initiate the verification procedure. The device responds with a standard SDI-12 service request indicating that after 000 seconds one value will be available for retrieval.
The master must then issue the aD0! command to read the available value. The device responds with a single measurement representing the instrument’s operational status:
0= not ready1= ready
Request |
Response |
Example |
|---|---|---|
aV!aD0! |
a00001 CR LFas CR LF |
→
0V!←
000001→
0D0!←
01 |
Perform Measurement#
This command instructs the instrument to start a measurement cycle. Upon receiving aM!, the device immediately responds with the required warm-up time in seconds and the total number of measurement values that will be available once the measurement is completed.
After the specified warm-up time has elapsed, the master should retrieve the measurement results using the aD0!, aD1!, etc. commands as needed, until all reported values have been read.
If a CRC checksum is required to ensure data integrity, the aMC! command shall be used instead of aM!. This command functions identically to aM!, but the instrument appends a CRC checksum to each data response. The checksum in the response allows the master to verify the consistency and correctness of the transmitted values.
The Geolux VX60 returns 8 values, in the following order:
Absolute surface velocity, in selected measurement unit
Direction flag (1 incoming, -1 outgoing, 0 no flow)
SNR, in dB
Forward tilt angle, in degrees
Side tilt angle, in degrees
Device temperature, in °C
Device relative humidity, in %
- Device error status bitmask:Bit 0 = forward tilt angle errorBit 1 = side tilt angle errorBit 2 = radar co-processor update failedBit 3 = radar co-processor not respondingBit 4 = radar co-processor needs to be updatedBit 5 = tilt sensor is not workingBit 6 = radar self-calibration failedBit 7 = DFP data corrupt, needs resetBit 8 = standby mode is activeBit 9 = radar is initializing
Request |
Response |
Example |
|---|---|---|
aM! or aMC!aD0!aD1! |
asss8 CR LFa velocity dir snr fwdtilt CR LFa sidetilt temp rhum status CR LF |
→
0M!←
00158… after 15 seconds …
→
0D0!←
0+1.023+1+47+61.23→
0D1!←
0-0.12+22.35+38.1+0 |
Perform Concurrent Measurement#
The aC! command operates similarly to the previously described aM! command, with the key difference being that it enables concurrent measurements. After receiving aC!, the instrument responds with the required processing time and the number of values that will be available.
Unlike aM!, the instrument does not hold the SDI-12 bus during the measurement process. This allows other SDI-12 devices on the same bus to perform measurements simultaneously. Once the indicated processing time has elapsed, the master can retrieve the results using the aD0!, aD1!, etc., commands, in the same manner as for aM!.
In accordance with the SDI-12 specification for concurrent commands, the response to aC! uses two digits to indicate the number of measurement values that will be returned.
If a CRC checksum is required to ensure data integrity, the aCC! command shall be used instead of aC!. This command functions identically to aC!, but the instrument appends a CRC checksum to each data response. The checksum in the response allows the master to verify the consistency and correctness of the transmitted values.
Request |
Response |
Example |
|---|---|---|
aC! or aCC!aD0!aD1! |
asss08 CR LFa velocity dir snr fwdtilt CR LFa sidetilt temp rhum status CR LF |
→
0C!←
001508… after 15 seconds …
→
0D0!←
0+1.023+1+47+61.23→
0D1!←
0-0.12+22.35+38.1+0 |
Custom (Extended) SDI-12 Commands Specific for VX60#
Maximum Velocity Threshold#
Sets / gets the upper bound for valid surface velocity measurements. Velocity readings above this threshold are rejected. The numeric value parameter is interpreted in the unit set by aXGMVU!. See Maximum Velocity for the detailed setting description.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMVL!←
0+16 |
Set |
|
|
→
0XGMVL+15!←
0+15 |
Maximum Velocity Unit#
Gets / sets the physical unit used by aXGMVL! command. See Maximum Velocity for the detailed setting description. The units are represented by the numerical value as follows:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMVU!←
0+1 |
Set |
|
|
→
0XGMVU+6!←
0+6 |
Direction Filter#
Gets / sets the direction filter configuration. See Direction Filter for the detailed setting description.
0= measure both directions1= incoming flow only2= outgoing flow only
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDFT!←
0+0 |
Set |
|
|
→
0XGDFT+2!←
0+2 |
Filter Length#
Gets / sets the number of seconds used for internal smoothing. Higher values reduce noise but increase response lag. See Filter Length for the detailed setting description. The valid range is between 1 and 120.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGFLN!←
0+1 |
Set |
|
|
→
0XGFLN+20!←
0+20 |
Velocity Output Unit#
Gets / sets the unit used for the velocity value in the SDI-12 measurement response, NMEA and on Modbus output. See Output Unit for the detailed setting description. The units are represented by the numerical value as follows:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGUNT!←
0+1 |
Set |
|
|
→
0XGUNT+0!←
0+0 |
Beam Width#
Gets / sets the radar beam width pattern. Wide beam covers a larger area; narrow beam is more focused and rejects off-axis targets. See Beam Width for the detailed setting description.
0= wide1= narrow
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGRBW!←
0+0 |
Set |
|
|
→
0XGRBW+1!←
0+1 |
Beam Position#
Gets / sets the near or far measurement zone placed along the radar beam used for target detection. See Beam Position for the detailed setting description.
0= near1= far
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGBOF!←
0+0 |
Set |
|
|
→
0XGBOF+1!←
0+1 |
DFP Enable#
Gets / sets the enable status of Dynamic Flow Profiler algorithm, which tracks and accumulates flow history for improved accuracy in low-flow conditions. See Dynamic Flow Profiler for the detailed setting description.
0= disabled1= enabled
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDFP!←
0+0 |
Set |
|
|
→
0XGDFP+1!←
0+1 |
Minimum Valid Distance#
Gets / sets the minimum valid distance to water surface. Reflections detected closer than this distance are ignored. Use this parameter to exclude near-field returns e.g., mounting hardware, bridge elements, or other objects close to the sensor. See Minimum Distance for the detailed setting description. The corresponding measurement unit is set by aXGDU0!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDZ0!←
0+0 |
Set |
|
|
→
0XGDZ0+1!←
0+1 |
Minimum Valid Distance Unit#
Gets / sets the measurement unit used by minimum valid distance parameter (aXGDZ0!). See Minimum Distance for the detailed setting description. The valid units are:
0= mm1= cm2= m3= ft4= in
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDU0!←
0+2 |
Set |
|
|
→
0XGDU0+1!←
0+1 |
Maximum Valid Distance#
Gets / sets the maximum valid distance to water surface. Reflections detected beyond this distance are ignored. Use this parameter to exclude far-field returns outside the intended measurement zone e.g., opposite bank, structures, or background targets. See Maximum Distance for the detailed setting description. The corresponding measurement unit is set by aXGDU1!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDZ1!←
0+30 |
Set |
|
|
→
0XGDZ1+5!←
0+5 |
Maximum Valid Distance Unit#
Gets / sets the measurement unit used by maximum valid distance parameter (aXGDZ1!). See Maximum Distance for the detailed setting description. The valid units are:
0= mm1= cm2= m3= ft4= in
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDU1!←
0+2 |
Set |
|
|
→
0XGDU1+3!←
0+3 |
RS-232 Baud Rate#
Gets / sets the baud rate of the RS-232 serial interface. The change takes effect immediately. See RS-232 Baud Rate for the detailed setting description. The valid values for baud rates are:
0= 48001= 96002= 144003= 192004= 384005= 576006= 115200
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGSBD!←
0+6 |
Set |
|
|
→
0XGSBD+1!←
0+1 |
Modbus Baud Rate#
Gets / sets the baud rate of the RS-485/Modbus serial interface. The change takes effect immediately. See RS-485 Baud Rate for the detailed setting description. The valid values for baud rates are:
0= 48001= 96002= 144003= 192004= 384005= 576006= 115200
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMBD!←
0+1 |
Set |
|
|
→
0XGMBD+6!←
0+6 |
Modbus Device ID#
Gets / sets the Modbus RTU slave address. Must be unique on the RS485 bus. See Modbus ID for the detailed setting description. The accepted value range for Modbus RTU slave address is 1 - 247.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMID!←
0+1 |
Set |
|
|
→
0XGMID+10!←
0+10 |
Modbus Serial Line Parity#
Gets / sets the serial line parity for RS-485 / Modbus connection. The change takes place immediately. See Modbus Parity for the detailed setting description. The valid values are:
0= none1= odd2= even
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMPA!←
0+2 |
Set |
|
|
→
0XGMPA+0!←
0+0 |
Modbus Serial Line Stop Bits#
Gets / sets the number of stop bits for the serial line of RS-485 / Modbus connection. The change takes place immediately. See RS-485 Stop Bits for the detailed setting description. The valid values are:
0= one1= two
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMSB!←
0+0 |
Set |
|
|
→
0XGMSB+1!←
0+1 |
Disable NMEA Output#
Gets / sets the parameter that disables NMEA sentence output on RS-232. The valid values are:
0= NMEA enabled1= NMEA disabled
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGNMA!←
0+0 |
Set |
|
|
→
0XGNMA+1!←
0+1 |
Analog Output Minimum Value#
Gets / sets the surface velocity measurement value that corresponds to the minimum output on the analog current interface (4 mA). See 4 - 20 mA Minimum Value for the detailed setting description. The measurement unit is set by aXGAU0!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAV0!←
0+0 |
Set |
|
|
→
0XGAV0+0.1!←
0+0.1 |
Analog Output Minimum Unit#
Gets / sets the measurement unit for the value set by aXGAV0! command. See 4 - 20 mA Minimum Value for the detailed setting description. The valid units are:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAU0!←
0+1 |
Set |
|
|
→
0XGAU0+4!←
0+4 |
Analog Output Maximum Value#
Gets / sets the surface velocity measurement value that corresponds to the maximum output on the analog current interface (20 mA). See 4 - 20 mA Maximum Value for the detailed setting description. The measurement unit is set by aXGAU1!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAV1!←
0+16 |
Set |
|
|
→
0XGAV1+10!←
0+10 |
Analog Output Maximum Unit#
Gets / sets the measurement unit for the value set by aXGAV1! command. See 4 - 20 mA Maximum Value for the detailed setting description. The valid units are:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAU1!←
0+1 |
Set |
|
|
→
0XGAU1+3!←
0+3 |
Configure Power Management Mode (Automatic SDI-12 Sleep)#
Gets / sets the automatic SDI-12 sleep mode parameter. When sleep is enabled, the device enters low-power standby between SDI-12 transactions. When disabled, the sensor runs continuously and is ready at all times. See Power Management for the detailed setting description. The valid parameters are:
0= sleep enabled1= sleep disabled (continuous scanning)
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGCON!←
0+1 |
Set |
|
|
→
0XGCON+0!←
0+0 |
Configure Operation Mode#
Gets / sets the operation mode parameter. When the operation mode is set to standby, the device will go to standby mode. In standby mode, it will communicate on all communication interfaces, but the radar transmitters will be turned off to reduce the power, and the instrument will not be making any measurements. See Operation Mode for the detailed setting description. The accepted values are:
0= off (normal operation)1= on (standby operation)
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMUT!←
0+0 |
Set |
|
|
→
0XGMUT+1!←
0+1 |
Configure Fixed Mounting Angle#
Override measured pitch angle with a fixed value (degrees). Changing this parameter will affect the reported velocity as cosine correction behaviour will be changed. Use this parameter only during tow-tank testing. Set 0 to use real measured angle. The accepted value range for fixed angle is 0 - 89.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGFIX!←
0+0 |
Set |
|
|
→
0XGFIX+1!←
0+1 |
Show Data on Error#
Continue reporting velocity data even when angle errors are detected.
0= clear velocity on error (send 0 as velocity instead of the measured value)1= keep velocity
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGSDE!←
0+0 |
Set |
|
|
→
0XGSDE+1!←
0+1 |
Perform Soft Reset#
Restarts the device firmware. All settings are retained (stored in non-volatile memory). The device will be unresponsive for a few seconds after issuing this command.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGRST!←
0 |
Reset DFP#
Clears all accumulated DFP history data. Use this after a significant change in site conditions or sensor placement.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGRDP!←
0 |
Factory Reset#
Restores all settings to their factory defaults and restarts the device. This is irreversible.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGFAC!←
0 |
Wake Up#
This command wakes the device from SDI-12 sleep mode and keeps it awake for approximately 1 minute.
Use this command when the automatic SDI-12 sleep mode is enabled (set with aXGCON+0!) and temporary access to the device is required. While awake, RS-232 and RS-485/Modbus interfaces remain active, allowing a connection to be established with the PC configuration application. After the timeout period expires, the device automatically returns to sleep mode if no further activity is detected.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGLWU!←
0 |