@@ -55,6 +55,38 @@ RidenPowerSupply::RidenPowerSupply(SCPITransport* transport)
5555 // Read model number
5656 uint16_t modelNumber = ReadRegister (REGISTER_MODEL);
5757 m_model = string (" RD" ) + to_string (modelNumber/10 ) +" -" + to_string (modelNumber%10 );
58+ // Determine current and voltage factor
59+ switch (modelNumber)
60+ {
61+ case 3005 :
62+ case 5005 :
63+ case 8005 :
64+ case 60061 :
65+ case 60062 :
66+ case 60066 :
67+ m_currentFactor = 1000 ;
68+ m_voltageFactor = 100 ;
69+ break ;
70+ case 60065 :
71+ m_currentFactor = 10000 ;
72+ m_voltageFactor = 100 ;
73+ break ;
74+ case 5015 :
75+ case 5020 :
76+ case 60121 :
77+ case 60181 :
78+ case 60241 :
79+ m_currentFactor = 100 ;
80+ m_voltageFactor = 100 ;
81+ break ;
82+ case 60125 :
83+ m_currentFactor = 1000 ;
84+ m_voltageFactor = 1000 ;
85+ break ;
86+ default :
87+ m_currentFactor = 1000 ;
88+ m_voltageFactor = 100 ;
89+ }
5890 // Read serial number
5991 uint16_t serialNumber = ReadRegister (REGISTER_SERIAL);
6092 m_serial = to_string (serialNumber);
@@ -112,28 +144,28 @@ double RidenPowerSupply::GetPowerVoltageActual(int chan)
112144{
113145 if (chan != 0 )
114146 return 0 ;
115- return ((double )ReadRegister (REGISTER_V_OUT))/100 ;
147+ return ((double )ReadRegister (REGISTER_V_OUT))/m_voltageFactor ;
116148}
117149
118150double RidenPowerSupply::GetPowerVoltageNominal (int chan)
119151{
120152 if (chan != 0 )
121153 return 0 ;
122- return ((double )ReadRegister (REGISTER_V_SET))/100 ;
154+ return ((double )ReadRegister (REGISTER_V_SET))/m_voltageFactor ;
123155}
124156
125157double RidenPowerSupply::GetPowerCurrentActual (int chan)
126158{
127159 if (chan != 0 )
128160 return 0 ;
129- return ((double )ReadRegister (REGISTER_I_OUT))/1000 ;
161+ return ((double )ReadRegister (REGISTER_I_OUT))/m_currentFactor ;
130162}
131163
132164double RidenPowerSupply::GetPowerCurrentNominal (int chan)
133165{
134166 if (chan != 0 )
135167 return 0 ;
136- return ((double )ReadRegister (REGISTER_I_SET))/1000 ;
168+ return ((double )ReadRegister (REGISTER_I_SET))/m_currentFactor ;
137169}
138170
139171bool RidenPowerSupply::GetPowerChannelActive (int chan)
@@ -147,14 +179,14 @@ void RidenPowerSupply::SetPowerVoltage(int chan, double volts)
147179{
148180 if (chan != 0 )
149181 return ;
150- WriteRegister (REGISTER_V_SET,(uint16_t )(volts*100 ));
182+ WriteRegister (REGISTER_V_SET,(uint16_t )(volts*m_voltageFactor ));
151183}
152184
153185void RidenPowerSupply::SetPowerCurrent (int chan, double amps)
154186{
155187 if (chan != 0 )
156188 return ;
157- WriteRegister (REGISTER_I_SET,(uint16_t )(amps*1000 ));
189+ WriteRegister (REGISTER_I_SET,(uint16_t )(amps*m_currentFactor ));
158190}
159191
160192void RidenPowerSupply::SetPowerChannelActive (int chan, bool on)
0 commit comments