《FOC计算公式》由会员分享,可在线阅读,更多相关《FOC计算公式(4页珍藏版)》请在金锄头文库上搜索。
1、本文格式为Word版,下载可任意编辑FOC计算公式 FOC计算公式 1. PMSM.C中的ADC1Interrupt()AD中断处理函数中调MeasCurr.S中MeasCompCurr: 读入ACD1,ACD2(带符号小数) 校正:ADC1*CarrADC1-offset=qIa ADC2*CarrADC2-offset=qIb 2. PMSM.C中的ADC1Interrupt()中调CalculateParkAngle()对相角处理 先调用smcpos.c滑模观测器中SMC_Position_Estimation(),之中 又调用smc.s中的CalcEstI 计算估算电流I: EstIa
2、lpha=Gsmopos*(Valpha-Ealpha-Zalpha)+Fsmopos*EstIalpha - Is(n+1)=G*(V(n)-E(n)-Z(n)+F*Is(n) EstI beta=Gsmopos*(V beta-E beta-Z beta)+Fsmopos*EstI beta - Is(n+1)=G*(V(n)-E(n)-Z(n)+F*Is(n) 调smc.s中CalcIError计算实测电流与估算电流的偏差: IalphaError = EstIalpha Ialpha Ibeta Error = EstIbeta Ibeta - I= Is- I I= Is- I 调s
3、mc.s中CalcZalpha,CalcZbeta计算Z, Z: 当abs(IalphaError)Theta AccumThetaCnt+ if (AccumThetaCnt = IRP_PERCALC) Omega = AccumTheta - 求累加角+=(n)-(n-1) 更新(n-1)= (n) 累加次数m(Cnt)+=1 当m = M (速度计算需要的PWM定时次数)时,速度预算值= 此前仅算出(Omega),未算 V(速度Speed),即未找到V=Kv* Kv=60/T(测算速度时间)/磁极对数 调smc.s中CalcOmegaFltred对举行数字滤波 OmegaFltred=
4、OmegaFltred+FiltOmCoef*(Omega-OmegaFltred) - fl(n)= fl(n-1)+ Kfl *(n)- fl(n-1) Kfl:滤波系数=2Fc/Fpwm Fpwm:脉宽调制频率 Fc: 滤波器截止频率(电机最低转速*磁极对数/60) 在smcpos.c中的SMC_Position_Estimation函数中计算滤波器系数 ? Kslf = OMEGA0 * _PI / IRP_PERCALC; KslfFinal = OMEGA0 * _PI / IRP_PERCALC 在smcpos.c中的SMC_Position_Estimation函数中举行相位补
5、偿计算 ThetaOffset=OmegaFltred*(SLOPEFRACn+SLOPEINTn)+CONSTANTn 不同的速度有不同的补偿,程序分几个频段,式中3常数取不同值(n不同)。 - =fl *(Kscn+Kstn)+ Kcn 3. PMSM.C中的ADC1Interrupt()中调clrkepark.s的ClarkePark举行座标变化 Ialpha = Ia Ibeta = Ia*dOneBySq3 + 2*Ib*dOneBySq3; Id = Ialpha*cos(Angle) + Ibeta*sin(Angle) Iq = -Ialpha*sin(Angle) + Ibe
6、ta*cos(Angle) - I= Ia I=(Ia+2Ib)/3 Id = I*Cos+I*Sin Iq = -I*Sin+I*Cos 4. PMSM.C中的ADC1Interrupt()中调DoControl()举行Id,Iq,Speed的PI迭代 5. 调trig.s中的SinCos计算qSin q Cos值 6. 调InvPark.s中的InvPark 计算 qV qV值 7. 调CalcRef.s中的CalcRefVec 由qV qV计算Vr1 Vr2 Vr3 值 8. 调SVGEN.s中的CalcSVGen 由Vr1 Vr2 Vr3计算3相PWM占空比。 强制角ParkParm.qAngle(输出PWM角)和滑模估算角Smc1.Theta 电机启动时只用强制角线性递增(称斜坡法) Startup_Lock += 1 达成转速后计算强制角和估算角偏差,对强制角举行修正 计算保存:Theta_error = ParkParm.qAngle - smc1.Theta 修正量:Startup_Ramp += DELTA_STARTUP_RAMP 对强制角修正:ParkParm.qAngle += Startup_Ramp 每次0.05直到0.05:Theta_error += _0_05DEG 4