|
按通用操作格式设计的多机通信软件 湖南工程学院陈爱萍李朝建 摘要阐述IBM\ PC机与MCS\ 51单片机多机系统的数据通信原理;分析其通信接口和软件设计方法及其在卷烟厂卷接车间的应用。 关键词IBM\ PC机单片机数据通信RS\ 485 引言 IBM\ PC机和MCS\ 51单片机是我国目前应用最广泛的两种微型计算机。MCS\ 51单片机功能强、体积小、价格低廉、开发应用方便,在工业控制、数据采集、智能仪器仪表、家用电器等方面都得到广泛的应用。由于单片机应用系统人机对话和外围设备较薄弱,没有像磁盘一样永久保存大量信息的存储设备,因此,由多个单片机构成的网络一般常用IBM\ PC机作为上位机,网络结构采用主从式树型或总线分布式结构。单片机既能独立完成数据采集处理和控制任务,又可将数据传给PC机。PC机将这些数据进行处理,或显示,或打印,同时将各种控制命令传给单片机,以实现集中管理和最优控制。本文介绍一种以IBM\ PC机作为上位机,以多台89C51单片机构成的主从式结构网络作为下位机的多机系统,论述其通信原理;给出硬件接口和软件设计方法及其在卷烟厂卷接车间的应用。 一、 单片机主从式多机通信原理 89C51单片机采用异步串行通信。其内部有1个全双工串行通信口,接口内有2个物理上独立的接收、发送缓冲器SBUF,可同时发送和接收数据。它们共用1个地址(99H),发送和接收分别通过P3口的P3.1(TXD)和P3.0(RXD)来实现。发送端按约定的波特率一帧一帧地发送信息;接收端也按约定的波特率一帧一帧地接收信息。串行口有4种工作方式,多机通信时只能工作在方式2或方式3,此时,89C51可利用串行控制器SCON中的SM2,TB8和RB8来实现多机通信。SCON的格式如下: SM0[]SM1[]SM2[]REN[]TB8[]RB8[]TI[]RISM0,SM1:设定串行口的工作方式。 SM2:从机通信控制位,在方式2和方式3下使用。多机通信时,作主机的单片机的SM2应设为0;作从机的SM2设为1。主机发送并为从机接收的信息有两类:一类是地址,用于指示需要和主机通信的从机地址,由串行数据的第9位为“1”标志;另一类是数据,由串行数据的第9位为“0”标志。由于所有从机的SM2=1,每个从机总能在RI=0时收到主机发来的地址,并进入各自的中断服务程序。在中断服务程序中,每台从机把接收到的从机地址和它的本机地址比较,所有不相等的从机均从各自的中断服务程序中退出(SM2仍为1),只有相等的从机才是被主机寻址通信的从机。被寻址的从机在程序中使SM2=0,以便接收随之而来的数据或命令(RB8=0)。接着主机发送数据帧,只有地址相符的从机其SM2=0,才能将8位数据装入SBUF;其他从机因SM2=1,数据将丢失,从而实现主机和从机的一对一通信。 REN:允许接收控制位。 TB8:发送数据第9位。 RB8:接收数据第9位。 TI,RI:发送/接收中断标志位。 以1台89C51单片机为主机,多台单片机为从机的通信方式,主机发送的信息可被各从机接收;而从机只能对主机发送信息,从机之间不能直接互相通信,即使有信息交换,也必须通过主机转发。二、 系统硬件设计 系统硬件接口电路如图1所示。图1系统硬件接口电路图图289C51与8251的连接1. 上位机与主机之间串行通信接口 IBM\ PC机作为上位机处于环境较好的位置,单片机中的主机与PC机距离较近,PC机内部有RS\ 232C通信接口。为了充分利用现有资源,PC机与单片机主机的通信采用RS\ 232C通信协议。RS\ 232C采用负逻辑,与TTL电平不兼容,必须采用电平转换电路。电平转换电路可用单+5V电源的接口芯片MAX232实现。 2. 主从式单片机的多机通信接口 单片机从机处于环境差的控制现场,与主机之间距离较远,且干扰大,不可能将各机的RXD和TXD直接相连实现通信。可采用RS\ 485总线接口标准,接口芯片采用MAX485。它以差分方式传输信息,抗共模干扰能力强,允许一对双绞线上1个发送器驱动多个负载设备,最大允许通信距离达1200m。MAX485为8引脚封装,RO与89C51的RXD相连,DI与89C51的TXD相连,RE作为接收器输出使能端,DE作为驱动器输出使能端。主机的MAX485的输出端A和B与各从机的MAX485的输出端A和B通过双绞线连接起来,如图1所示。 因为单片机主机既要与上位机通信,又要与下位机通信,所以须扩展1个串行口。采用可编程串行通信接口8251能很方便地实现串行口的扩展,接口电路如图2所示。 三、 通信软件设计 1. 上位机与单片机主机的通信软件设计 PC机与单片机主机之间采用RS\ 232C电平标准连接。它们的异步通信方式不同,可利用PC机内装的异步适配器板,通过编程设定串行通信接口INS8251的工作方式,使之与单片机的通信方式一致,从而实现PC机与单片机之间的通信。 上位机(PC机)与单片机的通信方式有两种:① 当处于系统调试、控制参数设定与修改、上位机命令操作等状态时,上位机是主动通信者,采用查询法,先发送后接收;主机有中断方式与上位机保持联络。② 上位机处理日常管理工作时,主机定时与上位机通信,将工作现场有关数据发送给上位机;上位机采用中断方式与主机通信,上位机中断服务程序驻留内存,完成数据接收及处理任务。 2. 单片机主从式多机通信程序设计 在许多工业控制应用系统中,主机既有许多前台任务需要处理,又要使从机能够完成对工业现场的实时控制。从机采用中断方式与主机通信。 主机程序采用子程序的形式给出,要进行串行通信时,直接调用;从机程序以串行口中断服务程序的形式给出,当从机收到地址帧后就进行中断请求,CPU响应后进入中断服务程序。各从机未作好接收或发送准备,就从中断服务程序返回,在主程序中作好准备。此时,主机不能只等待从机准备就绪,应重新和其他从机联络,使其再次进入串行口中断。 为了使用户方便,主机通信子程序和从机通信中断服务程序都设计成软件包。使用时,先将该软件包嵌入到程序存储器的任何空间,再将软件包中的标记符号赋值。在应用程序设计时,只须应用归一化操作命令转入到相应的程序即可。 主机程序由主机主程序和主机通信子程序组成:主程序用于定时器T1初始化、串行口初始化和传递主机通信子程序入口参数;通信子程序用于主机和从机间一个数据块的传送。程序所用寄存器分配如下: R0——存放主机发送数据块起始地址; R1——存放主机接收数据块起始地址; R2——存放被寻址的从机地址; R3——存放主机发出的命令; R4——存放发送数据块长度; R5——存放接收数据块长度。 主机主程序 ORG 4000H START:[]MOV[]TMOD,#20H;定时器T1为方式2[2]MOV[]TH1,#0FAH;波特率为4800b/s, ;fosc=11.059MHz〖2〗MOV[]TL1,#0FAH〖2〗SETB[]TR1〖2〗MOV[]SCON,#0D8H;串行口为方式3,允许接 ;收,SM2=0,TB8=1〖2〗MOV[]PCON,#00H〖2〗MOV[]R0,#40H;发送数据块地址送R0〖2〗MOV[]R1,#20H;接收数据块地址送R1〖2〗MOV[]R2,#SLAVE;被寻址从机地址送R2〖2〗MOV[]R3,#00H/01H;00H,主机发从机收命令 ;01H,从机发主机收命令〖2〗MOV[]R4,#LEN1;发送数据块长度〖2〗MOV[]R5,#LEN2;接收数据块长度〖2〗ACALL[]MCOMMU〖2〗……〖2〗SJMP[]$主机通信子程序软件包清单如下: ORG 4100H MCOMMU:[]MOV[]A,R2;从机地址送A〖2〗MOV[]SBUF,A;发送从机地址〖2〗JNB[]RI,$;等待接收从机应答地址〖2〗CLR[]RI〖2〗MOV[]A,SBUF;从机应答地址送A〖2〗XRL[]A,R2;核对两个地址〖2〗JZ[]NEXT2;相符,转NEXT2〖1〗MTXD1:[]MOV[]SBUF,#0FFH;发送从机复位信号〖2〗SETB[]TB8〖2〗SJMP[]MCOMMU〖1〗MTXD2:[]CLR[]TB8〖2〗MOV[]SBUF,R3;送出命令〖2〗JNB[]RI,$;等待从机应答〖2〗CLR[]RI〖2〗MOV[]A,SBUF;从机应答命令送A〖2〗JNB[]ACC.7,MTXD3;核对命令无错,命令分类〖2〗SJMP[]MTXD1;命令有错,重新联络〖1〗MTXD3:[]CJNE[]R3,#00H,MRXD;从机发送主机接收, ;转MRXD〖2〗JNB[]ACC0,MTXD1〖1〗MTXD4:[]MOV[]SBUF,@R0〖2〗JNB[]T1,$;等待发送结束〖2〗CLR[]TI〖2〗INC[]R0;指向下一发送数据〖2〗DJNZ[]R4,MTXD4〖2〗RET〖1〗MRXD:[]JNB[]ACC1,MTXD1;从机发送未就绪,重新 ;联络〖1〗MRXD1:[]JNB[]RI,$;等待接收完毕〖2〗CLR[]RI〖2〗MOV[]A,SBUF〖2〗MOV[]@R1,A;存入内存〖2〗INC[]R1〖2〗DJNZ[]R5,MRXD1;未接收完,继续〖2〗RET〖2〗END从机主程序 ORG 2000H START:[]MOV[]TMOD,#20H;定时器T1为方式2〖2〗MOV[]TH1,#0FAH;波特率为4800b/s〖2〗MOV[]TL1,#0FAH〖2〗SETB[]TR1〖2〗MOV[]SCON,#0F8H;串行口为方式3,允许接 ;收,SM2=1,TB8=1〖2〗MOV[]PCON,#00H〖2〗MOV[]R0,#20H〖2〗MOV[]R1,#40H〖2〗MOV[]R2,#LEN2;发送数据块长度〖2〗MOV[]R3,#LEN1;接收数据块长度〖2〗SETB[]EA〖2〗SETB[]ES〖2〗CLR[]RI〖2〗……〖2〗SJMP[]$从机中断服务程序 寄存器分配如下: R0——存放发送数据块起始地址; R1——存放接收数据块起始地址; R2——存放发送数据块长度; R3——存放接收数据块长度。 ORG 0023H SJMP DVT1 从机中断服务程序软件包程序清单如下: ORG 0100H DVT1:[]CLR[]RI〖2〗PUSH[]ACC〖2〗PUSH[]PSW〖2〗MOV[]A,SUBF;接收的从机地址送A〖2〗XRL[]A,#SLAVE;和本机地址核对〖2〗JZ[]SRXD1;本机呼叫,继续〖1〗DONE:[]POP[]PSW;不是本机呼叫,恢复PSW〖2〗POP[]ACC〖2〗RETI〖1〗SRXD1:[]CLR[]SM2〖2〗MOV[]SBUF,#SLAVE;发回本机地址,供核对〖2〗JNB[]RI,$;等待接收主机发来的数据/命令〖2〗CLR[]RI〖2〗JNB[]RB8,SRXD2;是数据/命令,继续〖2〗SETB[]SM2;是复位,使SM2=1〖2〗SJMP[]DONE;返回主程序〖1〗SRXD2:[]MOV[]A,SBUF〖2〗CJNE[]A,#02H,NEXT;命令合法?〖2〗JC[]SRXD3;命令合法,继续〖1〗NEXT:[]CLR[]TI;命令不合法,清TI〖2〗MOV[]SBUF,#80H;发送ERR=1的状态字〖2〗SETB[]SM2〖2〗SJMP[]DONE〖1〗SRXD3:[]JZ[]SCHRX;若为接收命令,转SCHRX〖2〗JB[]FOH,STXD;若本机发送就绪,转STXD〖2〗MOV[]SBUF,#00H;若本机发送未就绪,发 ;TRDY=0〖2〗SETB[]SM2〖2〗SJMP[]DONE;返回主程序〖1〗STXD:[]MOV[]SBUF,#02H;发送TRDY=1的状态字〖2〗JNB[]TI〖2〗CLR[]TI〖1〗LOOP1:[]MOV[]SBUF,@R0;发送1个字符数据〖2〗JNB[]TI,$〖2〗INC[]R0〖2〗DJNZ[]R2,LOOP1;字符未发完,继续〖2〗SETB[]SM2〖2〗SJMP[]DONE〖1〗SCHRX:[]JB[]PSW1,SRXD3;本机接收就绪,转SRXD3〖2〗MOV[]SBUF,#00H;本机接收未就绪,发RRDY=0〖2〗SETB[]SM2〖2〗SJMP[]DONE〖1〗SRXD3:[]MOV[]SBUF,#01H;发RRDY=1状态字〖1〗LOOP2:[]JNB[]R1,$;接收1个字符〖2〗CLR[]RI〖2〗MOV[]@R1,SBUF;存入内存〖2〗INC[]R1〖2〗DJNZ[]R3,LOOP2;未接收完,继续〖2〗SETB[]SM2〖2〗SJMP[]DONE;返回主程序〖2〗END四、 多机通信系统的应用 本文介绍的PC机与主从式单片机多机通信系统可用于卷烟厂卷接车间。每个机台上安装从机,对其烟支产量、嘴棒、盘纸、水纸等材料的消耗以及实际开车时间等各种反映机器工作状况的物理量进行采集和控制,并将处理结果显示出来,使每台机器的操作人员能及时了解自己的工作情况。主机定时与从机通信,保存从机送来的有关数据;上位机每与主机通信一次,读取各卷接机的有关信息,并进行统计、加工处理,形成各种统计报表,其他时间,上位机用于车间其他日常管理工作。 结束语 对于下位机实时性要求较高,通信的数据量不太大的工业控制场合,本文介绍的PC机与单片机主从式网络结构的多机通信系统有较大的实用价值。单片机主从式多机网络由于采用了RS\ 485电气标准连接,适用于远程通信系统。上述通信方法也能用于其他工业控制、智能仪器仪表等领域。MES 参考文献 1钟继红.RS\ 485远程通信测控系统.电子技术,1998(12): 34~36 2冯铁成.分布式监控系统通信接口的实现.基础自动化, 1998(3):11~13 3关一飞等. PC机间数据通信的实现. 计算机应用, 1998(1):41~43 4凌澄.PC机总线工业控制系统精粹. 北京:清华大学出版社,1998 5何立民.单片机高级教程. 北京:北京航空航天大学出版社, 2000
|