资源预览内容
第1页 / 共70页
第2页 / 共70页
第3页 / 共70页
第4页 / 共70页
第5页 / 共70页
第6页 / 共70页
第7页 / 共70页
第8页 / 共70页
第9页 / 共70页
第10页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
工业控制单片机应用实例Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望11.1 步进电机控制接口技术步进电机控制接口技术 三相反应式小步矩角步进电机,电机的定子上有六个等分的磁极,相邻两个磁极间的夹角为600。磁极上面装有控制绕组并联成A、B、C三相。转子上均匀分布40个齿,每个齿的齿距为90。定子每段极弧上也有5个齿,定、转子的齿宽和齿距都相同。而每个定子磁极的极距为600,所以每一个极距所占的齿距数不是整数。 当A极下的定、转子齿对齐时,B极和C极下的齿就分别和转子齿相错三分之一的转子齿距,即为30。这时若给B相通电,电机中产生沿B极轴线方向的磁场,因磁通要按磁组最小的路径闭合,就使转子受到反应转矩(磁组转矩)的作用而转动,直到转子齿和B极上的齿对齐为止。此时,A极和C极上的齿又分别与转子齿相错三分之一的转子齿距。由此可见,错齿是促使步进电机旋转的根本原因。 若断开B相控制绕组,而接通C相控制绕组,这时电机中产生沿C极轴线方向的磁场,同理,在反应转矩(磁组转矩)的作用下,转子按顺时针方向转过30,使定于C极下的齿与转子齿对齐。依次类推,当控制绕组按A-B-C-A的顺序循环通电时,转子就沿顺时针方向以每个脉冲转动30的规律转动起来。若改变通电顺序,即按A-C-B-A顺序循环通电时,转子便按逆时针方向同样以每个脉冲转动30的规律转动,这就是单三拍通电方式。按AB-BC-CA-AB顺序循环通电时,转子同样以每个脉冲转动30的规律转动,这则是为双三拍通电方式。 若采用三相单、双六拍通电方式运行,即按A-AB-B-BC-C-CA顺序循环通电,步矩角将减少一半,即每个脉冲转过1.50。步进电机的工作原理步进电机的工作原理步进电机控制系统步进电机控制系统 图11-1 步进电机控制框图图11-2 微机控制微机的主要作用是提供控制步进电机的时序脉冲。微机每输出一个脉冲,经驱动步进电机便沿时序脉冲所确定的方向步进一步。图11-3 单片机控制三相步进电机原理图1脉冲的生成脉冲的生成单片机可以采用程序延时和定时器延时。 图11-4 程序延时方式 图11-5 定时器延时方式 脉冲串生成程序流程图 脉冲串生成程序流程图根据图11-4编写程序如下:MOVR3,#N;计数器赋值LOOP0: PUSHACC;保存AMOVP1,#0FH;送高电平ACALLDELAY1;延时MOVP1,#00H;送低电平ACALLDELAY1;延时DJNZR3,LOOP0;R3为零转移POPACC;恢复ARETDELAY1:MOVA,#dataLOOP:DECAJNZLOOPRET 图11-5是利用定时器延时,程序清单如下: MOVR3,#N;计数器赋初值 MOVTMOD,#01;定时器T0方式1 MOVTL0,#XL;赋初值 MOVTH0,#XH SETBTR0;启动T0 SETBP1.0;送高电平LOOP1: JBCTFO,REP;查T0溢出 AJMPLOOP1 REP: MOVTLO,#XL;重赋初值 MOVTH0,#XH CPLP1.0;求反输出 DJNZR3,LOOP1;不为零转移 RET2时序脉冲的形成步进电机的旋转方向决定于内部绕组的通电顺序和通电方式。以常用的三相步进电机为例,通常有三种通电方式:1) 三相单三拍A-B-C-A2) 三相双三拍AB-BC-CA-AB3) 三相六拍A-AB-B-BC-C-CA-A按以上顺序通电,步进电机正转,按相反方向通电,步进电机反转。产生时序脉冲的方法是:1) 用单片机的P1.0、P1.1和P1.2分别控制三相步进电机的A、B、C相绕组。2) 根据控制方式找出控制模型。3) 按控制模型的顺序向步进电机输入控制脉冲。由三相三拍通电方式的二进制可以看出,步进电机每步进一步,高电平就左移或右移一位。因此可以考虑在A累加器中放一个时序字节,在每个采样时刻累加器左移或右移一位,经输出口输出。单片机为8位字长,8不能被3整除。若把进位标志位CY考虑在内,可以看成是第“9”位,就能实现三相单单拍和三相双三拍通电方式。三相单单拍通电方式,在A累加器中放时序字节49H,示意图如图11-6。三相双三拍通电方式,在A累加器中放时序字节BBH(图11-7)cC指令:RRC ACY011011110ABD7 D0(a) 正转(b) 反转图11-6 三相单三拍示意图CY011011110ABC指令:RLC ACY010010100ABC指令:RLC AC指令:RRC ACY010010100ABD0(a) 正转(b) 反转图11-7 三相双三拍示意图D7D7 D0D7 D0N设步数计数器0 (C)时序字节 (C)(A) P1保护时序字节保存A延 时恢复时序字节KLCA(或RRCA)保护时序字节(A) P1延 时恢复时序字节恢复A返 回步数为0?(a) 程序延时方式时序字节(C)设步数计数器0 (C)返 回启动T0赋初值赋初值时序脉冲输出时序脉冲输出RLCA(或RRCA)T0为方式1定时T0有溢出?步数为0?NN(b) 定时器延时方式图11-8 三相三拍时序脉冲输出程序流程图图11-8(a)程序清单:MOVR3, #N3 ;步数计数器CLRCPUSHACC;保存AMOVA,#49H ;时序字节送AMOVP1,A;输出时序字节PUSHACC;保存时序字节ACALLDELAY ;延时POPACC;恢复时序字节LOOP:RLCA;循环移位MOVP1,A;输出时序脉冲PUSHACC;保存时序字节ACALLDELAY ;延时POPACC;恢复时序字节DJNZR3,LOOPPOPACC;恢复ARET;返回DELAY:MOVR2,#MDELAY1: MOVA,#M1LOOP1:DECAJNZLOOP1DJNZR2,DELAY1步进电机控制程序的设计步进电机控制程序的设计 步进电机控制程序的主要任务就是:判断旋转方向,按顺序送出控制脉冲,判断所要送的脉冲是否送完。下面以三相六拍运转方式为例,说明这种程序的设计。 设步进电机所要走的步数放在R4中,转向标志存放在程序状态寄存器用户标志位F1(D5H)中,当F1为零时,步进电机正转,当F1为“1”时步进电机反转。正转模型01H、03H、02H、06H、04H、05H存放在8051片内数据存储器20H25H中,26H中存放结束标志00H。在27H开始的存储区内存放反转控制模型01H、05H、04H、06H、02H、03H,在2DH单元内存放结束标志00H。图11-9 程序延时控制流程图NY反转模型地址保护现场正转模型地址设步长计数器输出控制模型延时,增址返 回恢复现场转向标志1?是否数据结束?步数为0?恢复模型首址程序清单如下:PUSHACC;保护现场MOVR4,#N;设步长计数器 CLRCORLC,05H ;转向标志为1转移 JCROTEMOVR0,#20H ;正转模型首址AJMPLOOPROTE:MOVR0,#27H ;反转模型首址LOOP:MOVA,R0MOVP1,A ;输出控制脉冲ACALLDELAY;延时INCR0;地址增1MOVA,#00H JZTPL LOOP1: DJNZR4,LOOP;步数不为零转移POPACC;恢复现场RET;返回TPL:MOVA,R0CLRCSUBBA,#06HMOVR0,AAJMPLOOP1DELAY: MOVR2,#MDELAY1:MOVA,#M1LOOP:DECAJNZLOOPDJNZR2,DELAY1RET下面利用定时器延时,中断方式输出控制脉冲。下面利用定时器延时,中断方式输出控制脉冲。 YY置反向地址指针转向标志为1?设步长计数器主程序置正向地址指针T0方式1定时T0赋初值启动T0允许T0中断CPU开中断步长为0?结 束N恢复模型首址恢复现场返 回T0赋初值保护现场步长计数器减1输出控制模型模型地址增1中断服务程序模型结束?图11-10 定时器延时控制程序流程程序清单:;主程序MOVR4,#N ;设步长计数器CLRC ;转向标志为1转ORLC,D5H JCROTE MOVR0,#20H ;正转模型地址AJMPPH ROTE: MOVR0,#27H ;反转模型地址PH:MOVTMOD,#01H ;T0定时方式1 MOV TL0,#XL ;T0赋初值MOVTH0,#XH SETBTR0 ;启动T0SETBET0 ;允许T0中断SETBEA ;CPU开中断LOOP: MOVA,R4 ;等待中断JNZLOOP CLREA ;CPU关中断SJMPHERE ;结束;中断服务程序(由000BH转来) PUSHACC ;保护现场 MOVA,R0 MOVP1,A ;输出控制模型 DEC R4 ;步长减1 INCR0 ;地址增1 MOV A,#00H ORL A,R0 JZTPLTOR: MOVTL0,#XL ;赋初值 MOV TH0,#XH POP ACC ;恢复现场 RETI ;从中断返回TPL: MOVA,R0 CLR C SUBBA,#06H MOV R0,A AJMPTOR 步进电机的变速控制步进电机的变速控制 当步进电机走过的距离比较长时,需要低速启动,高速运转,停止前先降低速度。这样就解决了“快速而不失步”的矛盾。实现变速控制的基本思想就是改变控制频率。L1L3L2步长图11-11 变速控制过程ffc升(降)频过程可以预先确定升(降)频的方式(例如直线方式升(降)频过程可以预先确定升(降)频的方式(例如直线方式或指数方式)和升(降)频的阶梯。或指数方式)和升(降)频的阶梯。 设置反转模型地址YN设T0初值地址指针设频率阶梯计数器设阶梯步长计数器设置定时器设置正转模型地址CPU开中断CPU关中断主程序结 束转向标志为0?频率阶梯为0?NYYN赋降步T0初值阶梯步长赋值T0初值地址更新频率阶梯为0?保护现场模型地址增1输出控制模型中断服务程序模型结束?阶梯步长为0?恢复模型首址返 回恢复现场赋升频T0初值是升频?图11-12 变频控制程序流程图 以下以三相六拍运转方式、定时器延时、直线升(降)频为例编写程序。利用定时器延时,在升频段定时器的初值由小变大,在降频段定时器的初值由大变小,恒速段初值不变。作以下约定:1)定时器T0的初值写在EPROM存储区的同一页中,上半页为升频时TO的初值,下半页是降频时T0的初值。2)对8051单片机内部数据存储区的一些单元进行定义,如表11-4表11-7所示。内存字节地址20H21H22H23H24H25H26H控制模型数据01H03H02H06H04H05H00H表11-4 正转模型分配表表11-5 反转模型分配表内存字节地址27H28H29H2AH2BH2CH2DH控制模型数据01H03H04H06H02H03H00H;主程序 MOVDPTR,addr16;T0初值地址指针 MOVR3,1BH;频率阶梯计数器赋值 MOVR2,1AH;阶梯步长计数器赋值 CLRC ORLC,73H JCROTE MOVR0,#20H;正转模型首址 AJMPPHPOTE:MOVR0,#27H;反转模型首址PH:MOVTMOD,#01H;T0方式1定时MOVTL0, #00H;T0附初值MOVTH0,#00HSETBTR0;启动T0SETBET0;允许T0中断SETBEA;CPU开中断LOOP:MOVA,R3JNZLOOPCLREA; CPU关中断SJMPHERE; 结束;中断服务程序(由000BH转来)PUSHACC;保护现场MOVA,R0MOVP1,A;输出控制模型INCR0;模型地址增1MOVA,#00HORLA,R0JZTPLRR:DECR2;步长计数器减1MOVA,#00HORLA,R2JZTHLPRL:CLRCORLC,71HJNCROTELMOVA,#00HMOVCA,A+DPTRMOV TLO,AAJMPQQROTEL: MOVA,#80HMOVCA,A+DPTRMOVTL0,AMOVA,#81HMOVCA,A+DPTRMOVTH0,AQQ:POPACC;恢复现场RETI;返回THL:DJNZR3,AT;频率阶梯减1不为0转AJMPQQAT:MOVR2,1AH;阶梯步长赋值INCDPTRINCDPTR;初值指针更新AJMPPRLTPL: CLRCMOVA,R0SUBBA,#06HMOVR0,AAJMPRR 等待中断 NY图11-13 总控程序流程图等待中断 主 程 序设置标志位设T0初值指针阶梯步长赋值阶梯计数器赋值置正转模型地址设置T0定时器R3=0?变速转向为0?置反转模型地址1恒速转向为0?置正转模型地址置反转模型地址步长计数器赋值步长为0?CPU关中断设降速标志装入转向标志装入结束标志NNNYYCPU开中断是结束标志1CPU关中断、结束N中断服务程序保护现场输出控制模型模型地址增1恢复模型首址模型结束?阶梯-1为0?阶梯步长赋值更新T0初值指针赋降速T0初值恒速步长减1T0赋初值是变速?阶梯步长为0?是升速?赋升速T0初值恢复现场图11-14 中断服务程序流程图返 回程序清单如下:;主程序SETB70H;变频标志SETB71H;升频标志SETB75H;执行程序WR:MOVDPTR,addr16;初值指针MOVR3,1BH;阶梯计数器赋值MOVR2,1AH ;阶梯步长计数器赋值CLRCORLC,73H;判升/降速转向JCROTER;为1转TQ:MOVR0,#20H;正转模型首址AJMPPHROTER: MOVR0,#27H PH:MOVTMOD,#01H;T0方式1定时MOVTL0,#00H;赋初值MOVTH0,#00HSETBTR0;启动T0SETBET0;允许TO中断SETBEA;CPU开中断LOOP:MOVA,R3JNZLOOP;等待中断CLRCORLC,75H;判程序结束标志JNCGHCLR70H ;恒速运行CLRCORLC,72H; 恒速转向为1转JCROTE MOVR0,#20H; 正转模型首址AJMPTTROTE:MOVRO,#27H; 反转模型首址TT:MOVR2,1CHMOVR3,1DHMOVTLO,1EH;T0赋初值MOVTH0,1FHLOOP1:MOVA,R2ORLA,R3JNZLOOP1;等待中断CLREA;CPU关中断SETB70H;变速 CLR71H;降速MOVC,74H;将降速转向标志装入73HMOV73H,CCLR75H;置程序结束标志AJMPWR GH:CLREA;CPU关中断SJMPHERE;结束;中断服务程序(由000BH单元转来)PUSHACC;保护现场MOVA,R0 MOVP1,A;输出控制模型PP:INCRO;模型地址增1MOVA,#00HORLA,R0 ;是模型结束标志转JZPPLRR:CLRCORLC,70H ;是恒速转INCROTEL1DECR2;步长计数器减1MOVA,#00H ORLA,R2 ;步长为零转 JZTHLBB:CLRC ORLC,71H;是降速转JNCROTEL2TOR: MOV A,#00H;升频时T0赋初值MOVCA,A+DPTRMOVTLO,AMOVA,#01HMOVCA,A+DPTRMOVTH0,AAJMPQQROTEL2:MOVA,#80H;降频时T0赋初值MOVCA,A+DPTRMOVTL0,AMOVA,#81HMOVA,A+DPTRMOVTH0,AQQ:POPACC;恢复现场RETI;返回THL: DJNZR3,AT;阶梯不为零转AJMPQQ;AT:MOVR2,1AH;阶梯步长计数器赋值INCDPTR;修改T0初值指针INCDPTRAJMPBBROTEL1:CLRC;恒速步长计数器减1MOVA,R2SUBBA,#01HMOVR2,AMOVA,R3SUBBA,#00HMOVR3,AMOVTLO,1EH;恒速T0赋初值MOVTH0,1FHAJMPQQPPL: CLRC MOVA,R0SUBBA,#06HMOVR0,A;恢复控制模型首址AJMPRR 两级微机控制的多路步进电机变速控制系统两级微机控制的多路步进电机变速控制系统 图图11-15 多路步进电机变速控制系统原理图多路步进电机变速控制系统原理图 控制模型 在进行多目标实时速度控制时,目标控制信号可采用“等时间间隔”或者“不等时间间隔”输出的方式。假定第I个步进电机在第j个时间间隔Tij时间内,所要求的控制频率为Wij,设8253的时钟频率为f0,于是,在可以得到相应于第I个步进电机的8253在时间间隔Tij应装入的时间常数值Nij的计算公式:其中 Wij=0; i0,1,2,7; j0,1,2,K; K为整个控制过程中的最后时间间隔号。3程序设计程序设计控制程序可以由一个主模块和几个子模块组成,每个子模块完成一个功能,这样调试容易,调用方便。 在设计控制信号输出程序时,要注意两个问题:(1) 在输出转向信号时,因为P1口控制多个步进电机转向,所以改变一个步进电机的转向时,注意不要影响其它步进电机的转向。一种方法是采用位寻址,每次只输出一个步进电机的转向信号,即用MOV C,bit和MOV Bit,C两条指令;另一种方法是控制系统采用“等时间间隔”输出,由第一级微机将系统控制的步进电机转向信号处理好,由第二级微机8051采用字节输出,一次输出多个步进电机的转向信号,即用MOVC A,A+DPTR和MOV P1,A指令。(2) 在输出变频脉冲前,即在给8253装入时间常数前,首先要判断Nij是否为零,若为零只对8253初始化,而不要装入时间常数“0”,因为装入0,就相当于装入65536,8253仍将输出脉冲信号。返 回NN主程序结 束计数器赋值8253C 2#输出250Hz信号数据指针存R3R2中T0为方式2计数器每秒中断一次CPU关中断CPU开中断计数器为0?YN保护现场8253初始化装入指针,输出转向N0装入8253A0中断服务程序N0=0?YN7装入8253C1装入指针 R2R3计数器减1恢复现场N7=0?图图11-16 11-16 多路步进电机控制程序流程图多路步进电机控制程序流程图程序清单如下: MOVR4,#data;计数器附初值ACALLSORCE ;8253C2输出250HzMOVR2,#DPL;保护数据指针MOVR3,#DPHACALLTIMER ;T0每秒一次中断SETBEA;CPU关中断LOOP:MOVA,R4JNZLOOP;等待中断CLREA;CPU关中断 SJMPHERE;停止;中断服务程序(000BH转来)PUSHACC;保护现场ACALLRS8;8253初始化XCHA,R3MOVDPL,AXCHA,R3MOVDPH,AMOVXA,DPTR MOVP1,A;输出转向信号INCDPTR;数据指针增1 MOVXA,DPTR;取NH0 MOVR0,A;保存NH0 INCDPTR MOVXA,DPTR ORLA,R0JZJMP0;N为0转PUSHDPL;保护数据指针PUSHDPH MOVX A,DPTR;取NL MOVDPTR,#2000H MOVX DPTR,A;装入NH0 POPDPH;恢复数据指针 POPDPL JMP0: INCDPTR;数据指针增1MOVX A,DPTR;取NH1MOVR0,A;保存NH1INCDPTRMOVX A,DPTR;取NL1JMP6:INCDPTRMOVXA,DPTR;取NH7MOVR0,A;保存NH7INCDPTRMOVXA,DPTR;取NL7ORLA,R0JZJMP7;N7为0转PUSHDPL;保护数据指针PUSHDPHMOVXA,DPTR;取NL7MOVDPTR,#6001HMOVXDPTR,A;装入NL7MOVA,R0MOVXDPTR,A;装入NH7POPDPH;恢复数据指针POPDPL JMP7:INCDPTR MOVA,DPL;保护数据指针低字节 MOVR2,A MOVA,DPH;保护数据指针高字节 MOVR3,A DECR4;计数器减1 POPACC;恢复现场 RETI;返回 ;SORCE(250Hz信号源模块)SORCE:MOVDPTR,#6003H MOVA,#B6H MOVDPTR,A;写入控制字 MOVX DPTR,#6002H MOVA,#70H MOVX DPTR,A;写入时间常数低8位 MOVA,#17H MOVX DPTR,A;写入时间常数高8位 RET;TIMER(时钟模块)TIMER: MOVTMOD,#06H;T0方式2计数 MOVTL0,#06H;附初值MOVTH0,#06HSETBTR0;启动T0SETBET0;允许T0中断RET;RS8(8253初始化模块)RS8: MOVDPTR,#2003H;8253A初始化MOVA,#36HMOVXDPTR,AMOVA,#76HMOVXDPTR,AMOVA,#B6HMOVXDPTR,A MOVDPTR,#4003H; 8253B初始化 MOVA,#36H MOVXDPTR,A MOVA,#76HMOVXDPTR,AMOVA,#B6HMOVXDPTR,AMOVDPTR,#6003H; 8253C初始化MOVA,#36HMOVXDPTR,AMOVA,#76HMOVXDPTR,ARET 11.2 PC机和机和805l实现渗碳过程集散控制系统实现渗碳过程集散控制系统 渗碳就是把工件(待加工的零件)放在电加热高温炉内,高温炉内的气体中的碳有一定的浓度(所谓碳势),工件在具有这样气氛的高温炉内经过一定时间,会使碳原于通过工件表面渗到表面内部一定的深度(渗层深度),从而提高工件的性能和使用寿命。 图11-17 井式渗碳炉工作过程示意图 采用微机实时、精确地控制加热设备和温度、碳势、渗碳时间等主要参数,便可达到对工艺过程的良好控制。 渗碳工艺过程分为若干阶段,以井式渗碳炉为例,其工艺过程主要分为预热期、强渗期和扩散期。气体渗碳一般采用有机液体如甲醇作载气体,采用煤油或丙酮作富化剂组成滴注式气氛系统。予热期为升温和建立碳势阶段,工件入炉后,炉温升到800时开始滴甲醇,900时开始滴煤油;强渗期即渗碳期,系统进入控制调节阶段,炉温控制在930左右,气氛碳势Cg控制在l.15cl.25c之间;扩散阶段开始少滴或停滴煤油,气氛碳势Cg下降到0.9c,渗层达到一定深度时自动转入降温阶段。 实际渗碳气氛中所包括的组分有:CO,CO2,CH4,H2,H2O,O2,N2等。在吸热式气氛中,当温度高于800时,系统各组分含量随温度的变化不明显,H2和CO的组分基本上保持恒定。炉温较高时(573),各组分之间的可逆反应很复杂,难以一一研究和控制。对碳势影响最重要的是2COC02+C反应平衡条件,并与氧的分压有关。只要CO的组分恒定,即可利用O2分压来控制气氛碳势;而O2分压可用氧化锫探头来测定。气氛碳势的表示,根据大量的实验与数据分析,得到下述经验公式: n=(E/0.144T)-5 Cgl.3403 10n (11.2.1)式中Cg为气氛中的碳势;E为氧化锫探头输出毫伏数;T为绝对温度。过程模型与控制参数过程模型与控制参数 整个碳势控制过程是多个间接控制的组合。首先是传感器输出与气氛碳势Cg的关系,其次是气氛碳势Cg与工件表面碳势CS的传递关系,最后是表面碳势CS随时间的变化与层深之间的扩散关系。所谓过程模型就是这三种关系的组合。传感器的输出E与气氛碳势的关系如式(11.2.1)所示。 n=(E/0.144T)-5 Cgl.3403 10n (11.2.1)气氛碳势与工件表面碳势CS之间的关系可用下式表示。 J(Cg CS) (11.2.2) 式中:J为碳流量,kgm 2s ;为传递函数,kg(m2s碳势); Cg为气氛碳势;CS为工件表面碳势(渗碳浓度)。 渗碳过程中的控制参数有以下四个:(1) 炉温 采用增量式PID模型来控制炉温,计算公式为 uk = Kp(ek-ek-1)+ KIek + KD(ek-2ek-1+ek-2) (11.2.3)(2) 气氛碳势 根据式(11.2.1)通过控制富化剂的滴量来控制Cg(3) 渗层深度 Harmjs方程给出了计算渗层深度的数学模型为 X802.6/10(3720/T)(mm) (11.2.4) 式中:t为渗碳时间,单位为小时;T为绝对温度,单位为K。(4) 渗碳时间控制 根据不同的工件选用不同的强渗与扩散时间之比。 综上所述可知,测得E和Y,便可由式(11.2.1)求得Cg;已知J和Cg,便可由式(11.2.2)求得Cs,已知t和T,便可由式(11.2.4)求得X。计算机控制系统硬件计算机控制系统硬件 根据气体渗碳工艺要求,应该对炉温、碳势、渗碳时间、机械动作等进行实时控制。本系统是集散式计算机控制系统,由一台上位机和四台下位机组成。下位机完成数据采集、处理,输出控制信号,参数设定与修改,显示,声光报警及与上位机通信联络等功能;上位机则需将下位机所有信息进行综合处理,完成屏幕显示,设定与修改下位机工艺参数,计算层深,存储数据,打印报表及报警功能。 图11-18 集散计算机控制系统 图11-19 上、下位机间的多机通信串行接口电路 每台下位机都有四个模拟输入量,经放大与调理电路后变换成0V5V的A/D标准输入信号,A/D转换后的信号经下位机运算、判断、处理后送出开关量信号来实现闭环控制。 图11-20下位机硬件结构框图系统软件设计系统软件设计整个系统软件由上位机程序模块、下位机程序模块和通信程序模块组成。 上位机子程序模块有: (1) 显示模块:包括渗碳工艺过程示意图、主要参数实时显示棒条图等。显示模块是上位机的主要功能模块,在它给出的实时数据显示、工艺过程曲线、实时碳势和层深的棒条图显示以及报警画面等以实时数据显示为显示主画面。 (2) 工艺参数设定修改模块:包括炉温曲线、碳势曲线、层深、渗碳时间等,也包括日期、时同、标度比例尺等的设定与修改。 (3) 数据存取模块:包括数据采集、处理、建立数据文件等。 (4) 打印模块以及通信模块等。2.下位机程序 下位机应实现对炉温、氧电势的检测和显示,并根据工艺要求对炉温和碳势进行控制,根据各类中断请求执行上位机通信要求的操作,或进行超限报警以及传感器故障、通信失败等报警。故下位机软件包括主程序和中断管理子程序。图11-22 下位机主程序流程图3. 通信程序模块 通信程序在系统中起着至关重要的作用。是联系上、下位机的纽带。 图11-23 通信协议框图图11-24 上位机通信程序流程图程序清单如下:STACK SEGMENTPARA STACK STACK DB32 DUP(0)STACK ENDSCODE SEGMENT PARA PUBLIC CODE START PROC FAR ASSUME CS:CODE,DS:CODE,ES:CODE PUSH AX ;保护现场 SUB AX,AX PUSH AX MOV AX,CS MOV DS,AX CALL SUB0 ;串行口初始化 MOV AX,3 INT 1OH MOV CX,0006H V1: MOV AH,01H ;读入字符 INT 21H MOV AH,AL CMP AL,72H ;判标志,转接收下位机数据 JZ VR MOV AL,AH CMP AL,74H ;判标志,转向下位机发数据 JZ VT RETFVR: MOV AL,51H ;发通信命令(接收数据) CALL PSCT ;发送命令 CALL SUBl ;检查状态 CALL SUB2 ;接受字符 AND AL,05H;判应答信号 JZ VR ;是,则收 V3: CALL SUBI CALL SUB2 AND AL,7FH CALL SUB5 ;转存 LOOP V3 MOV CX,0006H JMP Vl VT: MOV AL,11H;发通信命令(发数据) CALL PSCT;发送命令 CALL SUBl CALL SUB2 AND AL,01H JZ VT LT2: LEA SI,BUF1 V6: MOV AL,SI CALL SUB3 CALL PSDT;发送数据 AND AL,7FH CALL SUB5;转存 INC SI LOOP V6 MOV CX,OOO6H JMP VlBUFl:DB 16 DUP(8) DB $BUF2:DB 32 DUP(O)SUBO: PROC NEAR;8250初始化 PUSH DX PUSH CX PUSH AX MOV DX,O MOV AL,7BH MOV AH,O INT 14H MOV CX,0BB8H L1: LOOP Ll POP AX POP CX POP DXSUBO: ENDPSUBl: PROC NEAR ;检查状态 PUSH DXV2: MOV DX,0 MOV AH,03H INT 14H AND AH,0lH JZ V2 POP DXSUBl: ENDPSUB2: PROC NEAR;接受字符 PUSH DX PUSH EX MOV DX,0 MOV AH,2 INT 14H MOV CX,0AHL2:LOOP L2 POP CX POP DX RETSUB2: ENDPSUB3: PROC NEAR;检查状态 PUSH DXL7: MOV DX,0 MOV AH,03H INT 14H AND AH,20H JZ V7 POP DX RETSUB3: ENDPSUB4:PROC NEAR;电传输出 PUSH BX MOV BX,0 MOV AH,OEH INT 1OH POP BX RET SUB4: ENDPSUB5:ROC NEAR;记录数据 PUSH DX PUSH CX PUSH BX PUSH AX LEA BX,BUF MOV AH,AL;取高4位 AND Al, 0F0H MOV EL,4 SHR AL,CL XLAT BX PUSH AX CALL SUB4;输出 POP AX MOV AL,AH;取低4位 AND AL,0FH XLAT BX CALL SUB4;输出 POP AX POP BX POP CX POP DX RETSUB5: ENDPBUF: DB 0 1 2 3 4 5 6 7 8 9 A B C D E FPSCT PROC NEAR;发送命令子程序 PUSH DX PUSH EX AND AL,7FH JPO EV1;奇状态转移 ADD AL,80H SUB CX,CXEV1:MOV DX,0;发送 MOV AH,1 INT 14H SAL AH,1 JNC Y1 INC CX CMP CX,3 JNZ EV1Y1:POP DX RETPSCTENDPPSDTPROC NEAR;发送数据子程序 PUSH DX PUSH CX AND AL,7FH JPE EVE;偶状态转移 ADD AL,80H SUB CX,CXEVE:MOV DX,0;发送MOV AH,1INT 14HSAL AH,1JNC Y2INC CXCMP CX,3JNZ EVEY2:POP CXPOP DXRETPSDTENDPSTARTENDPCODE ENDSEND START(2)下位机通信程序 805l单片机的多机通信是通过对串行口控制寄存器SCON中的SM,TB,RB的编程来实现的,特征位SM=1。PC先发一字节地址,伴随的特征为第9位数据TB=l,随后发数据时的特征为TB=0。各单片机在RB=l(即发送来的TB)且SM=1时,引起串行中断。在中断服务程序中判断地址配对否,不配对者仍为SM=1,仅配对者才SM=0。随后而来的数据特征TB=0,仅SM=0才引起配对者的进一步串行中断,以便接收随后到来的数据。图11-25 下位机通信程序流程图下位机串行通信程序清单(流程图见11-25):SRT:PUSHPSW;保护现场PUSHACCCLRESJBCTI,MTCLRRIMOVA,SBUF;接受数据 JBCRB8,MC;判断是地址还是数据,若是地址转MC E1:SETBES POP ACC POP PSW RETI MT: JNB 01H,E2 ;检查地址 CLR TB8 SETB RSl CLR RS0 MOV A,R1 JNB PSW.0,W1 ;奇偶校验 ADD A,#80HW1: MOV SBUF,A ;接收数据 INC R1 CJNE Rl,#38H,MTl CLR 01H MT1: CLR RSl CLR RS0 SJMP E1MC: MOV B,A ANL A,#0FH CJNE A,#0lH,E1 ;检查地址 CLR SM2 MOV A,B SWAP A ANL A,#07H CJNE A,#O5H,E2 CLR TB8 MOV SBUF,#05H ;送回地址应答信号 SETB RSI CLR RS0 MOV Rl,#32H CLR RS0 CLR RS1 SETB 01H JMP ElE2: SETB SM2 SJMP E1系统抗干扰措施系统抗干扰措施 由于系统工作环境恶劣,干扰源多且分散性大,为使系统可靠地工作,采取下述抗干扰措施:采用全浮空输入方式将数字地和模拟地分开;严格的接地措施,采用光耦合和高性能滤波电路对输入信号进行处理;传感器输出信号的软件滤波与补偿;RAM区建立标志数来设计自动抗干扰恢复程序等。 由于下位机在多机通信时,发送和接收的是8位数据,第9位作为地址的数据标志位,失去了奇偶校验功能,因而必须采取一定措施来提高串行通信的可靠性。具体做法是在主机每次数据通信开始之前,即在发出第9位数据为1期间,发出所要通信的字节数。使每台从机均收到需要传输的字节数。而后,不响应的从机均保持SM=1,且在大致设定的通信时间内关闭各自的串行口中断。由于只有被启动的配对从机与主机进行通信,那么该从机则可仿照双机通信的软件奇偶校验方式进行奇偶校验,而主机此时可恢复8250的奇偶校验功能进行奇偶校验,直至本次通信结束。然后,被选配对从机又置SM=1,主机又重新改变8250的奇偶控制参数使之处于通信准备状态。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号