RS 232串口多方控制的实现


RS 232串行通讯是各类工程应用中经常使用的通讯方式之一,但其点对点的通讯方式经常会在使用中带来不便。

       一般的RS 232通讯应用,经常由一个控制方控制一台设备,或采用菊花链方式连接,根据通讯地址的不同,由一个控制方控制多台设备。但在工程应用中却经常会遇到2台或2台以上的PC机需要控制同一台设备,即由多个控制方控制一台设备的情况,而为受控设备仅具备1个RS 232串口,这时需要有一台能够实现RS 232串口多方控制的设备,本文针对这种设备的其中一种比较先进的设计方法进行说明。该设备不仅成本低,实现方法简单,而且功能可扩展,在工程中具有较强的适用性,能满足多种复杂控制的需要。

       l硬件设计

       在控制系统中,控制方和被控设备的通讯协议和控制程序是固定的,在设计中不能改变,只能通过一台中间设备,即串口扩展设备,对控制方的命令进行一定的解析处理,从而实现控制方和被控方之间的协调应答。本文选用AT89S52单片机作为串口扩展设备的核心控制器,系统的硬件原理图如图1所示。

       系统中的AT89S52单片机全兼容Intel公司MCS51系列单片机的结构和指令,片上具有8 kB的可擦除在线可编程存储器[1]。串口扩展部分采用TI公司的TL16C554[2],可扩展4个串口;该芯片直接与单片机连接,根据设定可自动接收来自4个串口的数据并将其存储在内置的FIFO中,并给出中断信号,可使单片机通过外部中断进行处理;同时,可将单片机写入的数据通过指定的串口发送。注:通过对其寄存器的设置可实现更多的功能。使用MAX202进行TTL电平到RS 232电平的转换。若考虑设备间不共地的问题,可在MAX202与TL16C554之间,以及MAX202与单片机之间加光隔进行保护。

       系统中把单片机本身的串口作为主串口,用于连接被控设备,另外4个扩展串口,用于连接4个控制方。当多个控制方同时连续发送较多的命令数据时,为了保证对所有数据的完整接收,需要将没有来得及处理的数据做暂时的存储。AT89S52单片机本身带有256 B内置的RAM,在很多情况下并不能满足使用需要。DALLAS公司的DSl225含8 k×8 b非易失性SRAM,可作为外置的扩展存储器件。该器件的读写速度达到70 ns,完全能够满足对数据的即时读写[3]。

       2程序设计

       2.1数据存储空间的分配

       程序设计时,首先应对数据空间进行规划。在该系统中,根据需要,从AT89S52内部8 k的数据存储器中划分出5块区域,做5个FIFO数据队列,每个FIFO队列l 536 B空间,分别用于存储来自5个端口的数据。剩下的512 B作数据存储的备用空间。

       2.2 程序模块

       程序采用模块化的设计思想,以方便修改、移植和检错。整个控制程序由主程序、中断、命令处理模块、回送处理模块4部分组成,实现原理如下:

      (1)中断

       串行口中断和外部中断,用于接收来自5个端口的数据,分端口将接收到的数据存入对应的FIFO,这里对数据不做其他的判断或处理,尽量用最少的指令完成,减少中断时间。以避免多个串口同时受到大量数据时,发生数据丢失。

       (2)命令处理模块

       针对控制方端口FIFO,若控制方FIFO中存在数据,根据协议对数据进行判断,直接清除不符合协议的数据;对符合协议的命令数据,判断完整条命令后,通过受控方端口向受控设备转发整条命令,然后清掉FIFO中此条命令,如此逐步清空FIFO。

        (3)回送处理模块

       针对受控方端口FIFO,若受控方FIFO中存在数据,与"命令处理模块"类似,根据协议对数据进行判断,清除不符合协议的数据,对符合协议的回送数据,判断完整后,同时通过4个控制方端口向控制设备回送数据,然后清掉FIFO中此条命令,如此逐步清空FIFO。

        (4)主程序模块

        在主程序中,循环判断5个FIFO中是否有数据。若控制方FIFO存在数据,进入命令处理模块,清空FIFO后返回主程序,继续循环;若受控方FIFO存在数据,进入回送处理模块,清空FIFO后返回主程序,继续循环。这样,每个控制方发送的命令,都会在FIFO中有短暂的缓冲,在多控制方同时发送命令时,本设备可分先后将所有收到的命令逐个发送到受控设备,不会因发生冲突而造成数据丢失。对于受控设备回送的数据,一般包含了工作状态及配置等信息,需要同时回送到各个控制设备,使各个控制设备能够及时做相应的调整。

        3功能扩展

        按照上述方法设计的该系统不仅适用于多控制方控制一个串口情况,还可根据工程中遇到的各种需求进行功能扩展。

        (1)一个控制设备和多个受控设备

        虽然,若被控的受控设备提供的通讯协议包含地址,可通过菊花链方式分别控制,但在工程应用中有相当多的设备协议中并不包含地址。如果要实现分别控制,可使用本设备,对每个下位端口分别分配一个虚拟地址,在命令处理模块中加入地址判断,使收到的命令仅向对应地址的下位端口发送。

        (2)多个控制设备和多个受控设备

       在这种情况下,普通的连接方法不能满足多设备之间协调通讯的需要。若使用本设备,只需在命令处理模块和回送处理模块中,修改相应的端口数目即可。控制方和受控方的功能不变。

        (3)在控制设备和受控设备中存在着多种不同的通讯协议。此时,可利用本设备,添加协议转换模块,使之具备多种协议的解析功能,在收和发之间进行对应的协议转换,这种方法,比工程中通常采用更改控制设备的控制程序的方法更简单、方便。

       (4)上述几种情况并存。尤其是控制设备与受控设备协议不同,而多个受控设备协议没有地址,且需要分别控制时。本设备也可对每个受控方端口分别分配一个虚拟地址来实现分控,并在收发中间进行通讯协议的转换。

       4 结 语

       本文设计的串口扩展设备,不但成本低、设计简单,而且可满足工程上串口应用的多种不同需要,具有较高的使用价值,对工程技术人员具有一定的参考意义。

COPYRIGHT(C) 2011 厦门永宏亚得机电科技有限公司版权所有(闽ICP备05025945号) ALL RIGHTS RESERVED?

电话: 0592-5190891 传真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 厦门市海沧区兴港六里17号2607室 邮编:361009 联系人:翟先生