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 //
61 struct 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 
118  real64 m_rTintMax;
119 
122  real64 m_rImax;
123 
126  real64 m_rTmax;
127 
130  uint32 m_uNumDiff;
131 
134  real64 m_rSff;
135 
138  real64 m_rSoffset;
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() override;
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() override;
178  //; reset controller values (called whenever the controller is
179  //; switched on)
180  ICACHE virtual void Control() override;
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
SINOSCurControl::m_rBff
real64 m_rBff
Feed forward B.
Definition: cinoscurcontrol.h:114
CINOSCurControl
Definition: cinoscurcontrol.h:149
CINOSBaseControl
Definition: cinosbasecontrol.h:318
SINOSCurControl::m_rAff
real64 m_rAff
Feed forward A.
Definition: cinoscurcontrol.h:110
SPidCur
Definition: cinoscurcontrol.h:61
SINOSCurControl::m_rTff
real64 m_rTff
Feed forward torque.
Definition: cinoscurcontrol.h:142
SINOSCurControl::m_rTiHalt
real64 m_rTiHalt
Ti [ms] parameter of the PID controller used in halt mode.
Definition: cinoscurcontrol.h:86
SINOSCurControl::m_rSoffset
real64 m_rSoffset
Feed forward S offset.
Definition: cinoscurcontrol.h:138
SINOSCurControl
Descriptor structure used to configure a controller. It is usually defined in a corresponding xxx....
Definition: cinoscurcontrol.h:78
SINOSCurControl::m_uNumDiff
uint32 m_uNumDiff
Requested number of speed filter.
Definition: cinoscurcontrol.h:130
SINOSCurControl::m_rSff
real64 m_rSff
Feed forward S gain.
Definition: cinoscurcontrol.h:134
SINOSCurControl::m_rVff
real64 m_rVff
Feed forward V.
Definition: cinoscurcontrol.h:106
SINOSCurControl::m_rTintMax
real64 m_rTintMax
Max. allowed torque integrator [Nm].
Definition: cinoscurcontrol.h:118
SINOSCurControl::m_rTiRun
real64 m_rTiRun
Ti [ms] parameter of the PID controller used in run mode.
Definition: cinoscurcontrol.h:98
SINOSCurControl::m_rImax
real64 m_rImax
Max. allowed current [A].
Definition: cinoscurcontrol.h:122
SINOSCurControl::m_rTmax
real64 m_rTmax
Torque at max. current [Nm].
Definition: cinoscurcontrol.h:126
SINOSCurControl::m_rKpHalt
real64 m_rKpHalt
Kp [*] parameter of the PID controller used in halt mode.
Definition: cinoscurcontrol.h:82
SINOSCurControl::m_rTdRun
real64 m_rTdRun
Td [ms] parameter of the PID controller used in run mode.
Definition: cinoscurcontrol.h:102
cinosbasecontrol.h
Short comment.
SINOSCurControl::m_rKpRun
real64 m_rKpRun
Kp [*] parameter of the PID controller used in run mode.
Definition: cinoscurcontrol.h:94
SINOSCurControl::m_rTdHalt
real64 m_rTdHalt
Td [ms] parameter of the PID controller used in halt mode.
Definition: cinoscurcontrol.h:90
SINOSBaseControl
Descriptor structure used to configure a controller. It is usually defined in a corresponding xxx....
Definition: cinosbasecontrol.h:196