基于Web的单片机远程监控系统的设计与实现
1. 引言
单片机系统以其简单、高效的特点,在工业控制和日常生活中应用越来越广泛。目前大多数单片机系统是以51 单片机为核心,与检测、伺服、显示设备配合起来实现监控功能。
然而,这些监控系统的数据传输多采用RS-232、RS-485 以及各种现场总线,这些方式有些通信速度不够快,有些距离不够远,且各种总线之间难于实现互连和互操作。以太网作为目前应用最为广泛的局域网,在工业自动化和过程控制领域得到了越来越多的应用。同时,随着Internet 的普及,现代通信技术的进步,基于TCP/IP 和Client/Server 架构的分布式监控技术也日趋成熟。把嵌入式系统连接到Internet 上,就可以方便、低廉地把信息传送到世界的任何一个地方。
传统的远程监控系统一般采用C/S 模型的方式,主要针对大型的设备进行监控。对于如摄像头图象监控﹑家用仪表﹑门禁控制系统等小型的设备的监控就需要采用低成本的方案。
鉴于此,在低成本的单片机系统上移植精简的TCP/IP 协议簇,实现对于小型设备远程监控是最佳选择。该系统以Web 方式实现,用户可以在任何一台装有浏览器的PC 机上进行远程监视与控制,具有价格低廉、操作方便、界面友好等优点。传统的远程监控系统模型与本系统采用的模型如图1 和图2 所示。
图1 传统远程监控系统模型
图2 单片机监控系统模型
2. 系统硬件设计
本系统以 Cygnal 公司的完全集成的混合信号系统级芯片(SOC)C8051F020 单片机为核心,采用Realtek 公司的10M 自适应以太网控制器RTL8019AS 实现系统的网络接口部分。
SRAM 部分用于存放大量的数据信息。数据采集部分用于采集系统需要监控的设备的运行情况,由于C8051F020 内部带有真正12 位100 ksps 的8 通道ADC 带PGA 和模拟多路开关,还有两个12 位DAC 可编程更新时序,可以方便的进行模拟信号采集和对外设进行控制。
C8051F020 单片机内置64K FLASH 程序存储器、4K 内部SRAM,可以嵌入TCP /IP 协议, 从而实现嵌入式Web Sever 的功能。RTL8019AS 集成了介质访问控制子层(MAC)和物理层的性能,与单片机的接口简单,可以方便地用来设计基于ISA 总线的系统。另外,它还具有与NE2000 兼容、软件移植性好以及价格低廉等优点,所以特别适合用于嵌入式系统。
图3 系统框图
3.系统软件设计
3.1 软件流图设计
软件的实现主要是根据数据在网络中传输的方向和数据的流向来实现的。在本设计中数据的流向为:请求信息从局域网中来,通过RJ 45 送到RTL80l9AS,处理后的数据包送入单片机系统的协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过单片机系统的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。整个系统的软件流程如上图4 所示。
图4 软件框图
3.2 RTL8019 接收与发送数据
1.RTL8019 芯片初始化主要是将网卡设置成正常的模式,跟外部网络连接。清除所有中断标志位,让芯片开始工作。
2.对RTL8019 接收数据操作,有查询和中断两种方式。因为单片机的速度和PC 机相差太远,而且还有一些采集任务,本系统不采用中断方式,用查询方式。在查询方式下,通过查询CURR 和BNRY 两个寄存器的值来判断是否收到一帧数据。当BNRY+1 与CURR不相等,说明接收缓冲区接收到了新的数据帧。图5 为RTL8019 报头格式,接收部分子程序如下:
UCHAR xdata * rcve_frame(void) //如收到有效数据包,返回收到的数据,否则返回NULL
图5 RTL8019 报头格式
3.数据的发送包含三个步骤:封装数据包;通过远程DMA 将数据包送入RTL8019AS的数据发送缓冲区;通过RTL8019 的本地DMA 将数据送入FIFO 进行发送。具体过程如下:
(1)包在发送前应该按规定的格式封装好,格式如下图6 所示:
图6 MAC 帧首部
(2)把上面的数据包通过远程DMA 写入RTL8019AS 的数据发送缓冲区;
(3)启动本地DMA,把数据发送出去,数据包长度最小为60 字节,最大1514 字节。
发送子程序为:void send_frame(UCHAR xdata * outbuf,UINT len)//发送一个数据包3.3 TCP/IP 协议栈的实现。
3.3.1 ARP 协议的实现
ARP 地址解析协议的本质是完成网络地址到物理地址的映射。物理地址有以太网和令牌环网两种基本类型,网络地址特指IP 地址。具体到以太网,使用的是动态绑定转换的方法,但是会遇到许多细节问题,例如减少广播,ARP 包丢失,物理地址变更(更换网卡)、移动(移动设备到另一子网)、消失(关机)等。一般是设置ARP 高速缓存,通过学习、老化、更新、溢出算法处理ARP 映射表来解决这些问题。整个ARP 处理过程,主要用5 个函数实现。
在实现网卡驱动程序后,所
- openwebmailV1.60安装教学(11-12)
- Linux中WebLogic的安装和配置(04-14)
- Web服务在TM1300上的实现(07-04)
- 基于Linux NFS的Web数码相框设计 (08-27)
- 嵌入式Web服务器移植与测试(03-03)
- 实时内核μC/OS-II下的网络监控系统的设计(04-13)