用于智能仪器联网的以太网通信接口设计
摘 要 本文针对智能仪器联网的需求,对支持RS-232接口的智能仪器设计了一个以太网通信接口。以8051单片机为核心,用其串口作为与智能仪器的接口,用RTL8019AS芯片和RJ-45作为以太网接口,并通过软件实现RS-232与TCP/IP协议的转换,通过以太网实现智能仪器与远程计算机之间的数据通信,给出了硬件设计和软件实现方案。
0 引言
目前,互联网络硬件、软件的迅猛发展,使得网络用户呈指数增长,在使用计算机进行网络互联的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备正逐步地走向网络化,以便共享网络中庞大的信息资源。但是很多现有的仪器设备只配置了RS-232等串口,并没有内置网络接口,无法直接联网。本文所设计的通信接口可以使具有RS-232接口的智能仪器和设备接入以太网,实现网络中的远程计算机与测控现场的仪器设备之间的数据通信和数据共享。目前具有RS-232接口的智能设备非常普及,它们大多数配置有串口,甚至许多家用电器也提供有RS-232串口,例如微波炉、空调和热水器等。这些设备和电器可以通过本文所设计的通信接口接入网络,使网络中的监控计算机对它们进行远程控制和监控,进行数据采集,发出控制命令等一系列操作。使远在办公室的人们通过自己办公桌前的PC机监视现场智能仪表的测量数据,或者访问诸如空调,热水器等家电,实现温度查询、室温的预热预冷、热水器的开关等操作。
1 支持网络化智能仪器接口的技术
要能实现上述目标,每一个智能仪器和设备都应成为Internet上的独立节点。也就是说每个智能仪器都必须安装一个网络接口来控制数据流的收发。实现网络化接口仪器的技术主要体现在以下几个方面。
1.1 以太网技术
以太网是目前使用最广泛的局域网技术,网络连接中有80%是基于双绞线介质的以太网。为了满足该网络接口的通用性和实现的简便性,采用了台湾Realtek公司的具有即插即用功能的全双工以太网控制器——RTL8019AS,并用廉价的8051单片机作为控制单元,实现把RS-232串口协议转换成TCP/IP协议的目标。RTL8019AS芯片中集成了OSI中的物理层和数据链路层的性能,它与单片机8051接口方便,具有软件移植性好、价格低廉等优点,符合Ethernet II与IEEE802.3标准,具有全双工的工作方式,内置16KB的SRAM,用于收发缓冲,能够降低对主处理器的速度要求。
1.2 Socket套接字技术
在远程监控计算机端,Winsock控件可支持数据收发程序的实现。Winsock控件是基于socket套接字技术的,提供了访问TCP和UDP网络服务非常简便的途径,使编程人员在开发客户/服务器应用程序时,不必了解TCP的细节或低级WinsockAPIs函数的调用,只需通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。如果访问TCP传输控制协议服务功能,还须建立连接并实现主机间点对点通信。如果访问UDP数据文报协议功能,不必建立连接,发送数据将以广播方式在网上传输。
1.3 TCP/IP协议
TCP/IP是计算机网络中最主要的传输协议,目前的Internet网就是基于TCP/IP协议的互联网络。而且TCP/IP除了用于广域网外,在局域网中也被广泛应用。当然,在单片机中实现TCP/IP协议与PC机不同,在PC里可支持比较完整的TCP/IP协议,但在单片机里由于资源的限制难以实现完整的TCP/IP协议,只能根据需要实现相关的部分。通常,在单片机中只实现ARP、IP、ICMP、TCP/UDP等协议,而更高层的协议(如HTTP、SMTP、FTP等)一般是不需要的。单片机应用的TCP/IP协议大多是为了完成远程数据传输,而不是网页浏览、文件传输等功能。另外,由于单片机资源的有限性,对某一协议而言还需要作适当简化。
根据智能仪表的联网要求,需要实现简单的RS-232接口到Ethernet的数据传输,为此,需要编写出以太网接口硬件以及底层的通讯及协议转换程序。通过对高级网络通信协议在以太网通信接口上如何实现等问题的探讨,对TCP/IP协议族所需系统资源的消耗估计,以及智能仪表对网络通信的需求,故在本文中着重实现了TCP内核中UDP、IP、ARP协议,并用Visual Basic.NET开发实现了远程PC端的数据收发程序。
2 网络通信接口的硬件组成与设计
根据仪器网络化要求和所提供的技术支持,网络通信接口可按图1所示的架构设计。
2.1 以太网控制器RTL8019AS
以太网控制器RTL8019AS内部可分为远程DMA接口(Remote DMA)、本地DMA接口(Local DMA)、MAC(介质访问控制)逻辑、数据编码解码逻辑和其它端口,其内部结构如图2所示。
按数据链路不同,可以将以太网络控制器内部划分为远程DMA(remote DMA)信道和本地DMA(local DMA)信道两个部分。远程DMA信道是指单片机对RTL8019AS内部RAM进行读写的总线,而单片机收发数据只需对远程DMA操作。本地DMA接口(双绞线接口)是RTL8019AS与网线连接的通道,完成控制器与网线的数据交换。当单片机要向以太网络发送数据时,先将一帧数据经过远程DMA信道,送到以太网控制器中的发送缓存内存(Ring Buffer),然后发出传送命令。以太网控制器在送出前一帧的数据后,继而完成此帧的发送。以太网控制器接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓存区,收满一帧后,以中断或缓存器标志的方式通知单片机。
接收逻辑在接收时序的控制下,将串行数据组成字节送到FIFO和CRC;发送逻辑将FIFO送来的字节在发送时序的控制下逐位移出,并送到CRC;CRC逻辑在接收时对输入的数据进行CRC校验,将结果与帧尾的CRC相比较,如不同,该帧数据将被拒收。在发送时CRC对帧数据产生CRC,并附加在数据尾传送;地址识别逻辑对接受帧的目的地址与预先设置的本地地址进行比较,如不同且不满足广播地址设定要求,该帧数据将被拒收;FIFO逻辑对收发的字节作16字节的缓冲,以减少对本地DMA请求的频率。
2.2 外围接口器件
l 93C46,采用SPI串行总线接口的Serial EEPROM,容量为1Kbit(64×16bit),主要保存RTL8019AS的配置信息。
l 62256,32K字节的RAM,作为8051的外部数据存储器,用来存储工作时产生的数据及变量。
l 网络接口采用UTP(无屏蔽双绞线)RJ-45接口,用10BASE-T布线标准通过双绞线进行以太网通信。
l 时钟电路,通过X1、X2接口连接一个20MHz晶振以及2个33pF的电容,实现全双工工作方式。
l LED0、LED1各接一发光二极管以反映通讯状态。
2.3 RS-232与以太网的接口设计
2.3.1 单片机与智能仪器端接口设计
为了能使串口与单片机之间进行数据互传,必须采用逻辑电平转换芯片MAX232,把输入的+5V电压转换为RS-232接口所需的±10V电压。插口连接器必须经过该逻辑电平转换器才能与单片机串行数据输入/输出引脚RXD(P3.0)、TXD(P3.1)相连。另外,还需要进行波特率的设置,其串口通信程序由C51语言实现。
2.3.2 单片机与以太网接口的设计
8051单片机负责TCP/IP协议的实现以及数据交换的处理,考虑到8051单片机本身只有16位的寻址方式,而RTL8019AS有20位。为了将以太网控制器内16个I/O寄存器地址,映像到8051单片机上来并与其16位地址匹配,可采用内存映像的方法,将RTL8019AS的20根地址总线SA0~SA19其中的SA10~SA19接地,其余10根地址中只使用7根与单片机的地址线进行连接,其余为无关项。利用此种方法,就能通过单片机对RTL8019AS的寄存器进行访问,并进行数据交换。图3给出了8052单片机控制RTL8019AS实现以太网通讯的接口电路框图。
网络接口采用UTP(无屏蔽双绞线)RJ-45接口。在图7中为外接一个隔离LPF滤波器0132,TPIN±为接收线,HD、LD为发送线,经隔离后分别与RJ-45接口的RX±、TX±端相连。
3 软件编程
3.1 RTL8019AS初始化程序的编写
要使网卡能够工作,必须对网卡进行初始化设置。首先要对网卡进行复位操作,并让其处于停止模式,然后对各寄存器进行设置,包括接收发送缓冲器指针的设置,清除并屏蔽中断标志位,溢出报警指针的设置等。启动网卡前,程序应执行从93C46读入网卡物理地址到相应寄存器的操作。最后启动网卡,再次清除所有中断标志位。
编写相应的发送程序,能够发送一个从串口收到的数据包,将待发送的数据按帧格式封装,长度最小为60字节,最大为1514字节,并通过远程DMA通道送到RTL8019AS的发送缓冲区,然后发出传送命令,完成帧的发送。需要设置以太网的目的地址、以太网源地址、协议类型、在按所设置的协议类型来设置数据段,即进行打包工作。之后启动本地DMA将数据发送到网上。我们通过观察RTL8019AS相应寄存器的状态来确定其能否正常工作。
对各寄存器进行设置的部分初始化代码如下:
void init_8019(void) //初始化8019函数
{ UCHAR temp; //定义temp为无符号字符型变量
Delay1ms(10); //延时10ms,建立数据稳定
Rtl8019AS_Reset(); //复位
reg00=0x21; //使芯片处于停止模式,进行寄存器设置
Delay1ms(10);
page(0);
reg0a=0x00; reg0b=0x00; //远程DMA字节计数为0
reg0c=0xe0; // 设置RCR,监控状态,拒绝数据包进入缓冲区
reg0d=0xe2; //设置TCR,自动校验,内部回顾模式
reg01=0x4c; reg02=0x80; reg03=0x4c; reg04=0x40;
// PSTART=0x4c,PSTOP=0x7f+1=0x80,BNRY=PSTART,接收溢出报警,TPSR发送起始页
reg07=0xff; //ISR都置1,清除所有中断标志位
reg0f=0x00; //IMR都置0,屏蔽所有中断
reg0e=0xc8; //DCR,8位DMA数据传输方式
page(1);
Delay1ms(1);
reg07=0x4d; //CURR,当前页指针
temp=reg07;
reg08=0x00; reg09=0x00; reg0a=0x00; reg0b=0x00; // MAR0~MAR7,多播地址寄
reg0c=0x00; reg0d=0x00; reg0e=0x00; reg0f=0x00; //存器,置0
reg00=0x22; //启动芯片,
ReadRtl8019NodeID(); //读网卡物理地址
WriteRtl8019NodeID(); //写网卡物理地址
page(0);
reg0c=0xcc; //重置RCR,正常工作状态,
reg0d=0xe0; //设置TCR,自动校验,正常工作模式
reg00=0x22; //再次启动芯片开始工作
reg07=0xff; //ISR中第7位RST在启动时置0,故再次清除中断标志位
}
3.2 TCP/IP通信协议内容
l ARP协议,即地址解析协议,提供逻辑地址到物理地址的动态映射。发送站必须知道接收站的物理地址才能对数据进行封装,才能在以太网中进行传输,因此只知道接收站的逻辑地址是不够的,必须事先通过ARP协议得到接收站的物理地址。
l IP协议,即网络协议,提供一种不可靠的、无连接的服务,完成的功能有将运输层待发送数据封装成IP数据报,调用以太网驱动程序发送数据,从数据链路层接收数据,以及数据校验等。
l UDP协议,即用户数据报协议,它是一个无连接协议,与TCP协议操作不同,UDP协议不使用报文确认机制,不对报文排序,不进行流控,因而UDP报文可能出现丢失、重复、乱序等现象,但由于它的前期工作比TCP少,计算机不建立连接,因而可以迅速地展开通信,一般用于传输少量不重要的数据和信息。是一种面向连接的、可靠的运输协议。UDP协议实现相同功能,但它只把数据报分组从一台主机发送到另一台主机,不保证可靠性。
3.3 TCP/IP通信协议的软件实现
当通信接口从串口收到数据后,首先将加上UDP首部,即打包成UDP报文,再把该报文加上IP首部,即打包成IP包,并执行ARP程序来得到远程PC的物理地址,最后把这些都交给RTL8019AS芯片,由其自动生成以太网物理帧,发送到以太网上。同样智能仪器也可以实现数据接收的功能,即把RTL8019AS收到的数据进行层层拆包,如图4所示。以上过程以及 RTL8019AS的上电初始化即对其内部寄存器进行设置和操作,均由C51在MedWin环境下实现。详细的设置方法和源代码参见附录。
3.4 PC端数据接收程序的编程
该程序是在Windows XP操作系统中用Visual Basic.NET编写的,应用了WinSock控件(基于Socket套接字技术)。因本网络接口使用UDP协议进行数据传输,编程时首先设置WinSock控件的工作方式为UDP,然后设置所使用的端口。数据接收程序运行时就将Socket绑定到该端口上,当网络接口要向该数据接收程序发送数据时,需要指明地址和端口,等数据发送到此端口时,将自动触发WinSock控件的DataArrival事件,进行数据的接收。使用UDP协议进行通信时,通信的双方时对等的。通信规程如图5所示。
通信收发界面如图6所示。
4 结束语
本文介绍了智能仪器与以太网接口的设计方案,讨论了硬件设计与软件实现的方法。虽然文中所讨论的是RS-232串行总线与以太网的集成,但其方法适用于众多现场总线技术。本文所设计的接口为控制网络和信息网络与以太网的集成提供了一种低成本的解决方案。
参考文献
[1] RTL8019AS Specification. Realtek Semi-conductor CO.LTD,2000.08
[2] 凌志浩.智能仪表原理与设计技术.华东理工大学出版社,2003.08
[3] DOUGLAS E.COMER. 用TCP/IP进行网际互联(第三版)第二卷。 电子工业出版社,2001
[4] CHARLES E.SPURGEON. 以太网技术入门与实现。 机械工业出版社, 1998.08
[5] JOE CASAD, BOB WILLSEY. Sam Teach Yourself TCP/IP in 24 Hours. 机械工业出版社, 1999. 04
[6] 邓全良。 Winsock网络程序设计。 中国铁道出版社, 2002.07
[7] 张培仁等。 基于C语言编程MCS-51单片机原理与应用。 清华大学出版社, 2003.07
[8] 王进强。 Visual Basic.Net. 清华大学出版社, 2004.04
[9] 卞志强。 Visual Basic 网络程序设计。 人民邮电出版社, 2003.09
[10] 李超等。 智能仪表的网络化技术。 世界仪表与自动化,2004.09
文章版权归西部工控xbgk所有,未经许可不得转载。
上一篇:智能仪表的网络化技术探讨