交流异步矢量程序文档格式.docx
- 文档编号:20744102
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:24
- 大小:25.69KB
交流异步矢量程序文档格式.docx
《交流异步矢量程序文档格式.docx》由会员分享,可在线阅读,更多相关《交流异步矢量程序文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
.BSSSEC_TOG,1;
存放第二次比较匹配的比较器地址
.BSSTETA_E,1;
转子电角度[0;
1000H],对应[0;
360]Q12格式
.BSSIALFA,1;
ALFA轴电流
.BSSIBETA,1;
BETA轴电流
.BSSVALF_REF,1;
ALFA轴参考电压
.BSSVBET_REF,1;
BETA轴参考电压
.BSSIMREF,1;
M轴参考电流
.BSSITREF,1;
T轴参考电流
.BSSIM,1;
M轴电流
.BSSIT,1;
T轴电流
.BSSVMREF,1;
M轴参考电压
.BSSVTREF,1;
T轴参考电压
.BSSEPIT,1;
T轴电流调节偏差
.BSSEPIM,1;
M轴电流调节偏差
.BSSXIT,1;
T轴电流调节器积分累计量
.BSSXIM,1;
M轴电流调节器积分累计量
.BSSN,1;
速度
.BSSN_REF,1;
速度参考值
.BSSEPISPEED,1;
速度偏差
.BSSXISPEED,1;
速度调节器积分累计量
.BSSP,1;
SVPWM扇区索引
.BSSITREFMIN,1;
T轴电流最小极限
.BSSITREFMAX,1;
T轴电流最大极限
.BSSSECTOR,1;
SVPWM扇区数
.BSSINDEX,1;
查SIN表索引
.BSSUPI,1;
PI调节器输出
.BSSELPI,1;
PI调节器极限偏差
.BSSENCODEROLD,1;
前一个采样周期时编码脉冲数
.BSSENCINCR,1;
编码脉冲增量
.BSSSPEEDTMP,1;
编码脉冲增量累计值
.BSSSPEEDSTEP,1;
速度采样周期减计数器
.BSSKR,1;
常数,见式(4-36)
.BSSKT,1;
常数,见式(4-37)
.BSSK,1;
转换常数,见式(4-39)
.BSSIDK,1;
转子励磁电流,Q12
.BSSFS,1;
转子磁链角频率与额定角频率之比
.BSSTETAINCR,1;
TETA转角增量
.BSSTMP1,1;
;
-----------------------以下是程序-----------------------------------------------------------------------------
.TEXT
-----------------------初始化程序-----------------------------------------------------------------------------
CLRCCNF;
B0
SETCOVM
SPM0
SETCSXM;
扩展符号
LARAR0,#DEC_MS;
传送逆阵数据
LARAR1,#(24-1);
24个
LACC#ANGLES_;
指向源
LARPAR0
INIT_TBL
TBLR*+,AR1;
下一个
ADD#1;
下一个地址
BANZINIT_TBL,AR0;
AR1=0结束
LARAR4,#79H;
用于堆栈保存现场,B2(60H-80H)
LDP#0E0H
SPLK#68H,WDCR;
不用看门狗
SPLK#0284H,SCSR1;
CLKIN10MHZ,CLKOUT20MHZ
LDP#0E1H
SPLK#0900H,ADCTRL1;
ADC预分频10,1MHZ
SPLK#0001H,MAXCONV;
两个通道
SPLK#0010H,CHSELSEQ1;
选择ADCIN0和ADCIN1通道
LACCMCRA
OR#0FD8H;
设置PWM1-6,QEP1-2
SACLMCRA
-----------------------变量初始化-----------------------------------------------------
LDP#0
SPLK#32000,T1_PERIODS;
T1周期值的Q5格式,1000*32
SPLK#KI,KI;
给电流积分系数赋值,Q12
SPLK#KP,KP;
给电流比例系数赋值,Q12
SPLK#KC,KC;
给电流积分修正系数赋值,Q12
SPLK#KIN,KIN;
给速度积分系数赋值,Q12
SPLK#KPN,KPN;
给速度比例系数赋值,Q12
SPLK#KCN,KCN;
给速度积分修正系数赋值,Q12
SPLK#VMIN,VMIN;
给电压最小极限赋值-1.25pu,Q12
SPLK#VMAX,VMAX;
给电压最大极限赋值1.25pu,Q12
SPLK#IMAX,IMAX;
给相电流最大极限赋值,Q12
SPLK#1383H,KCURRENT;
电流ipuQ12的转换系数19.5的Q8格式
SPLK#39,KR;
(Lr=0.169,Rr=2.011,T=0.0001)Q15格式
SPLK#156,KT;
(Lr=0.169,Rr=2.011)Q12格式
SPLK#328,K;
转换系数,采样周期100微秒,Q0
SPLK#0,IDK
SPLK#0,FS
SPLK#0,TETAINCR
SPLK#0,TMP
SPLK#0,TMP1
LACCIMAX
SACLITREFMAX
NEG
SACLITREFMIN
LACC#0
SACLITREF
SACLIMREF
SACLN_REF
SACLINDEX
SACLXIM
SACLXIT
SACLXISPEED
SACLUPI
SACLELPI
SACLENCODEROLD
SACLN
SACLSPEEDTMP
LACC#SPEEDSTEP;
SPEEDSTEP=30
SACLSPEEDSTEP
-----------------------事件管理器A初始化-------------------------------------------------------------------
LDP#0E8H
SPLK#0666H,ACTRA;
引脚PWM1,3,5高有效,2,4,6低有效
SPLK#300,CMPR1;
占空比初值为0
SPLK#300,CMPR2
SPLK#300,CMPR3
SPLK#01F4H,DBTCONA;
死区时间1.6us
SPLK#8200H,COMCONA;
定时器下溢比较器重载,允许比较
SPLK#1000,T1PR;
周期寄存器值1000
SPLK#0,T1CNT
SPLK#0840H,T1CON;
连续增减计数方式,预分频为1,允许T1
SPLK#0,T2CNT;
编码脉冲计数器
SPLK#0FFFFH,T2PR
SPLK#9870H,T2CON;
定向增减,允许编码接口
-----------------------中断初始化--------------------------------------------------------------------
SPLK#0FFFH,EVAIFRA;
清事件管理器A所有中断标志
SPLK#000FH,EVAIFRB
SPLK#000FH,EVAIFRC
SPLK#0200H,EVAIMRA;
开T1下溢中断
SPLK#0000H,EVAIMRB
SPLK#0000H,EVAIMRC
LDP#0H
LACC#0FFH
SACLIFR;
清所有系统中断标志
LACC#0000010B
SACLIMR;
开INT2中断
CLRCINTM;
开总中断
-----------------------初始化结束-------------------------------------------------------------------
-----------------------T1下溢中断处理子程序-----------------------------------------------------
_C_INT2
-----------------------保存现场------------------------------------------------------------------------
MAR*,AR4;
AR4作为堆栈指针
MAR*-
SST#1,*-;
保存状态寄存器1
SST#0,*-;
保存状态寄存器0
SACH*-;
保存ACC高位
SACL*-;
保存ACC低位
LDP#0E0H
LACCPIVR;
读中断向量
SPLK#0200H,EVAIFRA;
清中断标志位
-----------------------电流采样和AD转换------------------------------------------------------
SPLK#2000H,ADCTRL2;
启动AD转换,IA-ADCIN0,IB-ADCIN1
CONVERSION
BITADCTRL2,3;
将忙状态位复制到TC
BCNDCONVERSION,TC;
等待
LACCRESULT0,10
SACHIA
LACCRESULT1,10
SACHIB
-----------------------读编码器脉冲数,计算转角增量------------------------------------------------
LACCT2CNT;
读编码脉冲
NEG;
编码器反接线时
SACLTMP
SUBENCODEROLD;
减去前一个周期测的脉冲数
SACLENCINCR;
得到编码增量
LACCTMP
SACLENCODEROLD;
更新ENCODEROLD
-----------------------计算转速---------------------------------------------------------------------------
LACCSPEEDSTEP;
检测是否该采样速度
SUB#1
BCNDNOCALC,GT;
没到采样时刻,退出
LTSPEEDTMP;
到采样时刻,计算编码器增量累计值
MPY#KSPEED;
Q8格式
PAC
SFL
SACHN,7;
相当于右移8位,Q12格式的PU值
LACC#0
SACLSPEEDTMP;
SPEEDTMP清零
SACLSPEEDSTEP;
SPEEDSTEP重新赋初值
-----------------------转速PI调节,输出ITREF----------------------------------------------------------
LACCN_REF;
转速给定值,外部输入,已转化成Q12格式
SUBN
SACLEPISPEED;
转速偏差
LACCXISPEED,12;
转速调节器积分累计量
LTEPISPEED
MPYKPN;
乘比例系数,Q12格式
APAC;
累加
SACHUPI,4;
相当于右移12位
BITUPI,0;
检测调节器输出的正负
BCNDUPIMAGZEROS,NTC;
如果正,跳转
LACCITREFMIN;
否则是负,检测是否超过电流下限
SUBUPI
BCNDNEG_SAT,GT;
超过下限进入饱和区则跳转
LACCUPI;
否则正常调整
BLIMITERS
NEG_SAT
ACC=下限值
UPIMAGZEROS
LACCITREFMAX;
检测是否超过电流上限
SUBUPI
BCNDPOS_SAT,LT;
超过上限进入饱和区则跳转
POS_SAT
ACC=上限值
LIMITERS
SACLITREF;
输出ITREF
SACLELPI;
求极限偏差
LTELPI
MPYKCN;
积分修正系数,Q12
MPYKIN;
积分系数,Q12
APAC
ADDXISPEED,12
SACHXISPEED,4;
更新调节器积分累计量
-----------------------计算编码增量累计值------------------------------------------------------------------
NOCALC
LACCSPEEDTMP
ADDENCINCR
-----------------------将IA,IB,IC转换成IPUQ12格式---------------------------------------------------------
LACCIA
AND#3FFH;
屏蔽高位
SUB#512;
向下平移,产生正负电流值
LTTMP
MPYKCURRENT;
转换系数,Q8格式
SACHIA,7;
IA,Q12格式
LACCIB
AND#3FFH
SUB#512
MPYKCURRENT
SACHIB,7;
IB,Q12格式
ADDIA
SACLIC;
IC=-(IB+IA)
-----------------------CLARKE变换--------------------------------------------------------------------------------
LDP#0
LTIA
MPY#5018;
乘
=5018,Q12格式
SACHIALFA,4;
保存IALFA
LACCIB,1;
ACC=2*IB
ADDIA;
ACC=IA+2*IB
SACLTMP;
暂存
LTIALFA
MPY#2896;
=2896,Q12格式
PAC
SACHIBETA,4;
保存IBETA
-----------------------根据TETA_E查SIN,COS表------------------------------------------------------------
LACCTETA_E;
TETA_E范围[0;
1000H],[0;
360]的Q12格式
RPT#3;
右移4位,范围变为[0;
255],
SFR
AND#0FFH;
SACLINDEX;
生成查表指针
ADD#SINTAB;
加上表的首地址
TBLRSIN;
保存SIN值
LACLINDEX;
COS(TETA)=SIN(TETA+90°
)
ADD#040H;
90°
=40H
AND#0FFH
ADD#SINTAB
TBLRCOS;
保存COS值
--------------------------------------PARK变换-------------------------------------------------------------
LACC#0;
累加器清零
LTIBETA
MPYSIN;
Q12格式
LTAIALFA;
ACC=IBETA*SIN(TETA),T=IALFA
MPYCOS;
MPYASIN;
ACC=IBETA*SIN(TETA)+IALFA*COS(TETA),
P=IALFA*SIN(TETA)
SACHIM,4;
保存IM
LACC#0;
MPYSCOS;
ACC=-IALFA*SIN(TETA),P=IBETA*COS(TETA)
APAC;
ACC=-IALFA*SIN(TETA)+IBETA*COS(TETA)
SACHIT,4;
保存IT
--------------------------------------转子磁链位置的计算-----------------------------------
LACCIM;
Q12
SUBIDK;
MPYKR;
Q15
SACHTMP,1
LACCTMP
ADDIDK
SACLIDK;
IDK=IDK+KR*(IM-IDK),Q12格式
BCNDIDKNOTZERO,NEQ;
如果IDK≠0跳转
SACLTMP;
如果IDK=0,则TMP=IT/IDK=0
BITPOS
IDKNOTZERO
SACLTMP1;
暂存IDK,Q12
LACCIT
ABS;
取绝对值
暂存IT
LACCTMP,12;
右移12位成Q24格式
RPT#15
SUBCTMP1;
除法
TMP=IT/IDK,Q12格式
LACCIT;
根据IT的正负调整商的符号
BCNDITPOS,GT;
IT>0跳转
LACCTMP;
否则求补
ITPOS
MPYKT;
PAC
SACHTMP,4;
TMP=TMP*KT,Q12格式
ADDN;
SFR;
除2(2对磁极),变成机械转速比
SACLFS;
FS=N+KT*(IT/IDK),Q12格式
LACCFS
ABS
MPYK;
Q0
PAC;
计算TETA_E=TETA_E+K*FS
=TETA_E+TETAINCR
;
(0-360)->
(0-65535)
SACHTETAINCR,4;
Q0格式
BITFS,0;
根据FS的正负调整
BCNDFS_NEG,TC;
为负则跳转
LACLTETAINCR;
否则为正
ADDSTETA_E
SACLTETA_E
BFS_POS
FS_NEG
LACLTETA_E
SUBSTETAINCR
FS_POS
LACCTETA_E,12;
除24,变成0-4096范围
SACHTETA_E;
保存TETA_E
-----------------------T轴电流PI调节,输出VTREF-----------------------------
LACCITREF
SUBIT
SACLEPIT;
T轴电流偏差
LACCXIT,12;
电流调节器积分累计量
LTEPIT
MPYKP;
比例系数,Q12
SACHUPI,4
BCNDUPIMAGZEROT,NTC;
LACCVMIN;
否则是负,检测是否超过电压下限
BCNDNEG_SATT,GT;
BLIMITERT
NEG_SATT
UPIMAGZEROT
LACCVMAX;
检测是否超过电压上限
BCNDPOS_SATT,LT;
POS_SATT
LIMITERT
SACLVTREF;
输出VTREF
LT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交流 异步 矢量 程序