📄 zhtest3_2.asm
字号:
SPLK #-520,cal_angle ; 根据编码器连接情况确定
LDP #rmp_dly_max ; 磁链控制模块初始化
SPLK #120,rmp_dly_max ; 延迟周期数初始化
SPLK #8000h,rmp_lo_limit ; 输出下限
SPLK #7FFFh,rmp_hi_limit ; 输出上限
.endif
;---------------------------------------------------------
;---------------------------------------------------------
.if (step5) ;测试步骤五初始化程序代码
;---------------------------------------------------------
SPLK #01000h, speed_ref ; 速度参考值初始化Q15
SPLK #0,pdpint_flg ; pdpint_flg初始化
SPLK #0,sp_loop_cnt ; Q0 (转速计数器初始化)
SPLK #10,sp_loop_max ; Q0 (速度环跳过次数初始化)
SPLK #0000h, Id_ref ; 励磁电流参考值初始化Q15
SPLK #1000h, Iq_ref ; 转矩电流参考值初始化Q15
LDP #cal_angle ; QEP模块初始化
SPLK #40,cal_angle ; 根据编码器连接情况确定
LDP #rmp_dly_max ; 磁链控制模块初始化
SPLK #120,rmp_dly_max ; 延迟周期数初始化
SPLK #8000h,rmp_lo_limit ; 输出下限初始化
SPLK #7FFFh,rmp_hi_limit ; 输出上限初始化
.endif
;---------------------------------------------------------
;======================================================
MAIN: ;主程序循环
;======================================================
M_1
B MAIN
;======================================================
;===========================================================================
; 程序名: T1UF_ISR 程序类型: ISR
;
; 功能描述:完成系统全部控制功能
;
; 公司: 达盛科技
;
; 更改纪录:
; 最后更新时间: 2005.08.21 版本:Ver1.0
;===========================================================================
T1UF_ISR:
;断点保护
MAR *,AR1 ; 激活栈指针
MAR *+ ; 指向未用位置
SST #1, *+ ; 保存 ST1
SST #0, *+ ; 保存 ST0
SACH *+ ; 保存 acc 高16位
SACL *+ ; 保存 acc 低16位
SAR AR6,*+
POPD *+ ; save TOS to free h/w stack
;如果需要可以保存更多现场信息
POINT_EV
SPLK #0FFFFh,IFRA ; 清所有 A 组中断标志 (T1 ISR)
;测试 ISR 带宽
CLRC XF
;=========================================================
;主 ISR 程序开始
;=========================================================
POINT_B0
; 校验 ISR
LACC isr_ticker
ADD #1
SACL isr_ticker
;---------------------------------------------------------
;系统控制程序编译选项
;---------------------------------------------------------
;---------------------------------------------------------
.if (step1) ;测试步骤一控制程序代码
;---------------------------------------------------------
;开环磁链控制模块
SPM 1 ;模拟信号控制频率
LDP #data_tmp
SPLK #2A00H,data_tmp
LDP #Vdc_meas ;
; LDP #Sig_in ;SPICOM CTR
LT Vdc_meas
; LT Sig_in
MPY data_tmp ;
PAC ;
LDP #target_value
SACH target_value ;end
CALL RAMP_CNTL
;开环磁链发生模块
LDP #rmp_freq
BLDD #setpt_value,rmp_freq
CALL RAMP_GEN
;PARK逆变换模块
LDP #theta_ip
BLDD #rmp_out,theta_ip
; BLDD #Vd_testing,ipark_D
; BLDD #Vq_testing,ipark_Q
SPM 1 ;模拟信号控制频率
LDP #data_tmp
SPLK #03100H,data_tmp
LDP #rmp_freq ;
LT rmp_freq ;
MPY data_tmp ;
PAC ;
ABS
LDP #ipark_D
SACH ipark_D
SACH ipark_Q ;end
CALL I_PARK
;电压空间矢量计算模块
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
;PWM波形发生模块
LDP #Mfunc_c1
BLDD #Ta,Mfunc_c1
BLDD #Tb,Mfunc_c2
BLDD #Tc,Mfunc_c3
CALL FC_PWM_DRV
.endif
;---------------------------------------------------------
;---------------------------------------------------------
.if (step2) ;测试步骤二控制程序代码
;---------------------------------------------------------
;开环磁链控制模块
LDP #target_value
BLDD #speed_ref,target_value
CALL RAMP_CNTL
;开环磁链发生模块
LDP #rmp_freq
BLDD #setpt_value,rmp_freq
CALL RAMP_GEN
;PARK逆变换模块
LDP #theta_ip
BLDD #rmp_out,theta_ip
BLDD #Vd_testing,ipark_D
BLDD #Vq_testing,ipark_Q
CALL I_PARK
;电压空间矢量计算模块
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
;PWM波形发生模块
LDP #Mfunc_c1
BLDD #Ta,Mfunc_c1
BLDD #Tb,Mfunc_c2
BLDD #Tc,Mfunc_c3
CALL FC_PWM_DRV
;电流采样模块
CALL ILEG2_DCBUS_DRV
;CLARKE变换模块
LDP #clark_a
BLDD #Imeas_a,clark_a
BLDD #Imeas_b,clark_b
CALL CLARKE
;PARK变换模块
LDP #park_d
BLDD #clark_d,park_d
BLDD #clark_q,park_q
BLDD #rmp_out,theta_p
CALL PARK
;正交脉冲捕获及角度计算模块
; CALL QEP_THETA_DRV
;速度计算模块
; LDP #theta_elec_fr
; BLDD #theta_elec,theta_elec_fr
; CALL SPEED_FRQ
.endif
;---------------------------------------------------------
;---------------------------------------------------------
.if (step3) ;测试步骤三控制程序代码
;---------------------------------------------------------
;开环磁链控制模块
LDP #target_value
BLDD #speed_ref,target_value
CALL RAMP_CNTL
;开环磁链给定模块
LDP #rmp_freq
BLDD #setpt_value,rmp_freq ;使用磁链控制
; BLDD #speed_ref,rmp_freq ;跳过磁链控制
CALL RAMP_GEN
;d轴电流调节模块
LDP #id_ref
BLDD #Id_ref,id_ref
BLDD #park_D,id_fdb
CALL PID_REG3_ID
;q轴电流调节模块
LDP #iq_ref
BLDD #Iq_ref,iq_ref
BLDD #park_Q,iq_fdb
CALL PID_REG3_IQ
;PARK逆变换模块
LDP #theta_ip
BLDD #ud_out,ipark_D
; SPLK #0000h,ipark_D
BLDD #uq_out,ipark_Q
BLDD #rmp_out,theta_ip
CALL I_PARK
;电压空间矢量计算模块
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
;PWM波形发生模块
LDP #Mfunc_c1
BLDD #Ta,Mfunc_c1
BLDD #Tb,Mfunc_c2
BLDD #Tc,Mfunc_c3
CALL FC_PWM_DRV
;电流采样模块
CALL ILEG2_DCBUS_DRV
;CLARKE变换模块
LDP #clark_a
BLDD #Imeas_a,clark_a
BLDD #Imeas_b,clark_b
CALL CLARKE
;PARK逆变换模块
LDP #park_d
BLDD #clark_d,park_d
BLDD #clark_q,park_q
BLDD #rmp_out,theta_p
CALL PARK
.endif
;---------------------------------------------------------
;---------------------------------------------------------
.if (step4)
;---------------------------------------------------------
;开环磁链控制模块
LDP #target_value
BLDD #speed_ref,target_value
CALL RAMP_CNTL
;开环磁链产生模块
LDP #rmp_freq
BLDD #setpt_value,rmp_freq
CALL RAMP_GEN
;d轴电流调节模块
LDP #id_ref
BLDD #Id_ref,id_ref
BLDD #park_D,id_fdb
CALL PID_REG3_ID
;q轴电流调节模块
LDP #iq_ref
BLDD #Iq_ref,iq_ref
BLDD #park_Q,iq_fdb
CALL PID_REG3_IQ
; 检测所定标志 lockrtr_flg 状态
POINT_B0
LACC lockrtr_flg ; lockrtr_flg=0 为直流模式 (angle=0)
BCND NON_CC_MODE,EQ ; 转到 NON_CC_MODE ,当 lockrtr_flg=0
CC_MODE ;直流模式控制程序
;PARK逆变换模块
LDP #theta_ip
BLDD #ud_out,ipark_D
BLDD #uq_out,ipark_Q
SPLK #0000h,theta_ip
CALL I_PARK
;电压空间矢量计算模块
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
;PWM产生模块
LDP #Mfunc_c1
BLDD #Ta,Mfunc_c1
BLDD #Tb,Mfunc_c2
BLDD #Tc,Mfunc_c3
CALL FC_PWM_DRV
;电流采样模块
CALL ILEG2_DCBUS_DRV
;CLARKE变换模块
LDP #clark_a
BLDD #Imeas_a,clark_a
BLDD #Imeas_b,clark_b
CALL CLARKE
;PARK变换模块
LDP #park_d
BLDD #clark_d,park_d
BLDD #clark_q,park_q
SPLK #0000h,theta_p
CALL PARK
B SKIP_CC_MODE
NON_CC_MODE ;非直流模式控制程序
;PARK逆变换模块
LDP #theta_ip
BLDD #ud_out,ipark_D
BLDD #uq_out,ipark_Q
BLDD #rmp_out,theta_ip
CALL I_PARK
;电压空间矢量计算模块
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -