INOS
cinoscurcontrol.h
Go to the documentation of this file.
1//******************************************************************************
27//******************************************************************************
28
29#ifndef INC_CINOSCURCONTROL_H
30#define INC_CINOSCURCONTROL_H
31
32//------------------------------------------------------------------------------
33// defines
34//------------------------------------------------------------------------------
35//
36#define DF_INOS_CUR_CONTROL_DBT "INOS-CUR-CONTROL" // db table name
37#define DF_INOS_CUR_CONTROL_NAME "CINOSCurControl" // control name
38//
39// --- controller flags --------------------------------------------------------
40//
41#define DF_INOS_CUR_CONTROL_FLAG_ENB_FFS 0x01000000 // enable feed forward S
42#define DF_INOS_CUR_CONTROL_FLAG_ENB_FFT 0x02000000 // enable feed forward T
43#define DF_INOS_CUR_CONTROL_FLAG_ENB_SIN 0x04000000 // enable sinus mode
44#define DF_INOS_CUR_CONTROL_FLAG_ENB_DZ 0x08000000 // enable deadzone ctrl
45//
46//------------------------------------------------------------------------------
47// includes
48//------------------------------------------------------------------------------
49//
50// system
51#include <cinosbasecontrol.h>
52//
53// C++
54//
55// project
56//
57//------------------------------------------------------------------------------
58//--- structures ---------------------------------------------------------------
59//------------------------------------------------------------------------------
60//
61struct SPidCur
62 //; structure of PID parameters
63{
64 real64 m_rKp;
65 real64 m_rKi;
66 real64 m_rKd;
67 real64 m_rVff;
68 real64 m_rAff;
69 real64 m_rTi;
70 real64 m_rTd;
71 real64 m_rBff;
72};
73
79{
82 real64 m_rKpHalt;
83
86 real64 m_rTiHalt;
87
90 real64 m_rTdHalt;
91
94 real64 m_rKpRun;
95
98 real64 m_rTiRun;
99
102 real64 m_rTdRun;
103
106 real64 m_rVff;
107
110 real64 m_rAff;
111
114 real64 m_rBff;
115
119
122 real64 m_rImax;
123
126 real64 m_rTmax;
127
131
134 real64 m_rSff;
135
139
142 real64 m_rTff;
143};
144
145//------------------------------------------------------------------------------
146// class definition
147//------------------------------------------------------------------------------
148//
150{
151 //--- user interface ---------------------------------------------------
152
153 // public member functions
154 public :
155
156 // constructor/destructor
157
158 explicit CINOSCurControl(SINOSCurControl* apDesc);
159 //; constructor
160 virtual ~CINOSCurControl();
161 //; destructor
162
163 virtual CINCOObject* GetRegister();
164 //; do inco registration and return pointer to it
165
166 //--- internals --------------------------------------------------------
167
168 friend class CINCOCurCtrPar;
169 friend class CINCOCurCtrSff;
170 friend class CINCOCurCtrTff;
171 friend class CINCOCurCtrEnbTff;
172 friend class CINCOCurCtrEnbSff;
173 friend class CINCOCurCtrEnbSin;
174
175 // protected member functions
176 protected:
177 virtual void Reset();
178 //; reset controller values (called whenever the controller is
179 //; switched on)
180 ICACHE virtual void Control();
181 //; do a control cycle
182 ICACHE virtual real64 CalcFeedForward();
183 //; calculate feedforward
184 void SinusMode();
185 //; sinus mode handler
186 void Freq1();
187 //; sinus mode frequency 1
188 void Freq2();
189 //; sinus mode frequency 2
190 void Sweep(real64 arFre1, real64 arFreq2, real64 arTime);
191 //; sinus mode sweep between freq1 and freq2
192 void Stop();
193 //; sinus mode stop
194 // protected members
195 protected:
196 uint8 m_uActSet;
197 //; actual PID set (0-halt, 1-run)
198
199 // controller parameters (0-halt, 1-run)
200 SPidCur m_Pid[2];
201 //; pid parameters
202 real64 m_rTintMax;
203 //; max. allowed torque integrator
204 real64 m_rImax;
205 //; max. allowed current
206 real64 m_rTtoI;
207 //; torque to current
208
209 // actual values
210
211 real64 m_rTact;
212 //; actual torque
213 real64 m_rTController;
214 //; actual torque of controller
215 real64 m_rTFeedForward;
216 //; actual torque of feedforward
217 real64 m_rIact;
218 //; actual current
219
220 // error values
221
222 real64 m_rSerrInc;
223 //; actual S error [inc]
224 real64 m_rTint;
225 //; actual error integral [Nm]
226 real64 m_rVerrFilt;
227 //; actual filtered V error [inc/s]
228 real64 m_rVerrInc;
229 //; actual V error [inc/s]
230 real64 m_rVerrInc_1;
231 //; last V error [inc/s]
232 real64 m_rVerrInc_2;
233 //; before last V error [inc/s]
234
235 real64 m_rSff;
236 //; feed forward S gain
237 real64 m_rSoffset;
238 //; feed forward S offset
239 real64 m_rTff;
240 //; feed forward torque
241
242 // misc.
243 uint32 m_uNumDiff;
244 //; actual selected V filter
245
246 // sinus control
247 uint32 m_uSinType;
248 //; 0-single, 1-sweep, 2-stopping
249 real64 m_rSinOff;
250 //; sinus mode offset
251 real64 m_rSinAmp;
252 //; sinus mode amplitude
253 real64 m_rSinF1cmd;
254 //; sinus mode commanded frequency 1
255 real64 m_rSinF2cmd;
256 //; sinus mode commanded frequency 2
257 real64 m_rSinFact;
258 //; sinus mode actual frequency
259 real64 m_rSinFend;
260 //; sinus mode requested end frequency
261 real64 m_rSinFdel;
262 //; sinus mode delta frequency
263 real64 m_rSinTcmd;
264 //; sinus mode time to reach next frequency
265 real64 m_rSinTact;
266 //; sinus mode actual time base
267
268 // allow dynamic object handling (new/delete)
269 DECLARE_DYNAMIC_CACHE(CINOSCurControl);
270};
271
272
273//------------------------------------------------------------------------------
274// end of file
275//------------------------------------------------------------------------------
276
277#endif // INC_CINOSCURCONTROL_H
Short comment.
Definition cinosbasecontrol.h:319
Definition cinoscurcontrol.h:150
Descriptor structure used to configure a controller. It is usually defined in a corresponding xxx....
Definition cinosbasecontrol.h:197
Descriptor structure used to configure a controller. It is usually defined in a corresponding xxx....
Definition cinoscurcontrol.h:79
real64 m_rVff
Feed forward V.
Definition cinoscurcontrol.h:106
uint32 m_uNumDiff
Requested number of speed filter.
Definition cinoscurcontrol.h:130
real64 m_rKpHalt
Kp [*] parameter of the PID controller used in halt mode.
Definition cinoscurcontrol.h:82
real64 m_rTiHalt
Ti [ms] parameter of the PID controller used in halt mode.
Definition cinoscurcontrol.h:86
real64 m_rSoffset
Feed forward S offset.
Definition cinoscurcontrol.h:138
real64 m_rTiRun
Ti [ms] parameter of the PID controller used in run mode.
Definition cinoscurcontrol.h:98
real64 m_rKpRun
Kp [*] parameter of the PID controller used in run mode.
Definition cinoscurcontrol.h:94
real64 m_rTmax
Torque at max. current [Nm].
Definition cinoscurcontrol.h:126
real64 m_rTdRun
Td [ms] parameter of the PID controller used in run mode.
Definition cinoscurcontrol.h:102
real64 m_rSff
Feed forward S gain.
Definition cinoscurcontrol.h:134
real64 m_rAff
Feed forward A.
Definition cinoscurcontrol.h:110
real64 m_rBff
Feed forward B.
Definition cinoscurcontrol.h:114
real64 m_rImax
Max. allowed current [A].
Definition cinoscurcontrol.h:122
real64 m_rTff
Feed forward torque.
Definition cinoscurcontrol.h:142
real64 m_rTdHalt
Td [ms] parameter of the PID controller used in halt mode.
Definition cinoscurcontrol.h:90
real64 m_rTintMax
Max. allowed torque integrator [Nm].
Definition cinoscurcontrol.h:118
Definition cinoscurcontrol.h:63