1、DSP的PWM电机控制程序代码分析中南大学DSF原理及应用课程代码分析报告报告题目:DSP的PWM电机控制程序代码分析 学 院: 专业班级: 姓 名: 学 号:0909082203指导老师:刘建成1.基本原理2.、头文件和变量数据存储空间(汇编源程序) 声明( C 源程序)分析3.算法分析与流程图4.总结1.基本原理1.每个240X器件都包含两个事件管理模块 EVA和EVB,每个时间管理器模块 包括通用定时器、比较单元、捕获单元,以及正交编码脉冲电路。2.直流电机控制:直流电动机是最早出现的电动机,也是最早能实现调速的电动机。近年来, 直流电动机的结构和控制方法都发生了很大的变化。随着计算机进
2、入控制领域, 以及新型的电力电子功率元器件的不断出现, 使采用全控型的开关功率元件进行 脉宽调制(PWM)控制方式已成为绝对主流。PWM调压调速原理:其中,U为电枢端电压;I为电枢电流;R为电枢电路总电阻; 为每级磁通量;K为电动机结构参数。所以直流电机的转速控制方法可分为两类: 对励磁通进行控制的励磁控制法 和对电枢电压进行控制的电枢控制法。其中励磁控制法在低速时受磁极饱和的限 制,在高速时受换向火花和换向器结构强度的限制, 并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。现在,大多数应用场合都使用电枢控 制法。绝大多数电流电机采用开关驱动方法。 开关驱动方式是使半导体功率器件
3、 工作在开关状态,通过脉宽调制 PWM来控制电动机电枢电压,实现调速。具体 电路如下图。up超 16C1ALr:D DU1DMOTE2.数据存储空间(汇编源程序)、头文件和变量声明(C源程序)分析在此程序中定义了如下变量(C源程序)/global.c*7extern uksiifled int $丹1佩训2問冊卩吋冋卿;extern unsigned int WDCBIDKEV:extern URsijntd int MRrIFI,PIIRirVS0t;extern unsized int MCRA.HCRI.MCHC.PflDAIBlPBDATDIH.rCMnil.KMnitPFDnOIH;
4、extern unsigned int 眦TRLMDCTRL?川WONU邮EL刑邮FL叫邮WQ3附血Qh;extern unsized int AlirOSEIJSR RESULT RESULTI.RfSLLTS, RESULTS RESULT?;extern unsigreti int 耶HOHTGRRN删期帼乩冊顺R2MMGR1 疋RHE恥隔端extern unsized int帥NCFM肪旧朋胆札倔肚酣脚血吐州肚;PKtern unsigned int CAHIDmjCnHtDSLDNCTRLOfCANEMOfl.CAffiXBBANBXOCjCANBXOO;PKterfl unsign
5、ed int GAKIEIH.CRHIDlL.CAIETHLI.CANeXIRRWBftNBKICANBMD;extern unsigned int CAHID2HICAHID2L,CAHCTRL2ICAH6X2AJCAHei!2STCAHDX2CICANBX2D;PKtern unsigned int聽帕03儿蚀川蚀問1即直理用欄1:噸监盼血11瞄眄蚀丽鹉片extern unsigned int 即NID4H#RHM札.CRHCTRL*朋BKUbCR蔺胡盼皿冊汕C,C側册呱;extern unsigned int渤ID5H#ANI瓯,MNCTRL几朋哪井問删唧,他删丸,朋册曲;extern
6、unsigred int 離ICCR靑tICTU,SUHE細釘SC】UIW0dl:I(;TL2mRXST.SCIRXENI.SCJRXBUF.SCHXIUF,SC1FRI;蹴PM unsigned ilt SHCDHAJICNTJIPHJICON.TCNT.IZPRJCDH.EUAlMRflJUAlMRBJUAIFHftJUAIFRB;tern unHqn凶 int 即TMNEJMNTJ斜PRJ3PRJ剜HQIONA/济陆MT饲陆柑IPIH,口时删上朋IFRA;在此程序中定义如下数据空间(汇编程序):ine.asnc_inrnR_fi_tnti* c_int?I MR, IFR SCSftll
7、 B SCSR2, jKJHnCR, KIH12CRWDIDHTR p UDKE,_WDCR憎 M,離朋.MCHCa_PmTDIR._PB&ftWlR,_PCDftTDlRi_PEDflTDIRwjPFmi?IR flDCTRL! ,_ftDCTHL2t JlflXCOHU#_CHSELSEQ 1 t_CHSELSEQ2P_CHSELSEQ3._CHSELSEQi AIIV n SFqSR P_R ES1II Ilp.RF SUL 11 fr_RFSlJLT?F SIULTRRFSUI T9CHIVDER, CAMER CAIWcEllp :HHICR , CAWER2?_CDNH:CR1 ,
8、_CAHESR f _CANESR CfiNCLC, UfiHlFH. UAHIHH . JJmMLRMNHa JUAHL AMliL由于程序设置使用 CAN总线传输电机转速数据,故在程序中开辟了 CANIDxL和CANIDxH存储CAN总线数据标识符ID的单元),CANCTRLx存储CAN总线控制寄存器位单元), CANBXnA/B/C/D(存储总线传输数据单元)。在汇编程序中还将在程序中涉及的变量开辟空间由于在程序中要用到中断,故在汇编程序中定义了中断向量地址表:;建寺中断向量表.vectors.sectRSVECTBc intoINTIBPHANTOMIHT2Bc int2IHT3BPH
9、ANTOMI NTHBPHANTOMI NTSBPHANT0HINT6BPHANTON;中断子向量入口定义-textPHrtHTOH:KICK_DCG RET.end具体变量和块在存储器中的地址为:*TMS320C24xx COFF Lin ker Versio n 7.02*OUTPUT FILE NAME: ENTRY POINT SYMBOL: _c_i ntO address: 00008904SECTION ALLOCATION MAPoutputsect ionpageoriginlengthattributes/in put sect ions.vectors 0 0000800
10、0 0000000e000080000000000eDefi ne.obj (.vectors).text00008860000001490000886000000006Define.obj (.text)0000886600000000global.obj (.text)000088660000009eMain.obj (.text)0000890400000027rts2xx.lib : boot.obj (.text)0000892b00000050: exit.obj (.text)0000897b0000002e: saverest.obj (.text).cinit0 000089
11、a900000010000089a900000009Main.obj (.cinit)000089b200000006rts2xx.lib : exit.obj (.cinit)000089b800000001-HOLE- fill = 0000.data1 0000086000000000UNINITIALIZED0000086000000000Define.obj (.data)0000086000000000rts2xx.lib : saverest.obj (.data)0000086000000000: exit.obj (.data)0000086000000000: boot.o
12、bj (.data)0000086000000000Main.obj (.data)0000086000000000global.obj (.data).bss10000088000000025UNINITIALIZED0000088000000022rts2xx.lib : exit.obj (.bss)000008a200000000: boot.obj (.bss)000008a200000000global.obj (.bss)000008a200000000rts2xx.lib : saverest.obj (.bss)000008a200000000Define.obj (.bss
13、)000008a200000003Main.obj (.bss).const10000086000000000UNINITIALIZED.switch00000886000000000UNINITIALIZED.stack1000008a5000000a0UNINITIALIZED000008a500000000rts2xx.lib : boot.obj (.stack).system10000086000000000UNINITIALIZED3.算法分析与流程图六、程序流程图算法分析:/*Mai n.c*/*PWM 电机控制程序,正反转,默认设置的工作频率 1kHz*/#i nclude g
14、lobal.cvoid Systeml nit();void PWM _ln it();void KickDog();int numled0=200;unsigned int t0=0;unsigned int XPWM=0;main()SystemInit(); / 系统初始化/IOPB0-6 设为 IO 口模式/ 所有 LED=0/ 所有 LED=1MCRA=MCRA & 0xC0FF;PBDATDIR=0xFFC2;PBDATDIR=PBDATDIR |0x003D;XPWM=2400; / 最大值 2500/* when xpwm=0900, 逆时针方向旋转 ,值越小 ,转速越 快wh
15、en xpwm=16002500, 顺时针方向旋转 , 值越大 , 转速越快when xpwm=9001600, 电机两端电压太低 ,基本上 不足以起转 */asm( CLRC INTM );while(1);void SystemInit()asm( SETC INTM ); /* 关闭总中断 */asm( CLRC SXM ); /* 禁止符号位扩展 */asm( CLRC CNF );/* B0 块映射为 on-chip DARAM*/CLKOUT=40M */KickDog();IFR=0xFFFF;IMR=0x0002;/* 初始化看门狗 */* 清除中断标志 */* 打开中断 2*
16、/void PWM_Init()MCRA=MCRA | 0x00C0;/PA6-PA7 为 PWM 口EVAIFRA=0xFFFF;/ 清除中断标志ACTRA=0x0006;/PWM1,2 低有效DBTCONA=0x0530;/ 使能死区定时器 1, 分频 40M/16=2.5M, 死区时间5*0.4us=2usT1PR=2500;/ 定时器 1 周期值 ,定时 0.4us*2500=1msCMPR1=XPWM;/ 比较值COMCONA=0xA600;/ 比较控制寄存器/* 定时器 1 中断服务程序 */T1CNT=0;EVAIMRA=0x0080;/ 定时器 1 周期中断使能T1CON=0x
17、144E;/ 增模式 , TPS 系数 40M/16=2.5M,T1 使能 ,void c_int2()if(PIVR!=0x27) asm( CLRC INTM );return;T1CNT=0;t0+;numled0-;if(numled0=0)numled0=2000;if(PBDATDIR & 0x0001)=0x0001)PBDATDIR=PBDATDIR & 0xFFFE; /IOPB0=0;LEDelsePBDATDIR=PBDATDIR |0x0101; /IOPB0=1;LEDEVAIFRA=0x80;asm( CLRC INTM );void KickDog() /* 踢除看门狗 */WDKEY=0x5555;WDKEY=0xAAAA;4.总结DSP是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤 波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。在利用对其DSP对电机进行PWM控制中,相对于模拟信号控制, DSP具有精确、灵活、抗干扰能力强、 可靠性高、体积小、易于大规模集成等优点。并且由于DSP具有强大的数据处理能力, PWM控制更能得心应手。