永磁同步程序.doc

上传人:豆**** 文档编号:17641449 上传时间:2022-05-25 格式:DOC 页数:14 大小:213KB
返回 下载 相关 举报
永磁同步程序.doc_第1页
第1页 / 共14页
永磁同步程序.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《永磁同步程序.doc》由会员分享,可在线阅读,更多相关《永磁同步程序.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流永磁同步程序.精品文档.三相永磁同步伺服电动机磁场定向速度控制程序 .include 240x.h;-以下定义变量和常数- .dataKCURRENT .set 1383H ;电流ipuQ12的转换系数19.5的Q8格式PWMPRD .set 600 ;周期寄存器值60us/(2*50ns) VMIN .set 0EC00H ;电压最小极限-1.25 pu,Q12VMAX .set 1400H ;电压最大极限1.25 pu,Q12ISMAX .set 1199H ;相电流最大极限4.51A(10%额定值),Q12ISQREFINIT .set

2、 01000H ;isqref初值4.1A(Q12) (1000H = IBASE)KENCODER .set 3 ;磁极对数ENCPULSES .set 4096 ;编码器每转脉冲数(1024*4)KSPEED .set 0BE7H ;将脉冲数转换成速度系数,11.9的Q8格式SPEEDSTEP28 .set 28 ;速度采样周期28个中断 .bss T1_PERIODS,1 ;T1周期值的Q5格式 .bss KI,1 ;电流积分系数 .bss KPI,1 ;电流比例系数 .bss KCOR,1 ;电流积分修正系数 .bss KISPEED,1 ;速度积分系数 .bss KPISPEED,1

3、 ;速度比例系数 .bss KCORSPEED,1 ;速度积分修正系数 .bss TMP,1 ;临时变量 .bss IA,1 ;相电流IA .bss IB,1 ;相电流IB .bss IC,1 ;相电流IC .bss SIN,1 ;SIN值Q12 .bss COS,1 ;COS值Q12 .bss DEC_MS,24 ;6个逆阵,Q14格式 .bss CMP_1,1 ;第1基本矢量,Q0格式 .bss CMP_2,1 ;第2基本矢量, Q0格式 .bss CMP_0,1 ;0基本矢量/2, Q0格式 .bss FIRST_TOG,1 ;存放第一次比较匹配的比较器地址 .bss SEC_TOG,1

4、 ;存放第二次比较匹配的比较器地址 .bss TETA_E,1 ;转子电角度0;1000H,对应0;360Q12格式 .bss ISALFA,1 ;ALFA轴电流 .bss ISBETA,1 ;BETA轴电流 .bss VSAL_REF,1 ;ALFA轴参考电压 .bss VSBE_REF,1 ;BETA轴参考电压 .bss ISDREF,1 ;D轴参考电流 .bss ISQREF,1 ;Q轴参考电流 .bss ISD,1 ;D轴电流 .bss ISQ,1 ;Q轴电流 .bss VSDREF,1 ;D轴参考电压 .bss VSQREF,1 ;Q轴参考电压 .bss EPIQ,1 ;Q轴电流调节

5、偏差 .bss EPID,1 ;D轴电流调节偏差 .bss XIQ,1 ;Q轴电流调节器积分累计量 .bss XID,1 ;D轴电流调节器积分累计量 .bss N,1 ;速度 .bss N_REF,1 ;速度参考值 .bss EPISPEED,1 ;速度偏差 .bss XISPEED,1 ;速度调节器积分累计量 .bss P,1 ;SVPWM扇区索引 .bss INITPHASE,1 ;初始化相位标志 .bss TETA_M,1 ;转子机械转角 .bss ISQREFMIN,1 ;Q轴电流最小极限 .bss ISQREFMAX,1 ;Q轴电流最大极限 .bss SECTOR,1 ;SVPWM扇

6、区数 .bss INDEX,1 ;查SIN表索引 .bss UPI,1 ;PI调节器输出 .bss ELPI,1 ;PI调节器极限偏差 .bss ENCODEROLD,1 ;前一个采样周期时编码脉冲数 .bss ENCINCR,1 ;编码脉冲增量 .bss SPEEDTMP,1 ;编码脉冲增量累计值 .bss SPEEDSTEP,1 ;速度采样周期减计数器 .bss WAITTIME,1 ;相位初始化等待循环次数;-以下是程序- .text;-初始化程序- CLRC CNF ; B0 SETC OVM SPM 0 SETC SXM ;扩展符号 LAR AR0,#DEC_MS ;传送逆阵数据 L

