工业控制单片机应用实例.ppt

上传人:本田雅阁 文档编号:2451027 上传时间:2019-03-30 格式:PPT 页数:70 大小:622.01KB
返回 下载 相关 举报
工业控制单片机应用实例.ppt_第1页
第1页 / 共70页
工业控制单片机应用实例.ppt_第2页
第2页 / 共70页
工业控制单片机应用实例.ppt_第3页
第3页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《工业控制单片机应用实例.ppt》由会员分享,可在线阅读,更多相关《工业控制单片机应用实例.ppt(70页珍藏版)》请在三一文库上搜索。

1、第11章 工业控制单片机应用实例,11.1 步进电机控制接口技术 11.2 PC机和8051实现渗碳过程集散控制系统,11.1 步进电机控制接口技术,三相反应式小步矩角步进电机,电机的定子上有六个等分的磁极,相邻两个磁极间的夹角为600。磁极上面装有控制绕组并联成A、B、C三相。转子上均匀分布40个齿,每个齿的齿距为90。定子每段极弧上也有5个齿,定、转子的齿宽和齿距都相同。而每个定子磁极的极距为600,所以每一个极距所占的齿距数不是整数。 当A极下的定、转子齿对齐时,B极和C极下的齿就分别和转子齿相错三分之一的转子齿距,即为30。这时若给B相通电,电机中产生沿B极轴线方向的磁场,因磁通要按磁

2、组最小的路径闭合,就使转子受到反应转矩(磁组转矩)的作用而转动,直到转子齿和B极上的齿对齐为止。此时,A极和C极上的齿又分别与转子齿相错三分之一的转子齿距。由此可见,错齿是促使步进电机旋转的根本原因。 若断开B相控制绕组,而接通C相控制绕组,这时电机中产生沿C极轴线方向的磁场,同理,在反应转矩(磁组转矩)的作用下,转子按顺时针方向转过30,使定于C极下的齿与转子齿对齐。依次类推,当控制绕组按A-B-C-A的顺序循环通电时,转子就沿顺时针方向以每个脉冲转动30的规律转动起来。若改变通电顺序,即按A-C-B-A顺序循环通电时,转子便按逆时针方向同样以每个脉冲转动30的规律转动,这就是单三拍通电方式

3、。按AB-BC-CA-AB顺序循环通电时,转子同样以每个脉冲转动30的规律转动,这则是为双三拍通电方式。 若采用三相单、双六拍通电方式运行,即按A-AB-B-BC-C-CA顺序循环通电,步矩角将 减少一半,即每个脉冲转过1.50。,步进电机的工作原理,步进电机控制系统,图11-1 步进电机控制框图,图11-2 微机控制,微机的主要作用是提供控制步进电机的时序脉冲。微机每输出一个脉冲,经驱动步进电机便沿时序脉冲所确定的方向步进一步。,图11-3 单片机控制三相步进电机原理图,1脉冲的生成,单片机可以采用程序延时和定时器延时。,图11-4 程序延时方式 图11-5 定时器延时方式 脉冲串生成程序流

4、程图 脉冲串生成程序流程图,根据图11-4编写程序如下: MOV R3,#N ;计数器赋值 LOOP0: PUSH ACC ;保存A MOV P1,#0FH ;送高电平 ACALL DELAY1 ;延时 MOV P1,#00H ;送低电平 ACALL DELAY1 ;延时 DJNZ R3,LOOP0 ;R3为零转移 POP ACC ;恢复A RET DELAY1:MOV A,#data LOOP: DEC A JNZ LOOP RET,图11-5是利用定时器延时,程序清单如下: MOV R3,#N ;计数器赋初值 MOV TMOD,#01 ;定时器T0方式1 MOV TL0,#XL ;赋初值

