SK120X Power Supply Modbus RTU Protocol Reference
1. Communication Settings
The SK120X uses the standard Modbus RTU protocol over a TTL serial interface.
| Parameter | Value |
|---|---|
| Interface | TTL Serial |
| Baud Rate | Configurable (Default: 115200) |
| Data Bits | 8 |
| Stop Bits | 1 |
| Parity | None |
| Flow Control | None |
| Slave Address | 1-247 (Default: 1) |
Frame Timing
2. Data Format & Scaling
All data is transmitted as 16-bit Integers (Big Endian). To get the actual physical value, the raw integer must be divided by a Scaling Factor (determined by the decimal points defined for that register).
Scaling Examples
| Unit | Decimals | Scaling Divisor | Raw Value | Actual Value |
|---|---|---|---|---|
| Voltage (V) | 2 | / 100 | 2400 | 24.00 V |
| Current (A) | 3 | / 1000 | 1500 | 1.500 A |
| Power (W) | 2 | / 100 | 1250 | 12.50 W |
| Temp (°C/°F) | 1 | / 10 | 355 | 35.5 ° |
| Time | 0 | / 1 | 60 | 60 |
3. Function Codes
The device supports the following Modbus function codes:
| Code | Name | Description |
|---|---|---|
| 0x03 | Read Holding Registers | Read current values, settings, and status. |
| 0x06 | Write Single Register | Set a single parameter (e.g., Set Voltage). |
| 0x10 | Write Multiple Registers | Set multiple parameters (e.g., Set Volts & Amps). |
4. System Register Map (Real-time Data)
These registers control the active state of the power supply.
| Address (Hex) | Address (Dec) | Name | R/W | Unit | Scale | Description |
|---|---|---|---|---|---|---|
| 0x0000 | 0 | V-SET | R/W | V | 100 | Target Output Voltage |
| 0x0001 | 1 | I-SET | R/W | A | 1000 | Target Output Current Limit |
| 0x0002 | 2 | VOUT | R | V | 100 | Actual Output Voltage |
| 0x0003 | 3 | IOUT | R | A | 1000 | Actual Output Current |
| 0x0004 | 4 | POWER | R | W | 100 | Actual Output Power |
| 0x0005 | 5 | UIN | R | V | 100 | Input Voltage |
| 0x0006 | 6 | AH-LOW | R | mAh | 1 | Accumulated Capacity (Low 16-bits) |
| 0x0007 | 7 | AH-HIGH | R | mAh | 1 | Accumulated Capacity (High 16-bits) |
| 0x0008 | 8 | WH-LOW | R | mWh | 1 | Accumulated Energy (Low 16-bits) |
| 0x0009 | 9 | WH-HIGH | R | mWh | 1 | Accumulated Energy (High 16-bits) |
| 0x000A | 10 | OUT_H | R | H | 1 | Runtime (Hours) |
| 0x000B | 11 | OUT_M | R | M | 1 | Runtime (Minutes) |
| 0x000C | 12 | OUT_S | R | S | 1 | Runtime (Seconds) |
| 0x000D | 13 | T_IN | R | °C/F | 10 | Internal Temperature |
| 0x000E | 14 | T_EX | R | °C/F | 10 | External Probe Temperature |
| 0x000F | 15 | LOCK | R/W | - | 1 | Key Lock (0: Unlock, 1: Locked) |
| 0x0010 | 16 | PROTECT | R/W | - | 1 | Protection Status Code (Read-only mostly) |
| 0x0011 | 17 | CVCC | R | - | 1 | Mode (0: CV - Constant Voltage, 1: CC - Constant Current) |
| 0x0012 | 18 | ONOFF | R/W | - | 1 | Output Enable (0: OFF, 1: ON) |
| 0x0013 | 19 | F-C | R/W | - | 1 | Temp Unit (0: Celsius, 1: Fahrenheit) |
| 0x0014 | 20 | B-LED | R/W | - | 1 | Backlight Brightness (0-5) |
| 0x0015 | 21 | SLEEP | R/W | M | 1 | Screen Sleep Time (0-9 minutes, 0=Always On) |
| 0x0016 | 22 | MODEL | R | - | 1 | Product Model ID |
| 0x0017 | 23 | VERSION | R | - | 1 | Firmware Version |
| 0x0018 | 24 | SLAVE-ADD | R/W | - | 1 | Modbus Slave Address (1-247) |
| 0x0019 | 25 | BAUDRATE | R/W | - | 1 | Baud Rate Index |
| 0x001A | 26 | T-IN-CAL | R/W | °C/F | 10 | Internal Temp Calibration Offset |
| 0x001B | 27 | T-EX-CAL | R/W | °C/F | 10 | External Temp Calibration Offset |
| 0x001C | 28 | BUZZER | R/W | - | 1 | Buzzer (0: OFF, 1: ON) |
| 0x001D | 29 | EXTRACT-M | R/W | - | 1 | Quick Load Data Group (Write 0-9 to load M0-M9) |
5. Data Group Registers (Presets M0-M9)
The device stores 10 groups of settings (M0-M9).
The table below shows offsets for Data Group N (where N is 0 to 9).
| Offset | Function | R/W | Unit | Scale | Description |
|---|---|---|---|---|---|
| +0x00 | V-SET | R/W | V | 100 | Preset Voltage |
| +0x01 | I-SET | R/W | A | 1000 | Preset Current |
| +0x02 | S-LVP | R/W | V | 100 | Low Voltage Protection (LVP) |
| +0x03 | S-OVP | R/W | V | 100 | Over Voltage Protection (OVP) |
| +0x04 | S-OCP | R/W | A | 1000 | Over Current Protection (OCP) |
| +0x05 | S-OPP | R/W | W | 10 | Over Power Protection (OPP) |
| +0x06 | S-OHP_H | R/W | H | 1 | Max Runtime (Hours) |
| +0x07 | S-OHP_M | R/W | M | 1 | Max Runtime (Minutes) |
| +0x08 | S-OAH_L | R/W | mAh | 1 | Max Capacity (Low 16-bit) |
| +0x09 | S-OAH_H | R/W | mAh | 1 | Max Capacity (High 16-bit) |
| +0x0A | S-OWH_L | R/W | 10mWh | 1 | Max Energy (Low 16-bit) |
| +0x0B | S-OWH_H | R/W | 10mWh | 1 | Max Energy (High 16-bit) |
| +0x0C | S-OTP | R/W | °C/F | 1 | Over Temperature Protection |
| +0x0D | S-INI | R/W | - | 1 | Power-On Output State (0: OFF, 1: ON) |
Example Addresses:
6. Enumerated Values
6.1 Protection Status Codes
Read register 0x0010 to determine why the output was cut off.
| Value | Code | Meaning |
|---|---|---|
| 0 | Normal | Operating normally |
| 1 | OVP | Over Voltage Protection triggered |
| 2 | OCP | Over Current Protection triggered |
| 3 | OPP | Over Power Protection triggered |
| 4 | LVP | Low Voltage Protection (Input undervoltage) |
| 5 | OAH | Max Capacity (Ah) limit reached |
| 6 | OHP | Max Runtime limit reached |
| 7 | OTP | Over Temperature Protection triggered |
| 8 | OEP | External Temperature Protection |
| 9 | OWH | Max Energy (Wh) limit reached |
| 10 | ICP | In-Circuit/Reverse Protection (Specific to model) |
6.2 Baud Rate Index
Read/Write register 0x0019.
| Value | Baud Rate |
|---|---|
| 0 | 9600 |
| 1 | 14400 |
| 2 | 19200 |
| 3 | 38400 |
| 4 | 56000 |
| 5 | 57600 |
| 6 | 115200 |
7. Communication Examples
Example 1: Turn Output ON
Write 1 to Address 0x0012.
Example 2: Set Voltage to 24.00V
Write 2400 (0x0960) to Address 0x0000.
Example 3: Read Live Voltage and Current
Read 2 registers starting at 0x0002.