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-----------------------------AVktR43bpw LACCITREF 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 ;否则是负,检测是否超过电压下限 SUBUPI
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 SUBUPI
SACLELPI ;求极限偏差 LT ELPI
MPY KC ;积分修正系数,Q12 PAC LT EPIT
MPY KI ;积分系数,Q12 APAC
ADD XIT,12
SACH XIT,4 ;更新调节器积分累计量 ;-----------------------M轴电流PI调节VMREF-------------------------------------------------------ORjBnOwcEd LACC IMREF
9 / 15
,输,输出
出
SUBIM
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
LACCVMAX ;检测是否超过电压上限 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
ADD XIM,12
SACH XIM,4 ;更新调节器积分累计量 ;-----------------------PARK反变--------------------------------------------------------------------------------2MiJTy0dTT LACC#0
LT VMREF ;T=VMREF
MPY SIN ;P=VMREF*SIN(TETA_E) LTA VTREF ;ACC=P; T=VTREF
MPY COS ;P=VTREF*COS(TETA_E)
MPYA SIN ;ACC=P; P=VTREF*SIN(TETA_E)
SACH VBET_REF,4 ;保存VBET_REF LACC #0
LT VMREF ;T=VMREF
MPYS COS;ACC= -VTREF*SIN(TETA_E),
;P=VMREF*COS(TETA_E) APAC;ACC= -VTREF*SIN(TETA_E)
10 / 15
换
;+VMREF*COS(TETA_E) SACH VALF_REF,4 ;保存VALF_REF ;-----------------------
SVPWM-----------------------------------------------------------------------------------gIiSpiue7A ;-----------------------根据式(3-47)计算扇
SECTOR-------------------------------------------------------uEh0U1Yfmh LACC #0 P清零 SACL P
LACC VBET_REF ;B0
BCND B0_NEG, LEQ ;B0≤0跳转 LACC #1
SACL P ;否则P=1 B0_NEG
LT VALF_REF ;计算B1
区数
MPY #-7095 ;乘3的Q12格式 PAC
SACH TMP,4 LACC TMP SUB VBET_REF
SFR ;除2 BCND B1_NEG,LEQ ;B1≤0跳转 LACC P ADD #2
SACL P ;否则P+2 B1_NEG
LACC TMP ;计算B2 ADD VBET_REF
SFR ;除2 NEG ;求补 BCND B2_NEG,LEQ ;B2≤0跳转 LACC P ADD #4
SACL P ;否则P+4 B2_NEG
LACC #PSECTOR ;指向表头 ADD P SUB #1
TBLR SECTOR ;得到扇区数 ;-----------------------根据逆阵计算
T1,T2---------------------------------------------------------------IAg9qLsgBX LACC #DEC_MS ;逆阵数据首地址 ADD SECTOR,2 SACLTMP ;产生地址指针 LAR AR0,TMP ;指向逆阵表
LT VALF_REF ;Q13格式.
;计算VALF_REF *M(1,1)+VBET_REF*M(1,2) MPY *+ ;M(1,1)* VALF_REF, Q11 PAC ;Q11格式
LT VBET_REF;Q11
MPY *+;M(1,2)* VBET_REF,Q11
11 / 15
APAC ;0.5*C1,Q11
BCND CMP1BIG0,GEQ ;如果大于0继续 LACC #0;否则0 CMP1BIG0
SACH TMP;0.5*C1,Q11格式 LT TMP ;Q11格式
MPY T1_PERIODS ;Q0 PAC ;Q0格式
SACH CMP_1;0.5*C1*TP,Q0格式
LTVALF_REF;计算VALF_REF*M(2,1)+VBET_REF*M(2,2) MPY *+ ;M(2,1) VALF_REF,Q11 PAC ;Q11格式
LT VBET_REF;Q13格式
MPY*+ ;M(2,2) VBET_REF,Q11 APAC;0.5*C2,Q11
BCND CMP2BIG0,GEQ ;如果大于0继续 LACC #0 ;否则0 CMP2BIG0
SACHTMP ;0.5*C2,Q11格式 LT TMP;Q11格式
MPYT1_PERIODS;Q0 PAC ;Q0格式
SACH CMP_2 ;0.5*C2*TP,Q0格式
LACC #1000 ;T1周期值 SUB CMP_1
SUB CMP_2 ;Q0格式
BCNDCMP0BIG0,GEQ ;如果大于0继续
LACC #0 ;否则0 CMP0BIG0
SACLCMP_0
LACC CMP_0,15;相当于右移1位,除2 SACH CMP_0 ;0.25*C0*TP
LACC #FIRST_ ;指向第一次比较匹配的比较寄存器地址表入口地址 ADD SECTOR
TBLR FIRST_TOG;查到第一次比较匹配的比较器地址 LAR AR0,FIRST_TOG ;指向该地址 LACC CMP_0
SACL * ;CMP_0送入该比较器
LACC #SECOND_ ;指向第二次比较匹配的比较寄存器地址表入口地址 ADD SECTOR
TBLR SEC_TOG ;查到第二次比较匹配的比较器地址 LAR AR0,SEC_TOG ;指向该地址 LACC CMP_0
ADD CMP_1 ;CMP_0+CMP_1 SACL * ;送入该比较器 LACC#CMPR3 SUB FIRST_TOG ADD #CMPR2 SUB SEC_TOG ADD #CMPR1
12 / 15
相关推荐: