TI中文支持网
TI专业的中文技术问题搜集分享网站

sensorless_BLDC控制中的com_tirg.h问题请教

如题,com_tirg.h中有三个函数,CMTN_TRIG_MACRO(v)、NOISE_WINDOW_CNT_MACRO(v)和DELAY_30DEG_MACRO(v),程序中有几个问题想请教一下:

1、NOISE_WINDOW_CNT_MACRO(v) 中这段是什么意思,v.CmtnDelay是什么作用? 

if (v.CmtnDelay >= v.NWDelayThres)                      /* noise window is fixed Value*/ \
v.NoiseWindowMax = v.NWDelayThres – v.NWDelta;                                                    \
else                                                                   /* noise window adjusted dynamically*/ \
v.NoiseWindowMax = v.CmtnDelay – v.NWDelta;

2、DELAY_30DEG_MACRO(v)为什只在v.CmtnPointer == 5中出现? 

else if (v.CmtnPointer == 5) 

v.DebugBemf = _IQmpy(_IQ(3),v.Va) – v.Neutral; 
if (v.DebugBemf < 0) 
v.NoiseWindowCounter = 0; 
else 
NOISE_WINDOW_CNT_MACRO(v); 
DELAY_30DEG_MACRO(v); 

Hank Zhao:

1,NOISE_WINDOW_CNT_MACRO(v) 中这段是用来去抖动,由于换相时的电压波动比较大,加上这段程序可以防止程序将波动期间的电压当做过零点。v.CmtnDelay是过零点和换相点之间的延时。

如题,com_tirg.h中有三个函数,CMTN_TRIG_MACRO(v)、NOISE_WINDOW_CNT_MACRO(v)和DELAY_30DEG_MACRO(v),程序中有几个问题想请教一下:

1、NOISE_WINDOW_CNT_MACRO(v) 中这段是什么意思,v.CmtnDelay是什么作用? 

if (v.CmtnDelay >= v.NWDelayThres)                      /* noise window is fixed Value*/ \
v.NoiseWindowMax = v.NWDelayThres – v.NWDelta;                                                    \
else                                                                   /* noise window adjusted dynamically*/ \
v.NoiseWindowMax = v.CmtnDelay – v.NWDelta;

2、DELAY_30DEG_MACRO(v)为什只在v.CmtnPointer == 5中出现? 

else if (v.CmtnPointer == 5) 

v.DebugBemf = _IQmpy(_IQ(3),v.Va) – v.Neutral; 
if (v.DebugBemf < 0) 
v.NoiseWindowCounter = 0; 
else 
NOISE_WINDOW_CNT_MACRO(v); 
DELAY_30DEG_MACRO(v); 

Hank Zhao:

2,DELAY_30DEG_MACRO(v)只在一个周期调用一次就可以了,所以在一个周期的结尾调用一次。

如题,com_tirg.h中有三个函数,CMTN_TRIG_MACRO(v)、NOISE_WINDOW_CNT_MACRO(v)和DELAY_30DEG_MACRO(v),程序中有几个问题想请教一下:

1、NOISE_WINDOW_CNT_MACRO(v) 中这段是什么意思,v.CmtnDelay是什么作用? 

if (v.CmtnDelay >= v.NWDelayThres)                      /* noise window is fixed Value*/ \
v.NoiseWindowMax = v.NWDelayThres – v.NWDelta;                                                    \
else                                                                   /* noise window adjusted dynamically*/ \
v.NoiseWindowMax = v.CmtnDelay – v.NWDelta;

2、DELAY_30DEG_MACRO(v)为什只在v.CmtnPointer == 5中出现? 

else if (v.CmtnPointer == 5) 

v.DebugBemf = _IQmpy(_IQ(3),v.Va) – v.Neutral; 
if (v.DebugBemf < 0) 
v.NoiseWindowCounter = 0; 
else 
NOISE_WINDOW_CNT_MACRO(v); 
DELAY_30DEG_MACRO(v); 

xiangyu huang:

回复 Hank Zhao:

你好!谢谢你的回答,但是原理上不是应该每一个过零点后都应该有30°角的延时吗?为什么只在在一个周期的结尾调用一次

如题,com_tirg.h中有三个函数,CMTN_TRIG_MACRO(v)、NOISE_WINDOW_CNT_MACRO(v)和DELAY_30DEG_MACRO(v),程序中有几个问题想请教一下:

1、NOISE_WINDOW_CNT_MACRO(v) 中这段是什么意思,v.CmtnDelay是什么作用? 

if (v.CmtnDelay >= v.NWDelayThres)                      /* noise window is fixed Value*/ \
v.NoiseWindowMax = v.NWDelayThres – v.NWDelta;                                                    \
else                                                                   /* noise window adjusted dynamically*/ \
v.NoiseWindowMax = v.CmtnDelay – v.NWDelta;

2、DELAY_30DEG_MACRO(v)为什只在v.CmtnPointer == 5中出现? 

else if (v.CmtnPointer == 5) 

v.DebugBemf = _IQmpy(_IQ(3),v.Va) – v.Neutral; 
if (v.DebugBemf < 0) 
v.NoiseWindowCounter = 0; 
else 
NOISE_WINDOW_CNT_MACRO(v); 
DELAY_30DEG_MACRO(v); 

user4057038:

回复 Hank Zhao:

您好,请问NWDelta这个变量是干嘛的?最小能设为多少?谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » sensorless_BLDC控制中的com_tirg.h问题请教
分享到: 更多 (0)