RS 232串口多方控制的实现 点击:332 | 回复:4



wxck

    
  • 精华:8帖
  • 求助:0帖
  • 帖子:472帖 | 1740回
  • 年度积分:0
  • 历史总积分:6871
  • 注册:2003年7月14日
发表于:2008-08-12 14:27:02
楼主
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 结 语

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



楼主最近还看过



苗子

  • 精华:0帖
  • 求助:1帖
  • 帖子:363帖 | 2721回
  • 年度积分:0
  • 历史总积分:5525
  • 注册:2002年11月15日
发表于:2008-08-14 14:16:37
1楼
串口应用的多种不同需要

bihai_zhao

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2008年9月14日
发表于:2008-09-14 14:58:25
2楼

有需要研祥工控机的朋友请联系我   我公司的网址是WWW.EVOC.COM

研祥智能科技股份有限公司

销售经理:赵仓壁

联系电话:13760475279  0755-83665097,EMAIL:BIHAI_ZHAO@163.COM

raining

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 706回
  • 年度积分:0
  • 历史总积分:1121
  • 注册:2008年9月18日
发表于:2008-10-07 17:26:56
3楼
串口应用的多种不同需要 ,学习了,谢谢

xlch1982

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 34回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2008年4月01日
发表于:2008-10-18 14:53:35
4楼
研发,生产厂家直销RS232/RS485/RS422转TCP/IP(单口,2口,4口,8口)串口设备服务器,RS485/422中继器,RS232转RS485/422转换器.,嵌入式设备网络模块,智能模拟量/数字量采集器等等!
更多产品详情请查看WWW.ED-168.COM(深圳东方数码技术有限公司)
欢迎来电咨询,电话:0755-88865168-818 手机:15986604553 联系人:徐 生

热门招聘
相关主题

官方公众号

智造工程师