7、AR AR1,#(24-1) ; 24个 LACC #ANGLES_ ; 指向源 LARP AR0 INIT_TBL TBLR *+,AR1 ;下一个 ADD #1 ;下一个地址 BANZ INIT_TBL,AR0 ;AR1=0结束 LAR AR4,#79H ;用于堆栈保存现场,B2(60H-80H) LDP #0E0H SPLK #68H, WDCR ;不用看门狗 SPLK #0284H,SCSR1 ;CLKIN 10MHZ,CLKOUT 20MHZ LDP #0E1H SPLK #0900H,ADCTRL1 ;ADC预分频10,1MHZ SPLK #0001H,MAXCONV ;两个通道

8、SPLK #0010H,CHSELSEQ1 ;选择ADCIN0和ADCIN1通道 LACC MCRA OR #0FD8H ;设置PWM1-6,QEP1-2 SACL MCRA;-变量初始化- LDP #0 SPLK #19200,T1_PERIODS ;T1周期值的Q5格式,600*32 SPLK # 7AH,KI ;积分系数0.03的Q12格式 SPLK #999H,KPI ;比例系数0.60的Q12格式 SPLK #0CCH,KCOR ;KCOR = KI/KPI=0.05,Q12格式 SPLK #7AH,KISPEED ;速度积分系数0.03的Q12格式 SPLK #6800H,KPIS

9、PEED ;速度比例系数6.5的Q12格式 SPLK #12H,KCORSPEED ;KISPEED/KPISPEED=0.0046,Q12 LACC #ISMAX SACL ISQREFMAX NEG SACL ISQREFMIN LACC #0 SACL ISQREF SACL ISDREF SACL N_REF SACL INDEX SACL XID SACL XIQ SACL XISPEED SACL UPI SACL ELPI SACL INITPHASE LACC #0A000H SACL WAITTIME;-事件管理器A初始化- LDP #0E8H SPLK #0666H,ACT

10、RA ;引脚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 #PWMPRD,T1PR ;周期寄存器值600 SPLK #0,T1CNT SPLK #0840H,T1CON ;连续增减计数方式,预分频为1,允许T1 SPLK #0000H,T2CNT ;编码脉冲计数器 SPLK #0FFFFH,T2PR SPLK #9870H,T2CON ;定向

11、增减,允许编码接口;-中断初始化- SPLK #0FFFH,EVAIFRA ;清事件管理器A所有中断标志 SPLK #000FH,EVAIFRB SPLK #000FH,EVAIFRC SPLK #0200H,EVAIMRA ;开T1下溢中断 SPLK #0000H,EVAIMRB SPLK #0000H,EVAIMRC LDP #0H LACC #0FFH SACL IFR ;清所有系统中断标志 LACC #0000010B SACL IMR ;开INT2中断 CLRC INTM ;开总中断;-初始化结束-;-中断向量定义略-;-主程序略-;-T1下溢中断处理子程序-_C_INT2;-保存现

12、场- MAR *,AR4 ;AR4作为堆栈指针 MAR *- SST #1,*- ;保存状态寄存器1 SST #0,*- ;保存状态寄存器0 SACH *- ;保存ACC高位 SACL *- ;保存ACC低位 LDP #0E0H LACC PIVR ;读中断向量 LDP #0E8H SPLK #0200H,EVAIFRA ;清中断标志位;-电流采样和AD转换- LDP #0E1H SPLK #2000H,ADCTRL2 ;启动AD转换,IA-ADCIN0,IB-ADCIN1CONVERSION BIT ADCTRL2,3 ;将忙状态位复制到TC BCND CONVERSION,TC ;等待 L

13、ACC RESULT0,10 LDP #0 SACH IA LDP #0E1H LACC RESULT1,10 LDP #0 SACH IB;-相位初始化- LACL INITPHASE BCND RUN,NEQ ;初始化?已初始过则跳转 LACC #0FC00H ;设置TETA = 0FC00H= -90,Q12 SACL TETA_E LACC #ISQREFINIT ;Q轴电流等于参考电流 SACL ISQREF LACC #0 ;对变量和标志清零 SACL ISDREF SACL TETA_M SACL ENCODEROLD SACL N SACL SPEEDTMP LACC #SPE

