随着互联网的日益普及,各种家电设备、仪器仪表以及产业生产中的数据采集与控制设备在逐步地走向网络化,以实现分布式远程监控、信息交换与共享。目前广泛使用的以太网以及TCP/IP协议已经成为最常用的网络标准之一,其高速、可靠、分层以及可扩充性使其在各个领域的应用越来越灵活,很多情况下采用以太网和TCP/IP,能够简化结构和降低本钱。
目前大多数智能设备和仪表都采用RS232/485或USB通讯方式,不具备远程控制和数据传输能力。利用以太网实现产业系统远程控制,通过互联网共享小型嵌进式设备的信息,是产业控制研究的发展趋势。本系统采用高速单片机ATmega64及RTL8019AS以太网控制器,用嵌进式TCP/IP协议可以实现TCP和UDP等网络功能,进一步实现HTTP协议服务,实现WebSever及接进Internet的功能。
1系统硬件设计
系统的结构框图如图1所示,ATmega64是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。内带64KB的Flash、2KB的E2PROM、4KB的SRAM。由于其先进的指令集以及单时钟周期指令执行时间,ATmega64的数据吞吐率高达1MIPS/MHz,从而可以满足系统在功耗和处理速度方面的要求。
RTL8019AS是一种高度集成的10MB以太网控制器,与NE2000兼容,支持8位、16位数据总线;内置16KBSRAM缓存;可连接同轴电缆和双绞线,并可自动检测所连接的介质。以太网隔离滤波器选用20F00IN。
RTL8019AS与主处理器的接口方式有三种:跳线方式、PNP(即插即用)方式和免跳线方式。RTL8019AS的第65脚JP决定网卡的工作方式,本设计中JP脚接高电平(VCC),即使用跳线方式,此时可以省掉外部E2PROM93C46芯片。单片机通过I/O模式访问以太网控制器。RTL8019AS必须工作在8位模式下,其引脚IOCS16B经电阻接地。电路框图如图2所示。
RTL8019AS本身具有地址译码功能,所有的控制功能或数据传输都是通过访问地址偏移为00H~1FH的寄存器完成的,所以只需要5条地址线(SA4~SA0)。在跳线方式下RTL8019AS的I/O地址由引脚IOS3~IOS0决定,将IOS3~IOS0对应引脚全部接低电平,时RTL8019AS的I/O基地址为300H,因此可以用SA8和SA9进行片选接至单片机的PC7。当PC7引脚置高电平时选中RTL8019AS,当PC7引脚置低电平时选中外部RAM,而将片选信号AEN接地,这种片选方式可以节省一个反向器。AUI用来检测在AUI接口外部MAU的使用情况。当该引脚未用时,应该接地。
介质的选择由引脚PL1和PL0决定,RTL8019AS还具有自动测试介质连接是否成功的功能。无屏蔽双绞线(UTP)电缆是目前使用最为普遍的电信介质类型。为了更方便地将嵌进式以太网模块接进到局域网中,本设计采用RTL8019AS与双绞线连接的接口电路,即将PL0、PL1接地。
2以太网控制器的工作过程
以太网控制器的RAM以256字节为一页,是按页存储的结构,16位RAM地址的高8位又叫页码。以太网控制器的16KBRAM的地址从0x4000~0x7FFF,即从页0x40到页0x7F,共有64页用来接收和发送数据包。这64页RAM是一块双端口RAM。所谓双端口就是说有两套总线连接到该RAM,总线A用于以太网控制器读/写片上RAM,总线B用于单片机读/写以太网控制器上的RAM。总线A又叫LocalDMA,总线B又叫RemoteDMA。
2.1数据包的发送过程
(1)封装数据包:数据包在发送前,单片机将其按如图3所示的以太网帧格式封装好,并存放在外部SRAM。
(2)通过远程DMA将数据包写进到RLT8019AS的数据发送缓冲区,数据的目的缓冲区首地址和字节数由内部寄存器RSCR0、1设定。
(3)通过RTL8019AS的本地DMA将数据送进FIFO缓冲器进行发送。
2.2数据包的接收过程
(1)本地DMA将需要接收的数据包存进到接收缓冲环中。
(2)由远程DMA将接收缓冲环中的数据包写进到外部SRAM中。
假如以太网控制器运行正常,接收到数据包时自动启动本地DMA将数据存进接收缓冲环中,也就是说第一步是由RTL8019AS自动完成的。但是,接收缓冲环的范围需要设置,PSTART、PSTOP分别用于设置接收缓冲环的起始页和发送页,设置了接收缓冲环之后,接收到的第一个数据包放置的位置由当前页面寄存器CURR决定。
3服务器端工作过程
图4所示为本系统TCP/IP各层协议,链路层协议由单片机控制RTL8019AS实现,而其他协议由单片机内部程序实现。
服务器接收数据时,以太网驱动程序负责接收数据,由以太网控制器中断处理程序唤醒数据接收任务,由数据接收任务将接收到的数据帧交给网络接口层,网络接口层取出帧头,判定接收数据的类型,假如是ARP报文,则将ARP报文交给ARP协议模块处理;假如是IP数据包,则将IP数据包交给IP协议模块处理,IP协议模块取出IP首部信息,然后根据数据包的类型,将报文交给相应的协议模块(UDP模块、TCP模块或ICMP模块)处理,UDP模块或TCP模块收到报文后,取出首部进行处理,并将用户数据交给应用程序。
服务器发送数据时,将用户数据交给UDP协议模块或TCP协议模块处理,UDP协议模块或TCP协议模块将其首部和数据封装成UDP数据包或TCP数据包,然后将封装好的数据包交给IP协议模块,IP模块在上层交给的数据包上添加IP首部,并封装成IP数据包,然后为IP数据包寻找路由,假如找不到相应路由,则向ICMP协议发送出错报文,由ICMP协议模块进行处理,在找到了合适的路由后,假如是以太网方式,则将数据包发送到网络接口层,利用ARP协议找到目的IP对应的物理地址,然后封装成以太网帧,由网卡驱动程序将以太网帧发送出往。
4利用HTTP协议实现Web接收与发送控制数据
在单片机系统中实现HTTP协议服务真个功能,就可以为其他的客户机提供超文本信息,客户端只需要使用同一的浏览器就可以与服务器进行信息交换。
超文本传输协议(HTTP)是目前通过Internet进行信息交换最主要的方式。在Internet上HTTP通讯经常发生在TCP/IP连接之上。其缺省端口是TCP协议的80端口,当然,其他的端口也是可以使用的。HTTP协议是建立在请求/响应(request/response)模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME(MultipurposeInternetMailExtensions)样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功或失败码以及相关的MIME式样的消息(包含服务器的信息、资源实体的信息和可能的资源内容)。
单片机服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应计算机真个控制请求。用HTML文件编写的网络界面,可以通过浏览器访问并利用相应的按扭向服务器发送HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操纵后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。
图5是通过Web浏览器看到的网络控制界面,必须将客户计算机与服务器系统的IP地址设置在一个段内。如本系统服务器IP地址设为192.168.0.10,客户机IP地址设为192.168.0.11,默认网关均为255.255.255.0。
(1)发送控制数据过程:①通过浏览器向服务器系统(单片机)发送HTTP请求;②服务器系统通过HTTP服务程序查看网页程序中表单内输进变量的变化;③取出变量值,调用串口程序将数据发出。
(2)接收采集数据过程:①系统HTTP协议程序的http_serve中调用串口程序接收串口数据,并用此数据取代其内部网页中的表格内"NODATA"标记;②服务器系统把Web页面传送给用户界面的浏览器。
用低本钱的AVR单片机和以太网控制器,配合适当的网络协议,实现了通过网络对RS232接口设备的数据采集及系统控制。如对其进行适当的改变与扩展,便可以用于其他接口的仪器仪表,并应用于更广泛的领域。由于系统的控制器使用的是单片机,限于其内部资源,所以网页文件不能过大。
参考文献
[1]何苏勤.TMS320C2000系列DSP原理及实用技术[M].北京:电子产业出版社,2003.
[2]贾云飞,王景芹.利用单片机控制以太网网卡进行数据传输的研究.网络与总线,2003,(6):41.
[3]闫保中,虞凌宏,王仁龙.基于AVR高速单片机的Websever的研究.应用科技,2006,33(3):25.
[4]J.Magid.Web服务器技术指南.李谦译.北京:机械产业出版社,1996.
[5]NetworkWorkingGroup:RFC2616-HypertextTransferProtocol——HTTP/1.1.