5、MOV TH0,#XH SETB TR0 ;启动T0 SETB P1.0 ;送高电平 LOOP1: JBC TFO,REP ;查T0溢出 AJMP LOOP1 REP: MOV TLO,#XL ;重赋初值 MOV TH0,#XH CPL P1.0 ;求反输出 DJNZ R3,LOOP1 ;不为零转移 RET,2时序脉冲的形成 步进电机的旋转方向决定于内部绕组的通电顺序和通电方式。以常用的三相步进电机为例,通常有三种通电方式: 1) 三相单三拍 A-B-C-A 2) 三相双三拍 AB-BC-CA-AB 3) 三相六拍 A-AB-B-BC-C-CA-A 按以上顺序通电,步进电机正转,按相反方向通电

6、,步进电机反转。,产生时序脉冲的方法是: 1) 用单片机的P1.0、P1.1和P1.2分别控制三相步进电机的A、B、C相绕组。 2) 根据控制方式找出控制模型。 3) 按控制模型的顺序向步进电机输入控制脉冲。,由三相三拍通电方式的二进制可以看出,步进电机每步进一步,高电平就左移或右移一位。因此可以考虑在A累加器中放一个时序字节,在每个采样时刻累加器左移或右移一位,经输出口输出。单片机为8位字长,8不能被3整除。若把进位标志位CY考虑在内,可以看成是第“9”位,就能实现三相单单拍和三相双三拍通电方式。 三相单单拍通电方式,在A累加器中放时序字节49H,示意图如图11-6。 三相双三拍通电方式,在

7、A累加器中放时序字节BBH(图11-7),图11-8(a)程序清单: MOV R3, #N3 ;步数计数器 CLR C PUSH ACC ;保存A MOV A,#49H ;时序字节送A MOV P1,A ;输出时序字节 PUSH ACC ;保存时序字节 ACALL DELAY ;延时 POP ACC ;恢复时序字节 LOOP: RLC A ;循环移位 MOV P1,A ;输出时序脉冲 PUSH ACC ;保存时序字节 ACALL DELAY ;延时 POP ACC ;恢复时序字节 DJNZ R3,LOOP POP ACC ;恢复A RET ;返回 DELAY: MOV R2,#M DELAY1

8、: MOV A,#M1 LOOP1: DEC A JNZ LOOP1 DJNZ R2,DELAY1,步进电机控制程序的设计,步进电机控制程序的主要任务就是:判断旋转方向,按顺序送出控制脉冲,判断所要送的脉冲是否送完。下面以三相六拍运转方式为例,说明这种程序的设计。 设步进电机所要走的步数放在R4中,转向标志存放在程序状态寄存器用户标志位F1(D5H)中,当F1为零时,步进电机正转,当F1为“1”时步进电机反转。正转模型01H、03H、02H、06H、04H、05H存放在8051片内数据存储器20H25H中,26H中存放结束标志00H。在27H开始的存储区内存放反转控制模型01H、05H、04H

9、、06H、02H、03H,在2DH单元内存放结束标志00H。,程序清单如下: PUSH ACC ;保护现场 MOV R4,#N ;设步长计数器 CLR C ORL C,05H ;转向标志为1转移 JC ROTE MOV R0,#20H ;正转模型首址 AJMP LOOP ROTE: MOVR0,#27H ;反转模型首址 LOOP: MOV A,R0 MOV P1,A ;输出控制脉冲 ACALL DELAY ;延时 INC R0 ;地址增1 MOV A,#00H JZ TPL,LOOP1: DJNZ R4,LOOP ;步数不为零转移 POP ACC ;恢复现场 RET ;返回 TPL: MOV

10、A,R0 CLR C SUBB A,#06H MOV R0,A AJMP LOOP1 DELAY: MOV R2,#M DELAY1:MOV A,#M1 LOOP: DEC A JNZ LOOP DJNZ R2,DELAY1 RET,下面利用定时器延时,中断方式输出控制脉冲。,图11-10 定时器延时控制程序流程,程序清单: ;主程序 MOV R4,#N ;设步长计数器 CLR C ;转向标志为1转 ORL C,D5H JC ROTE MOV R0,#20H ;正转模型地址 AJMP PH ROTE: MOV R0,#27H ;反转模型地址 PH: MOV TMOD,#01H ;T0定时方式1

