资源简介
MICROCHIP方案的PLL观测器C语言实现。无静差影响,在磁链值与电阻值 电感值调试正确的情况下较滑膜观测器具有更准确的角度以获得更高的效率。
代码片段和文件信息
__ramfunc int32_t ATAN2_LT(int32_t axint32_t bx)
{
int32_t EX_flagdx_changecx_tmp;
int32_t ax_interbx_inter;
ax_inter = ax;
bx_inter = bx;
EX_flag = 0;
if(ax_inter == 0 && bx_inter == 0)
{
cx_tmp = 0;
return cx_tmp;
}
if(ax_inter < 0)
{
ax_inter = -ax_inter;//????
EX_flag = 1;
//CALANG_1
}
//CALANG_1
if(bx_inter < 0)
{
bx_inter = -bx_inter;
EX_flag |= 0x2;
//CALANG_2
}
//CALANG_2
if(ax_inter < bx_inter)
{
dx_change = ax_inter;
ax_inter = bx_inter;
bx_inter = dx_change;//????
EX_flag |= 0x4;
//CALANG_3
}
//CALANG_3
if(ax_inter != 0)
{
cx_tmp = (bx_inter * VALUE_Q15) / ax_inter;
cx_tmp = atan0245_LT(cx_tmp);
if((EX_flag & 0x4)==0x04)//bit2
{
cx_tmp = 0x4000 - cx_tmp;
//CALANG_4
}
//CALANG_4
EX_flag &= 3;
if(EX_flag != 0)
{
if(EX_flag != 1)
{
//CALANG_5
if(EX_flag != 3)
{
//CALANG_6
cx_tmp = 0x10000 - cx_tmp;
//CALANG_END
}
else
{
cx_tmp = 0x8000 + cx_tmp;
//CALANG_END
}
}
else
{
cx_tmp = 0x8000 - cx_tmp;
//CALANG_END
}
}
}
//CALANG_END
return cx_tmp;
}
//******************************************************************************
//电机1的转子角度估计
__ramfunc void motor_estimat_theta(void)
{
const Q15 lambda = motor.Motor_PhiF_pu;
const Q15 L = ((Q15_3div2)* motor.Motor_Lq_pu) / VALUE_Q15;//((Q15_3div2)* motor.Motor_Lq_pu) / VALUE_Q15;
const Q15 R = ((Q15_3div2)* motor.Motor_Rs_pu) / VALUE_Q15;//((Q15_3div2)* motor.Motor_Rs_pu) / VALUE_Q15;
Q15 ia_pu = motor_fbk.Ialpha_fbk_pu;
Q15 ib_pu = motor_fbk.Ibeta_fbk_pu;
Q15 U_alpha = motor_Estimate.Ualpha_pll_compens;
Q15 U_beta = motor_Estimate.Ubeta_pll_compens;
Q15 I_alpha_Diff = ia_pu - motor_fbk.I_alpha_pre;
Q15 I_beta_Diff = ib_pu - motor_fbk.I_beta_pre;
Q15 ia_Diff_ML = L * (ia_pu - motor_fbk.I_alpha_pre) / VALUE_Q15;
Q15 ib_Diff_ML = L * (ib_pu - motor_fbk.I_beta_pre) / VALUE_Q15;
motor_fbk.E_alpha = U_alpha - R * ia_pu / VALUE_Q15 - (ia_Diff_ML / DT) * VALUE_Q15;
motor_fbk.E_beta = U_beta - R * ib_pu / VALUE_Q15 - (ib_Diff_ML / DT) * VALUE_Q15;
motor_Estimate.E_alpha_filt = (motor_Estimate.E_alpha_filt * VALUE_Q15 + motor_Estimate.Klsf_Q15 *(motor_fbk.E_alpha - motor
- 上一篇:用mfc实现的计算器
- 下一篇:线性表的基础训练 链表
相关资源
- 新编Windows API参考大全.doc
- LVGL 英文参考手册
- C语言程序设计教材习题参考答案.do
- 《面向对象的程序设计语言——C++》
- c++语言程序设计第三版清华大学出版
- 新概念C++程序设计大学教程第2版张基
- C++数字水印完整系统参考
- 数据结构与算法分析C++语言描述第四
- UART串口通信论文参考
- C语言参考手册 第五版 PDF扫描无水印
- GDI+SDK参考文档
- C语言试题集-高清版含参考答案.pdf
- Visual_C++程序设计与应用教程课后答案
- MPEG-2视频编解码参考代码
- 参考文献管理系统(PowerBuuilderMySQLM
- C语言参考手册第五版(高清PDF中文版
- C++ STL参考手册
- Microsoft Win32 程序员参考大全5.pdf(6个
- QT实现的聊天界面,好友列表,支持文
- 计算机图形学大作业参考代码(VC版)
- 标准模板库自修教程与参考手册 STL进
- 对无线传感器网络(WSN)中参考广播
- stan参考手册
- WindowsAPI参考大全forCC++(chm)
- C++11教程参考书
- RDA5820技术资料参考源码
- C/C++参考手册大全5本集合.chm
- 清华大学郑莉C++课件 PPT及例题源码
- STM32 RTC+LCD12864 实时时钟和闹钟实验
- C++项目源代码适合新手练手及参考
评论
共有 条评论