如题,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这个变量是干嘛的?最小能设为多少?谢谢!