This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
问题一、Clarke、IPark、svgen_dq这些都是_iq类型,这个是浮点数类型嘛?由于CCS6.2无法打开工程,所以都是看源文件,在IQmathLib里面有定义是浮点数,不知道是不是就这里定义。
问题二、Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha); 这个计算里面_IQmpy是乘法运算,那么v->Ualpha是浮点数,另外一个是Q格式,在进行_IQmpy运算时,是怎么处理的,浮点数转成Q格式,在进行运算?
问题三、如果问题一上面说的是浮点数,那么Clarke、IPark、计算出来的结果是不是会大于或者超过 1,这样是不是在PID那里会进行限制。还是说Clarke、IPark、这些的输入量就已经限制了,不会出现大于1的。
问题四、clarke1.As = _IQ15toIQ((int32)ilg2_vdc1.ImeasA);这个计算里是不是先将ilg2_vdc1.ImeasA(原本是Q15格式16位的数据)转换成Q0格式,这样就将小数部分转换为整数了,是这样的嘛?那为什么要强制转换成32位呢?
问题比较多,希望TI的工程师能一一解答。
问题一、Clarke、IPark、svgen_dq这些都是_iq类型,这个是浮点数类型嘛?由于CCS6.2无法打开工程,所以都是看源文件,在IQmathLib里面有定义是浮点数,不知道是不是就这里定义。
ERIC: IQMATH 有两种格式,一种是定点,一般在定点的芯片上,如F28035, 另一种可以设置为浮点形式,在带浮点运算单元的芯片,如F28335, F28069上。之所以有IQMath为浮点的格式,是为了兼容以前一些程序是基于定点的芯片来开发的,而现在程序跑在浮点芯片上,想用浮点去处理。当然,在浮点芯片上也可以直接用定点格式的IQMATH。是在IQmathLib.h头文件中定义到底是浮点还是定点。
问题二、Vb = _IQmpy(_IQ(-0.5),v->Ubeta) + _IQmpy(_IQ(0.8660254),v->Ualpha); 这个计算里面_IQmpy是乘法运算,那么v->Ualpha是浮点数,另外一个是Q格式,在进行_IQmpy运算时,是怎么处理的,浮点数转成Q格式,在进行运算?
ERIC: 从你这个函数来看,v->Ubeta 是IQ格式,它要跟一个浮点-0.5相乘,必须将0.5转换成对应的IQ格式。这里不管IQ格式是定点还是浮点,all work.
问题三、如果问题一上面说的是浮点数,那么Clarke、IPark、计算出来的结果是不是会大于或者超过 1,这样是不是在PID那里会进行限制。还是说Clarke、IPark、这些的输入量就已经限制了,不会出现大于1的。
ERIC:如果是浮点,为何会出现超过1的情况呢,我不明白。
问题四、clarke1.As = _IQ15toIQ((int32)ilg2_vdc1.ImeasA);这个计算里是不是先将ilg2_vdc1.ImeasA(原本是Q15格式16位的数据)扩大到32位,然后在转换成Q0格式,这样就将小数部分转换为整数了,是这样的嘛?
ERIC: 这里的含义是,输入信号被ADC采样后,其实就是一个Q15格式的数据,即信号被放大了2^15, 然后再通过IQ15> IQ格式的方式转换成跟大家统一的运算格式。
ERIC
问题二:v->Ubeta 是IQ格式,那么在它的前面是IPARK给它幅值的,
void ipark_calc(IPARK *v)
{
float32 Cosine,Sine;
if (v->Angle+0.25 > 1.0)
{
Sine = sin_tab[(int16)(v->Angle*256)];
Cosine = sin_tab[(int16)(v->Angle*256) - 192];
}
else
{
Sine = sin_tab[(int16)(v->Angle*256)];
Cosine = sin_tab[(int16)(v->Angle*256) + 64];
}
v->Alpha = v->Ds*Cosine - v->Qs*Sine;
v->Beta = v->Qs*Cosine + v->Ds*Sine;
}
那么上面红色的结果也是IQ格式,可是Cosine、Sine是浮点数,不要处理嘛?