11、 MOV TL0,#XL ;T0赋初值 MOV TH0,#XH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 LOOP: MOV A,R4 ;等待中断 JNZ LOOP CLR EA ;CPU关中断 SJMP HERE ;结束,;中断服务程序(由000BH转来) PUSH ACC ;保护现场 MOV A,R0 MOV P1,A ;输出控制模型 DEC R4 ;步长减1 INC R0 ;地址增1 MOV A,#00H ORL A,R0 JZ TPL TOR: MOV TL0,#XL ;赋初值 MOV TH0,#XH POP ACC ;恢复现场 R

12、ETI ;从中断返回 TPL: MOV A,R0 CLR C SUBB A,#06H MOV R0,A AJMP TOR,步进电机的变速控制,当步进电机走过的距离比较长时,需要低速启动,高速运转,停止前先降低速度。这样就解决了“快速而不失步”的矛盾。实现变速控制的基本思想就是改变控制频率。,升(降)频过程可以预先确定升(降)频的方式(例如直线方式或指数方式)和升(降)频的阶梯。,以下以三相六拍运转方式、定时器延时、直线升(降)频为例编写程序。 利用定时器延时,在升频段定时器的初值由小变大,在降频段定时器的初值由大 变小,恒速段初值不变。作以下约定: 1)定时器T0的初值写在EPROM存储区的同

13、一页中,上半页为升频时TO的初值,下半页是降频时T0的初值。 2)对8051单片机内部数据存储区的一些单元进行定义,如表11-4表11-7所示。,表11-4 正转模型分配表,表11-5 反转模型分配表,;主程序 MOV DPTR,addr16 ;T0初值地址指针 MOV R3,1BH ;频率阶梯计数器赋值 MOV R2,1AH ;阶梯步长计数器赋值 CLR C ORL C,73H JC ROTE MOV R0,#20H ;正转模型首址 AJMP PH POTE: MOV R0,#27H ;反转模型首址 PH: MOV TMOD,#01H ;T0方式1定时 MOV TL0, #00H ;T0附初

14、值 MOV TH0,#00H SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 LOOP: MOV A,R3 JNZ LOOP CLR EA ; CPU关中断 SJMP HERE ; 结束,;中断服务程序(由000BH转来) PUSH ACC ;保护现场 MOV A,R0 MOV P1,A ;输出控制模型 INC R0 ;模型地址增1 MOV A,#00H ORL A,R0 JZ TPL RR: DEC R2 ;步长计数器减1 MOV A,#00H ORL A,R2 JZ THL PRL: CLR C ORL C,71H JNC ROTEL MOV

15、 A,#00H MOVC A,A+DPTR MOV TLO,A AJMP QQ,ROTEL: MOV A,#80H MOVC A,A+DPTR MOV TL0,A MOV A,#81H MOVC A,A+DPTR MOV TH0,A QQ: POP ACC ;恢复现场 RETI ;返回 THL: DJNZ R3,AT ;频率阶梯减1不为0转 AJMP QQ AT: MOV R2,1AH ;阶梯步长赋值 INC DPTR INC DPTR ;初值指针更新 AJMP PRL TPL: CLR C MOV A,R0 SUBB A,#06H MOV R0,A AJMP RR,程序清单如下: ;主程序

16、SETB 70H ;变频标志 SETB 71H ;升频标志 SETB 75H ;执行程序 WR: MOV DPTR,addr16 ;初值指针 MOV R3,1BH ;阶梯计数器赋值 MOV R2,1AH ;阶梯步长计数器赋值 CLR C ORL C,73H ;判升/降速转向 JC ROTER ;为1转 TQ: MOV R0,#20H ;正转模型首址 AJMP PH ROTER: MOV R0,#27H PH: MOV TMOD,#01H ;T0方式1定时 MOV TL0,#00H ;赋初值 MOV TH0,#00H SETB TR0 ;启动T0 SETB ET0 ;允许TO中断 SETB EA