14、EDSTEP28 ;SPEEDSTEP=28 SACL SPEEDSTEP LDP #0E8H SPLK #0,T2CNT ;编码器计数清零 LDP #0 LACC #WAITTIME ;循环次数A000H,等待 SUB #1 SACL WAITTIME BCND WAIT,NEQ SPLK #1, INITPHASE ;INITPHASE=1,相位初始化完成;-读编码器脉冲数,计算转角增量和转子绝对位置-RUN LDP #0E8H LACC T2CNT ;读编码脉冲 ;NEG ;编码器反接线时 LDP #0 SACL TMP SUB ENCODEROLD ;减去前一个周期测的脉冲数 SACL

15、 ENCINCR ;得到编码增量 ADD TETA_M ;得到转子绝对位置 BCND ENCMAGZERO,GEQ ;调整TETA_M的范围0;ENCPULSES-1 ADD #ENCPULSES ;如果TETA_M是负值调整为正ENCMAGZERO SACL TETA_M SUB #ENCPULSES ;检测TETA_M是否大于360 BCND ENCMINMAX,LT ;不大于则跳转 SACL TETA_M ;大于则保存差值ENCMINMAX LACC TMP SACL ENCODEROLD ;更新ENCODEROLD;-计算绝对电角度- LT TETA_M MPY #KENCODER ;

16、乘磁极对数KENCODER PAC ;Q12格式 AND #0FFFH ;屏蔽高位 SACL TETA_E ;存放;-计算转速- LACC SPEEDSTEP ;检测是否该采样速度 SUB #1 SACL SPEEDSTEP BCND NOCALC,GT ;没到采样时刻,退出 LT SPEEDTMP ;到采样时刻,计算编码器增量累计值 MPY #KSPEED ;Q8格式 PAC SFL SACH N,7 ;相当于右移8位 LACC #0 SACL SPEEDTMP ;SPEEDTMP清零 LACC #SPEEDSTEP28 ;SPEEDSTEP=28 SACL SPEEDSTEP ;SPEED

17、STEP重新赋初值;-转速PI调节,输出IQREF- LACC N_REF ;转速给定值,外部输入 SUB N SACL EPISPEED ;转速偏差 LACC XISPEED,12 ;转速调节器积分累计量 LT EPISPEED MPY KPISPEED ;乘比例系数6800H(6.5的Q12格式) APAC ;累加 SACH UPI,4 ;相当于右移12位 BIT UPI,0 ;检测调节器输出的正负 BCND UPIMAGZEROS,NTC ;如果正,跳转 LACC ISQREFMIN ;否则是负,检测是否超过电流下限 SUB UPI BCND NEG_SAT,GT ;超过下限进入饱和区则

18、跳转 LACC UPI ;否则正常调整 B LIMITERSNEG_SAT LACC ISQREFMIN ; ACC =下限值 B LIMITERSUPIMAGZEROS LACC ISQREFMAX ;检测是否超过电流上限 SUB UPI BCND POS_SAT,LT ;超过上限进入饱和区则跳转 LACC UPI ;否则正常调整 B LIMITERSPOS_SAT LACC ISQREFMAX ; ACC =上限值LIMITERS SACL ISQREF ;输出IQREF SUB UPI SACL ELPI ;求极限偏差 LT ELPI MPY KCORSPEED ;KCORSPEED=

19、KISPEED/ KPISPEED PAC LT EPISPEED MPY KISPEED ;积分系数 APAC ADD XISPEED,12 SACH XISPEED,4 ;更新调节器积分累计量;-计算编码增量累计值-NOCALC LACC SPEEDTMP ADD ENCINCR SACL SPEEDTMP ;-将IA,IB,IC转换成IPUQ12格式-WAIT LDP #0 LACC IA AND #3FFH ;屏蔽高位 SUB #512 ;向下平移,产生正负电流值 SACL TMP LT TMP MPY #KCURRENT ;转换系数,Q8格式 PAC SFL SACH IA,7 ;I

20、A, Q12格式 LACC IB AND #3FFH SUB #512 SACL TMP LT TMP MPY #KCURRENT PAC SFL SACH IB,7 LACC IB ADD IA NEG SACL IC ;IC = -(IB+IA);-CLARKE变换- LDP #0 LT IA MPY #5018 ;乘=5018,Q12格式 PAC SACH ISALFA,4 ;保存ISALFA LACC IB,1 ;ACC =2*IB ADD IA ;ACC =IA+2*IB SACL TMP ;暂存 LT ISALFA MPY #2896 ;乘=2896,Q12格式 PAC SACH

21、ISBETA ,4 ;保存ISBETA ;-根据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 ISBETA MPY SIN ;Q12格式 LTA ISALFA ;ACC=ISBETA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