关键词:单片机;智能模块;串口通信
1 概述
PC机与多台单片机构成小型的分布式测控系统已在工业控制、生产管理中得到了广泛的应用。在这类应用系统中,PC机多作为上位机通过直接查询来控制各从机。由于PC机本身还要进行动态数据显示、数据库实时录入、越限报警、报表打印等任务,因此,当从机数目过多时,上位机频繁地响应从机的中断,并在一定时间内等待和接收数据?这极大地影响了PC机的工作效率。为了提高上位机的工作效率,笔者在PC机与各个智能模块间增加了一块用AT89C51作为微控制器的通信控制卡。整个系统构成一个3级分级控制系统,通信控制卡位于中间层,它是系统控制、管理的中枢。
2 通信控制卡硬件电路
在本系统中,通信控制卡采用查询方式对下位机的各智能模块进行查询,该智能模块由AT89C51控制的电量、温度、液位、开关量采集板构成,它们分别可独立完成各自的数据采集和处理任务。当处于被查询状态时,系统可采用中断方式与通信卡进行通信。通信卡依次为人机完成各种数据处理任务提供各种数据和控制命令,然后把它们统一打包上传给上位机,从而使上位机可以对其进行显示、加工和处理,并形成各种报表。
该系统的硬件接口电路如图1所示。其中控制卡的核心芯片是AT89C51,它利用本身自带的串口与各智能模块间通过多机通信方式3进行总线式多机通信。为了同时能与PC进行通信,另一端通过8251A的扩展串口与PC相连。即要求8251A芯片的接收数据线RXD(脚3)及发送数据线TXD(脚19)通过MAX232与PC相连?这是因为电平转换器8251A的输入、输出均为TTL电平,而通过电平转换器可将TTL电平转换成RS232C标准电平以便与PC进行通信。
8251A芯片的时钟输入线CLK可为其提供定时信号。在异步方式时,CLK的频率至少应大于8251A内接收器或发送器输入频率的4.5倍。其引脚RXC(脚25)为接收器时钟,它的作用是控制字符的发送速率,其时钟可使用8253产生的合适时钟频率。在异步方式中,引脚RXC和TXC(即接收、发送时钟)为波特率的16倍。该控制卡中扩展的8kB RAM可分别开辟4个不同的存储电量采集板的数据,处理时可以将它们一起送到PC。
3 软件系统设计
3.1 通信协议
通信控制卡的AT89C51串口与各智能模块的通信按自定义的通信协议进行。过程如下:
(1)首先使所有从机SM2位置1,以使其处于只接收地址帧的状态。
(2)控制卡先发一地址信息,其中8位为地址,第9位为地址/数据信息的标志位,该位为1表示该帧为地址信息。
(3)从机接收到地址帧后,会将其接收的地址与本从机的地址相比较。对于地址相符的从机,可置SM2=0,以接收主机随后发来的所有信息;而对于地址不相符的从机,则置SM2=1,以继续执行采集任务和其它任务。
(4)当从机发送数据结束后,会发送一帧校验和,并将第9位(TB8)置为1,以作为从机数据传送结束标志。
(5)控制卡接受数据时,先判断数据结束标志(RB8),若RB8=1,且校验正确,则回送正确信号00H,此信号可令该从机复位以重新采集数据,等待地址帧。若校验和出错,则送0FFH,以令该机重发数据,如果重发5次还不行,则认为失败,并转入其它地址。若接收帧的RB8=0,则将原数据锁定到缓冲区,并准备接收下帧信息。
(6)从机接收到复位命令后,再回到监听地址状态(SM2=1)。
3.2 程序框图
设主机发送的地址信号01H、02H、03H为从机设备地址,地址FFH是命令各从机恢复SM2为1的状态信号,即复位。从机的命令编码为:
01H—请求从机接收通信卡的数据命令;
02H—请求从机向通信控制卡发送数据;其它均按从机向通信卡发数据处理。
从机的状态字节格式如图2所示。其中TRDY为1表示从机已准备好接收通信卡的数据(见图2中D1位);RRDY为1表示从机准备好向通信卡发送数据(见图2中D0位);而ERR=1则表示从机接收到的命令是错误的(图2中D7位)。
该通信控制卡与各智能模块均采用12MHz晶振,它们之间的波特率为4800bps,采用定时器T1的工作方式2,这样,当TL1计满时,TH1将自动送数给TL1。当波特率为4800bps时,TH1=TL1=0xf3。而通信卡与PC间的波特率为9600bps,故可用产生的脉冲8分频后送到8253。8253工作在方式3,它产生的周期性方波送给8251A的TXC、RXC,可作为波特率发生器。用C51实现的通信卡和从机的程序流程图如图3和如图4所示。该通信卡采用查询方式,从机采用中断方式进行相互通信,并采用校验方式进行数据校验,然后将数据打包,上传给上位PC。
本设计已用于铁路调度监督系统远程终端单元中的控制信息采集板和开关量采集板,以及铁路微机联锁系统中的上位机控制和模拟屏动态实时显示等方面。整个系统实际运行良好,可靠性高,系统性能得到很大的改善