4.5 AquaVent MODBUS Status and Diagnostic Codes

4.5.1 Device Status

There are two types of Device Status bits. Both types of bits remain in the cleared state during normal operation, resulting in a register value of zero. The "State" type bits simply indicate a current condition, and will be cleared only when that condition is resolved. The "Event" type bits are set by an event, and will remain set until the client writes to the register, clearing the bit, as a way of acknowledging the event. It is suggested that you make use of the MODBUS function 0x16 (Mask Write Register). Keep in mind that an "Event" bit only represents device history as far back as the last time it was cleared.

Some events are normal, and only require acknowledgement to clear them. These are called "Event-Acknowledge" bits. Other events require intervention, which is enacted when you clear the bit. These are called "Event-Retry" bits.

Device Status bit map:

Bit Type Description
0 Event -Ack. Power cycle (power-up event) detected.
1 State Communication setting not synchronized with probe.
2   Reserved
3   Reserved
4   Reserved
5   Reserved
6   Reserved
7 State BIT test in progress - some registers unavailable
8-15   Reserved


4.5.2 Diagnostic Tests

Diagnostics are performed on the AquaVent logger by writing any non-zero value to the "Probe Test Vector" registers. Bits that are set in the "Probe Test Vector" registers determine which routines will be executed. The results will eventually be available for reading from the "Probe Test Results" registers, where the same bit positions are used, and a set bit indicates a failed test, while clear bits either were not selected for testing, or passed the test successfully.


During these tests the AquaVent logger will not be available for other functions.

Some of these tests will take a long time to process, and while waiting for completion, any MODBUS request involving the AquaVent logger will generate a MODBUS exception response with code 1, "Illegal Function". To avoid this uncertainty, you may poll the "Device Status" register, and wait for the "Waiting for completion of logger diagnostic test(s)" bit to clear.

Probe Test Vector & Probe Test Results bit map:

Bit Test Description
0 Battery Voltage test (Bit 0). The external A/D's battery voltage will be used to generate a power supply fault whenever the voltage is below 3.1V.
1 Program FLASH checksum test (Bit 1). The program memory computed checksum is compared to a 4-byte checksum stored in FLASH.
2 Information FLASH checksum test (Bit 2). The information memory computed checksum is compared to a 2-byte checksum stored in FLASH.
3 FRAM test (Bit 3). We will read/write various test patterns to the entire FRAM device. Any data in the FRAM is preserved. LTCG will only test portions of the FRAM.
4 Logging Memory test 1 (Bit 4). Blocks of bytes are non-destructively written/verified for the first 512-byte segment of each 4096 byte logging memory page for the low-memory device.
5 Logging Memory test 2 (Bit 5). As 5) except the high-memory device is tested.
6 Temperature Sensor test (Bit 6). The raw temperature sensor A/D value is read. If this reading is between 740000H and E50000H, the test will pass.
7 Pressure Sensor test (Bit 7). The raw pressure sensor A/D value is read. If this reading is between 810000H and B000000H, the test will pass.
8 Full Logging memory test (Bit 8). Blocks of bytes are non-destructively written/verified for the entire logging memory range. A full memory test of all bytes typically takes about 5 to 10 seconds—depending on the amount of installed logging memory.
9 Reserved
10 Bootloader FLASH checksum test (Bit 10). The bootloader memory computed checksum is compared to a 4-byte checksum stored in FLASH.
11 Leak Detection test (Bit 11). If a water leak has been detected, this bit will be set.
12-31 Bits 12 to 31 are reserved for future use. These should be set to '0'.


4.5.3 Exception Response Codes

MODBUS Exception codes supported:

Code Name Comment
Standard codes
0x01 Illegal Function Unsupported MODBUS function code
0x02 Illegal Address Register range requested extends beyond supported register map
0x03 Illegal data value Request structure is invalid
0x04 - 0x05 Reserved  
0x06 Slave Device Busy The request could not be processed at this time, but is expected to be available immanently. The client may retry the request later.
0x07-0x0B Reserved  
Solinst extended codes
0x80 Field Mismatch Address used doesn't match the beginning of a valid register field, or byte count doesn't match size of data type being addressed.
0x81 Write only register Attempting to read from a write only register
0x83 Reserved  
0x84 Write value Attempting to write data that is outside the valid range for the variable being addressed.
0x85-0xA4 Reserved  
0xB0 Unknown Probe The wellhead translator doesn't recognize the probe type.
0xB1 Bad String Malformed string (incomplete/invalid Unicode/characters, incorrect termination/padding, etc.)
0xB2 Long String String is too long to fit internally.
0xB3 Probe Timed-out Solinst bus response timed-out
0xB4 Bad probe CRC returning Solinst Bus CRC error received at wellhead.
0xB5 Bad probe CRC sending Solinst Bus CRC error received by Probe (returning BCC offset by+ 7).
0xB6 Probe exception Solinst Probe Other fault (Probe returns BCC offset by +56).