📄 ac_tvc.asm
字号:
B LIMITERS
NEG_SAT
LACC ITREFMIN ;ACC =下限值
B LIMITERS
UPIMAGZEROS
LACC ITREFMAX ;检测是否超过电流上限
SUB UPI
BCND POS_SAT,LT ;超过上限进入饱和区则跳转
LACC UPI ;否则正常调整
B LIMITERS
POS_SAT
LACC ITREFMAX ;ACC =上限值
LIMITERS
SACL ITREF ;输出ITREF
SUB UPI
SACL ELPI ;求极限偏差
LT ELPI
MPY KCN ;积分修正系数,Q12
PAC
LT EPISPEED
MPY KIN ;积分系数,Q12
APAC
ADD XISPEED,12
SACH XISPEED,4 ;更新调节器积分累计量
;-----------------------计算编码增量累计值------------------------------------------------------------------
NOCALC
LACC SPEEDTMP
ADD ENCINCR
SACL SPEEDTMP
;-----------------------将IA,IB,IC转换成IPUQ12格式---------------------------------------------------------
LDP #0
LACC IA
AND #3FFH ;屏蔽高位
SUB #512 ;向下平移,产生正负电流值
SACL TMP
LT TMP
MPY KCURRENT ;转换系数,Q8格式
PAC
SFL
SACH IA,7 ;IA, Q12格式
LACC IB
AND #3FFH
SUB #512
SACL TMP
LT TMP
MPY KCURRENT
PAC
SFL
SACH IB,7 ;IB, Q12格式
LACC IB
ADD IA
NEG
SACL IC ;IC = -(IB+IA)
;-----------------------CLARKE变换--------------------------------------------------------------------------------
LDP #0
LT IA
MPY #5018 ;乘 =5018,Q12格式
PAC
SACH IALFA,4 ;保存IALFA
LACC IB,1 ;ACC =2*IB
ADD IA ;ACC =IA+2*IB
SACL TMP ;暂存
LT IALFA
MPY #2896 ;乘 =2896,Q12格式
PAC
SACH IBETA ,4 ;保存IBETA
;-----------------------根据TETA_E查SIN, COS表------------------------------------------------------------
LACC TETA_E ;TETA_E范围[0;1000H],[0;360]的Q12格式
RPT #3 ;右移4位,范围变为[0;255],
SFR
AND #0FFH ;屏蔽高位
SACL INDEX ;生成查表指针
ADD #SINTAB ;加上表的首地址
TBLR SIN ;保存SIN值
LACL INDEX ;COS(TETA)=SIN(TETA+90°)
ADD #040H ;90°= 40H
AND #0FFH
ADD #SINTAB
TBLR COS ;保存COS值
;-------------------------------------- PARK变换-------------------------------------------------------------
LACC #0 ;累加器清零
LT IBETA
MPY SIN ;Q12格式
LTA IALFA ;ACC=IBETA *SIN(TETA),T=IALFA
MPY COS ;Q12格式
MPYA SIN ;ACC=IBETA*SIN(TETA)+IALFA*COS(TETA),
;P=IALFA*SIN(TETA)
SACH IM,4 ;保存IM
LACC #0 ;累加器清零
LT IBETA
MPYS COS ;ACC = -IALFA*SIN(TETA) ,P=IBETA*COS(TETA)
APAC ;ACC = -IALFA*SIN(TETA) +IBETA*COS(TETA)
SACH IT,4 ;保存IT
;--------------------------------------转子磁链位置的计算-----------------------------------
LACC IM ;Q12
SUB IDK ;Q12
SACL TMP
LT TMP
MPY KR ;Q15
PAC
SACH TMP,1
LACC TMP
ADD IDK
SACL IDK ;IDK=IDK+KR*(IM-IDK), Q12格式
BCND IDKNOTZERO,NEQ ;如果IDK≠0跳转
LACC #0
SACL TMP ;如果IDK=0,则TMP=IT/IDK=0
B ITPOS
IDKNOTZERO
SACL TMP1 ;暂存IDK,Q12
LACC IT
ABS ;取绝对值
SACL TMP ;暂存IT
LACC TMP,12 ;右移12位成Q24格式
RPT #15
SUBC TMP1 ;除法
SACL TMP ;TMP=IT/IDK,Q12格式
LACC IT ;根据IT的正负调整商的符号
BCND ITPOS,GT ;IT>0跳转
LACC TMP ;否则求补
NEG
SACL TMP
ITPOS
LT TMP
MPY KT ;Q12格式
PAC
SACH TMP,4 ;TMP=TMP*KT,Q12格式
LACC TMP
ADD N ;Q12
SFR ;除2(2对磁极),变成机械转速比
SACL FS ;FS=N+KT*(IT/IDK),Q12格式
LACC FS
ABS
SACL TMP
LT TMP
MPY K ;Q0
PAC ;计算TETA_E=TETA_E+K*FS
;=TETA_E+TETAINCR
;(0-360)->(0-65535)
SACH TETAINCR,4 ;Q0格式
BIT FS,0 ;根据FS的正负调整
BCND FS_NEG,TC ;为负则跳转
LACL TETAINCR ;否则为正
ADDS TETA_E
SACL TETA_E
B FS_POS
FS_NEG
LACL TETA_E
SUBS TETAINCR
SACL TETA_E
FS_POS
LACC TETA_E,12 ;除24,变成0-4096范围
SACH TETA_E ;保存TETA_E
;-----------------------T轴电流PI调节,输出VTREF-----------------------------
LACC ITREF
SUB IT
SACL EPIT ;T轴电流偏差
LACC XIT,12 ;电流调节器积分累计量
LT EPIT
MPY KP ;比例系数,Q12
APAC
SACH UPI,4
BIT UPI,0 ;检测调节器输出的正负
BCND UPIMAGZEROT,NTC ;如果正,跳转
LACC VMIN ;否则是负,检测是否超过电压下限
SUB UPI
BCND NEG_SATT,GT ;超过下限进入饱和区则跳转
LACC UPI ;否则正常调整
B LIMITERT
NEG_SATT
LACC VMIN ;ACC =下限值
B LIMITERT
UPIMAGZEROT
LACC VMAX ;检测是否超过电压上限
SUB UPI
BCND POS_SATT,LT ;超过上限进入饱和区则跳转
LACC UPI ;否则正常调整
B LIMITERT
POS_SATT
LACC VMAX ;ACC =上限值
LIMITERT
SACL VTREF ;输出VTREF
SUB UPI
SACL ELPI ;求极限偏差
LT ELPI
MPY KC ;积分修正系数,Q12
PAC
LT EPIT
MPY KI ;积分系数,Q12
APAC
ADD XIT,12
SACH XIT,4 ;更新调节器积分累计量
;-----------------------M轴电流PI调节,输出VMREF-------------------------------------------------------
LACC IMREF
SUB IM
SACL EPIM ;M轴电流偏差
LACC XIM,12 ;电流调节器积分累计量
LT EPIM
MPY KP ;比例系数,Q12
APAC
SACH UPI,4
BIT UPI,0 ;检测调节器输出的正负
BCND UPIMAGZEROM,NTC ;如果正,跳转
LACC VMIN ;否则是负,检测是否超过电压下限
SUB UPI
BCND NEG_SATM,GT ;超过下限进入饱和区则跳转
LACC UPI ;否则正常调整
B LIMITERM
NEG_SATM
LACC VMIN ;ACC =下限值
B LIMITERM
UPIMAGZEROM
LACC VMAX ;检测是否超过电压上限
SUB UPI
BCND POS_SATM,LT ;超过上限进入饱和区则跳转
LACC UPI ;否则正常调整
B LIMITERM
POS_SATM
LACC VMAX ;ACC =上限值
LIMITERM
SACL VMREF ;输出VMREF
SUB UPI
SACL ELPI
LT ELPI
MPY KC ;积分修正系数,Q12
PAC
LT EPIM
MPY KI ;积分系数,Q12
APAC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -