三相异步电机的磁链观测法
这两天在看三相异步电机的磁链观测法里面的计算,但是一直没看明白怎么在程序中求出角度,下面是别人的程序/**********************读编码脉冲数,计算转角增量和转角绝对位置************************/
#include"qmath.h"●☆★☆★☆★☆★☆★☆★●
#define Ktheta 26844 //角度系数
extern pulse;
extern theta_m; //Q0 theta_m要进行初始定位,0~2500
unsigned int count0=0; //Q0
unsigned int theta_e;//Q0
int count; //每个电流采样周期内的脉冲增量,电机的正反转决定其正负值,正转编码器增计数,反转减计数
int sin_theta,cos_theta; //Q15
int s_count=0;//每个速度采样周期内的脉冲增量,电机的正反转决定其正负值,正转编码器增计数,反转减计数
void theta_calc()
{
unsigned int count1; //Q0
int theta_e_p; //Q0
int theta_e_pu15; //Q15
count1=pulse; //读编码脉冲数 以theta0点作为脉冲计数的零点
count=count1-count0; //计算每个电流采样周期内的编码器脉冲增量值
//处理编码器读数溢出的情况,即pulse的溢出,计数值会由65535变为0或者由0变为65535
//由于在电机正转转速为最大值3000r/min时count的值最大为50,将范围放宽一些,取值为100
//由于在电机反转转速为最大值-3000r/min时count的值最小为-50,将范围放宽一些,取值为100
if(count<-100)count=count+30000; //count溢出时的处理
else if(count>100) count=count-30000;
s_count=s_count+count;//累加速度采样周期内的脉冲增量
theta_m=count+theta_m;//机械角度,并将范围调整为(0,10000)
if(theta_m<0)
{
theta_m=theta_m+10000;
}
else if(theta_m>10000)
{
theta_m=theta_m-10000;
}
count0=count1; //更新初始计数值 Q0
//计算绝对电角度 在parke,clarke变换中用的是电角度
theta_e=4*theta_m; //电角度的范围是(0,40000)
while(theta_e>10000) //将其范围变到(0,10000)
{
theta_e=theta_e-10000;
}
theta_e_p=theta_e-5000;//范围-5000~5000
theta_e_pu15=(int)(((long)Ktheta*theta_e_p)>>12); //theta_e_pu15 为Q15格式
//计算电角度的sin,cos值,Q15格式
sin_theta=qsinlt(theta_e_pu15);//Q15
cos_theta=qcoslt(theta_e_pu15);//Q15
}
那个角度系数是怎么来的?数学模型上的计算公式和程序是怎么对应起来的呢?望高手指点指点 还有就是电角度和绝对电角度是什么关系呢?
上面程序的控制思想个人感觉像是TI公司提供的那种控制方式 没有人知道吗? 为何总是没有人回答?急用啊 电度角与机械角度之间的关系与极对数有关还与并联支路数有关系。 回复 5# hy15928088780
不管怎么样,还是很感谢你,终于有人回答了
页:
[1]