📄 motor velocity control dsp program.txt
字号:
SACH VSBE_REF,4 ;保存VSBE_REF
LACC #0
LT VSDREF ;T=VSDREF
MPYS COS ;ACC= -VSQREF*SIN(TETA_E),P=VSDREF*COS(TETA_E)
APAC ;ACC= -VSQREF*SIN(TETA_E)+VSDREF*COS(TETA_E)
SACH VSAL_REF,4 ;保存VSAL_REF
;----------------------- SVPWM-----------------------------------------------------------------------------------
;-----------------------根据式(3-47)计算扇区数SECTOR-------------------------------------------------------
LACC #0 P清零
SACL P
LACC VSBE_REF ;B0
BCND B0_NEG, LEQ ;B0≤0跳转
LACC #1
SACL P ;否则P=1
B0_NEG
LT VSAL_REF ;计算B1
MPY #-7095 ;乘 的Q12格式
PAC
SACH TMP,4
LACC TMP
SUB VSBE_REF
SFR ;除2
BCND B1_NEG,LEQ ;B1≤0跳转
LACC P
ADD #2
SACL P ;否则P+2
B1_NEG
LACC TMP ;计算B2
ADD VSBE_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---------------------------------------------------------------
LACC #DEC_MS ;逆阵数据首地址
ADD SECTOR,2
SACL TMP ;产生地址指针
LAR AR0,TMP ;指向逆阵表
LT VSAL_REF ;Q13格式.计算VSAL_REF *M(1,1)+VSBE_REF*M(1,2)
MPY *+ ;M(1,1)* VSAL_REF, Q11
PAC ; Q11格式
LT VSBE_REF ; Q11
MPY *+ ; M(1,2)* VSBE_REF, Q11
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格式
LT VSAL_REF ;计算VSAL_REF*M(2,1)+VSBE_REF*M(2,2)
MPY *+ ; M(2,1) VSAL_REF,Q11
PAC ; Q11格式
LT VSBE_REF ; Q13格式
MPY *+ ; M(2,2) VSBE_REF,Q11
APAC ; 0.5*C2,Q11
BCND CMP2BIG0,GEQ ;如果大于0继续
LACC #0 ;否则0
CMP2BIG0
SACH TMP ; 0.5*C2,Q11格式
LT TMP ;Q11格式
MPY T1_PERIODS ; Q0
PAC ; Q0格式
SACH CMP_2 ; 0.5*C2*TP,Q0格式
LACC #600 ;T1周期值
SUB CMP_1
SUB CMP_2 ; Q0格式
BCND CMP0BIG0,GEQ ;如果大于0继续
LACC #0 ;否则0
CMP0BIG0
SACL CMP_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
SACL TMP ;计算第三次比较匹配的比较器地址
LAR AR0,TMP ;指向该地址
LACC CMP_0
ADD CMP_1
ADD CMP_2 ; CMP_0+CMP_1+CMP_2
SACL * ;送入该比较器
;-----------------------恢复现场------------------------------------------------------------------------
LARP AR4
MAR *+
LACL *+
ADD *+,16
LST #0,*+
LST #1,*+
CLRC INTM
RET
;-----------------------数据区------------------------------------------------------------------------------
.DATA
PSECTOR
.WORD 1 ;扇区数
.WORD 5
.WORD 0
.WORD 3
.WORD 2
.WORD 4
SINTAB .WORD 0 ;256个SIN函数值,Q12格式
.WORD 101,201,301,401,501
.WORD 601,700,799,897,995
.WORD 1092,1189,1285,1380,1474
.WORD 1567,1660,1751,1842,1931
.WORD 2019,2106,2191,2276,2359
.WORD 2440,2520,2598,2675,2751
.WORD 2824,2896,2967,3035,3102
.WORD 3166,3229,3290,3349,3406
.WORD 3461,3513,3564,3612,3659
.WORD 3703,3745,3784,3822,3857
.WORD 3889,3920,3948,3973,3996
.WORD 4017,4036,4052,4065,4076
.WORD 4085,4091,4095,4096,4095
.WORD 4091,4085,4076,4065,4052
.WORD 4036,4017,3996,3973,3948
.WORD 3920,3889,3857,3822,3784
.WORD 3745,3703,3659,3612,3564
.WORD 3513,3461,3406,3349,3290
.WORD 3229,3166,3102,3035,2967
.WORD 2896,2824,2751,2675,2598
.WORD 2520,2440,2359,2276,2191
.WORD 2106,2019,1931,1842,1751
.WORD 1660,1567,1474,1380,1285
.WORD 1189,1092,995,897,799
.WORD 700,601,501,401,301,201,101,0 ;180°
.WORD 65435,65335,65235,65135,65035
.WORD 64935,64836,64737,64639,64541
.WORD 64444,64347,64251,64156,64062
.WORD 63969,63876,63785,63694,63605
.WORD 63517,63430,63345,63260,63177
.WORD 63096,63016,62938,62861,62785
.WORD 62712,62640,62569,62501,62434
.WORD 62370,62307,62246,62187,62130
.WORD 62075,62023,61972,61924,61877
.WORD 61833,61791,61752,61714,61679
.WORD 61647,61616,61588,61563,61540
.WORD 61519,61500,61484,61471,61460
.WORD 61451,61445,61441,61440,61441
.WORD 61445,61451,61460,61471,61484
.WORD 61500,61519,61540,61563,61588
.WORD 61616,61647,61679,61714,61752
.WORD 61791,61833,61877,61924,61972
.WORD 62023,62075,62130,62187,62246
.WORD 62307,62370,62434,62501,62569
.WORD 62640,62712,62785,62861,62938
.WORD 63016,63096,63177,63260,63345
.WORD 63430,63517,63605,63694,63785
.WORD 63876,63969,64062,64156,64251
.WORD 64347,64444,64541,64639,64737
.WORD 64836,64935,65035,65135,65235,65335,65435
ANGLES_
.WORD 20066 ; 矩阵A的逆阵数据,每一个逆阵有4个数据,Q14格式
.WORD –11585 ; 按参考电压所在的扇区索引
.WORD 0
.WORD 23170
.WORD 20066
.WORD 11585
.WORD -20066
.WORD 11585
.WORD 0
.WORD 23170
.WORD -20066
.WORD -11585
.WORD -20066
.WORD 11585
.WORD 0
.WORD -23170
.WORD -20066
.WORD -11585
.WORD 20066
.WORD -11585
.WORD 0
.WORD -23170
.WORD 20066
.WORD 11585
FIRST_
.WORD CMPR1 ; 用于第1次比较匹配的比较寄存器地址,
.WORD CMPR2 ; 按参考电压所在的扇区索引
.WORD CMPR2
.WORD CMPR3
.WORD CMPR3
.WORD CMPR1
SECOND_
.WORD CMPR2 ;用于第2次比较匹配的比较寄存器地址,
.WORD CMPR1 ; 按参考电压所在的扇区索引
.WORD CMPR3
.WORD CMPR2
.WORD CMPR1
.WORD CMPR3
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -