TI滑模观测器的滑模面选择
请问TI的滑模观测器算法中滑模面选择是以什么为标准选择的,我看算法里写的E0=_IQ(0.5),这里的标定大小是以什么为基准标定的。求大神指点。下面是TI的SMO算法。#ifndef __SMOPOS_H__
#define __SMOPOS_H__
typedef struct {_iqValpha; // Input: Stationary alfa-axis stator voltage
_iqEalpha; // Variable: Stationary alfa-axis back EMF
_iqZalpha; // Output: Stationary alfa-axis sliding control
_iqGsmopos; // Parameter: Motor dependent control gain
_iqEstIalpha; // Variable: Estimated stationary alfa-axis stator current
_iqFsmopos; // Parameter: Motor dependent plant matrix
_iqVbeta; // Input: Stationary beta-axis stator voltage
_iqEbeta; // Variable: Stationary beta-axis back EMF
_iqZbeta; // Output: Stationary beta-axis sliding control
_iqEstIbeta; // Variable: Estimated stationary beta-axis stator current
_iqIalpha; // Input: Stationary alfa-axis stator current
_iqIalphaError; // Variable: Stationary alfa-axis current error
_iqKslide; // Parameter: Sliding control gain
_iqIbeta; // Input: Stationary beta-axis stator current
_iqIbetaError;// Variable: Stationary beta-axis current error
_iqKslf; // Parameter: Sliding control filter gain
_iqTheta; // Output: Compensated rotor angle
_iqE0; // Parameter: 0.5
} SMOPOS;
/*-----------------------------------------------------------------------------
Default initalizer for the SMOPOS object.
-----------------------------------------------------------------------------*/
#define SMOPOS_DEFAULTS {0,0,0,0,0,0,0,0,0,0,0, \
0,0,0,0,0,0,_IQ(0.5) \
}
/*------------------------------------------------------------------------------
Prototypes for the functions in SMOPOS.C
------------------------------------------------------------------------------*/
#define SMO_MACRO(v) \
\
/* Sliding mode current observer */ \
v.EstIalpha = _IQmpy(v.Fsmopos,v.EstIalpha) + _IQmpy(v.Gsmopos,(v.Valpha-v.Ealpha-v.Zalpha)); \
v.EstIbeta= _IQmpy(v.Fsmopos,v.EstIbeta)+ _IQmpy(v.Gsmopos,(v.Vbeta -v.Ebeta -v.Zbeta )); \
\
/* Current errors */ \
v.IalphaError = v.EstIalpha - v.Ialpha; \
v.IbetaError= v.EstIbeta- v.Ibeta; \
\
/*Sliding control calculator */ \
/* v.Zalpha=v.IalphaError*v.Kslide/v.E0) where E0=0.5 here*/ \
v.Zalpha = _IQmpy(_IQsat(v.IalphaError,v.E0,-v.E0),_IQmpy2(v.Kslide)); \
v.Zbeta= _IQmpy(_IQsat(v.IbetaError ,v.E0,-v.E0),_IQmpy2(v.Kslide)); \
\
/* Sliding control filter -> back EMF calculator */ \
v.Ealpha = v.Ealpha + _IQmpy(v.Kslf,(v.Zalpha-v.Ealpha)); \
v.Ebeta= v.Ebeta+ _IQmpy(v.Kslf,(v.Zbeta -v.Ebeta)); \
\
/* Rotor angle calculator -> Theta = atan(-Ealpha,Ebeta) */ \
v.Theta = _IQatan2PU(-v.Ealpha,v.Ebeta);
#endif 你要知道他的的0.5是个什么东西,这就要把他的代码仔细读一遍了 0.5是函数sat的限幅值,目的是调节开关函数线性边界层范围(本人初学者,欢迎讨论) TI只能看一个思路,观测器最后还是自己写比较好,很多参数你不去调一下不理解的 楼主软件在哪能下到
页:
[1]