5.0 SDI-12 Supported Commands

Please refer to the document: SDI-12: A Serial Digital Interface Standard for Microprocessor-Based Sensors, Version 1.3, July 18, 2005, prepared by the SDI-12 Support Group (Technical Committee), for a complete description of the SDI-12 protocol. (http://www.sdi-12.org/).

The following commands are supported:


In all the following SDI-12 commands discussed, 'a' = the SDI-12 device address assigned the AquaVent


5.1 Acknowledge Active Command: a!

This command is used to ensure that an AquaVent is responding to the SDI- 12 master. A typical command/reply would be: 0!0<CR><LF> where the '0's represents the AquaVent SDI-12 device address and <CR> represents a carriage return (Hex 0D) and <LF> represents a line feed (Hex 0A). All replies from an AquaVent are terminated with <CR><LF>. All SDI-12 master commands are terminated with an exclamation mark '!' character.


5.2 Address Query Command: ?!

Using a question mark (?) as the address character causes the AquaVent to respond with the acknowledge active 'a!' command where 'a' represents the AquaVent address. A typical command/reply would be: ?!0<CR><LF>. The bold-faced characters are sent to the AquaVent; the normal type-face is the AquaVent's reply. In this case the AquaVent address is "0". This command is good for determining the AquaVent address, if it is the only datalogger connected on the SDI-12 network.


5.3 Send Identification Command: aI!

This command is used to query AquaVent loggers for their SDI-12 compatibility level, model number, and firmware version number. A typical command/reply would be: 0I! 013SOLINST M20 10 1.000 1017687<CR><LF> where the first "0" is the AquaVent address, "13" represents SDI-12 V1.3 protocol support, "SOLINST " identifies the AquaVent manufacturer, "M20" defines the AquaVent logger model number, "10" is the hardware identifier, "1.000" specifies the current firmware version, and "1017687" represents the AquaVent logger's serial number.


5.4 Change Address Command: aAb!

This command is NOT supported by the Solinst AquaVent system (see Section 3.1).


5.5 Start Measurement Command: aM!

This command tells the AquaVent to take a measurement. However, the measurement is not returned after this command. Instead, the time and number of measurements that can be expected will be replied. For example: 0M!00102<CR><LF> where the first "0" is the AquaVent address, the next three digits "010" represent the time in seconds it will take the AquaVent to take the readings, and the final "2" indicates how many readings will be returned. The Solinst AquaVent will return a temperature and level measurement which are always ready to be read after the specified time, after that the SDI-12 master can issue the Send Data command 0D0! to retrieve the measurement data. Other start measurement commands such as aM1 to aM9 are reserved for future use.


5.6 Start Measurement Command with Checksum: aMC!


Checksum is a form of redundant test, which is used to check for any errors in the data.

This command is identical to the aM! command with the exception that a threecharacter checksum is returned before the <CR><LF> as part of the Send Data command reply. The aMC1 to aMC9 commands are reserved for future use.


5.7 Send Data Command: aD0!

This command is used to get groups of data from the AquaVent. An aD0! command is issued by the master after a M, MC, C, CC, or V command. The AquaVent responds by sending the data. For a Solinst AquaVent, this is currently two data items: temperature and level measurements. A typical command/reply is:


The actual units in use are not reported to the SDI-12 master while the AquaVent is in SDI-12 mode, but it is possible to change level units using the Solinst Levelogger PC Software (see Section 3.1).

0D0!0+24.2981+0.35212<CR><LF> where the temperature is the "+24.2981" in degrees Celsius and the level is the "+0.35212" in meters. It is possible to change level units using Levelogger Software, but the actual units in use are not reported while the AquaVent is in SDI-12 mode.

In response to a checksum request i.e. MC, CC; a typical command/reply is: 0D0!0+24.2981+0.35212MQ_<CR><LF> where the temperature and level are as before and the final "MQ_" is the checksum. Refer to the SDI- 12 specification for details on the checksum generation. For the M and C commands if a measurement cannot be obtained, the D command will return 0000<CR><LF> to indicate the measurement could not be obtained. The aD1 to aD9 commands are reserved for future use.


5.8 Start Concurrent Measurement Command: aC!

This command is similar to the Start Measurement Command except a concurrent measurement is taken. Like the Start Measurement Command, a Send Data Command is required to retrieve the data. For example: 0C!000302<CR><LF>. The reply indicates that two readings (temperature and pressure) are available after 3 seconds. A 0D0! command is then issued to read these AquaVent values. The aC1 to aC9 commands are reserved for future use.


5.9 Start Concurrent Measurement Command with Checksum: aCC!

This command is similar to the Start Concurrent Measurement with the addition of a checksum. For example: 0CC!000302<CR><LF> would then, after 3 seconds, reply to the aD0! command as follows:

0D0!0+24.6038+0.34513L<DEL>j<CR><LF>. Where "L<DEL>j" is the checksum for the two measurement values "+24.6038 + 0.34513. The aCC1 to aCC9 commands are reserved for future use.


5.10 Start Verification Command: aV!

This command tells the SPX Wellhead to return a verification (self-test) code in response to a subsequent aD0! command. In this case, the SPX Wellhead returns a non-zero time because the self-test execution verifies all internal memory checksums and these operations take about 13 seconds. A typical session would appear as follows:

0V!00131<CR><LF> indicates that one status reading will be ready in about 13 seconds.

0<CR><LF> is a service request from the SPX Wellhead within 13 seconds to indicate that the BIT operations are complete and the verification code is available.

0D0!0+000 is the Send Data command from the SDI-12 master device to obtain the BIT verification code of "+000" which indicates that no faults were found. The possible fault codes are shown in Table 5-1. All the decimal representations of the individual faults are summed to arrive at the resultant BIT verification code. An included bit in a certain bit position means the corresponding test has failed.


Code Bit Position Decimal Representation Test Meaning
0 1 Read Write AquaVent logger
1 2 SPX Wellhead FRAM Memory Test
2 4 SPX Wellhead FLASH Memory Checksum Test
3 8 N/A
4 16 N/A
5 32 N/A
6 64 N/A
7 128 N/A

Table 5-1 BIT Verification Fault Codes