17、 ;CPU开中断,LOOP: MOV A,R3 JNZ LOOP ;等待中断 CLR C ORL C,75H ;判程序结束标志 JNC GH CLR 70H ;恒速运行 CLR C ORL C,72H ; 恒速转向为1转 JC ROTE MOV R0,#20H ; 正转模型首址 AJMP TT ROTE: MOV RO,#27H ; 反转模型首址 TT: MOV R2,1CH MOV R3,1DH MOV TLO,1EH ;T0赋初值 MOV TH0,1FH LOOP1: MOV A,R2 ORL A,R3 JNZ LOOP1 ;等待中断 CLR EA ;CPU关中断 SETB 70H ;变速

18、 CLR 71H ;降速 MOV C,74H ;将降速转向标志装入73H MOV 73H,C CLR 75H ;置程序结束标志 AJMP WR,GH: CLR EA ;CPU关中断 SJMP HERE ;结束 ;中断服务程序(由000BH单元转来) PUSH ACC ;保护现场 MOV A,R0 MOV P1,A ;输出控制模型 PP: INC RO ;模型地址增1 MOV A,#00H ORL A,R0 ;是模型结束标志转 JZ PPL RR: CLR C ORL C,70H ;是恒速转 INC ROTEL1 DEC R2 ;步长计数器减1 MOV A,#00H ORL A,R2 ;步长为零

19、转 JZ THL,BB: CLR C ORL C,71H ;是降速转 JNC ROTEL2 TOR: MOV A,#00H ;升频时T0赋初值 MOVC A,A+DPTR MOV TLO,A MOV A,#01H MOVC A,A+DPTR MOV TH0,A AJMP QQ ROTEL2: MOV A,#80H ;降频时T0赋初值 MOVC A,A+DPTR MOV TL0,A MOV A,#81H MOV A,A+DPTR MOV TH0,A QQ: POP ACC ;恢复现场 RETI ;返回 THL: DJNZ R3,AT ;阶梯不为零转 AJMP QQ ;,AT: MOV R2,1A

20、H ;阶梯步长计数器赋值 INC DPTR ;修改T0初值指针 INC DPTR AJMP BB ROTEL1:CLR C ;恒速步长计数器减1 MOV A,R2 SUBB A,#01H MOV R2,A MOV A,R3 SUBB A,#00H MOV R3,A MOV TLO,1EH ;恒速T0赋初值 MOV TH0,1FH AJMP QQ PPL: CLR C MOV A,R0 SUBB A,#06H MOV R0,A ;恢复控制模型首址 AJMP RR,两级微机控制的多路步进电机变速控制系统,图11-15 多路步进电机变速控制系统原理图,控制模型 在进行多目标实时速度控制时,目标控制信

21、号可采用“等时间间隔”或者“不等时间间隔”输出的方式。假定第I个步进电机在第j个时间间隔Tij时间内,所要求的控制频率为Wij,设8253的时钟频率为f0,于是,在可以得到相应于第I个步进电机的8253在时间间隔Tij应装入的时间常数值Nij的计算公式: 其中 Wij=0; i0,1,2,7; j0,1,2,K; K为整个控制过程中的最后时间间隔号。,3程序设计 控制程序可以由一个主模块和几个子模块组成,每个子模块完成一个功能, 这样调试容易,调用方便。 在设计控制信号输出程序时,要注意两个问题: (1) 在输出转向信号时,因为P1口控制多个步进电机转向,所以改变一个步进 电机的转向时,注意不

22、要影响其它步进电机的转向。一种方法是采用位寻址,每 次只输出一个步进电机的转向信号,即用MOV C,bit和MOV Bit,C两条指令;另 一种方法是控制系统采用“等时间间隔”输出,由第一级微机将系统控制的步进电 机转向信号处理好,由第二级微机8051采用字节输出,一次输出多个步进电机的 转向信号,即用MOVC A,A+DPTR和MOV P1,A指令。 (2) 在输出变频脉冲前,即在给8253装入时间常数前,首先要判断Nij是否为 零,若为零只对8253初始化,而不要装入时间常数“0”,因为装入0,就相当于装 入65536,8253仍将输出脉冲信号。,程序清单如下: MOV R4,#data

23、;计数器附初值 ACALL SORCE ;8253C 2输出250Hz MOV R2,#DPL ;保护数据指针 MOV R3,#DPH ACALL TIMER ;T0每秒一次中断 SETB EA ;CPU关中断 LOOP: MOV A,R4 JNZ LOOP ;等待中断 CLR EA ;CPU关中断 SJMP HERE ;停止,;中断服务程序(000BH转来) PUSH ACC ;保护现场 ACALL RS8 ;8253初始化 XCH A,R3 MOV DPL,A XCH A,R3 MOV DPH,A MOVX A,DPTR MOV P1,A ;输出转向信号 INC DPTR ;数据指针增1

24、MOVX A,DPTR ;取NH0 MOV R0,A ;保存NH0 INC DPTR MOVX A,DPTR ORL A,R0 JZ JMP0 ;N为0转 PUSH DPL ;保护数据指针 PUSH DPH,MOVX A,DPTR ;取NL MOV DPTR,#2000H MOVX DPTR,A ;装入NH0 POP DPH ;恢复数据指针 POP DPL JMP0: INC DPTR ;数据指针增1 MOVX A,DPTR ;取NH1 MOV R0,A ;保存NH1 INC DPTR MOVX A,DPTR ;取NL1 ,JMP6: INC DPTR MOVX A,DPTR ;取NH7 MO

25、V R0,A ;保存NH7 INC DPTR MOVX A,DPTR ;取NL7 ORL A,R0 JZ JMP7 ;N7为0转 PUSH DPL ;保护数据指针 PUSH DPH MOVX A,DPTR ;取NL7 MOV DPTR,#6001H MOVX DPTR,A ;装入NL7 MOV A,R0 MOVX DPTR,A ;装入NH7 POP DPH ;恢复数据指针 POP DPL,JMP7: INC DPTR MOV A,DPL ;保护数据指针低字节 MOV R2,A MOV A,DPH ;保护数据指针高字节 MOV R3,A DEC R4 ;计数器减1 POP ACC ;恢复现场 R

26、ETI ;返回 ;SORCE(250Hz信号源模块) SORCE: MOV DPTR,#6003H MOV A,#B6H MOV DPTR,A ;写入控制字 MOVX DPTR,#6002H MOV A,#70H MOVX DPTR,A ;写入时间常数低8位 MOV A,#17H MOVX DPTR,A ;写入时间常数高8位 RET,;TIMER(时钟模块) TIMER: MOV TMOD,#06H ;T0方式2计数 MOV TL0,#06H ;附初值 MOV TH0,#06H SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 RET,;RS8(8253初始化模块) RS8: M

27、OV DPTR,#2003H ;8253A初始化 MOV A,#36H MOVX DPTR,A MOV A,#76H MOVX DPTR,A MOV A,#B6H MOVX DPTR,A MOV DPTR,#4003H ; 8253B初始化 MOV A,#36H MOVX DPTR,A MOV A,#76H MOVX DPTR,A MOV A,#B6H MOVX DPTR,A MOV DPTR,#6003H ; 8253C初始化 MOV A,#36H MOVX DPTR,A MOV A,#76H MOVX DPTR,A RET,11.2 PC机和805l实现渗碳过程集散控制系统,渗碳就是把工件

28、(待加工的零件)放在电加热高温炉内,高温炉内的气体中 的碳有一定的浓度(所谓碳势),工件在具有这样气氛的高温炉内经过一定时间, 会使碳原于通过工件表面渗到表面内部一定的深度(渗层深度),从而提高工件的 性能和使用寿命。,图11-17 井式渗碳炉工作过程示意图,采用微机实时、精确地控制加热设备和温度、碳势、渗碳时间等主 要参数,便可达到对工艺过程的良好控制。 渗碳工艺过程分为若干阶段,以井式渗碳炉为例,其工艺过程主要分为预热 期、强渗期和扩散期。气体渗碳一般采用有机液体如甲醇作载气体,采用煤油或 丙酮作富化剂组成滴注式气氛系统。予热期为升温和建立碳势阶段,工件入炉 后,炉温升到800时开始滴甲醇

