




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QJ/MK0x.0xx-2000 空调步进电机控制程序的设计指引 21 范围 本设计指引描述了空调步进电机控制的实现方法,空调控制器软件编写者可以此为参考,更快、更好地完成特定功能的软件编写工作。希望本规范在软件常规测试验证之余,对软件内在质量的提升有所帮助。2 引用资料采用日本NEC公司的RA78K0S汇编语言编写技术标准及其78K0S系列八位单片机UPD78F9418(SGNEC S8M7217)芯片的相关技术资料。3 定义 汇编语言:是用于编写微处理器软件最基本的编程语言。 汇编程序包:是一组程序的总称,用于把汇编语言的源程序文件转换成机器代码的程序,通常包括汇编程序连接程序目标码转换程序和其它库管理程序表转换程序等。4 程序设计说明4.1 硬件资源的简单介绍 芯片使用4MHz晶振 四相八拍信号输出脚1,芯片第36脚,一般输出端口P00 四相八拍信号输出脚2,芯片第35脚,一般输出端口P01 四相八拍信号输出脚3,芯片第34脚,一般输出端口P02 四相八拍信号输出脚4,芯片第33脚,一般输出端口P03 利用芯片内部8bit定时器TM0产生4ms时间基准,控制四相八拍信号的输出间隔4.2 功能该程序可以实现对空调室内步进电机控制风叶的各种操作,如初定位、模式定位、风向调整、摇摆4.3 性能 基本囊括常规小功率分体室内机风叶控制,包括上电初定位、模式定位、摇摆、风向调整四种功能。适用于无死角、有死角两种风叶控制类型。提供12个可调角度参数,支持风叶动作方式的灵活设置4.4 算法 比较风叶目标角度与风叶实际角度,若大于则顺序输出四相八拍信号,控制风叶正向摆动;若小于则反序输出四相八拍信号,控制风叶反向摆动;若等于,则停止输出驱动信号,风叶停止摆动 划分初定位、模式定位、摇摆、风向调整等四种操作功能,按顺序优先级由高到低,确保长幼有序,交叉操作时不会出现风叶动作紊乱4.5 接口参数 参考附录A空调步进电机控制程序变量说明4.6 流程逻辑 参考附录B空调步进电机控制流程图4.7 源程序 参考附录C空调步进电机控制参考程序4.8 程序其它说明(1) 风叶的操作可分为四种类型,即初定位、模式定位、风向调整和摇摆操作(2) 初定位是指上电之初保证风叶回到基准位置的操作,它通过反向摆动ANGLRANGE角度实现,具有最高的执行优先级。初定位完成之后才能进行其它风叶操作。初定位角度值应是在风叶实际最大可能角度基础上加一容差值而得,举例而言,若实际最大可能角度为200度,则初定位角度应为200+5度,确保风叶正确定位(3) 模式定位是指在刚进入制热、非制热(制冷、抽湿、送风)模式时风叶摆动至ANGLHEAT或ANGLCOOL位置的操作。关机时风叶摆动至ANGLOFF、因内风机进入或退出微风工作状态而导致的风叶摆动亦属于模式定位操作。模式定位操作具有次高的执行优先级,模式定位之后才能进行风向调整、摇摆功能 若为死角控制类型,则无论当前是开机还是关机状态,当内风机以微风工作时,风叶均应摆至ANGLFH位置;当内风机退出微风状态,风叶也将重新定位 若为非死角控制类型,则只在关机状态下内风机以微风工作时,风叶摆至ANGLFH位置;当内风机退出微风状态时,风叶重新定位。注意,对于非死角控制类型,ANGLFL应与ANGLFH相等,且等于风叶微风角度说明 开机时,抽湿运行或制热防冷风时有可能出现微风; 关机时,PTC导致内风机延迟关闭或干燥功能运行时会出现微风;(4) 可进行风向调整 每接收一次风向调整信号,风叶沿其原运动方向摆动6,到达风向调整边界ANGLDL或ANGLDH时反向摆动。 在初定位或模式定位操作进行中时,无论接收到多少次风向调整信息,在初定位或模式定位操作完成后风叶方向只会再调整6。 若风叶当前位置在风向调整范围ANGLDL,ANGLDH之外,则只要接收到一次风向调整信号,风叶就将摆动至风向范围边界处。 关机状态下风向调整功能无效(5) 还可设置风叶摇摆功能 对于无死角的控制类型,制热模式下风叶摇摆范围为ANGLHSL,ANGLHSH,非制热模式下风叶摇摆范围为ANGLCSL,ANGLCSH 对于有死角的控制类型,在任何模式下均还有另一个摇摆范围,即ANGLFH,ANGLCOOL。选择哪个区域作为摇摆范围根据当前风叶位置决定,若当前风叶角度小于ANGLFH则以ANGLHSL,ANGLHSH或ANGLCSL,ANGLCSH区域作为摇摆范围,否则以ANGLFH,ANGLCOOL作为摇摆范围。 内风机关闭时(如关机或制热防冷风时),停止摇摆 正常关机时,摇摆功能自动取消,模式转换或故障关机时摇摆设置不变(6) 摇摆与风向功能的协调 摇摆时若接收到风向信号,将取消摇摆功能(7) 死角回避功能 若风叶完成相关操作后停留在死角范围内(对于有死角参数的控制类型),则风叶将沿当前的运动方向继续摆动,直至到达死角边界ANGLFL或ANGLFH(8) 风叶运动速度 摇摆速度固定且较慢(每20ms输出一拍信号),而风叶其它操作的摆动速度可选(通过motorself功能选择标志),每8ms或4ms输出一拍信号(注意这里只是对程序进行说明,实际上4ms输出间隔过小)(9) 静态驱动 风叶通过步进电机控制,当风叶不动作时,应对所有的步进电机驱动端口输出低电平(10) 角度控制 一拍信号对应的摇摆角度为7.5/85.25度(11) 重要参数 权衡风叶摆动时的噪声要求和速度要求,推荐每相信号输出间隔控制在6-10ms之间(摇摆时输出间隔固定为20ms)。附注:在速度要求宽松的情况下,尽量采用厂家推荐值即10ms控制间隔 四相八拍信号序列 db 00001001b ;step1 db 00000001b ;step2 db 00000011b ;step3 db 00000010b ;step4 db 00000110b ;step5 db 00000100b ;step6 db 00001100b ;step7 db 00001000b ;step8由上而下顺序循环输出为正向摆动,反之为反向摆动(12) 例程不足之处 4ms步进电机四相八拍输出信号间隔偏小附加说明:本规范由电控开发部提出 本规范由标准化管理室归口本规范由电控开发部负责起草本规范主要起草人:邓继军、向福广、李劲松、杨杰 3QJ/MK0x.0xx-20003QJ/MK03.029-2003附录A:空调步进电机控制程序变量说明变量名称变量类型变量说明anglrange双字节上电之初定位用的最大可能角度。在实际可能的最大角度基础上加一定容差量而得到angloff双字节风叶关机角度anglcool双字节风叶在制冷、送风、抽湿模式下的定位角度anglheat双字节制热模式定位角度anglcsl双字节非制热模式下摇摆范围的角度下限anglcsh双字节非制热模式下摇摆范围的角度上限anglhsl双字节制热模式下摇摆范围的角度下限anglhsh双字节制热模式下摇摆范围的角度上限angldl双字节风向调整范围的角度下限angldh双字节风向调整范围的角度上限anglfl双字节死角范围的角度下限anglfh双字节死角范围的角度上限,也是干燥和微风角度。若anglfl与anglfh相等,则表示为无死角的控制类型sturn双字节室内风机设定转速cstepcnt双字节当前风叶角度dstepcnt双字节风叶目标角度variab10字节控制步进电机摆动速度stepcount字节控制四相八拍信号的有序输出amode字节当前实际运行模式afspeed字节当前实际风速memoryself二进制位掉电记忆功能选择位,为0时禁止,为1时使能motorself二进制位步进电机速度选择位,为0时步进电机非摇摆动作速度较慢(每8ms一拍),为1时速度较快(每4ms一拍)turnonf二进制位开关状态forcecoolf二进制位强制制冷模式forceautof二进制位强制自动模式swingf二进制位摇摆状态nflag41二进制位由于关机时PTC开启导致的内风机延迟关闭标志nflag64二进制位取消摇摆时立即停止风叶动作nflag65二进制位一个时序错开标志,避免初进入摇摆时风叶立即反方向运动nflag93二进制位用于实现高燥功能,控制关机后内风机延迟关闭nflag94二进制位记录当前风叶是否被要求定位在“干燥/微风”位置aflag03二进制位在摇摆打开的情况下,保证风叶以非摇摆速度越过死角区aflag04二进制位步进电机状态标志,为1时表示当前电机停directf二进制位控制风叶运动方向fixf二进制位上电之初控制风叶初定位stepf0二进制位协助fixf完成风叶初定位操作stepf1二进制位表示风叶风向调整已至风向可调范围之边界,准备反向stepf2二进制位风叶运动速度的控制。为0时以非摇摆速度运动,为1时以摇摆速度运动equalf二进制位当前风叶的目标角度与实际角度是否相等adjustf0二进制位控制风叶模式定位adjustf1二进制位控制风叶风向调整附录B:空调步进电机控制流程图(分A、B两图,通过节点START、CONNECT相连)附录C:空调步进电机控制参考程序;*; Project - Midea split air conditioner; Chip - NEC S8M7217(modified uPD789417); Frequency - 4MHz crystal; Date - 2002/07/13; Version - 1.0; Author - API; Resource - 37 RAM bytes and 652 ROM bytes;*$processor(f9418);*stepangle equ 44h ;6 degree;-coolm equ 0 ;mode,can not changedrym equ 1fanm equ 2heatm equ 3autom equ 4offm equ 5;-highfan equ 00000001b ;fan speed,can not changemediumfan equ 00000010blowfan equ 00000100bslowfan equ 00000011bautofan equ 00000101bpcoolfan equ 00000101b;-hnormalstepspeed equ 1 ;every 4mslnormalstepspeed equ 2 ;every 8msswingstepspeed equ 5 ;every 20ms;* ;I/O configuration and control bit definitionsteppo1 equ p0.0steppo2 equ p0.1steppo3 equ p0.2steppo4 equ p0.3;*data1 dseg at 0fe20hanglrange :ds 2angloff :ds 2anglcool :ds 2anglheat :ds 2anglcsl :ds 2anglcsh :ds 2anglhsl :ds 2anglhsh :ds 2angldl :ds 2angldh :ds 2anglfl :ds 2anglfh :ds 2sturn :ds 2cstepcnt :ds 2 ;current angle,count in step(one step for 7.5/85.25)dstepcnt :ds 2 ;destination angle,count in step(one step for 7.5/85.25)variab10 :ds 1stepcount :ds 1amode :ds 1 ;actual modeafspeed :ds 1 ;actual fan speednflag0 :ds 1memoryself equ nflag0.0motorself equ nflag0.1turnonf equ nflag0.2forcecoolf equ nflag0.3forceautof equ nflag0.4swingf equ nflag0.5nflag41 equ nflag0.6nflag1 :ds 1nflag64 equ nflag1.0nflag65 equ nflag1.1nflag93 equ nflag1.2nflag94 equ nflag1.3aflag03 equ nflag1.4aflag04 equ nflag1.5stepflag :ds 1directf equ stepflag.0fixf equ stepflag.1stepf0 equ stepflag.2stepf1 equ stepflag.3stepf2 equ stepflag.4equalf equ stepflag.5adjustf0 equ stepflag.6adjustf1 equ stepflag.7;* ;vector tablevector cseg at 0h dw start ;reset dw ignore ;nothing dw ignore ;int_wdt dw ignore ;int_p0 dw ignore ;int_p1 dw ignore ;int_p2 dw ignore ;int_p3 dw ignore ;int_sr/int_csi0 dw ignore ;int_st dw ignore ;int_wt dw ignore ;int_wti dw int_tm0 dw ignore ;int_tm1 dw ignore ;int_tm2 dw ignore ;int_tm5 dw ignore ;int_kr dw ignore ;int_ad dw ignore ;int_cmp;* ;callt tablecalltlist cseg at 40h dw ignores ;40h dw ignores ;42h dw ignores ;44h dw ignores ;46h dw ignores ;48h dw ignores ;4ah dw ignores ;4ch dw ignores ;4eh dw ignores ;50h dw ignores ;52h dw stepdrive ;54h dw ignores ;56h dw stepmotor ;58h dw wordcomp ;5ah dw ignores ;5ch dw ignores ;5eh dw ignores ;60h dw ignores ;62h dw ignores ;64h dw ignores ;66h dw ignores ;68h dw ignores ;6ah dw ignores ;6ch dw ignores ;6eh dw ignores ;70h dw ignores ;72h dw ignores ;74h ;*; routine start;*routine cseg at 80hstart: di;- movw ax,#0fd80h movw sp,ax mov pcc,#0 ;main oscillation,no prescaler,CPU clock=0.25us mov sckm,#00000011b ;disable feedback resistor and suboscillation mov css,#0 ;select main system oscillation mov tcl2,#00000110b ;watchdog reset interval=32.768ms mov wdtm,#10011000b ;enable watchdog reset mov tmc50,#00110010b ;tm50 count clock frequency is 125kHz ;overflow every 524.288ms,capture at both edge;- mov a,#4rlab010: mov c,#250rlab01: mov b,#0rlab02: nop set1 wdtm.7 ;update WDT dbnz b,$rlab02 dbnz c,$rlab01 ;delay about 130ms dec a bnz $rlab010 ;delay about 0.5s;- mov p0,#0 mov pm0,#0 mov p2,#0 mov pm2,#11100000b mov p4,#11111000b mov pm4,#00000101b mov p5,#0ffh mov pm5,#00000001b;- movw hl,#0fd00hclrram: set1 wdtm.7 ;update WDT mov a,#0 mov hl,a incw hl movw ax,hl cmpw ax,#0ff00h bc $clrram ;clr RAM from fd00-feffh;- mov intm0,#01001000b mov intm1,#10000000b clr1 tce00 mov cr00,#249 ;timer interval=250*16us=4ms mov tmc00,#10000000b ;count clock fx/64,cycle=16us clr1 tce02 mov cr02,#61 ;timer interval=62*2us=124us,4.032kHz mov tmc02,#0 mov if0,#0 mov if1,#0 mov mk0,#11100011b ;enable intp1-3 interrupt mov mk1,#11111001b ;enable tm0 and tm1 interrupt ei ;*; main loop routine;*mainloop: nop nop nop nop nop nop callt 58h ;stepmotor nop nop nop nop nop br mainloop ;*stepdrive: movw ax,cstepcnt cmp a,dstepcnt+1 bnz $slab151 xch a,x cmp a,dstepcnt bnz $slab151 mov p0,#0 set1 aflag04 br slab158 ;if equal,exitslab151: mov a,stepcount bnc $slab153 cmp a,#7 bc $slab152 mov a,#0ffhslab152: inc a clr1 directf br slab155slab153: cmp a,#0 bnz $slab154 mov a,#8slab154: dec a set1 directfslab155: mov stepcount,a ;stepcount ranges 0-7 mov x,#0 xch a,x addw ax,#steplist movw hl,ax mov a,hl mov p0,a ;drive step motor bf aflag04,$slab159 clr1 aflag04 br slab158slab159: movw ax,cstepcnt bt directf,$slab156 cmpw ax,#0ffffh bz $slab157 incw ax br slab157slab156: cmpw ax,#0 bz $slab157 decw axslab157: movw cstepcnt,axslab158: ret ;*stepmotor: ;- clr1 stepf2 clr1 equalf movw ax,dstepcnt movw hl,ax movw ax,cstepcnt callt 5ah ;ax/hl compare bnz $slab300 set1 equalf clr1 aflag03slab300: ;- ;fix operation bf fixf,$slab313 bt stepf0,$slab310 movw ax,#0 movw dstepcnt,ax movw ax,anglrange movw cstepcnt,ax set1 stepf0 br slab312slab310: bf equalf,$slab312 clr1 fixfslab312: nop br slab360 ;exitslab313: ;- ;run to mode position bf adjustf0,$slab321 clr1 stepf1 clr1 nflag65; movw ax,angloff; bf turnonf,$slab320; movw ax,anglcool; cmp amode,#heatm; bnz $slab320; movw ax,anglheat;slab320: clr1 nflag94 bt turnonf,$slab3200 bt nflag41,$slab3201 bt nflag93,$slab3201 movw ax,angloff br slab3203slab3200: movw ax,anglfh cmp a,anglfl+1 bnz $slab3204 xch a,x cmp a,anglfl bz $slab3202slab3204: cmp afspeed,#slowfan bnz $slab3202slab3201: set1 nflag94 movw ax,anglfh ;angle of super slow fan speed br slab3203slab3202: movw ax,anglcool cmp amode,#heatm bnz $slab3203 movw ax,anglheatslab3203: movw dstepcnt,ax xchw ax,hl movw ax,cstepcnt xchw ax,hl callt 5ah ;ax/hl compare bnz $slab322 clr1 adjustf0slab322: nop br slab360 ;exitslab321: ;- bt turnonf,$slab337 clr1 adjustf1 nop br slab360;- ;adjust fan direction with step of 6 degreeslab337: bf adjustf1,$slab336 clr1 adjustf1 bf swingf,$slab337a clr1 swingf br slab3480 slab337a: bf stepf1,$slab330 bf equalf,$slab335 clr1 stepf1 xor stepflag,#00000001b ;complement directf slab330: clr1 nflag65 movw ax,cstepcnt bt directf,$slab331 addw ax,#stepangle br slab332slab331: subw ax,#stepangle bc $slab3330slab332: xchw ax,hl movw ax,angldh xchw ax,hl callt 5ah ;ax/hl compare bc $slab333 movw ax,angldh br slab3331slab333: xchw ax,hl movw ax,angldl incw ax xchw ax,hl callt 5ah ;ax/hl compare bnc $slab334slab3330: movw ax,angldlslab3331: set1 stepf1slab334: movw dstepcnt,axslab335: nop br slab360 ;exitslab336: ;- ;swing operation movw ax,sturn cmpw ax,#0 bz $slab346 bf nflag64,$slab340 clr1 nflag64 bt swingf,$slab347slab3480: movw ax,cstepcnt movw dstepcnt,axslab348: clr1 nflag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北国土资源职业学院《汽车电器》2023-2024学年第二学期期末试卷
- 吉林艺术学院《安全化工基础》2023-2024学年第二学期期末试卷
- 喀什理工职业技术学院《虚拟化技术与应用》2023-2024学年第二学期期末试卷
- 北京中医药大学东方学院《DSP技术及应用》2023-2024学年第二学期期末试卷
- 中央民族大学《国际会展实务》2023-2024学年第二学期期末试卷
- 福建林业职业技术学院《商务英语阅读Ⅱ》2023-2024学年第二学期期末试卷
- 河北工业职业技术大学《电子线路设计》2023-2024学年第二学期期末试卷
- 湖南机电职业技术学院《中外建筑园林史》2023-2024学年第二学期期末试卷
- 江苏大学《分离科学》2023-2024学年第二学期期末试卷
- 上饶卫生健康职业学院《管理会计案例》2023-2024学年第二学期期末试卷
- 信息化时代背景下小学体育与健康课程改革研究 论文
- 量化考研-2024中国大学生考研白皮书-新东方
- 潜在失效模式及后果分析(FMEA)作业规范全套
- 社会稳定风险评估 投标方案(技术标)
- T-NMAAA.0002-2021 营运机动车停运损失鉴定评估规范
- 七年级下册语文必背常考全册重点知识汇总(打印版)
- 肝硬化伴胃底静脉曲张破裂出血的护理查房
- 2024年江苏省凤凰出版传媒集团招聘笔试参考题库含答案解析
- 高三作文思辨性训练公开课
- 纳米金属颗粒的合成与表征
- 2023年高中劳动节主题班会课件
评论
0/150
提交评论