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

?!

a CR LF

?!
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

a!

a CR LF

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

aAb!

b CR LF

0A5!
5

Get Device Identification#

The device will respond with its identification information:

  • 14 = SDI protocol version 1.4

  • GEOLUX  FX200 = device name, with two space characters between

  • fff = current firmware version, one space character before

Request

Response

Example

aI!

a14GEOLUX  FX200 fff CR LF

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 ready

  • 1 = 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 LF

a+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:

  1. Discharge, in selected measurement unit,

  2. Water level, in selected measurement unit,

  3. Distance to water, in selected measurement unit,

  4. Absolute surface velocity, in selected measurement unit,

  5. Total volume, in selected measurement unit,

  6. Flow direction flag (1 incoming, -1 outgoing, 0 no flow),

  7. Surface velocity SNR, in dB,

  8. 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 LF

a discharge level dist vel CR LF

a 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:

  1. Forward tilt angle, in degrees,

  2. Side tilt angle, in degrees,

  3. Device temperature, in °C,

  4. Device relative humidity, in %,

  5. Device error status bitmask:
    Bit 0 = forward tilt angle error
    Bit 1 = side tilt angle error
    Bit 2 = radar co-processor update failed
    Bit 3 = velocity radar co-processor not responding
    Bit 4 = radar co-processor needs to be updated
    Bit 5 = tilt sensor is not working
    Bit 6 = level radar co-processor not responding
    Bit 7 = DFP data corrupt, needs reset
    Bit 8 = standby mode is active
    Bit 9 = radar is initializing
  6. 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 LF

a 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 LF

a discharge level dist vel CR LF

a 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 address

  • name = parameter name

  • unit = parameter unit

Request

Response

Example

aIM_nnn!

a,name,unit; CR LF

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 instrument

  • profile_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

aHB!

a ttt nnn CR LF

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 9 (IEEE-754 32-bit floating point)

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

aDBn!

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

aHA!

a ttt nnn CR LF

0HA!
0000640

aDn!

a value CRC CR LF

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

aIHB_nnnn!

a,name,unit,Element k; CRC CR LF

0IHB_0001!
0,profile_x,m,Element 1;

0IHB_0321!
0,profile_y,m,Element 1;

aIHA_nnn!

a,name,unit; CRC CR LF

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

aXGMVL!

a value CR LF

0XGMVL!
016

Set

aXGMVL value!

a value CR LF

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

aXGMVU!

a value CR LF

0XGMVU!
01

Set

aXGMVU value!

a value CR LF

0XGMVU+6!
06

Direction Filter#

Gets / sets the direction filter configuration. See Direction Filter for the detailed setting description.

  • 0 = measure both directions

  • 1 = incoming flow only

  • 2 = outgoing flow only

Mode

Request

Response

Example

Get

aXGDFT!

a value CR LF

0XGDFT!
00

Set

aXGDFT value!

a value CR LF

0XGDFT+2!
02

SNR Threshold#

Gets / sets the SNR threshold value. See SNR Threshold for the detailed setting description.

Mode

Request

Response

Example

Get

aXGSTH!

a value CR LF

0XGSTH!
00

Set

aXGSTH value!

a value CR LF

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

aXGFLN!

a value CR LF

0XGFLN!
01

Set

aXGFLN value!

a value CR LF

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

aXGDSU!

a value CR LF

0XGDSU!
01

Set

aXGDSU value!

a value CR LF

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

aXGLVU!

a value CR LF

0XGLVU!
02

Set

aXGLVU value!

a value CR LF

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/s

  • 1 = m/s

  • 2 = mph

  • 3 = km/h

  • 4 = ft/s

  • 5 = ft/min

  • 6 = cm/s

Mode

Request

Response

Example

Get

aXGUNT!

a value CR LF

0XGUNT!
01

Set

aXGUNT value!

a value CR LF

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 = wide

  • 1 = narrow

Mode

Request

Response

Example

Get

aXGRBW!

a value CR LF

0XGRBW!
00

Set

aXGRBW value!

a value CR LF

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 = coherent

  • 1 = sum

The default is 0 (coherent).

Mode

Request

Response

Example

Get

aXGRXM!

a value CR LF

0XGRXM!
00

Set

aXGRXM value!

a value CR LF

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 = near

  • 1 = far

Mode

Request

Response

Example

Get

aXGBOF!

a value CR LF

0XGBOF!
00

Set

aXGBOF value!

a value CR LF

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 = disabled

  • 1 = enabled

Mode

Request

Response

Example

Get

aXGDFP!

a value CR LF

0XGDFP!
00

Set

aXGDFP value!

a value CR LF

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

aXGRHG!

a value CR LF

0XGRHG!
00

Set

aXGRHG value!

a value CR LF

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

aXGRHU!

a value CR LF

0XGRHU!
02

Set

aXGRHU value!

a value CR LF

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

aXGDZ0!

a value CR LF

0XGDZ0!
00

Set

aXGDZ0 value!

a value CR LF

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 = mm

  • 1 = cm

  • 2 = m

  • 3 = ft

  • 4 = in

Mode

Request

Response

Example

Get

aXGDU0!

a value CR LF

0XGDU0!
02

Set

aXGDU0 value!

a value CR LF

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

aXGDZ1!

a value CR LF

0XGDZ1!
030

Set

aXGDZ1 value!

a value CR LF

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 = mm

  • 1 = cm

  • 2 = m

  • 3 = ft

  • 4 = in

