随着互联网的日益普及,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以实现分布式远程监控、信息交换与共享。目 前广泛使用的以太网以及TCP/IP 协议已经成为最常用的网络标准之一,其高速、可靠、分层以及可扩充性使其在各个领域的应用越来越灵活,很多情况下采用以太网和TCP/IP,能够简化结构 和降低成本。
目前大多数智能设备和仪表都是采用RS232/485 或USB通讯方式,不具备远程控制和数据传输能力。 利用以太网实现工业系统远程控制, 通过互联网共享小型嵌入式设备的信息,是工业控制研究的发展趋势。本系统采用高速单片机ATmega64及RTL8019AS 以太网控制器,用嵌入式TCP/IP 协议可以实现TCP和UDP等网络功能,进一步实现HTTP协议服务,实现Web Sever 及接入Internet 的功能。
1 系统硬件设计
系统的结构框图如图1所示, ATmega64是基于增强的AVR RISC 结构的低功耗8位CMOS微控制器。内带64KB的Flash、2KB的E2PROM、4KB的SRAM。由于其先进的指令集以及单时钟周期指令执行时 间,ATmega64 的数据吞吐率高达1MIPS/MHz,从而可以满足系统在功耗和处理速度方面的要求。
RTL8019AS 是一种高度集成的10MB以太网控制器,与NE2000兼容, 支持8位、16位数据总线;内置16KB SRAM缓存;可连接同轴电缆和双绞线,并可自动检测所连接的介质。以太网隔离滤波器选用20F00IN。
RTL8019AS 与主处理器的接口方式有三种:跳线方式、PNP(即插即用)方式和免跳线方式。RTL8019AS 的第65 脚JP 决定网卡的工作方式,本设计中JP脚接高电平(VCC),即使用跳线方式,此时可以省掉外部E2PROM 93C46芯片。单片机通过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位又叫页码。以太网控制器的16KB RAM的地址从0x4000~0x7FFF,即从页0x40 到页0x7F,共有64 页用来接收和发送数据包。这64页RAM是一块双端口RAM。所谓双端口就是说有两套总线连接到该RAM,总线A 用于以太网控制器读/写片上RAM,总线B 用于单片机读/写以太网控制器上的 RAM。总线A又叫Local DMA,总线B 又叫 Remote DMA。
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(Multipurpose Internet Mail Extensions) 样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功或失败码以及相关的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 中调用串口程序接收串口数据,并用此数据取代其内部网页中的表格内“NO DATA”标记;②服务器系统把Web页面传送给用户界面的浏览器。
用低成本的AVR单片机和以太网控制器,配合适当的网络协议,实现了通过网络对RS232接口设备的数据采集及系统控制。如对其进行适当的改变与扩展,便可以用于其他接口的仪器仪表,并应用于更广泛的领域。由于系统的控制器使用的是单片机,限于其内部资源,所以网页文件不能过大。
参考文献
[1] 何苏勤. TMS320C2000系列DSP原理及实用技术[M]. 北京:电子工业出版社,2003.
[2] 贾云飞,王景芹. 利用单片机控制以太网网卡进行数据传输的研究.网络与总线,2003,(6):41.
[3] 闫保中,虞凌宏,王仁龙. 基于AVR高速单片机的Web sever的研究.应用科技,2006,33(3):25.
[4] J. Magid. Web服务器技术指南.李谦译.北京:机械工业出版社,1996.
[5] Network Working Group: RFC 2616 - Hypertext Transfer Protocol——HTTP/1.1.