1、1毕业设计基于 TCP/IP 的机房多点告警传输与控制系统 告警数据的采集及网络传输的实现学院 通信工程 学生姓名 指导教师 摘 要 随着嵌入式系统的广泛应用,赋予嵌入式系统 Internet网络接入功能已经成为一种需要,也是嵌入式应用领域的研究热点之一。本课题用应用最广泛的MCS-51系列单片机作为嵌入式系统的核心,自行设计和开发了一套适合该类嵌入式系统的精简 TCP/IP协议栈,实现了低成本嵌入式系统的 Internet接入。基于该系统,设计了一套完整、灵活、可扩展性强的机房监控设备。该设备适用于各种无人机房的远程监控,实现了远程监控的网络化。关键词 单片机 RTL8019AS 精简 TC
2、P/IP C51ABSTRACT With the widespread application of the embedded systems, endowing the embedded systems with network-access function has become necessary and one of the research focus of embedded system application field. This paper designs a tiny TCP/IP stacks suitable for embedded 2systems with th
3、e widely used MCS-51 series MCU as its CPU, which makes the low-cost embedded systems accessing the Internet come true. A complete remote-supervise device has been designed using this embedded system. It is an integrated, flexible and well expandable device that can be used in various non-person mac
4、hine room, realizing the network for remote supervision.Keyword: MCU RTL8019AS Tiny TCP/IP C511、系统总体概述系统分为硬件设计和软件编程两个部分。其中,硬件部分包括三个功能模块:数据采集模块、汇集器模块和网络通信模块。三个模块各负其责但又协调统一,共同完成告警数据的采集、汇集及网络传输。图 1给出了总体结构示意图。软件部分包括各功能模块的控制程序及精简 TCP/IP协议栈的开发。整套系统具有多路数据采集,多路数据汇集以及网络 TCP、UDP 传输的功能;并且成本低,局域网传输稳定可靠。3采集器1采集器
5、2采集器8数据汇集器网络通信模块Internet图 1 总体结构图监控中心2、数据采集模块的设计此模块的设计分为两个部分:数据采集卡和母板控制器。两者之间用 DB37接口连接。数据采集卡负责采集数据,母板控制器负责数据的处理和传输。其中,数据采集卡前端使用光电偶合器,将设备的地信号和本系统的地信号分开,以免影响系统的稳定工作且起保护作用。母板的设计采用了 8个 LS244芯片作缓冲器,使用单片机的 P2口进行片选,通过轮询的方式采集数据,并由单片机处理,形成自定义串行通信协议的数据帧格式,然后将该数据帧以 RS232通信方式发送给下一级汇集器模块。为了此模块具有灵活性和通用性,在设计时加入了
6、3位的拨码开关,连接到单片机的 P0口,可以通过设定开关的不同状态来区分不同的设备以及使用采集卡的数量,方便用户。硬件总体结构如下图所示:4 数据线控制线片选片选片选多路数据采集缓存器0缓存器1缓存器7AT89C52串口通信拨码开关P0 口MAX232图 2 数据采集模块总体硬件结构图数据采集模块程序的编写,采用汇编语言,简单且运行效率高,程序的总体流程图如下:开始初始化1分钟定时?读取开关状态比较数据N轮询采集卡是否有变化?刷新发送数据计算校验和形成数据帧发 送YN接受数据根据不同数据做出相 应动 作中断入口中断返回图 3 采集模块的软件总体流程图53、汇集器模块的设计多路汇集模块的主要功能
7、是将多路(最多八路)串口过来的告警数据,汇集成一路数据,发送给网络通信模块;或是将网络通信模块过来的控制数据准确的分路给各个串口,实现双向通信。自定义的通信协议,除了很好的识别各路告警数据外,还具有线路自检功能,监控中心可根据数据帧中内容,知道各模块之间的连接是否正常,各数据采集卡的工作状态是否正常等,大大增强了整个系统的可靠性。硬件设计上采用了 77E58单片机控制两片 TL16C554四串口异步通信芯片来完成该模块数据汇集的功能。总体结构及接口如下图:TL16C554串口 1串口 2串口 3串口 4控制总线77E58通信口P0 口地 址 锁 存器74LS573P2 口3-8译码 器发地址总
8、线数据总线读/写 RD/WRP3.5复 位MAX232MAX232MAX232MAX232数据采集模块1数据采集模块2数据采集模块3数据采集模块4MAX232网络通模块 图 4 汇集器模块的硬件结构及接口此处使用 77E58单片机是因为其内部有 1K的 SRAM可以用来暂存各路的数据,从而就不必外挂 RAM,简化了硬件结构。控制程序的主要思路是采用寄存器查询方式进行数据收发,然后根据通信协议对数据进行相应处理,并配合定时器来达到线路的自检功能,流程图如下:6开始77E58的初始化各路串口的初始化是否有数据?接受并校验数据处理数据发送至网络 通信模块YN无误错误复位定时器定时中断2 分钟定时到?
9、发送失效信息中断返回NY复位定时器串口中断发送中断?发送下一数据?发送完成?接受数据分析数据并分路给指定串口中断返回NYYN图 5 汇集模块软件总体流程图4、网络通信模块的设计网络通信模块是本系统设计的重点也是难点所在。主要功能是实现数据的网络传输。主要包括对数据进行 TCP/IP的打包或解包以及对网络控制器的控制与操作。设计中,为了降低系统成本,采用的是 8位微处理器 AT89C55WD单片机和 10M以太网络控制器 RTL8019AS。741 硬件的设计网络通信模块大致可以分为四个部分:主 CPU、存贮器(包括 IS62C256 32K的RAM 和 24C02 I2C总线的 EEPROM)
10、 、网络控制器 RTL8019AS和串口通信部分。各个部分在单片机 AT89C55WD的协调控制下,各尽所能,共同完成网络通信的任务。总体逻辑结构如图 6所示。地址锁存器P0.0P0.7 数据总线P2.0P2.6地址总线P2.7 片选读/写RD/WR62256AT89C55WDRTL8019ASP3.5隔离变压器数据总线地址总线复位读/写网络通信口网络接口MAX232通信串口汇 集 器模块网络图 6 网络通信模块的硬件结构和接口24C02 P1.6P1.7EEPROM其中,设计的重点是网络控制器 RTL8019AS的硬件设置和与单片机的接口设计。RTL8019AS的硬件设置包括三个内容:工作模
11、式的设定、I/O 基址与数据总线模式的设置以及网络接口的设置,这些硬件设置都是网络控制器正常工作的前提。针对本课题所应用 8位单片机为主 CPU,对 RTL8019AS进行相应的硬件设置。方法如下:工作模式设定为跳线方式,将管脚 JP(第 65脚)通过 10K电阻上拉接VCC即可;I/O 基址设定为 300H,故需将引脚 IOS3、IOS2、IOS1、IOS0 悬空(RTL8019AS 中,管脚悬空相当于接低电平,因为内部有下拉电阻) ;数据总线模式8为 8位模式,相应管脚第 96脚 IOCS16接低电平;网络接口设置为自检方式,将引脚 PL0、PL1(第 74、77 脚)悬空即可。AT89C
12、55WD单片机对 RTL8019AS进行读写和控制操作,是通过设计两者之间的接口实现的,这也是硬件设计的重点内容。接口设计主要包括:数据和地址总线、读写线和复位线的接口设计。如总体结构图 6所示,RT8019AS 的读写线,连接到单片机对应的读写线(RD 和 WR );第 33脚复位引脚 RESDRV与单片机的 P3.5相连,通过控制 P3.5的输出来达到复位 RT8019AS的目的。根据前面的设置,RTL8019AS 采用了 8位的数据总线模式,故将起低 8位数据总线接单片机的 P0端口。RTL8019AS 共有 20根地址线,为 SA0SA19,可寻址的输入输出地址共 32个,地址偏移量为
13、 00H-1FH,根据前述设置,RTL8019AS 的基址定为 300H,所以寻址的地址为:300H31FH。从地址对应表 1中可以看出,地址线的 SA19-SA5都是固定的值 000000000011000,因此设计中将 SA5-SA7和 SA10-SA19都接地,而将 SA0-SA4接到单片机 P2端口的 P2.0P2.4,将 SA8、SA9 接 P2口的 P2.7。SA19SA10SA9SA8SA7SA6SA5SA4SA3SA2SA1SA0300H 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 X X X X X31FH 0 1 1 0 0 0 1 1 1 1 1上
14、述设计表明,当单片机外部寻址 0x8000时,即可寻址到以太网控制偏移量为0的基址 0x300,这也是以太网控制器的命令寄存器的访问地址。由此,完成了单片机与 RTL8019AS的接口设计。存储器部分可以分成两块:一块是 32K的外挂 RAM 62256,用于存放数帧、协议参数等信息,与单片机之间采用并行总线方式接口。另一块是 EEPROM 24C02,用于上电复位时,初始化系统参数。采用的 IIC总线是一种串行模式,通过软件模拟实现的。42 软件的设计引 脚地址表 1 地址对应表9网络通信模块的软件程序主要由下面几个部分组成:网络控制器的驱动程序、精简的嵌入式 TCP/IP协议栈、串口驱动、
15、中断服务程序和 IIC驱动以及应用函数。其中设计的重点和难点是网络控制器 RTL8019AS的驱动和精简的嵌入式 TCP/IP协议栈的实现。(1) RTL8019AS的驱动RTL8019AS的驱动过程包括四个步骤,分别为复位操作、内部寄存器的初始化、接收数据包服务程序的设计和发送数据包服务程序的设计。其中,复位操作是对RTL8019AS的复位引脚 RSTDRV(此处连到了单片机的 P3.5脚上) ,施加一个 1us以上的高电平就可以复位;然后初始化内部寄存器,根据设计的工作方式,参照使用手册对其必要的寄存器进行配置,使 RTL8019AS能按照所要求的工作。接下来就是RTL8019AS的两个主
16、要功能,即数据的接收和发送。首先,读取内部的寄存器 BNRY和 CURR,一个是指向最后一个已经读取的页的读指针,另一个指向当前正在写的页的下一页的指针,通过判断两个寄存器之间的关系可以判断是否有新的数据包,当CURRBNRY+1 时,说明有新的数据包,这时,程序就开始接收所收到且暂存于缓冲区中的数据。与接收相比,数据的发送过程相对简单,将待发送的数据,通过远程DMA通道送到 RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送。(2) 精简 TCP/IP协议栈的实现考虑到我们要在嵌入式系统中实现 TCP/IP协议栈,且主要是应用于远程监控等领域,其特点是数据流量较小,但可靠性要求
17、比较高。针对这样的需求,对 TCP/IP协议栈进行一定的裁减,只实现必要的一些协议即可。本设计中,精简的 TCP/IP协议栈主要实现了 6个基本协议的主要部分,包括 ETH、ARP、ICMP、IP、UDP 和TCP。其中,以太网协议(ETH)负责网络接口数据帧的收发以及向上层提供服务;ARP协议实现 IP地址和以太网物理地址之间的转换;ping 程序用来检测服务器是否可达;IP 协议、TCP 协议、UDP 协议负责为数据传输提供服务;TCP 协议和 UDP协议均为运输层协议,但是它们分别具有不同的特点,适用于不同的场合。所有程序用10C51语言编程实现,并采用 Keil公司的 Keil C51
18、编译器进行编译。下面给出精简的 TCP/IP协议栈的工作流程:总体初始化有无串口告警数据?有无网络数据包?ARP 包?本地 IP 包?是 TCP 包、UDP包、还是 ICMP 包?处理TCP 包发生处理UDP 包发生处理ICMP 包发生处理ARP 包发生TCP 发送还是 UDP 发送TCP 处理UDP 处理丢弃该包YYYYN网络发送NNN图 7 TCP/IP 的总体流程图此外,网络通信模块的主程序这里我们其为“守护程序”,顾名思义做的是“值班员”的工作。它的主要工作就是查询 RTL8019AS是否有数据到达;查询事件状态字是否有相应事件发生,如果有则转到相应的处理程序进行处理。主程序以事件触发方式为主要设计思路。下面给出网络通信模块总体的软件运行流程图: