程序清单32三相交流电动机SVPWM开环调速控制程序.docx

上传人:b****7 文档编号:9613561 上传时间:2023-02-05 格式:DOCX 页数:16 大小:16.44KB
下载 相关 举报
程序清单32三相交流电动机SVPWM开环调速控制程序.docx_第1页
第1页 / 共16页
程序清单32三相交流电动机SVPWM开环调速控制程序.docx_第2页
第2页 / 共16页
程序清单32三相交流电动机SVPWM开环调速控制程序.docx_第3页
第3页 / 共16页
程序清单32三相交流电动机SVPWM开环调速控制程序.docx_第4页
第4页 / 共16页
程序清单32三相交流电动机SVPWM开环调速控制程序.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

程序清单32三相交流电动机SVPWM开环调速控制程序.docx

《程序清单32三相交流电动机SVPWM开环调速控制程序.docx》由会员分享,可在线阅读,更多相关《程序清单32三相交流电动机SVPWM开环调速控制程序.docx(16页珍藏版)》请在冰豆网上搜索。

程序清单32三相交流电动机SVPWM开环调速控制程序.docx

程序清单32三相交流电动机SVPWM开环调速控制程序

程序清单3-2三相交流电动机SVPWM开环调速控制程序

#include

.section/pmIVreset;

jumpstart;

.section/pmIVint4;

jumpPWMTRIP_IRQ;

.section/pmIVint5;

jumpPWMSYNC_IRQ;

.section/datadata1;

.varTHETA_90=0x1922;

.varTHETA_180=0x3244;

.varTHETA_270=0x4b66;

.varTHETA_360=0x6488;

.varSET_F=0x28f5;

.varF_OMEGA=0x2745;

.varTHETA_H=0x0;

.varTHETA_L=0x0;

.varTHETA_I=0x7297;

.varTHETA_S=0x7a3b;

.varT_SAMPLE=0x0D1B;

.varT1_PERIODS=20000;

.varMAX_V=0x2d41;

 

.varTEMP;

.varTEMP0;

.varTEMP1;

.varOMEGA;

.varSET_V;

.varTHETA_R;

.varTHETA_M;

.varS_S;

.varS_C;

.varSIN_INDX;

.varSIN_THETA;

.varCOS_THETA;

.varUA;

.varUB;

.varSECTOR;

.varCMP_1;

.varCMP_2;

.varCMP_0;

.varSIN_[91]=0,286,572,857,1143,1428,1713,1997,2280,2563,2845,

3126,3406,3686,3964,4240,4516,4790,5063,5334,5604,

5872,6138,6402,6664,6924,7182,7438,7692,7943,8192,

8438,8682,8932,9162,9397,9630,9860,10087,10311,10531,

10749,10963,11174,11381,11585,11786,11982,12176,12365,12551,

12733,12911,13085,13255,13421,13583,13741,13894,14044,14189,

14330,14466,14598,14726,14849,14968,15082,15191,15296,15396,

15491,15582,15668,15749,15826,15897,15964,16026,16083,16135,

16182,16225,16262,16294,16322,16344,16362,16374,16382,16384;

.varNZ_[24]=20066,-11585,0,23170,-20066,11585,20066,11585,0,23170,-20066,

-11585,0,-23170,-20066,11585,-20066,-11585,20066,-11585,20066,

11585,0,-23170;

.section/pmprogram;

start:

IMASK=0X0000;

IOPG=Interrupt_Controller_Page;

NOP;

AX0=0xBB01;

IO(IPR2)=AX0;

IMASK=0x003f;

IOPG=Clock_and_System_Control_Page;

AX0=0X0100;

IO(PLLCTL)=AX0;

IOPG=0X0008;

AR=0x0200;

IO(PWM0_STAT)=AR;

AX0=0X0003;

IO(PWM0_CTRL)=AX0;

AR=5000;

IO(PWM0_TM)=AR;

AX0=0x03FF;

IO(PWM0_SYNCWT)=AX0;

AX0=100;

IO(PWM0_DT)=AX0;

AX0=-2400;

IO(PWM0_CHA)=AX0;

IO(PWM0_CHB)=AX0;

IO(PWM0_CHC)=AX0;

AX0=0X0000;

IO(PWM0_SEG)=AX0;

ENAINT;

MAIN_LOOP:

NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;

NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;

NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;NOP;

JUMPMAIN_LOOP;

PWMTRIP_IRQ:

.SECTION/PMprogram;

IOPG=0X0008;

AX0=0X0;

IO(PWM0_CTRL)=AX0;

NOP;

jumpPWMTRIP_IRQ;

RTI;

PWMSYNC_IRQ:

.SECTION/codeprogram;

IOPG=0X0008;

ASTAT=0X00;

ENAM_MODE;

MX0=DM(SET_F);

MY0=DM(F_OMEGA);

MR=MX0*MY0(UU);

DM(OMEGA)=MR1;

MX0=DM(SET_F);

MY0=DM(MAX_V);

MR=MX0*MY0(UU);

DM(SET_V)=MR1;

MX0=DM(OMEGA);

MY0=DM(T_SAMPLE);

MR=MX0*MY0(UU);

SI=MR1;

SR=ASHIFTSIBY-1(HI);

SI=MR0;

SR=SRORLSHIFTSIBY-1(LO);

AY0=DM(THETA_L);

AR=SR0+AY0;

DM(THETA_L)=AR;

AY1=DM(THETA_H);

AR=SR1+AY1+C;

DM(THETA_H)=AR;

AX0=DM(THETA_360);

AY0=DM(THETA_H);

AR=AY0-AX0;

IFLEJUMPRND_THETA;

AY0=DM(THETA_360);

SR=LSHIFTAY0BY16(LO);

AX1=DM(THETA_H);

AX0=DM(THETA_L);

AR=AX0-SR0;

DM(THETA_L)=AR;

AR=AX1-SR1+C-1;

DM(THETA_H)=AR;

RND_THETA:

SI=1;

SR=LSHIFTSIBY15(LO);

AY0=DM(THETA_L);

AY1=DM(THETA_H);

AR=SR0+AY0;

AR=AY1+SR1+C;

DM(THETA_R)=AR;

AX0=1;

DM(S_S)=AX0;

DM(S_C)=AX0;

AX0=DM(THETA_R);

DM(THETA_M)=AX0;

AY0=DM(THETA_90);

AR=AX0-AY0;

IFLEJUMPE_Q;

AX0=1;

DM(S_S)=AX0;

AX0=-1;

DM(S_C)=AX0;

AY0=DM(THETA_180);

AX0=DM(THETA_R);

AR=AY0-AX0;

DM(THETA_M)=AR;

IFGEJUMPE_Q;

AX0=-1;

DM(S_S)=AX0;

AX0=-1;

DM(S_C)=AX0;

AY0=DM(THETA_R);

AX0=DM(THETA_180);

AR=AY0-AX0;

DM(THETA_M)=AR;

AY0=DM(THETA_270);

AX0=DM(THETA_R);

AR=AY0-AX0;

IFGEJUMPE_Q;

AX0=1;

DM(S_C)=AX0;

AX0=-1;

DM(S_S)=AX0;

AY0=DM(THETA_360);

AX0=DM(THETA_R);

AR=AY0-AX0;

DM(THETA_M)=AR;

E_Q:

MX0=DM(THETA_M);

MY0=DM(THETA_I);

MR=MX0*MY0(UU);

DM(SIN_INDX)=MR1;

SI=MR1;

SR=LSHIFTSIBY-5(LO);

DM(SIN_INDX)=SR0;

M0=DM(SIN_INDX);

I0=SIN_;

MX0=DM(I0+M0);

DM(SIN_THETA)=MX0;

I0=SIN_;

AX0=DM(SIN_INDX);

SR0=90;

AR=SR0-AX0;

DM(SIN_INDX)=AR;

M0=DM(SIN_INDX);

MX0=DM(I0+M0);

DM(COS_THETA)=MX0;

MX0=DM(S_S);

MY0=DM(SIN_THETA);

MR=MX0*MY0(SU);

DM(SIN_THETA)=MR0;

MX0=DM(S_C);

MY0=DM(COS_THETA);

MR=MX0*MY0(SU);

DM(COS_THETA)=MR0;

MX0=DM(SET_V);

MY0=DM(COS_THETA);

MR=MX0*MY0(US);

DM(UA)=MR1;

MY0=DM(SIN_THETA);

MR=MX0*MY0(US);

DM(UB)=MR1;

MX0=DM(THETA_R);

MY0=DM(THETA_S);

MR=MX0*MY0(UU);

SI=MR1;

SR=LSHIFTSIBY5(LO);

DM(SECTOR)=SR1;

I1=NZ_;

AX0=DM(SECTOR);

SI=AX0;

SR=LSHIFTSIBY2(LO);

DM(TEMP0)=SR0;

M1=SR0;

MR0=DM(I1+M1);

MY0=DM(UA);

SR=MR0*MY0(SS);

AX0=DM(TEMP0);

AY0=1;

AR=AX0+AY0;

M1=AR;

MR0=DM(I1+M1);

MY0=DM(UB);

MR=MR0*MY0(SS);

AX0=MR0;

AX1=MR1;

AR=SR0+AX0;

AR=SR1+AX1+C;

IFGEJUMPWW1;

AR=0;

WW1:

DM(TEMP)=AR;

MX0=AR;

MY0=DM(T1_PERIODS);

MR=MX0*MY0(SU);

SI=MR1;

SR=ASHIFTSIBY4(HI);

SI=MR0;

SR=SRORLSHIFTSIBY4(LO);

DM(CMP_1)=SR1;

MX0=DM(UA);

I1=NZ_;

AX0=DM(TEMP0);

AY0=2;

AR=AX0+AY0;

M1=AR;

MY0=DM(I1+M1);

SR=MY0*MX0(SS);

MX0=DM(UB);

AX0=DM(TEMP0);

AY0=3;

AR=AX0+AY0;

M1=AR;

MY0=DM(I1+M1);

MR=MY0*MX0(SS);

AX0=MR0;

AX1=MR1;

AR=SR0+AX0;

AR=SR1+AX1+C;

IFGEJUMPWW2;

AR=0;

WW2:

DM(TEMP)=AR;

MX0=AR;

MY0=DM(T1_PERIODS);

MR=MX0*MY0(SU);

SI=MR1;

SR=ASHIFTSIBY4(HI);

SI=MR0;

SR=SRORLSHIFTSIBY4(LO);

DM(CMP_2)=SR1;

AX0=5000;

AY0=DM(CMP_1);

AY1=DM(CMP_2);

AR=AX0-AY0;

AR=AR-AY1+C-1;

IFGEJUMPWW3;

AR=0;

WW3:

SI=AR;

SR=LSHIFTSIBY15(LO);

DM(CMP_0)=SR1;

SR0=DM(CMP_0);

AY0=2500;

AR=SR0-AY0;

AX0=AR;

AY0=100;

AR=AX0+AY0;

SR0=AR;

AR=DM(SECTOR);

AY0=0;

AR=AY0-AR;

IFEQJUMPTT0;

AR=DM(SECTOR);

ay0=5;

ar=ay0-ar;

ifeqjumpTT0;

AR=DM(SECTOR);

ay0=4;

ar=ay0-ar;

ifeqjumpTT2;

AR=DM(SECTOR);

ay0=3;

ar=ay0-ar;

ifeqjumpTT2;

AR=DM(SECTOR);

ay0=2;

ar=ay0-ar;

ifeqjumpTT1;

jumpTT1;

TT0:

io(PWM0_CHA)=SR0;

JUMPPP1;

TT1:

io(PWM0_CHB)=SR0;

JUMPPP1;

TT2:

io(PWM0_CHC)=SR0;

JUMPPP1;

PP1:

AX0=DM(CMP_0);

AY0=DM(CMP_1);

AR=AY0+AX0;

SR0=AR;

AY0=2500;

AR=SR0-AY0;

AX0=AR;

AY0=100;

AR=AX0+AY0;

SR0=AR;

AR=DM(SECTOR);

AY0=0;

AR=AY0-AR;

IFEQJUMPTT4;

AR=DM(SECTOR);

ay0=5;

ar=ay0-ar;

ifeqjumpTT5;

AR=DM(SECTOR);

ay0=4;

ar=ay0-ar;

ifeqjumpTT3;

AR=DM(SECTOR);

ay0=3;

ar=ay0-ar;

ifeqjumpTT4;

AR=DM(SECTOR);

ay0=2;

ar=ay0-ar;

ifeqjumpTT5;

jumpTT3;

TT3:

io(PWM0_CHA)=SR0;

JUMPPP2;

TT4:

io(PWM0_CHB)=SR0;

JUMPPP2;

TT5:

io(PWM0_CHC)=SR0;

JUMPPP2;

PP2:

AX1=DM(CMP_0);

AY1=DM(CMP_1);

SR0=DM(CMP_2);

AR=AX1+AY1;

AR=AR+SR0+C;

SR0=AR;

AY0=2500;

AR=SR0-AY0;

AX0=AR;

AY0=100;

AR=AX0+AY0;

SR0=AR;

AR=DM(SECTOR);

AY0=0;

AR=AY0-AR;

IFEQJUMPTT8;

AR=DM(SECTOR);

ay0=5;

ar=ay0-ar;

ifeqjumpTT7;

AR=DM(SECTOR);

ay0=4;

ar=ay0-ar;

ifeqjumpTT7;

AR=DM(SECTOR);

ay0=3;

ar=ay0-ar;

ifeqjumpTT6;

AR=DM(SECTOR);

ay0=2;

ar=ay0-ar;

ifeqjumpTT6;

jumpTT8;

TT6:

io(PWM0_CHA)=SR0;

JUMPVV;

TT7:

io(PWM0_CHB)=SR0;

JUMPVV;

TT8:

io(PWM0_CHC)=SR0;

JUMPVV;

VV:

AR=0x0200;

IO(PWM0_STAT)=AR;

RTI;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1