|
AM243x Motor Control SDK
09.00.00
|
|
Go to the documentation of this file.
48 #include "../dcl_common.h"
55 typedef struct dcl_pi2_sps
65 #define PI2_SPS_DEFAULTS { 1.0f, 0.0f, 1.0f, -1.0f }
91 #define PI2_DEFAULTS { 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 1.0f, \
92 &(DCL_PI2_SPS)PI2_SPS_DEFAULTS, &(DCL_CSS)DCL_CSS_DEFAULTS }
102 #define PI2_INT_DEFAULTS .i6=0.0f, .i9=0.0f, .i12=1.0f, .i13=1.0f, \
103 .sps=&(DCL_PI2_SPS)PI2_SPS_DEFAULTS, .css=&(DCL_CSS)DCL_CSS_DEFAULTS
110 #define DCL_initPI2() &(DCL_PI2)PI2_DEFAULTS
118 #define DCL_initPI2asParam(kp,ki,umax,umin) &(DCL_PI2){ .Kp=kp, .Ki=ki, \
119 .Umax=umax, .Umin=umin, PI2_INT_DEFAULTS }
131 #define DCL_initPI2asSPS(pi2_ptr,sps_ptr) \
133 DCL_PI2* new_pi = (pi2_ptr) ? pi2_ptr : DCL_initPI2(); \
134 DCL_PI2_SPS* new_sps = (sps_ptr) ? sps_ptr : &(DCL_PI2_SPS)PI2_SPS_DEFAULTS; \
137 *new_pi = (DCL_PI){ (new_sps)->Kp, (new_sps)->Ki, (new_sps)->Umax, (new_sps)->Umin,\
138 0.0f, 0.0f, 1.0f, 1.0f, (DCL_PI_SPS*)new_sps, &(DCL_CSS)DCL_CSS_DEFAULTS }; \
151 pi2->i6 = pi2->i9 = 0.0f;
152 pi2->i12 = pi2->i13 = 1.0f;
164 #ifdef DCL_ERROR_HANDLING_ENABLED
178 pi2->Ki = pi2->sps->Ki;
179 pi2->Kp = pi2->sps->Kp;
180 pi2->Umax = pi2->sps->Umax;
181 pi2->Umin = pi2->sps->Umin;
193 #ifdef DCL_ERROR_HANDLING_ENABLED
211 pi2->Ki = pi2->sps->Ki;
212 pi2->Kp = pi2->sps->Kp;
213 pi2->Umax = pi2->sps->Umax;
214 pi2->Umin = pi2->sps->Umin;
249 pi2->sps->Kp = pi2->Kp;
250 pi2->sps->Ki = pi2->Ki;
251 pi2->sps->Umax = pi2->Umax;
252 pi2->sps->Umin = pi2->Umin;
266 bool l1, l2, l3, l4, l5, l6;
270 v5 = (v1 * pi2->Ki * pi2->i12) + pi2->i6;
272 v8 = (v5 * pi2->i13) + pi2->i9;
277 l1 = (v1 > 0.0f) ?
true :
false;
278 l2 = (v14 > 0.0f) ?
true :
false;
279 l3 = (v14 == 0.0f) ?
true :
false;
280 l4 = (v5 > 0.0f) ?
true :
false;
281 l5 = l3 || (l1 ^ l2);
282 l6 = l3 || (l4 ^ l2);
283 pi2->i12 = (l5) ? 1.0f : 0.0f;
284 pi2->i13 = (l6) ? 1.0f : 0.0f;
286 #ifdef DCL_TESTPOINTS_ENABLED
299 #endif // _DCL_PI2_H_
_DCL_CODE_ACCESS _DCL_CODE_SECTION bool DCL_updatePI2(DCL_PI2 *pi2)
Updates PI2 parameter from its SPS parameter with interrupt protection.
Definition: dcl_pi2.h:190
float32_t Umax
Upper saturation limit.
Definition: dcl_pi2.h:75
Defines DCL_PI2 shadow parameter set used for updating controller parameter.
Definition: dcl_pi2.h:56
#define _DCL_CODE_SECTION
Defines dcl function section that users can specify in the linker file(.cmd) and to accelerate perfor...
Definition: dcl_common.h:60
#define DCL_clearPendingStatus(p)
Definition: dcl_css.h:129
float32_t Umin
Lower saturation limit.
Definition: dcl_pi2.h:76
#define DCL_setUpdateStatus(p)
Macros to set and clear the update-in-progress flag.
Definition: dcl_css.h:116
#define DCL_runErrorHandler(ptr)
Prototype for basic error handler.
Definition: dcl_error.h:107
@ dcl_param_range_err
Parameter range exceeded.
Definition: dcl_error.h:58
#define DCL_getUpdateStatus(p)
Determine whether a parameter update-in-progress flag is set.
Definition: dcl_css.h:123
_DCL_CODE_ACCESS void DCL_updatePI2SPS(DCL_PI2 *pi2)
Update SPS parameter with active param, userful when needing to update only few active param from SPS...
Definition: dcl_pi2.h:247
_DCL_CODE_ACCESS void DCL_fupdatePI2(DCL_PI2 *pi2)
Loads PI2 tuning parameter from its SPS parameter.
Definition: dcl_pi2.h:161
#define DCL_clearUpdateStatus(p)
Definition: dcl_css.h:117
float32_t Umax
Upper saturation limit.
Definition: dcl_pi2.h:59
#define _DCL_CODE_ACCESS
Defines the scope of dcl functions (static inline/extern inline/none)
Definition: dcl_common.h:55
_DCL_CODE_ACCESS _DCL_CODE_SECTION float32_t DCL_runPI2Series(DCL_PI2 *pi2, float32_t rk, float32_t yk)
Executes an inline series form PI2 controller on the FPU32.
Definition: dcl_pi2.h:263
float32_t Umin
Lower saturation limit.
Definition: dcl_pi2.h:60
@ dcl_none
No error.
Definition: dcl_error.h:57
_DCL_VOLATILE struct dcl_pi2 DCL_PI2
uint32_t dcl_interrupt_t
Definition: dcl_common.h:96
float32_t Ki
Integral gain.
Definition: dcl_pi2.h:74
float32_t Kp
Proportional gain.
Definition: dcl_pi2.h:73
@ dcl_param_invalid_err
Parameter not valid.
Definition: dcl_error.h:59
_DCL_VOLATILE struct dcl_pi2 * PI2_Handle
float32_t i6
Integrator 1 storage.
Definition: dcl_pi2.h:79
_DCL_CODE_ACCESS _DCL_CODE_SECTION bool DCL_pendingUpdatePI2(DCL_PI2 *pi2)
A conditional update based on the pending-for-update flag. If the pending status is set,...
Definition: dcl_pi2.h:231
#define DCL_runSat(data, Umax, Umin)
Macro to saturate a control variable but does not change the data itself unlike runClamp()
Definition: dcl_clamp.h:89
float32_t i9
Integrator 2 storage.
Definition: dcl_pi2.h:80
Defines the controller common support structure.
Definition: dcl_css.h:57
#define DCL_getPendingStatus(p)
Determine whether a parameter pending-for-update flag is set.
Definition: dcl_css.h:135
#define DCL_restoreInts(v)
Definition: dcl_common.h:95
float32_t Ki
Integral gain.
Definition: dcl_pi2.h:58
#define _DCL_VOLATILE
Defines volatile for DCL strctures Flags can be defined in dcl.h or user files before including DCL l...
Definition: dcl_common.h:68
#define DCL_getErrorInfo(ptr)
Macro to store error info in CSS.
Definition: dcl_error.h:97
float32_t i13
Saturation 2 storage.
Definition: dcl_pi2.h:82
float32_t Kp
Proportional gain.
Definition: dcl_pi2.h:57
#define DCL_setError(ptr, code)
Macro to set error code in CSS.
Definition: dcl_error.h:79
_DCL_CODE_ACCESS void DCL_resetPI2(DCL_PI2 *pi2)
Resets PI2 internal storage data with interrupt protection.
Definition: dcl_pi2.h:148
DCL_CSS * css
configuration & debugging
Definition: dcl_pi2.h:86
DCL_PI2 object for storing PI2 specific parameters PI2 - PI controller with double integrators.
Definition: dcl_pi2.h:71
float float32_t
Defines single,double precision data type. Note: Assumes ABI to be TI_EABI, does not support legacy T...
Definition: dcl_common.h:51
float32_t i12
Saturation 1 storage.
Definition: dcl_pi2.h:81
#define DCL_disableInts()
Define enable and disable interrupt operations.
Definition: dcl_common.h:94
DCL_PI2_SPS * sps
updates controller parameter
Definition: dcl_pi2.h:85