




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
无位置传感器的无刷直流电动机调速控制程序 .include 240x.h .global _c_int0;-以下定义常数和变量-KP .set 245 ;电流调节比例系数, 0.12的Q11格式KPS .set 100 ;速度调节比例系数 .bss CAPT,1 ;换相控制字 .bss COMP,1 ;更新占空比的比较值,由电流调节输出 .bss IDC_REF,1 ;电流参考值,由速度调节输出 .bss IDC_ERRORK,1 ;电流偏差 .bss FLAGCUR,1 ;更新比较值和换相标志,1-允许更新,0-不允许 .bss SPEED_REF,1 ;给定速度参考 .bss V_ERRORK,1 ;速度偏差 .bss SPEED_COUNT,1 ;速度调节环计数器 .bss V1,1 ;相电压1 .bss V2,1 ;相电压2 .bss V3,1 ;相电压3 .bss NEUTRAL,1 ;中性点电压 .bss FLAG,1 ;感应电动势变符号标志,1-变了;0-没变 .bss FLAGUP,1 ;转过一机械转标志,1-没转过,0-转过 .bss BCOUNT,1 ;延迟时间更新值,磁定位时临时变量 .bss B2COUNT,1 ;延迟时间 .bss STALL,1 ;磁定位结束标志,1-结束,0-没结束 .bss ASYM,1 ;延时计算感应电动势计数器 .bss SPEEDFLAG,1 ;第一转时禁止速度调节标志,1-禁止,0-允许 .bss TIME,1 ;每转时间计数器 .bss STACK,6 ;软堆栈区;-定义主向量- .sect vectorsRSVECT B _c_int0 ;复位INT1 B PHANTOM ;INT1INT2 B PHANTOM ;INT2INT3 B PHANTOM ;INT3INT4 B PHANTOM ;INT4INT5 B PHANTOM ;INT5INT6 B ADCINT ;ADC中断 ;略;-以下是程序- .text;-初始化程序-_c_int0 SETC CNF CLRC OVM SETC SXM ;符号扩展 SETC INTM ;关中断 LAR AR1,#STACK LDP #0E0H SPLK #68H, WDCR ;不用看门狗 SPLK #0284H,SCSR1 ;10MCLKIN,20MCLKOUT LDP #0E8H SPLK #500,T1PR ;PWM设置,周期50微秒 SPLK #0000H,T1CNT SPLK #0FFFH,ACTRA ;PWM16全部高电平输出 SPLK #01F4H,DBTCONA ;死区1.6微秒 SPLK #500,CMPR1 ;占空比为0 SPLK #500,CMPR2 SPLK #500,CMPR3 SPLK #8200H,COMCONA ;允许比较,T1下溢重载 SPLK #0840H,T1CON ;连续增减计数,内部时钟,不分频 SPLK #0100H,GPTCONA ;T1周期中断标志启动AD转换 LDP #0E1H SPLK #0FC0H, MCRA ;引脚设置为PWM LDP #0 LACC #020H SACL IMR ;允许INT6中断 LACC IFR ;清标志 SACL IFR LDP #0E8H LACC EVAIFRA ;清标志 SACL EVAIFRA LACC EVAIFRB SACL EVAIFRB LACC EVAIFRC SACL EVAIFRC SPLK #0,EVAIMRA ;屏蔽中断 SPLK #0,EVAIMRB SPLK #0,EVAIMRC LDP #0E1H ;AD设置 SPLK #0500H,ADCTRL2 ;允许EVA启动AD转换 SPLK #0900H,ADCTRL1 ;10分频 SPLK #0003H,MAXCONV ;4个转换通道 SPLK #3210H,CHSELSEQ1 ;ADCIN00-03通道 CLRC INTM ;开总中断;-变量初始化- LDP #0 ;变量初始化 SPLK #020H,IDC_REF ;磁定位电流 SPLK #0,IDC_ERRORK SPLK #0300H,SPEED_REF ;转速初值 SPLK #00112,COMP ;最小占空比 SPLK #0000H,FLAGCUR SPLK #0000H,SPEED_COUNT SPLK #0000H,CAPT SPLK #0000H,V1 SPLK #0000H,V2 SPLK #0000H,V3 SPLK #0000H,NEUTRAL SPLK #0000H,FLAG SPLK #0001H,FLAGUP ;没转过一转 SPLK #0001H,SPEEDFLAG ;禁止速度调节 SPLK #0000H,BCOUNT SPLK #0000H,B2COUNT SPLK #0000H,STALL SPLK #0000H,ASYM SPLK #0000H, V_ERRORK SPLK #0000H,TIME;-准备磁定位- LDP #0 LACC COMP ;装载比较初值 LDP #0E8H ;反相驱动 SPLK #03FDH,ACTRA ;PWM1低有效,PWM6低电平,其它高电平 SACL CMPR1 ;A相入,C相出,B相不通电 SPLK #0000H,CMPR2 SPLK #0000H,CMPR3;-等待磁定位结束-MAGSTALL LDP #0 LACC STALL ;检测磁定位是否结束 BCND MAGSTALL,EQ ;没结束继续等待;-磁定位结束换相- LACC COMP LDP #0E8H SPLK #03DFH,ACTRA ;PWM3低有效,PWM6低电平,其它高电平 SACL CMPR2 ;B相入,C相出,A不通电 SPLK #0000H,CMPR3 SPLK #0000H,CMPR1 LDP #0 SPLK #4,CAPT ;CAPT初值;-主循环-LOOP LDP #0 LACC FLAGCUR ;检测是否更新比较值 BCND LOOP,EQ ;不更新跳转 SPLK #0,FLAGCUR ;更新,清标志 CALL SEQUENCE ;调用更新子程序 B LOOP ;等待下次更新;-假中断处理-PHANTOM CLRC INTM RET;-更新比较值或换相子程序-SEQUENCE LDP #0 LACC TIME ;每转时间计数器 ADD #1 SACL TIME LACC CAPT ;换相控制字 ADD #CAPT_DETER ;加起始地址 BACCCAPT_DETER B RISING1 ;相当于H1上升沿 B FALLING3 ;相当于H3下降沿 B RISING2 ;相当于H2上升沿 B FALLING1 ;相当于H1下降沿 B RISING3 ;相当于H3上升沿FALLING2 ;相当于H2下降沿 LACC COMP LDP #0E8H SPLK #0D3FH,ACTRA ;PWM5低有效,PWM4低电平,其它高电平 SACL CMPR3 ;C相入,B相出,A相不通电 SPLK #0000H,CMPR2 SPLK #0000H,CMPR1 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V1,1 ;没变,检测.V1乘2 ADD V1 ;ACC=3*(BEMFA + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFA BCND END,LT ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间 B END ;退出RISING3 LACC COMP LDP #0E8H SPLK #0DF3H,ACTRA ;PWM5低有效,PWM2低电平,其它高电平 SACL CMPR3 ;C相入, A相出, B相不通电 SPLK #0000H,CMPR2 SPLK #0000H,CMPR1 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LDP #0 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V2,1 ;没变,检测.V2乘2 ADD V2 ;ACC=3*(BEMFB + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFB BCND END,GEQ ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间 B END ;退出FALLING3 LACC COMP LDP #0E8H SPLK #03FDH,ACTRA ;PWM1低有效,PWM6低电平,其它高电平 SACL CMPR1 ; A相入, C相出, B相不通电 SPLK #0000H,CMPR2 SPLK #0000H,CMPR3 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LDP #0 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V2,1 ;没变,检测.V2乘2 ADD V2 ;ACC=3*(BEMFB + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFB BCND END,LT ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间 B END ;退出RISING2 LACC COMP LDP #0E8H SPLK #03DFH,ACTRA ;PWM3低有效,PWM6低电平,其它高电平 SACL CMPR2 ;B相入, C相出, A相不通电 SPLK #0000H,CMPR3 SPLK #0000H,CMPR1 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LDP #0 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V1,1 ;没变,检测.V1乘2 ADD V1 ;ACC=3*(BEMFA + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFA BCND END,GEQ ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间 B END ;退出RISING1 LACC COMP LDP #0E8H SPLK #0F3DH,ACTRA ;PWM1低有效,PWM4低电平,其它高电平 SACL CMPR1 ;A相入, B相出, C相不通电 SPLK #0000H,CMPR2 SPLK #0000H,CMPR3 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LDP #0 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V3,1 ;没变,检测.V3乘2 ADD V3 ;ACC=3*(BEMFC + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFC BCND END,GEQ ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间 B END ;退出FALLING1 LACC COMP LDP #0E8H SPLK #0FD3H,ACTRA ;PWM3低有效,PWM2低电平,其它高电平 SACL CMPR2 ; B相入, A相出, C相不通电 SPLK #0000H,CMPR3 SPLK #0000H,CMPR1 LDP #0 ;延时过滤干扰 LACC ASYM ;延时计数器 ADD #1 ;加1 SACL ASYM SUB #10 ;检测是否到计数值 BCND END,LEQ ;没到,退出 SPLK #10,ASYM ;计数值已到,测量感应电动势过零点 LDP #0 SPLK #0,FLAGUP ;转过一机械转,置标志 LACC FLAG ;感应电动势符号变化? BCND END,NEQ ;变了,退出 LACC V3,1 ;没变,检测.V3乘2 ADD V3 ;ACC=3*(BEMFC + NEUTRAL) SUB NEUTRAL ;ACC=3*BEMFC BCND END,LT ;0符号没变,退出 SPLK #1,FLAG ;否则符号改变,置过零标志 LACC BCOUNT SACL B2COUNT ;更新延迟时间END RET;-速度计算和调节子程序-SPEED_REG LDP #0 SPLK #32,SPEED_COUNT ;25 CLRC SXM LACC #0 OR #0FFFFH ;ACC=FFFFH无符号数 RPT #15 SUBC BCOUNT ;除1/12机械转时间 AND #0FFFFH ;屏蔽高位 SETC SXM SUB SPEED_REF NEG ;速度偏差= SPEED_REF-SPEED BCND POS,GEQ ;检测偏差是否超限.0跳转 ABS ;0则取绝对值 SPLK #-32,SPEED_COUNT ;- 25POS SACL V_ERRORK ;保存速度偏差 SUB #03FFH ;检测上限 BCND OKPOS,LEQ ;不超上限则跳转 SPLK #03FFH, V_ERRORK ;否则=3FFHOKPOS LT V_ERRORK ;-1024 速度偏差 1024 MPY SPEED_COUNT ;乘25 PAC SACL V_ERRORK ;速度偏差5 LT V_ERRORK ;速度比例调节 MPY #KPS ;乘比例系数 PAC ADD IDC_REF,16 SACH IDC_REF ;IDC_REF(K)=IDC_REF(K-1) + KPS*V_ERRORK LACC IDC_REF ;检测IDC_REF是否超限 BCND RES,GEQ ;0跳转 SPLK #0,IDC_REF ;超下限则=0RES SPLK #0,SPEED_COUNT ;速度调节环计数器清0 RET;-ADC中断子程序-ADCINT ;每50微秒转换一次 MAR *,AR1 ;保存现场 MAR *+ SST #1, *+ ;保存ST1 SST #0, *+ ;保存ST0 SACH *+ ;保存ACC高16位 SACL * ;保存ACC低16位;-速度调节与否- LDP #0 LACC STALL ;检测磁定位是否完成? BCND VDC_IDC,EQ ;STALL=0(磁定位没完成)禁止速度调节 LACC SPEEDFLAG ;禁止速度调节? BCND VDC_IDC,NEQ ;SPEEDFLAG=1,禁止速度调节 LACC SPEED_COUNT ;检测是否该速度调节? SUB #2000 ;每100ms进行一次速度调节 BCND NO_SPEED_REG,NEQ ;时间没到,跳转 CALL SPEED_REG ;时间到,调速度调节子程序NO_SPEED_REG LACC SPEED_COUNT ADD #1 SACL SPEED_COUNT ;SPEED_COUNT+1;-读ADC转换结果-VDC_IDC LDP #0E0H LACC PIVR ;清ADC中断标志 LDP #0E8H LACC EVAIFRA ;清T1周期中断标志 SACL EVAIFRA LDP #0E1H LACC ADCTRL2 OR #0202H SACL ADCTRL2 LACC RESULT0,10 ;读电流值 LDP #0 SACH IDC_ERRORK LDP #0E1H LACC RESULT1,10 ;读A相电压 LDP #0 SACH V1 LDP #0E1H LACC RESULT2,10 ;读B相电压 LDP #0 SACH V2 LDP #0E1H LACC RESULT3,10 ;读C相电压 LDP #0 SACH V3;-电流比例调节- SETC SXM LACC IDC_ERRORK,5 ;Q5格式 SUB IDC_REF,5 SACL IDC_ERRORK ;保存电流偏差,Q5格式 LT IDC_ERRORK ;电流比例调节 MPY #KP ;Q11格式 PAC ;ACC = KP*IDC_ERRORK ADD COMP,16 SACH COMP ;KP*IDC_ERRORK + COMP(K-1) LACC COMP ;检测是否超限 BCND SUP_LIM,GT SPLK #0,COMP ;超过下限,COMP=0 B COMP_OK SUP_LIM SUB #0500 BCND COMP_OK,LT SPLK #0500,COMP ;超过上限,COMP=500COMP_OK ;在上下限内;-换相准备- LDP #0 LACC FLAG ;过零? BCND NEU,EQ ;没过零,跳转 LACC B2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全生产“学规、懂规、践规”考试试卷 (危险化学品二)
- 职业培训机构合同样本
- 制造业合同审批流程效率提升方案
- 工作计划万能版万能计划书(六)
- 翰文进度计划编制视频
- 个人工作计划书15篇
- 服务专卖店劳动合同书5篇
- 有关设备的买卖合同7篇
- 国际贸易合同格式-国际贸易合同范本中英文5篇
- 工程 利润分配 合同模板6篇
- 超星尔雅学习通《形象管理(南开大学)》2024章节测试答案
- 2023年四川省绵阳市中考数学试卷
- 毕业设计调研总结报告
- MOOC 批判性思维-南京林业大学 中国大学慕课答案
- 数字贸易学 课件 第7章 智能制造
- 景区保洁服务方案
- JJF 2109-2024标准物质定值技术要求有机同位素稀释质谱法
- 强基计划个人陈述范文南京大学
- 国家讲解员培训课件
- 滴滴出行营销策略分析报告总结
- 死因监测工作规范
评论
0/150
提交评论