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:
|0||Event -Ack.||Power cycle (power-up event) detected.|
|1||State||Communication setting not synchronized with probe.|
|7||State||BIT test in progress - some registers unavailable|
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:
|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.|
|10||Bootloader FLASH checksum test (Bit 10). The bootloader memory computed checksum is compared to a 4-byte checksum stored in FLASH.|
|11-31||Bits 11 to 31 are reserved for future use. These should be set to ‘0’.|
4.5.3 Exception Response Codes
MODBUS Exception codes supported:
|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.|
|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|
|0x84||Write value||Attempting to write data that is outside the valid range for the variable being addressed.|
|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).|