29、,900时开始滴煤油;强渗期即渗碳期,系统 进入控制调节阶段,炉温控制在930左右,气氛碳势Cg控制在l.15cl.25c之 间;扩散阶段开始少滴或停滴煤油,气氛碳势Cg下降到0.9c,渗层达到一定深度 时自动转入降温阶段。 实际渗碳气氛中所包括的组分有:CO,CO2,CH4,H2,H2O,O2, N2等。在吸热式气氛中,当温度高于800时,系统各组分含量随温度的变化不 明显,H2和CO的组分基本上保持恒定。炉温较高时(573),各组分之间的可 逆反应很复杂,难以一一研究和控制。对碳势影响最重要的是2COC02+C反应 平衡条件,并与氧的分压有关。只要CO的组分恒定,即可利用O2分压来控制气

30、氛碳势;而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

31、.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) (

32、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。,计算机控制系统硬件,根据气体渗碳工艺要求,应该对炉温、碳势、渗碳时间、机械动作等进行实 时控制。本系统是集散式计算机控制系统,由一台上位机和四台下位机组成。下 位机完成数据采集、处理,输出控制信号,参数设定与修改,显示,声光报警及 与上位机通信联络等功能;上位机则需将下位机所有信息进行综合处理,完成屏

33、幕显示,设定与修改下位机工艺参数,计算层深,存储数据,打印报表及报警功 能。,图11-18 集散计算机控制系统,图11-19 上、下位机间的多机通信串行接口电路,每台下位机都有四个模拟输入量,经放大与调理电路后变换成0V5V的A/D 标准输入信号,A/D转换后的信号经下位机运算、判断、处理后送出开关量信号 来实现闭环控制。,图11-20下位机硬件结构框图,系统软件设计,整个系统软件由上位机程序模块、下位机程序模块和通信程序模块组成。,上位机子程序模块有: (1) 显示模块:包括渗碳工艺过程示意图、主要参数实时显示棒条图等。显示 模块是上位机的主要功能模块,在它给出的实时数据显示、工艺过程曲线、

34、实时 碳势和层深的棒条图显示以及报警画面等以实时数据显示为显示主画面。 (2) 工艺参数设定修改模块:包括炉温曲线、碳势曲线、层深、渗碳时间等, 也包括日期、时同、标度比例尺等的设定与修改。 (3) 数据存取模块:包括数据采集、处理、建立数据文件等。 (4) 打印模块以及通信模块等。,2.下位机程序 下位机应实现对炉温、氧电势的检测和显示,并根据工艺要求对炉温和碳 势进行控制,根据各类中断请求执行上位机通信要求的操作,或进行超限报警 以及传感器故障、通信失败等报警。故下位机软件包括主程序和中断管理子程 序。,图11-22 下位机主程序流程图,3. 通信程序模块 通信程序在系统中起着至关重要的作

35、用。是联系上、下位机的纽带。,图11-23 通信协议框图,图11-24 上位机通信程序流程图,程序清单如下: STACK SEGMENT PARA STACK STACK DB 32 DUP(0) STACK ENDS CODE 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

36、 ;读入字符 INT 21H MOV AH,AL CMP AL,72H ;判标志,转接收下位机数据 JZ VR MOV AL,AH CMP AL,74H ;判标志,转向下位机发数据 JZ VT RETF VR: 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

37、;发通信命令(发数据) 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 Vl,BUFl: 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

38、,O INT 14H MOV CX,0BB8H L1: LOOP Ll POP AX POP CX POP DX SUBO: ENDP SUBl: PROC NEAR ;检查状态 PUSH DX,V2: MOV DX,0 MOV AH,03H INT 14H AND AH,0lH JZ V2 POP DX SUBl: ENDP SUB2: PROC NEAR ;接受字符 PUSH DX PUSH EX MOV DX,0 MOV AH,2 INT 14H MOV CX,0AH L2: LOOP L2 POP CX POP DX RET SUB2: ENDP SUB3: PROC NEAR ;检查

39、状态 PUSH DX,L7: MOV DX,0 MOV AH,03H INT 14H AND AH,20H JZ V7 POP DX RET SUB3: ENDP SUB4: PROC NEAR ;电传输出 PUSH BX MOV BX,0 MOV AH,OEH INT 1OH POP BX RET SUB4: ENDP,SUB5: 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

40、;输出 POP AX MOV AL,AH ;取低4位 AND AL,0FH XLAT BX CALL SUB4 ;输出 POP AX POP BX POP CX POP DX RET,SUB5: ENDP BUF: DB 0 1 2 3 4 5 6 7 8 9 A B C D E F PSCT PROC NEAR ;发送命令子程序 PUSH DX PUSH EX AND AL,7FH JPO EV1 ;奇状态转移 ADD AL,80H SUB CX,CX EV1: MOV DX,0 ;发送 MOV AH,1 INT 14H SAL AH,1 JNC Y1 INC CX CMP CX,3 JNZ

41、 EV1 Y1: POP DX RET PSCT ENDP,PSDT PROC NEAR ;发送数据子程序 PUSH DX PUSH CX AND AL,7FH JPE EVE ;偶状态转移 ADD AL,80H SUB CX,CX EVE: MOV DX,0 ;发送 MOV AH,1 INT 14H SAL AH,1 JNC Y2 INC CX CMP CX,3 JNZ EVE Y2: POP CX POP DX RET PSDT ENDP START ENDP CODE ENDS END START,(2)下位机通信程序 805l单片机的多机通信是通过对串行口控制寄存器SCON中的SM,T

42、B,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: PUSH PSW ;保护现场 PUSH ACC CLR ES JBC TI,MT CLR RI MOV A,SBUF ;接受数据 JBC RB8,MC

43、;判断是地址还是数据,若是地址转MC E1: SETB ES POP ACC POP PSW RETI MT: JNB 01H,E2 ;检查地址 CLR TB8 SETB RSl CLR RS0 MOV A,R1 JNB PSW.0,W1 ;奇偶校验 ADD A,#80H W1: MOV SBUF,A ;接收数据 INC R1 CJNE Rl,#38H,MTl CLR 01H,MT1: CLR RSl CLR RS0 SJMP E1 MC: MOV B,A ANL A,#0FH CJNE A,#0lH,E1 ;检查地址 CLR SM2 MOV A,B SWAP A ANL A,#07H CJN

44、E A,#O5H,E2 CLR TB8 MOV SBUF,#05H ;送回地址应答信号 SETB RSI CLR RS0 MOV Rl,#32H CLR RS0 CLR RS1 SETB 01H JMP El E2: SETB SM2 SJMP E1,系统抗干扰措施 由于系统工作环境恶劣,干扰源多且分散性大,为使系统可靠地工作,采取下述抗干扰措施:采用全浮空输入方式将数字地和模拟地分开;严格的接地措施,采用光耦合和高性能滤波电路对输入信号进行处理;传感器输出信号的软件滤波与补偿;RAM区建立标志数来设计自动抗干扰恢复程序等。 由于下位机在多机通信时,发送和接收的是8位数据,第9位作为地址的数据标志位,失去了奇偶校验功能,因而必须采取一定措施来提高串行通信的可靠性。具体做法是在主机每次数据通信开始之前,即在发出第9位数据为1期间,发出所要通信的字节数。使每台从机均收到需要传输的字节数。而后,不响应的从机均保持SM=1,且在大致设定的通信时间内关闭各自的串行口中断。由于只有被启动的配对从机与主机进行通信,那么该从机则可仿照双机通信的软件奇偶校验方式进行奇偶校验,而主机此时可恢复8250的奇偶校验功能进行奇偶校验,直至本次通信结束。然后,被选配对从机又置SM=1,主机又重新改变8250的奇偶控制参数使之处于通信准备状态。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1