1 引言
现代远程测控任务要求能对各种工业系统进行远程监视、控制以及远程数据传送,传统的集中测控系统已经满足不了复杂、远程(异地)和范围较大的分布式测控任务的需求。而且多数的工业控制和通信设备中,采用的是符合rs232标准的串行口设备。在internet技术向全球各个领域普及的同时,如何将串行口的数据转发到网络上,实现设备的远程控制、数据的远程传输便成了一个亟待解决的问题。同时,考虑到成本问题,以往设备又不可能全部淘汰。因此,本文提出一种基于tcp/ip的串口转换网关解决方案。
串口转换网关使得串口数据流到以太网数据流的传输成为可能。它能连接rs232串口设备,并将串口数据进行选择和处理,把rs232接口的数据流转化成以太网数据流,这样就可以进行网络化的数据处理,实现串行数据的网络化。采用此种方案,无需淘汰原有串口设备,多台设备可同时入网,既可以提高设备利用率,又节约组网费用,还可在已有的网络基础上简化布线复杂度。
2硬件结构
由stc89c58单片机和rtl8019-as以太网控制器组成硬件平台,编写网络设备的驱动程序,实现以太网通信功能。该系统的硬件结构如图1所示。该系统模块可满足具有rs-232接口的电气设备的远程监控工作需求,是一种具有实际意义的网络通信模块,该模块利用网络接口芯片rtl8019as使得测控设备能以低廉的费用、简单的方式接入局域网。以网络接口芯片rtl8019as的主要性能符合ethernetⅱ与ieee802.3标准,全双工,收发可同时达到10mb/s的速率。远程端pc机把数据发给以太网接口,以太网接口把数据存入ram中,现场串口装置与单片机进行通讯,从ram中取出数据作为现场设备的控制命令,从而使现场设备工作状态发生变化。
图1 系统结构图
rtl8019as内部有2块ram区,一块32bytes,地址为0x0000-0x0001f,用于存储以太网物理地址。一块16kbram地址为0x4000-ox7fff,要接收和发送数据包就必须通过dma读写此ram。rtl8019as内部可分为远程dma接口、本地dma接口、mac逻辑、数据编码解码逻辑和其他端口。rtl8019as具有32bit输入输出地址,远程dma地址偏移量0x10h-0x17h都可以用来做远程dma端口,只要用其中一个就可以了,一般使用0x10h。远程dma是cpu从网卡的ram里读取数据到系统ram中,或者发送数据到网卡的ram中。本地dma是网卡接收以太网上传来的数据,或者发送网卡ram 里的数据到以太网(启动命令后,网卡自动完成)。
本地dma完成控制线与网线的数据交换,处理器cpu收发数据只需对远程dma操作。当处理器要向网络上发送数据时,先将一帧数据通过远程dma通道送到rtl8019as中的发送缓存区,然后发出传送命令。rtl-8019as在完成了上一帧的发送后,再开始此帧的发送。rtl8019as接收到的数据通过mac地址比较、crc校验后,由fifo存到接收缓存区,收满一帧后,以中断或查询寄存器标志的方式通知主处理器。
3 软件设计
3.1 rtl8019as初始化
在使用rtl8019as作为网管芯片时,必须对8019进行初始化
{page_select(0);
cr=0x4c;
pstart=0x80;
bnry=0x4c;
tpsr=0x40; //tpsr,发送起始页寄存器
isr=0xff; //清除所有中断标志
rcr=0xe0; //rcr,监视模式,不接收数据包
tcr=0xe2; //tcr,look back模式
dcr=0xc8; //数据配置寄存器
imr=0x00; //中断标志屏蔽寄存器清0
page_select(1);
curr=0x4d;
cr=0x22; // 启动rtl8019as开始工作
page_select(0);
cr=0x22; //启动rtl8019as开始工作
isr=0xff; //清除所有中断标志
rcr=0xcc; //将rtl8019as的物理地址写入到mar寄存器
tcr=0xe0;
}
3.2 数据封装
串口进入的数据要想在以太网中传输必须按照以太网的帧格式进行封装,而这是一个逐层封装的过程。由应用程序对设备数据添加appl首部形成应用数据,由tcp协议对应用数据添加tcp首部,逐层对数据进行封装,最后由rtl8019as芯片对数据添加以太网首部。封装过程如图2所示。
图2 数据封装示意图
封装后的数据传输格式如线下所示:
(1) 前导:由rtl8019as芯片本身产生,用于同步首发双方的时钟,并指定传输数率。
(2) 目的地址da:以太网数据帧传输的目的地址,为48位二进制地址,全1时表示广播地址。
(3) 源地址sa:以太网数据帧传输的源地址48位,表示该帧数据的出发点,即发送端的地址。
(4) 帧格式type:类型字段,表明该帧数据的类型。如ip包的数据类型为0800h,arp包的数据类型为0806h。
(5) 数据:以太网规定整个数据包的最大长度为1514字节,在这里规定数据字段不能超过1500字节。
(6) crc及填充位:以太网规定整个数据包必须大于60字节不满足字节60字节,用任何数据不补足60字节。
3.3 数据处理框架
来自客户端的数据信息通过rj-45以太网接口,网路接口芯片到达微控制器,微控制器通过内嵌的tcp/ip协议栈,实现地址解析协议(arp)、internet控制报文协议(icmp)、ip协议和用户数据报协议(udp)等协议,从而完成网络数据的解析和拆封。网络数据处理编程时候使用如下的程序框架:
{ if(以太网首部帧类型==0x0806)
{arp处理程序}
if(以太网首部帧类型==0x0835)
{parp处理程序}
if(以太网首部帧类型==0x0800)
{ip处理程序}
}
在正常运行时,tcp/ip协议转换模块的任务主要是将以太网发送缓冲区的串口帧封装在udp包中,并传给ip层;同时,接收以太网数据帧并向上层层解包,分离应用层数据,然后数据的解析处理交由多串口发送模块完成。接受串口数据后由单片机封装后写入以太网发送缓冲区打包传输;同时,接收以太网应用层的数据,解析并从串口发出。对于该设计来说,通信数据的具体形式并不重要,它的任务主要是接收/发送,封装/拆封串口帧,为串口设备提供通用网关接口。
4 结束语
本文介绍了基于tcp/ip的网关转串口通讯,采用rtl8019as芯片实现了串口设备的网上通讯。较好的适应了,低速,串口的工业场合。在串口电气设备和网络之间建起了一道桥梁,实现了串口设备和监控和透明数据传输,以及设备的网络化控制及信息的分布式管理,能够广泛的应用在基于以太网的分布式测控网络中。通过它,我们可以实现对各种实时信号、仪器仪表、民用设施等目标的远程监视,对各种设备统一管理。这必将大大提高工作效率,改善工作环境,提升人们的生产生活水平。