永磁同步电机矢量控制DSP程序的一个疑问
这是一个永磁同步电机矢量控制转速测定程序,有谁能解释一下他的正负过峰值的判定原理吗?为什么是和50000比较。temp1 = EvaRegs.T2CNT;
if((temp1-temp2)>=50000)
{
temp=65536-temp1+temp2;
Place_now-=temp;
temp = -temp;
}//电机(反转)过峰值
else if((temp2-temp1)>=50000)
{
temp=65536-temp2+temp1;
Place_now+=temp;//电机(正转)过峰值
}
else if(temp1 >= temp2)
{
temp=temp1-temp2;
Place_now+=temp;
}//电机(正转)
else
{
temp=temp2-temp1;
Place_now-=temp; //电机(反转)
temp = -temp;
}
temp2 = temp1;
speed_now = 6*temp; 麻烦会的大神帮忙看看哈。。。谢啦{:soso_e100:} 先把源码发过来,我再告诉你{:soso_e113:} 貌似EvaRegs.T2CNT计数值在0-66536之间吧;你这个程序在一个定时器中断里,两次定时器中断采集T2CNT的差值反应速度的高低;通过电机最高转速,定时器中断时间间隔,编码器分辨率我们可以确定T2CNT的差值一定会小于一个数字(这里取50000),如果定时器时间为10ms,电机最高速度为3000r/min,编码器2500线四倍频就是10000个脉冲一圈,这样可以计算10ms,电机最多转半圈,也就是dsp最多接收5000个脉冲,两次采集T2CNT的差值(temp2-temp1)绝对值最多为5000,考虑余量,这里取50000。
如果两次采集T2CNT的差值(temp2-temp1)>=50000说明T2CNT计算器向下溢出了,Place_now += temp2-temp1 + 65536;
如果两次采集T2CNT的差值(temp2-temp1)<=- 50000说明T2CNT计算器向上溢出了,Place_now += temp2-temp1 - 65536;
这里 + 65536和- 65536是为了校正T2CNT计算器溢出,造成的误差。
学习之中,关注一下 我觉得是因为是看电机正反转,这样子也就决定了编码器的计数方式,上溢至0还是下溢至MAX方式
页:
[1]