5.4. SDI-12 Protocol#
Protocol Overview#
The FX200 flow meter 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:
14= SDI protocol version 1.4GEOLUX FX200= device name, with two space characters betweenfff= current firmware version, one space character before
Request |
Response |
Example |
|---|---|---|
|
|
→
0I!←
014GEOLUX FX200 105 |
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 SDI-12 acknowledgment indicating that one value is immediately available for retrieval. No delayed service request is needed.
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
Readiness means the application is running and the device status bitmask is zero. A sleeping or initializing instrument reports not ready; this command does not start a measurement.
Request |
Response |
Example |
|---|---|---|
aV!aD0! |
a0001 CR LFa+s CR LF |
→
0V!←
00001→
0D0!←
0+1 |
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 FX200 returns 8 values, in the following order:
Discharge, in selected measurement unit,
Water level, in selected measurement unit,
Distance to water, in selected measurement unit,
Absolute surface velocity, in selected measurement unit,
Total volume, in selected measurement unit,
Flow direction flag (1 incoming, -1 outgoing, 0 no flow),
Surface velocity SNR, in dB,
Water level SNR, in dB.
The grouping of measurement values in responses to the aD0!, aD1!, aD2!, etc., commands does not necessarily follow the structure shown in the example above. The example is provided for illustration purposes only. In accordance with the SDI-12 protocol, the instrument may distribute the returned values across one or more data responses depending on the total length of the response string. Each SDI-12 response is limited in length, so the device dynamically groups values to fit within this constraint.
Request |
Response |
Example |
|---|---|---|
aM! or aMC!aD0!aD1! |
asss8 CR LFa discharge level dist vel CR LFa volume dir svrsnr levsnr CR LF |
→
0M!←
00158… after 15 seconds …
→
0D0!←
0+1.023+1.12+2.21+0.54→
0D1!←
0+10.212+1.0+48.0+42.0 |
Measure System Status#
This command will instruct the instrument to measure and return system status. The most recent status values are immediately available; this command does not start a new radar measurement.
If a CRC checksum is required to ensure data integrity, the aMC1! command shall be used instead of aM1!. This command functions identically to aM1!, 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 FX200 returns 6 values, in the following order:
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 = velocity radar co-processor not respondingBit 4 = radar co-processor needs to be updatedBit 5 = tilt sensor is not workingBit 6 = level radar co-processor not respondingBit 7 = DFP data corrupt, needs resetBit 8 = standby mode is activeBit 9 = radar is initializing
LiDAR scan status:
0= idle,1= automatic scan running,2= manual scan running.
LiDAR status is captured when aM1! or aMC1! is received. Idle means no scan is currently running, even if automatic scanning is enabled. This query does not start a scan. The concurrent/continuous aC1! and aR1! groups retain their existing five values.
The grouping of measurement values in responses to the aD0!, aD1!, aD2!, etc., commands does not necessarily follow the structure shown in the example above. The example is provided for illustration purposes only. In accordance with the SDI-12 protocol, the instrument may distribute the returned values across one or more data responses depending on the total length of the response string. Each SDI-12 response is limited in length, so the device dynamically groups values to fit within this constraint.
Request |
Response |
Example |
|---|---|---|
aM1! or aMC1!aD0! |
a0006 CR LFa fwdtilt sidetilt temp rhum status lidar_status CR LF |
→
0M1!←
00006→
0D0!←
0+1.0+0.0+22.4+39.0+0+1 |
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.
The grouping of measurement values in responses to the aD0!, aD1!, aD2!, etc., commands does not necessarily follow the structure shown in the example above. The example is provided for illustration purposes only. In accordance with the SDI-12 protocol, the instrument may distribute the returned values across one or more data responses depending on the total length of the response string. Each SDI-12 response is limited in length, so the device dynamically groups values to fit within this constraint.
Request |
Response |
Example |
|---|---|---|
aC! or aCC!aD0!aD1! |
asss08 CR LFa discharge level dist vel CR LFa volume dir svrsnr levsnr CR LF |
→
0C!←
001508… after 15 seconds …
→
0D0!←
0+1.023+1.12+2.21+0.54→
0D1!←
0+10.212+1.0+48.0+42.0 |
Identify Parameter (SDI-12 Version 1.4)#
The FX200 implements the SDI-12 version 1.4 Identify Parameter command. This command returns descriptive information about a measurement parameter supported by the instrument.
The command format is aIM_nnn!, where a is the SDI-12 device
address and nnn is the three-digit parameter number. The FX200
supports parameter numbers 001 through 008, corresponding to the
eight values returned by the standard measurement command.
The response format is:
a= device addressname= parameter nameunit= parameter unit
Request |
Response |
Example |
|---|---|---|
|
|
→
0IM_001!←
0,discharge,m3/s;→
0IM_002!←
0,level,m;→
0IM_003!←
0,distance,m;→
0IM_004!←
0,velocity,mms;→
0IM_005!←
0,volume,m3;→
0IM_006!←
0,direction, ;→
0IM_007!←
0,SNR,dB;→
0IM_008!←
0,levelSNR,dB; |
Channel Profile (High Volume Commands)#
The FX200 can return the channel cross-section profile measured by the LiDAR using the SDI-12 version 1.4 high volume commands. The profile is a list of points, each described by two coordinates:
profile_x= horizontal offset from the instrumentprofile_y= vertical distance from the instrument, corrected by the configured LiDAR offset
Both coordinates are expressed in the configured water level unit (see Water Level Output Unit).
Because a profile is far too large to be produced within the time a sensor is allowed to answer a command, it is not measured on demand. The profile source must first be selected with the Channel Profile Source command, which starts the preparation in the background. Once the source reports that it is ready, the high volume commands return the prepared profile immediately.
Until a source has been selected and prepared, all high volume commands report
that no data is available (a000000 for either aHB! or aHA!).
Note
The profile is available in both a binary and an ASCII form and both return the same data. The binary form is strongly recommended: at 1200 baud a full 499-point profile takes roughly half a minute to transfer in binary form, and considerably longer in ASCII form.
Read Profile in Binary Format#
The aHB! command reports how many values are available. The response
contains ttt = time in seconds until the data is ready, which is always
000 because the profile is prepared in advance, and nnn = the number
of values. A profile of N points returns 2N values: N profile_x
values followed by N profile_y values.
Request |
Response |
Example |
|---|---|---|
|
|
→
0HB!←
0000640 |
The values are then read with the aDBn! commands, where n is the
segment number starting at 0. Unlike every other SDI-12 response, the
response to aDBn! is binary, is transmitted as 8 data bits with no
parity, and is not terminated by CR LF:
Byte |
Content |
|---|---|
0 |
Device address |
1 – 2 |
Number of data bytes in this segment, unsigned 16-bit, low byte first |
3 |
Data type, always |
4 … |
The data bytes, each value low byte first |
last 2 |
CRC-16, low byte first, calculated over all preceding bytes of the response |
Each segment carries at most 1000 data bytes, so 250 values. The master must
keep requesting consecutive segments until a segment reports 0 data bytes and
data type 0. The values are packed continuously across the segments: a
segment boundary may fall inside the profile_x block, or between the
profile_x and profile_y blocks. The master should therefore concatenate
all segments first and split the result in half afterwards.
Request |
Response |
Example |
|---|---|---|
|
binary, see the table above |
→
0DB0!←
0 E8 03 09 <1000 data bytes> <CRC>→
0DB1!←
0 E8 03 09 <1000 data bytes> <CRC>→
0DB2!←
0 30 02 09 <560 data bytes> <CRC>→
0DB3!←
0 00 00 00 <CRC> |
Read Profile in ASCII Format#
The aHA! command reports how many values are available, in the same way as
aHB! but with a three-digit count. The values are then read with the
standard aD0! … aD999! commands. Each response carries four
values, except for a shorter final response when needed, and always ends with
a three-character CRC. This applies to both manual and automatic profiles.
Both forms return at most 499 profile points (998 coordinate values), so the value count fits in the three-digit response field.
Request |
Response |
Example |
|---|---|---|
|
|
→
0HA!←
0000640 |
|
|
→
0D0!←
0+1.234+1.310+1.387+1.463<CRC> |
Identify Profile Value#
The aIHB_nnnn! and aIHA_nnn! commands return the description of a
single profile value, where nnnn / nnn is the value number starting at
1. The response ends with a three-character CRC.
Request |
Response |
Example |
|---|---|---|
|
|
→
0IHB_0001!←
0,profile_x,m,Element 1;→
0IHB_0321!←
0,profile_y,m,Element 1; |
|
|
→
0IHA_001!←
0,profile_x,m; |
Custom (Extended) SDI-12 Commands Specific for FX200#
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!←
016 |
Set |
|
|
→
0XGMVL+15!←
015 |
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/s,1= m/s,2= mph,3= km/h,4= ft/s,5= ft/min,6= cm/s.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGMVU!←
01 |
Set |
|
|
→
0XGMVU+6!←
06 |
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!←
00 |
Set |
|
|
→
0XGDFT+2!←
02 |
SNR Threshold#
Gets / sets the SNR threshold value. See SNR Threshold for the detailed setting description.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGSTH!←
00 |
Set |
|
|
→
0XGSTH+2!←
02 |
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!←
01 |
Set |
|
|
→
0XGFLN+20!←
020 |
Discharge Output Unit#
Gets / sets the unit used for the discharge value in the SDI-12 measurement response, NMEA and on Modbus output. See Discharge Output Unit for the detailed setting description. The units are represented by the numerical value as follows:
0= m³/s,1= m³/h,2= L/s,3= L/h,4= ft³/s (cfs),5= gal/min,6= ML/day.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGDSU!←
01 |
Set |
|
|
→
0XGDSU+3!←
03 |
Water Level Output Unit#
Gets / sets the unit used for the water level and distance to water values in the SDI-12 measurement response, NMEA and on Modbus output. See Water Level Output Unit for the detailed setting description. The units are represented by the numerical value as follows:
0= mm,1= cm,2= m,3= ft,4= in.
0XGLVU+2! selects metres. To select mph for velocity output, use 0XGUNT+2!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGLVU!←
02 |
Set |
|
|
→
0XGLVU+2!←
02 |
Velocity Output Unit#
Gets / sets the unit used for the velocity value in the SDI-12 measurement response, NMEA and on Modbus output. See Surface Velocity 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!←
01 |
Set |
|
|
→
0XGUNT+0!←
00 |
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!←
00 |
Set |
|
|
→
0XGRBW+1!←
01 |
Beam Width in Azimuth (RX Mode)#
Gets / sets how the radar combines the receive channels, controlling the azimuth beam pattern. This is separate from the elevation beam width selected by aXGRBW!.
0= coherent1= sum
The default is 0 (coherent).
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGRXM!←
00 |
Set |
|
|
→
0XGRXM+1!←
01 |
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!←
00 |
Set |
|
|
→
0XGBOF+1!←
01 |
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!←
00 |
Set |
|
|
→
0XGDFP+1!←
01 |
Radar Height#
Gets / sets the vertical distance between the instrument and the water level reference point (gauge zero). The instrument uses this value to calculate and report the water level relative to the gauge zero. The corresponding measurement unit is set by aXGRHU!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGRHG!←
00 |
Set |
|
|
→
0XGRHG+12.11!←
0+12.11 |
Radar Height Unit#
Gets / sets the measurement unit used by the parameter set by aXGRHG! The valid units are:
0= mm,1= cm,2= m,3= ft,4= in.
0XGRHU+2! selects metres for radar height. This is a distance unit, so mph is not supported.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGRHU!←
02 |
Set |
|
|
→
0XGRHU+1!←
01 |
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!←
00 |
Set |
|
|
→
0XGDZ0+1!←
01 |
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!←
02 |
Set |
|
|
→
0XGDU0+1!←
01 |
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!←
030 |
Set |
|
|
→
0XGDZ1+5!←
05 |
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!←
02 |
Set |
|
|
→
0XGDU1+3!←
03 |
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!←
06 |
Set |
|
|
→
0XGSBD+1!←
01 |
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!←
01 |
Set |
|
|
→
0XGMBD+6!←
06 |
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!←
01 |
Set |
|
|
→
0XGMID+10!←
010 |
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!←
02 |
Set |
|
|
→
0XGMPA+0!←
00 |
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!←
00 |
Set |
|
|
→
0XGMSB+1!←
01 |
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!←
00 |
Set |
|
|
→
0XGNMA+1!←
01 |
Analog Output Type#
Gets / sets the which device measurement will be used to drive the analog output. The accepted values are:
0= none,1= discharge,2= water level,3= distance to water,4= surface velocity,5= total volume,6= fixed 4 mA,7= fixed 12 mA,8= fixed 20 mA.
Values outside 0 through 8 are invalid and leave the setting unchanged.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGANU!←
01 |
Set |
|
|
→
0XGANU+2!←
02 |
Analog Output Minimum Value#
Gets / sets the selected 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!←
00 |
Set |
|
|
→
0XGAV0+0.1!←
00.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 depend on the output type set by aXGANU:
For discharge:
0= m³/s1= m³/h2= l/s3= l/h4= cfs5= gal/min6= ML/day
For water level and distance to water:
0= mm1= cm2= m3= ft4= in
For surface velocity:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
For volume:
0= m³1= l2= ft³3= gal4= ML
The set command takes the numeric unit index below. Get and set responses return the unit name, not its index. For velocity the returned names are mms, ms, mph, kmh, fps, fpm and cms. For distance they are mm, cm, m, ft and in; for discharge, m3/s, m3/h, l/s, l/h, cfs, gal/min and ML/day; for volume, m3, l, ft3, gal and ML. Unit selection is unavailable for output type none or fixed current.
The examples below assume surface velocity output (0XGANU+4!).
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAU0!←
0ms |
Set |
|
|
→
0XGAU0+4!←
0fps |
Analog Output Maximum Value#
Gets / sets the selected 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!←
016 |
Set |
|
|
→
0XGAV1+10!←
010 |
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 depend on the analog output type set by aXGANU.
For discharge:
0= m³/s1= m³/h2= l/s3= l/h4= cfs5= gal/min6= ML/day
For water level and distance to water:
0= mm1= cm2= m3= ft4= in
For surface velocity:
0= mm/s1= m/s2= mph3= km/h4= ft/s5= ft/min6= cm/s
For volume:
0= m³1= l2= ft³3= gal4= ML
The set command takes the numeric unit index below. Get and set responses return the unit name, not its index. For velocity the returned names are mms, ms, mph, kmh, fps, fpm and cms. For distance they are mm, cm, m, ft and in; for discharge, m3/s, m3/h, l/s, l/h, cfs, gal/min and ML/day; for volume, m3, l, ft3, gal and ML. Unit selection is unavailable for output type none or fixed current.
The examples below assume surface velocity output (0XGANU+4!).
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGAU1!←
0ms |
Set |
|
|
→
0XGAU1+3!←
0kmh |
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!←
01 |
Set |
|
|
→
0XGCON+0!←
00 |
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!←
00 |
Set |
|
|
→
0XGMUT+1!←
01 |
Configure Fixed Mounting Angle#
Override measured forward 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!←
00 |
Set |
|
|
→
0XGFIX+1!←
01 |
Enable Wi-Fi#
Enable or disable the Wi-Fi hotspot. If automatic SDI-12 sleep is enabled, use aXGLWU! to keep the instrument awake while connecting to the hotspot. aXGWEN! is also accepted as an alias of aXGWFE!:
0= disabled1= enabled
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGWFE!←
00 |
Set |
|
|
→
0XGWFE+1!←
01 |
Set Wi-Fi Password#
Change the Wi-Fi password. This parameter is write-only. The password can contain only letters, numbers, and dash or dot character. Other characters cannot be used in the password if it is changed via SDI-12. It must contain 8 to 16 characters. The response is a1 on success or a0 for an invalid password; an invalid password leaves the existing password unchanged. The hotspot restarts when an active password is changed.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Set |
|
|
→
0XGWFP+NewPassword!←
01 |
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!←
00 |
Set |
|
|
→
0XGSDE+1!←
01 |
LiDAR Scan Period#
Gets / sets the interval between two consecutive automatic LiDAR scans of the channel cross-section, in minutes. The valid range is between 1 and 32767 minutes. This parameter is used only when the automatic LiDAR mode is enabled. See LiDAR Scan Period for the detailed setting description.
The automatic LiDAR mode and the LiDAR limit angles cannot be configured over SDI-12. Use the configuration application, the servicing protocol, or Modbus to change these settings.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XGLSP!←
015 |
Set |
|
|
→
0XGLSP+60!←
060 |
Start Manual LiDAR Scan#
Starts a single LiDAR scan of the channel cross-section. The command can be used regardless of the configured LiDAR mode. The scan takes 30 to 45 seconds to complete. If a scan is already running, the command is ignored. See Manual LiDAR Scan for the detailed description.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGSCB!←
0 |
Channel Profile Source#
Gets / sets which LiDAR scan is returned by the high volume commands, and reports how far the preparation of that profile has progressed. See Channel Profile (High Volume Commands) for how the profile itself is then read.
The valid parameters are:
0= none, no profile is published1= the last manual LiDAR scan (started withaXGSCB!)2= the last completed automatic LiDAR scan
Setting a source starts the preparation of the profile in the background. Preparing it takes a few seconds, because the recorded scan has to be read from the internal memory and the channel bed extracted from it. Both the ASCII and the binary form are prepared, so once the profile is ready either high volume command returns it immediately.
The response to both the get and the set form is source,state,points, where state describes the preparation:
0= idle, no source selected1= preparing, the high volume commands report no data yet2= ready, the profile can be read3= error, the selected scan could not be read; most often it has not been recorded yet
and points is the number of profile points that are ready to be read. A profile of N points is returned by aHB! as 2N values, N profile_x values followed by N profile_y values.
The master should therefore select a source, then repeat aXPRSRC! until the state becomes 2, and only then issue aHA! or aHB!.
Mode |
Request |
Response |
Example |
|---|---|---|---|
Get |
|
|
→
0XPRSRC!←
01,2,320 |
Set |
|
|
→
0XPRSRC+1!←
01,1,0→
0XPRSRC!←
01,1,0→
0XPRSRC!←
01,2,320 |
Note
The selected source is deliberately not stored in non-volatile memory. It returns to 0 whenever the device restarts, and also whenever the device returns to SDI-12 sleep mode, since the profile is held in volatile memory only. After a sleep period the source has to be selected again.
Selecting a source 1 or 2 while the automatic SDI-12 sleep mode is enabled (set with aXGCON+0!) wakes the device in the same way the aXGLWU! command does, so that the profile can be prepared. Every further SDI-12 command extends the awake period by approximately one minute, which keeps the device awake for the whole transfer. Approximately one minute after the last command the device returns to sleep mode.
Note
At 1200 baud a full profile takes a considerable amount of time to transfer, so reading one from a sleeping device keeps the instrument awake, and consuming power, for that entire period.
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 |
Totalizer Reset#
Resets the accumulated total volume to zero.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGRTL!←
0 |
Set Staff Gauge Reading#
Takes current reading from the staff gage to automatically adjust the radar height parameter according to the given value and current measurement of the distance to water surface. The radar height measurement unit set by aXGRHU! is used. The accepted reading is echoed with its sign. The height adjustment is applied after the acknowledgment, once the device is awake. Invalid input returns aERR. This command is write-only.
Request |
Response |
Example |
|---|---|---|
|
|
→
0XGSSG+12.221!←
0+12.221 |
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 |