RockSeed RS310P
Status | work-in-progress |
---|---|
Source code | etommens-etm-xxxxp |
Channels | 1 |
Voltage/current (CH1) | varies |
Connectivity | serial over USB |
Features | programmable presets, values, output, over-(voltage,current,power) thresholds. |
Please note: This page is a work in progress, more to come. This is a very low cost programmable switching power-supply providing up to 30V and 10A.
Hardware
Model | Topology | Voltage | Current | Max Power |
---|---|---|---|---|
RS310P | Buck | 0-30V | 0-10A | 300W |
Protocol
Modbus RTU only function codes 0x03 and 0x06 are supported (according to the pdf that came with the device).(Wikipedia). Baudrate defaults to 9600, 1 start bit, 8 data bits, no checkbits and 1 stop bit. Registers are 16bits, bigendian.
Name | Register Address | Access |
---|---|---|
Output State | 0x0001 | RW |
Protection State | 0x0002 | R |
Model ID | 0x0004 | R |
Output Voltage | 0x0010 | R |
Output Current | 0x0011 | R |
Output Power high bits | 0x0012 | R |
Output Power low bits | 0x0013 | R |
Voltage Target | 0x0030 | RW |
Current Limit | 0x0031 | RW |
OVP Value | 0x0020 | RW |
OCP Value | 0x0021 | RW |
OPP Value high bits | 0x0022 | RW |
OPP Value low bits | 0x0023 | RW |
Decimals | 0x0005 | R |
1. There is actually no OPP button on the power supply, but the protocol documentation lists, the address for it. Not relevant at the moment for a driver, since sigrok seems to have no OPP support anyway. 2. In the protocol documentation there is no mention of how to set the presets M1 to M6. But it seems they start at address 0x1000. This needs to be researched still, but I currently do not know how to handle presets in sigrok, so I need to find that out too. Also there is some other addresses listed in config files that are with the software provided, these need to be researched too.
3. The Protection State registers contains looks as follow and the designated bit goes high if the protection state is active:
Bit | Designation |
---|---|
0 | OVP |
1 | OCP |
2 | OPP |
3 | OTP |
4 | SCP |
5 | |
6 | |
7 | |
8 |
the 2nd byte does not give any information, and seems to always be 0.
4. The decimals registers contains the the decimal information for Voltage, Current and Power. The lower 12 bits are used with 4bits for each value. If the register content is 0x0321, it means Voltage has 3 decimals, Current 2 and Power 1.
Researched Registers:
Name | Register Address | Access | Notes |
---|---|---|---|
Voltage upper Limit (UH) | 0xC11E | R | 4 bytes long, contains high voltage limit (like the limit you get when turning the knob on the device), did not even try to write to it, values are same as current in format so divide int value by 10^digits |
Current upper Limit (IH) | 0xC12E | R | 4 bytes long, contains high current limit (like the limit you get when turning the knob on the device), did not even try to write to it, values are same as current in format so divide int value by 10^digits |
Voltage lower Limit? (UL) | 0xC110 | R | 4 bytes long, not sure what this is, it contains the value 10. But my supply outputs at 1 already. |
Current lower Limit? (IL) | 0xC120 | R | 4 bytes long, not sure what this is, it contains the value 21. And my power supply actually only starts outputting when set to 21mA or above. |
Buzzer | 0x8804 | RW | 2 bytes long, you can enable (write 0x0001) or disable (write 0x0000) the buzzer. It beeps on every single click (and on startup ) so probably no one wants to enable this ever. |
defaultshow | 0x8802 | ? | 2 bytes long, no idea what it is about |
powerstat | 0x8801 | ? | 2 bytes long, no idea what it is about |
scp | 0x8803 | R | 2 bytes long, no idea what it is about, i can't write to it, maybe my model just has no scp support? |
sdtime | 0xCCCC | ? | 2 bytes long, no idea what it is about |
settimespan | 0x0032 | ? | 2 bytes long, timespan till it auto disables output, but only if you use the preset list function. Don't see how this is useful for anything since the value only matters per preset. |
preset voltage | 0x1000+(0 to 5)*10 | RW | 2 bytes long, registers for presets M1 to M6 |
preset current | 0x1001+(0 to 5)*10 | RW | 2 bytes long, registers for presets M1 to M6 |
preset timespan | 0x1002+(0 to 5)*10 | RW | 2 bytes long, registers for presets M1 to M6, max value 9999 (this is seconds, so max is about 2,78h) |
preset enabled (included in list) | 0x1003+(0 to 5)*10 | RW | 2 bytes long, registers for presets M1 to M6 |