整理61三相交流异步电动机无速度传感器磁场定向控制程序.docx
《整理61三相交流异步电动机无速度传感器磁场定向控制程序.docx》由会员分享,可在线阅读,更多相关《整理61三相交流异步电动机无速度传感器磁场定向控制程序.docx(87页珍藏版)》请在冰豆网上搜索。
整理61三相交流异步电动机无速度传感器磁场定向控制程序
《6-1三相交流异步电动机无速度传感器磁场定向控制程序》
.include"x24x_app.h"
;-----------------------------------------------------------------------------
;变量定义
;-----------------------------------------------------------------------------
.bssspeed_ref,1;速度参考
.bssspeed_ref_rpm,1
stack_size.set20h;堆栈空间
stack_start.usect"stack",stack_size
.bssGPR0,1;临时变量
.bsssp_loop_cnt,1;速度环计数器
.bsssp_loop_max,1
;速度PI调节变量定义
.bssspd_fdb,1;反馈速度
.bssspd_ref,1;速度参考
.bsst_out,1;控制输出
.bsst_max,1;最大输出(Q15)
.bsst_min,1;最小输出(Q15)
.bssup_spd,1;比例项(Q14)
.bssup1_spd,1;k-1比例项(Q14)
.bssui_hi_spd,1;积分项高字(Q30)
.bssui_lo_spd,1;积分项低字
.bssud_hi_spd,1;微分项高字(Q30)
.bssud_lo_spd,1;微分项低字
.bssKp_spd,1;比例系数
.bssKi_spd,1;积分系数
.bssKd_spd,1;微分系数
.bssKc_spd,1;积分修正系数
.bsse_spd,1;速度偏差
.bssuprsat_spd,1;没检验饱和的输出
.bsssaterr_spd,1;饱和偏差
Kp_spd_.set28312;比例系数Q15
Ki_spd_.set4149;积分系数Q31
Kd_spd_.set0;微分系数Q14
Kc_spd_.set31858;积分修正系数Q15
Umax_spd_.set07FFFh;最大输出
Umin_spd_.set08000h;最小输出
;弱磁控制变量定义
.bssspd_ref_fp,1;速度参考
.bssid_ref_fp,1;Id参考
.bssspd_abs,1;速度参考绝对值
.bssspd_1,1;最高转速
.bssid_1,1;最大d轴定子电流
.bssfield_tmp1,1;临时变量
id_1_.set1500h;最大d轴定子电流(Q15)
spd_1_.set4000h;最高转速(Q15)
;d轴电流PI调节变量定义
.bssid_fdb,1;电流反馈
.bssid_ref,1;电流参考
.bssud_out,1;控制电压输出t
.bssud_max,1;最大输出电压(Q15)
.bssud_min,1;最小输出电压(Q15)
.bssup_d,1;比例项(Q14)
.bssup1_d,1;k-1积分项(Q14)
.bssui_hi_d,1;积分项高字(Q30)
.bssui_lo_d,1;积分项低字
.bssud_hi_d,1;微分项高字(Q30)
.bssud_lo_d,1;微分项低字
.bssKp_d,1;比例系数
.bssKi_d,1;积分系数
.bssKd_d,1;微分系数
.bssKc_d,1;积分修正系数
.bsse_d,1;电流偏差
.bssuprsat_d,1;没检验饱和的输出
.bsssaterr_d,1;饱和偏差
Kp_d_.set21178;比例系数Q15
Ki_d_.set4194;积分系数Q31
Kd_d_.set0;微分系数Q14
Kc_d_.set20281;积分修正系数Q15
Umax_d_.set04000h;最大输出电压
Umin_d_.set0C000h;最小输出电压
;q轴电流PI调节变量定义
.bssiq_fdb,1;电流反馈
.bssiq_ref,1;电流参考
.bssuq_out,1;控制电压输出
.bssuq_max,1;最大输出电压(Q15)
.bssuq_min,1;最小输出电压(Q15)
.bssup_q,1;比例项(Q14)
.bssup1_q,1;第k-1比例项(Q14)
.bssui_hi_q,1;积分项高字(Q30)
.bssui_lo_q,1;积分项低字(Q30)
.bssud_hi_q,1;微分项高字(Q30)
.bssud_lo_q,1;微分项低字(Q30)
.bssKp_q,1;比例系数
.bssKi_q,1;积分系数
.bssKd_q,1;微分系数
.bssKc_q,1;积分修正系数
.bsse_q,1;电流偏差
.bssuprsat_q,1;没检验饱和的输出
.bsssaterr_q,1;饱和偏差
Kp_q_.set21178;比例系数Q15
Ki_q_.set4194;积分系数Q31
Kd_q_.set0;微分系数Q14
Kc_q_.set20281;积分修正系数Q15
Umax_q_.set06700h;最大输出电压
Umin_q_.set09900h;最小输出电压
;Park逆变换变量定义
.bssipark_d,1;Iα
.bssipark_q,1;Iβ
.bsstheta_ip,1;定子电流矢量与M轴夹角,取值范围0-7FFFH,对应0-360度
.bssipark_D,1;IM
.bssipark_Q,1;IT
.bsst_ptr,1;表指针
.bssip_val,1;插值
.bsscos_theta,1
.bsssin_theta,1
.bssnxt_entry,1;下一个入口地址
.bssdelta_angle,1;角度差
.bssGPR0_ipark,1;中间变量
;SVPWM变量定义
.bssUalfa,1;两相直角坐标电压分量
.bssUbeta,1
.bssVa,1;三相电压
.bssVb,1
.bssVc,1
.bssTa,1
.bssTb,1
.bssTc,1
.bsssector,1;SVPWM扇区号
.bsst1,1;SVPWMT1
.bsst2,1;SVPWMT2
.bsshalf_sqrt3,1;
/2
X.setVa
Y.setVb
Z.setVc
SR_ADDR.setsector;扇区号
;PWM输出变量定义
.bssMfunc_c1,1;相1比较器调整参数Q15
.bssMfunc_c2.,1;相2比较器调整参数Q15
.bssMfunc_c3.,1;相3比较器调整参数Q15
.bssMfunc_p,1;周期调整参数Q15
.bssn_period,1;周期
.bssm_period,1;新周期
PWM_PERIOD.set50;PWM周期50微秒(20KHz)
T1PER_.setPWM_PERIOD*20;T1周期1000(时钟40MHz)
T1CON_.set1000100001000000b;对称PWM
DBTCON_.set09E8h;死区1.18微秒
ACTR_.set011001100110b;1/3/5高有效,2/4/6低有效
COMCON_.set1000001000000000b;比较控制寄存器
;ADC采样变量定义
.bssCh_sel,1;通道选择
.bssImeas_a_gain,1;a增益
.bssImeas_b_gain,1;b增益
.bssVdc_meas_gain,1;Vdc增益
.bssImeas_a_offset,1;a补偿
.bssImeas_b_offset,1;b补偿
.bssVdc_meas_offset,1;Vdc补偿
.bssImeas_a,1;Ia
.bssImeas_b,1;Ib
.bssImeas_c,1;Ic
.bssVdc_meas,1;Vdc
.bssGPR0adc,1;临时变量
.bssGPR1adc,1
CH_SEL_.set0710h;对eZdsp2407开发板
;Clarke变换变量定义
.bssclark_a,1;A相
.bssclark_b,1;B相
.bssclark_d,1;α相
.bssclark_q,1;β相
.bsssqrt3inv,1;1/
.bssclk_temp,1;临时变量
;Park变换变量定义
.bsspark_d,1;固定坐标轴
.bsspark_q,1;固定坐标轴
.bsstheta_p,1;夹角
.bsspark_D,1;旋转轴
.bsspark_Q,1;旋转轴
.bsst_ptr,1;表指针
.bssip_val,1;插值
.bsscos_theta,1;Cos值
.bsssin_theta,1;Sin值
.bssnxt_entry,1;下一个表地址
.bssdelta_angle,1;角差
.bssGPR0_park,1;临时变量
;相电压计算变量定义
.bssMfunc_V1,1
.bssMfunc_V2,1
.bssMfunc_V3,1
.bssDC_bus,1;DC总线电压
.bssVphase_A,1;A相电压
.bssVphase_B,1;B相电压
.bssVphase_C,1;C相电压
.bssVdirect,1;直轴电压
.bssVquadra,1;交轴电压
.bssone_third,1;1/3
.bsstmp_volt,1;临时变量
;磁通估算变量定义
.bssu_ds_fe,1;α轴定子电压(Q15)
.bssu_qs_fe,1;β轴定子电压(Q15)
.bssi_ds_fe,1;α轴定子电流(Q15)
.bssi_qs_fe,1;β轴定子电流(Q15)
.bsspsi_dr_fe,1;α轴估计的转子磁通(Q15)
.bsspsi_qr_fe,1;β轴估计的转子磁通(Q15)
.bsstheta_r_fe,1;转子磁通角(Q15)
.bssK1_fe,1;电流模型下常数(Q15)
.bssK2_fe,1;电流模型下常数(Q15)
.bssK3_fe,1;定子磁通计算的常数(Q15)
.bssK4_fe,1;定子磁通计算的常数(Q15)
.bssK5_fe,1;反电动势计算的常数(Q15)
.bssK6_fe,1;反电动势积分的常数(Q15)
.bssK7_fe,1;转子磁通计算的常数(Q14)
.bssK8_fe,1;转子磁通计算的常数(Q15)
.bssK9_fe,1;转矩计算的常数(Q12)
.bssKp_fe,1;PI比例系数(Q15)
.bssKi_fe,1;PI积分系数(Q31)
.bssptr_fe,1;查sin,cos,atan表的表指针
.bsscos_fe,1;Cos(theta_r_fe)(Q15)
.bsssin_fe,1;Sin(theta_r_fe)(Q15)
.bssi_ds_e,1;d轴定子电压(Q15)
.bssi_qs_e,1;q轴定子电压(Q15)
.bssflx_dr_e,1;d轴转子磁通(电流模型)(Q15)
.bssflx_qr_s,1;β轴转子磁通(电流模型)(Q15)
.bssflx_dr_s,1;α轴转子磁通(电流模型)(Q15)
.bssflx_qs_s,1;β轴定子磁通(电流模型)(Q15)
.bssflx_ds_s,1;α轴定子磁通(电流模型)(Q15)
.bssucomp_qs,1;β轴补偿电压(Q15)
.bssucomp_ds,1;α轴补偿电压(Q15)
.bsserror_qs,1;β轴定子磁通偏差(Q14)
.bsserror_ds,1;α轴定子磁通偏差(Q14)
.bssui_lo_ds,1;α轴积分项(低字)(Q30)
.bssui_hi_ds,1;α轴积分项(高字)(Q30)
.bssui_lo_qs,1;β轴积分项(低字)(Q30)
.bssui_hi_qs,1;β轴积分项(高字)(Q30)
.bssemf_qs,1;β轴反电动势(Q15)
.bssemf_ds,1;α轴反电动势(Q15)
.bsspsi_qs_fe,1;β轴定子磁通(Q31)
.bsspsi_ds_fe,1;α轴定子磁通(Q31)
.bsspsi_qs_lo,1;β轴定子磁通(低字)(Q31)
.bsspsi_ds_lo,1;α轴定子磁通(低字)(Q31)
.bsspsi_qr_p,1;β轴转子磁通(Q15)
.bsspsi_dr_p,1;α轴转子磁通(Q15)
.bsspsi_qdr,1;转子磁通商(Q15)
.bsstmp1_fe,1;临时变量
K1_fe_.set32739;K1_fe(Q15)
K2_fe_.set29;K2_fe(Q15)
K3_fe_.set31203;K3_fe(Q15)
K4_fe_.set3209;K4_fe(Q15)
K5_fe_.set11626;K5_fe(Q15)
K6_fe_.set171;K6_fe(Q15)
K7_fe_.set17206;K7_fe(Q14)
K8_fe_.set3370;K8_fe(Q15)
;速度估计变量定义
.bssi_ds_se,1;α轴定子电流(Q15)
.bssi_qs_se,1;β轴定子电流(Q15)
.bsspsi_dr_se,1;α轴转子磁通(Q15)
.bsspsi_qr_se,1;β轴转子磁通(Q15)
.bsstheta_r_se,1;转子磁通角(Q15)
.bsswr_hat_se,1;估计转子速度(Q15)
.bsswr_hat_rpm_se,1;估计转子速度rpm(Q0)
.bssK1_se,1;速度计算常数(Q15)
.bssK2_se,1;微分器常数(Q6)
.bssK3_se,1;低通滤波器常数(Q15)
.bssK4_se,1;低通滤波器常数(Q15)
.bssbase_rpm_se,1;速度基值rpm(Q0)
.bssw_sl,1;估计转差速度(Q15)
.bsspsi_r_2,1;转子磁通平方(Q15)
.bsstheta_r_old,1;前一次计算的转子磁通角(Q15)
.bssw_psi_r,1;估计的转子磁通同步速度(Q15)
.bssmin_theta,1;转子磁通角最小极限(Q15)
.bssmax_theta,1;转子磁通角最大极限(Q15)
t.bssmp1_se,1;临时变量
K1_se_.set776;forK1_se(Q15)
K2_se_.set10667;forK2_se(Q6)
K3_se_.set30831;forK3_se(Q15)
K4_se_.set1937;forK4_se(Q15)
BASE_RPM_SE_.set3600;速度基值(Q0)
DIFF_MAX_LIMIT.set7333h;theta_r_se的最大极限(Q15)
DIFF_MIN_LIMIT.set0CCDh;theta_r_se的最小极限(Q15)
;----------------------------------------------------------------------
;定义主向量
;----------------------------------------------------------------------
.sect"vectors"
.def_c_int0
RESETB_c_int0;00
INT1BPHANTOM;02
INT2BT1UF_ISR;04
INT3BPHANTOM;06
INT4BPHANTOM;08
INT5BPHANTOM;0A
INT6BPHANTOM;0C
.include"rtvecs.h"
;----------------------------------------------------------------------
;主程序
;----------------------------------------------------------------------
.text
_c_int0
CALLSYS_INIT;调系统初始化子程序
SPLK#28378,half_sqrt3;常数
/2,Q15格式
CALLFC_PWM_DRV_INIT;PWM初始化子程序
SPLK#RPM_MAX_,rpm_max;Q0
SPLK#SPEED_SCALER_,speed_scaler;Q0
SPLK#SHIFT_,shift;Q0
CALLILEG2_DCBUS_DRV_INIT;调Ia、Ib、Ic、DC检测初始化子程序
SPLK#10923,one_third;7FFFhx0.33333...(Q15)
SPLK#018919,sqrt3inv;7FFFhx0.577350269...(Q15)
SPLK#018830,sqrt3inv;1/
(Q15)
SPLK#3FFFh,ipark_D
SPLK#3FFFh,ipark_Q
CALLACI_FE_INIT;调磁通估算初始化子程序
CALLACI_SE_INIT;调开环速度估计初始化子程序
CALLPID_REG3_ID_INIT;调IdPI调节初始化子程序
CALLPID_REG3_IQ_INIT;调IqPI调节初始化子程序
CALLPID_REG3_SPD_INIT;调速度PI调节初始化子程序
SPLK#SPD_1_,spd_1
SPLK#ID_1_,id_1
;系统中断初始化
SPLK#0000001000000001b,IMRA;使能T1下溢中断和保护中断
SPLK#0FFFFh,IFRA;清所有A组中断标志
SPLK#0FFFFh,IFRB;清所有B组中断标志
SPLK#0FFFFh,IFRC;清所有C组中断标志
SPLK#0FFFFh,IFR;清所有悬挂中断标志
SPLK#0000000000000010b,IMR;使能INT2
EINT;使能中断
;给定速度初始化
SPLK#2000h,speed_ref;120Hz的25%,30Hz
SPLK#0,sp_loop_cnt;速度环计数器
SPLK#1,sp_loop_max;每2个PWM周期调整一次
;---------------------------------------------------------
MAIN;主循环
BMAIN
;----------------------------------------------------------------------
;T1下溢中断子程序
;----------------------------------------------------------------------
T1UF_ISR
MAR*,AR1;保存现场
MAR*+;指向缓存区
SST#1,*+;保存ST1
SST#0,*+;保存ST0
SACH*+;保存acc高字
SACL*+;保存acc低字
SARAR6,*+;保存AR6
POPD*+;保存栈顶
SPLK#0FFFFh,IFRA;清所有A组中断标志
CLRCXF
LACCsp_loop_max
SUBsp_loop_cnt
BCNDSKIP_SP_PID,GEQ;是否速度PI调节,不是跳转
SPLK#0,sp_loop_cnt;复位sp_loop_cnt
LDP#spd_ref
BLDD#speed_ref,spd_ref;速度参考
BLDD#wr_hat_se,spd_fdb
CALLPID_REG3_SPD;速度PI调节
SKIP_SP_PID
LACCsp_loop_cnt
ADD#1h
SACLsp_loop_cnt