You will notice that a number is displayed, which is supposed to convey everything. The challenge lies in interpreting this number correctly, which is indeed difficult without further explanation.
Modbus slaves use a HEX value to send information to a modbus master. After receiving this HEX value, it will be converted into a decimal number. Each HEX value or decimal value stands for a very specific UPS status, which can be interpreted accordingly if a modbus list is available (That's why you need a "MODBUS LIST", you will find these lists in the appendix of the CS141 manual).
Example:
UPS_SB_OUTPUT_ACT = 0X0004 -> 4 = Inverter on = UPS OK
The query takes place by a pre-configured time window configured at the master. If the slave gets a valid request, it will answer accordingly- in this case 0X0004. This means everything is fine with the UPS.
After some time, the master queries again and receives the following answer:
UPS_SB_BACKUP_MODE = 0x0008 -> 8 battery power
On request, the Modbus slave replies with this status: „The UPS is currently running on batteries “
If the reason is an known error status, the CS141 will provide information about the reason, too:
UPS_SB_INVERTER_FAILURE = 0x0200 -> 512 Inverter Error
For the sake of simplicity and to shorten answers, the modbus slave adds the two HEX values and sends a single collective status report.
As a consequence, the decimal system status jumps from 4 to 524: 4 [inverter on], 8 [system on battery] + 512 [inverter error] on request. Since each status can only exist once a time, a unique status report can be interpreted from the result
How does it work in practice - a logical numerical example
As an example, the Modbus master asks the CS141 at address 109 for a status value and receives the number 56. This number does not mean anything at first, unless the correct list for the interpretation of the number has been stored for address 109. In this case, this list provides all required information about general status information coming with address 109 to interpret the "number 56":
| UPS Status | Hex-Value | Dec-Value | Description |
| UPS_SB_BYPASS_MODE | 0x0001 | 1 | The Bypass is presently engaged on the UPS |
| UPS_SB_SHUTDOWN | 0x0002 | 2 | The entire UPS has shutdown as commanded |
| UPS_SB_OUTPUT_ACT | 0x0004 | 4 | Normal State, the output is on |
| UPS_SB_BACKUP_MODE | 0x0008 | 8 | The UPS is drawing power from the batteries |
| UPS_SB_BATTERY_LOW | 0x0010 | 16 | The remaining battery run-time is low |
| UPS_SB_OVER_TEMP | 0x0020 | 32 | A temperature is out of tolerance |
| UPS_SB_TEST_ACT | 0x0040 | 64 | A test is in progress |
| UPS_SB_INPUT_HIGH | 0x0080 | 128 | An input condition is out of tolerance |
| UPS_SB_OUTPUT_HIGH | 0x0100 | 256 | The output load exceeds the UPS output capacity |
| UPS_SB_INVERTER_FAILURE | 0x0200 | 512 | Inverter error |
| UPS_SB_BATTERY_BAD | 0x0400 | 1024 | One or more batteries have been determined to require replacement |
| UPS_SB_ECO_MODE | 0x0800 | 2048 | eco - bypass |
| UPS_SB_INVERTER_WARN | 0x1000 | 4096 | eco - bypass |
| UPS_SB_UPS_FAILED | 0x2000 | 8192 | A general fault in the UPS has been detected |
| UPS_SB_COMM_LOST | 0x4000 | 16384 | A problem has been encountered in the communication to the UPS |
| UPS_SB_DVG_ALARM | 0x8000 | 32768 | SiteManager/SiteMonitor |
The Test in Progress status uses a count of 64. This status cannot be used.
Since the returned value is an even number, status "1" is excluded.
The values 2, 4, 8, 16, and 32 are defined in the Modbus list and may each only be used once.
Since 2 + 4 + 8 + 16 is not 56, status 32 must be included (56 − 32 = 24).
Furthermore, 2 + 4 + 8 is not 24, so the next value we are looking for is 16 (24 − 16 = 8).
Finally, 2 + 4 is not 8, so the last valid available number must be 8.
Because all other combinations are invalid, the current system status must be 32 / 16 / 8 — all three values can be found in the Modbus list as shown above.
Other device, same procedure: the GENEREX BACS Modbus list
As seen in the figure on the right, the basic principle is similar:
Ultimately, the configured Modbus list determines which addresses are available and how to use the values associated with them.
By the way, in some cases it is necessary to use mathematical formulas to calculate a usable value from a Modbus number. If required, this will be explained in the Modbus list provided by the vendor.
Current and Voltage Values
Current and voltage are measured values, but the interpretation of the numbers follows the same principles. Once both the register and the meaning of the value are known, the returned number can be easily evaluated to determine the requested system status.
Be sure to follow the instructions on how a number is to be interpreted, and refer to the documentation to convert raw numbers into measurement data. If in doubt, please contact the technical support of the respective device.
v.: 2025-07-23 FW 2.16-2.26
Comments
0 comments
Please sign in to leave a comment.