Mode

Request

Response

Example

Get

aXGDU1!

a value CR LF

0XGDU1!
02

Set

aXGDU1 value!

a value CR LF

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 = 4800

  • 1 = 9600

  • 2 = 14400

  • 3 = 19200

  • 4 = 38400

  • 5 = 57600

  • 6 = 115200

Mode

Request

Response

Example

Get

aXGSBD!

a value CR LF

0XGSBD!
06

Set

aXGSBD value!

a value CR LF

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 = 4800

  • 1 = 9600

  • 2 = 14400

  • 3 = 19200

  • 4 = 38400

  • 5 = 57600

  • 6 = 115200

Mode

Request

Response

Example

Get

aXGMBD!

a value CR LF

0XGMBD!
01

Set

aXGMBD value!

a value CR LF

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

aXGMID!

a value CR LF

0XGMID!
01

Set

aXGMID value!

a value CR LF

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 = none

  • 1 = odd

  • 2 = even

Mode

Request

Response

Example

Get

aXGMPA!

a value CR LF

0XGMPA!
02

Set

aXGMPA value!

a value CR LF

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 = one

  • 1 = two

Mode

Request

Response

Example

Get

aXGMSB!

a value CR LF

0XGMSB!
00

Set

aXGMSB value!

a value CR LF

0XGMSB+1!
01

Disable NMEA Output#

Gets / sets the parameter that disables NMEA sentence output on RS-232. The valid values are:

  • 0 = NMEA enabled

  • 1 = NMEA disabled

Mode

Request

Response

Example

Get

aXGNMA!

a value CR LF

0XGNMA!
00

Set

aXGNMA value!

a value CR LF

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

aXGANU!

a value CR LF

0XGANU!
01

Set

aXGANU value!

a value CR LF

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

aXGAV0!

a value CR LF

0XGAV0!
00

Set

aXGAV0 value!

a value CR LF

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³/s

  • 1 = m³/h

  • 2 = l/s

  • 3 = l/h

  • 4 = cfs

  • 5 = gal/min

  • 6 = ML/day

For water level and distance to water:

  • 0 = mm

  • 1 = cm

  • 2 = m

  • 3 = ft

  • 4 = in

For surface velocity:

  • 0 = mm/s

  • 1 = m/s

  • 2 = mph

  • 3 = km/h

  • 4 = ft/s

  • 5 = ft/min

  • 6 = cm/s

For volume:

  • 0 = m³

  • 1 = l

  • 2 = ft³

  • 3 = gal

  • 4 = 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

aXGAU0!

a unit_name CR LF

0XGAU0!
0ms

Set

aXGAU0 value!

a unit_name CR LF

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

aXGAV1!

a value CR LF

0XGAV1!
016

Set

aXGAV1 value!

a value CR LF

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³/s

  • 1 = m³/h

  • 2 = l/s

  • 3 = l/h

  • 4 = cfs

  • 5 = gal/min

  • 6 = ML/day

For water level and distance to water:

  • 0 = mm

  • 1 = cm

  • 2 = m

  • 3 = ft

  • 4 = in

For surface velocity:

  • 0 = mm/s

  • 1 = m/s

  • 2 = mph

  • 3 = km/h

  • 4 = ft/s

  • 5 = ft/min

  • 6 = cm/s

For volume:

  • 0 = m³

  • 1 = l

  • 2 = ft³

  • 3 = gal

  • 4 = 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

aXGAU1!

a unit_name CR LF

0XGAU1!
0ms

Set

aXGAU1 value!

a unit_name CR LF

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 enabled

  • 1 = sleep disabled (continuous scanning)

Mode

Request

Response

Example

Get

aXGCON!

a value CR LF

0XGCON!
01

Set

aXGCON value!

a value CR LF

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

aXGMUT!

a value CR LF

0XGMUT!
00

Set

aXGMUT value!

a value CR LF

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

aXGFIX!

a value CR LF

0XGFIX!
00

Set

aXGFIX value!

a value CR LF

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 = disabled

  • 1 = enabled

Mode

Request

Response

Example

Get

aXGWFE!

a value CR LF

0XGWFE!
00

Set

aXGWFE value!

a value CR LF

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

aXGWFP value!

a 1 CR LF

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

aXGSDE!

a value CR LF

0XGSDE!
00

Set

aXGSDE value!

a value CR LF

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

aXGLSP!

a value CR LF

0XGLSP!
015

Set

aXGLSP value!

a value CR LF

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

aXGSCB!

a CR LF

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 published

  • 1 = the last manual LiDAR scan (started with aXGSCB!)

  • 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 selected

  • 1 = preparing, the high volume commands report no data yet

  • 2 = ready, the profile can be read

  • 3 = 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

aXPRSRC!

a source,state,points CR LF

0XPRSRC!
01,2,320

Set

aXPRSRC value!

a source,state,points CR LF

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

aXGRST!

a CR LF

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

aXGRDP!

a CR LF

0XGRDP!
0

Factory Reset#

Restores all settings to their factory defaults and restarts the device. This is irreversible.

Request

Response

Example

aXGFAC!

a CR LF

0XGFAC!
0

Totalizer Reset#

Resets the accumulated total volume to zero.

Request

Response

Example

aXGRTL!

a CR LF

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

aXGSSG value!

a signed_value CR LF

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

aXGLWU!

a CR LF

0XGLWU!
0