A python library for Riden RD power supplies
This library is based on Baldanos/rd6006
It appears Ruiden has changed something in recent stock firmware versions that may break modbus communication.
I would recommend using UniSoft's custom firmware which is based on older stock firmware, but adds many, many new features.
Optional:
- Firmware UniSoft's custom firmware
Requirements:
- Python 3.7 or later
$ pip install --user git+https://github.com/shaybox/riden.git
Adding to an existing poetry project:
$ poetry add git+https://github.com/shaybox/riden.git
There's a script to print out basic information about the power supply:
$ riden --port=/dev/ttyUSB0 --baudrate 115200
ID : 60181
SN : 00011608
FW : 136
TYPE : RD6018
INT_C : 29
INT_F : 84
V_SET : 0.0
I_SET : 0.0
V_OUT : 0.0
I_OUT : 0.0
P_OUT : 0.0
V_IN : 68.07
KEYPAD : False
OVP_OCP : None
CV_CC : CV
OUTPUT : False
PRESET : 0
BAT_MODE: False
V_BAT : 0.0
EXT_C : -89
EXT_F : -128
AH : 0.0
WH : 0.0
DATETIME: 2022-02-13 11:26:02
TAKE_OK : True
TAKE_OUT: False
BOOT_POW: False
BUZZ : False
LOGO : False
LANG : 0
LIGHT : 5
from riden import Riden
# These are the default values for port, baudrate, and address
r = Riden(port="/dev/ttyUSB0", baudrate=115200, address=1)
# Getters and Setters are available
r.set_v_set(4.20)
r.set_i_set(0.69)
print(r.get_v_set())
print(r.get_i_set())
# Mass polling is available as well
# This reduces the number of reads to the device
r.update()
print(r.v_set)
print(r.i_set)
There's also a Bootloader
class that can be used to update the firmware.
This is based on tjko/riden-flashtool
$ riden --port=/dev/ttyUSB0 --baudrate 115200 --firmware path/to/firmware.bin
from riden import Bootloader
# Address is only required to reboot the device into bootloader mode via modbus
# These values are the defaults
Bootloader(port="/dev/ttyUSB0", baudrate=115200, address=1).flash("path/to/firmware.bin")
Reg ID | Description | |
---|---|---|
0 | ID | |
1 | Serial number high bytes | |
2 | Serial number low bytes | |
3 | Firmware version | |
4 | Temperature °c sign (0=+, 1=-) | |
5 | Temperature °c | |
6 | Temperature F sign (0=+, 1=-) | |
7 | Temperature F | |
8 | Voltage set value | |
9 | Current set value | |
10 | Voltage display value | |
11 | Current display value | |
12 | AH display value | |
13 | Power display value | |
14 | Voltage input | |
15 | Keypad lock | |
16 | Protection status (1=OVP, 2=OCP) | |
17 | CV/CC (0=CV, 1=CC) | |
18 | Output enable | |
19 | Change preset | |
20 | Current range (On RD6012p 0=6A, 1=12A) | |
32 | Battery mode active | |
33 | Battery voltage | |
34 | External temperature °c sign (0=+, 1=-) | |
35 | External temperature °c | |
36 | External temperature F sign (0=+, 1=-) | |
37 | External temperature F | |
38 | Ah high bytes | |
39 | Ah low bytes | |
40 | Wh high bytes | |
41 | Wh low bytes | |
48 | Year | |
49 | Month | |
50 | Day | |
51 | Hour | |
52 | Minute | |
53 | Second | |
55 | Output Voltage Zero | |
56 | Output Voltage Scale | |
57 | Back Voltage Zero | |
58 | Back Voltage Scale | |
59 | Output Current Zero | |
60 | Output Current Scale | |
61 | Back Current Zero | |
62 | Back Current Scale | |
66 | Settings Take ok | |
67 | Settings Take out | |
68 | Settings Boot pow | |
69 | Settings Buzzer | |
70 | Settings Logo | |
71 | Settings Language | |
72 | Settings Backlight | |
80 | M0 V | |
81 | M0 A | |
82 | M0 OVP | |
83 | M1 OCP | |
84 | M1 V | |
85 | M1 A | |
86 | M1 OVP | |
87 | M1 OCP | |
88 | M2 V | |
89 | M2 A | |
90 | M2 OVP | |
91 | M2 OCP | |
92 | M3 V | |
93 | M3 A | |
94 | M3 OVP | |
95 | M3 OCP | |
96 | M4 V | |
97 | M4 A | |
98 | M4 OVP | |
99 | M4 OCP | |
100 | M5 V | |
101 | M5 A | |
102 | M5 OVP | |
103 | M5 OCP | |
104 | M6 V | |
105 | M6 A | |
106 | M6 OVP | |
107 | M6 OCP | |
108 | M7 V | |
109 | M7 A | |
110 | M7 OVP | |
111 | M7 OCP | |
112 | M8 V | |
113 | M8 A | |
114 | M8 OVP | |
115 | M8 OCP | |
116 | M9 V | |
117 | M9 A | |
118 | M9 OVP | |
119 | M9 OCP | |
256 | SYSTEM |