毕业设计(论文)-基于TCPIP的机房多点告警传输与控制系统.doc
《毕业设计(论文)-基于TCPIP的机房多点告警传输与控制系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于TCPIP的机房多点告警传输与控制系统.doc(13页珍藏版)》请在冰点文库上搜索。
毕业设计
基于TCP/IP的机房多点告警传输与控制系统——告警数据的采集及网络传输的实现
学院通信工程学生姓名指导教师
摘要随着嵌入式系统的广泛应用,赋予嵌入式系统Internet网络接入功能已经成为一种需要,也是嵌入式应用领域的研究热点之一。
本课题用应用最广泛的MCS-51系列单片机作为嵌入式系统的核心,自行设计和开发了一套适合该类嵌入式系统的精简TCP/IP协议栈,实现了低成本嵌入式系统的Internet接入。
基于该系统,设计了一套完整、灵活、可扩展性强的机房监控设备。
该设备适用于各种无人机房的远程监控,实现了远程监控的网络化。
[关键词]单片机RTL8019AS精简TCP/IPC51
ABSTRACTWiththewidespreadapplicationoftheembeddedsystems,endowingtheembeddedsystemswithnetwork-accessfunctionhasbecomenecessaryandoneoftheresearchfocusofembeddedsystemapplicationfield.ThispaperdesignsatinyTCP/IPstackssuitableforembeddedsystemswiththewidelyusedMCS-51seriesMCUasitsCPU,whichmakesthelow-costembeddedsystemsaccessingtheInternetcometrue.Acompleteremote-supervisedevicehasbeendesignedusingthisembeddedsystem.Itisanintegrated,flexibleandwellexpandabledevicethatcanbeusedinvariousnon-personmachineroom,realizingthenetworkforremotesupervision.
Keyword:
MCURTL8019ASTinyTCP/IPC51
1、系统总体概述
系统分为硬件设计和软件编程两个部分。
其中,硬件部分包括三个功能模块:
数据采集模块、汇集器模块和网络通信模块。
三个模块各负其责但又协调统一,共同完成告警数据的采集、汇集及网络传输。
图1给出了总体结构示意图。
软件部分包括各功能模块的控制程序及精简TCP/IP协议栈的开发。
整套系统具有多路数据采集,多路数据汇集以及网络TCP、UDP传输的功能;并且成本低,局域网传输稳定可靠。
采集器1
采集器2
采集器8
……
数据汇集器
网络通信模块
Internet
图1总体结构图
监控中心
2、数据采集模块的设计
此模块的设计分为两个部分:
数据采集卡和母板控制器。
两者之间用DB37接口连接。
数据采集卡负责采集数据,母板控制器负责数据的处理和传输。
其中,数据采集卡前端使用光电偶合器,将设备的地信号和本系统的地信号分开,以免影响系统的稳定工作且起保护作用。
母板的设计采用了8个LS244芯片作缓冲器,使用单片机的P2口进行片选,通过轮询的方式采集数据,并由单片机处理,形成自定义串行通信协议的数据帧格式,然后将该数据帧以RS232通信方式发送给下一级汇集器模块。
为了此模块具有灵活性和通用性,在设计时加入了3位的拨码开关,连接到单片机的P0口,可以通过设定开关的不同状态来区分不同的设备以及使用采集卡的数量,方便用户。
硬件总体结构如下图所示:
…
…
数据线
控制线
片选
片选
片选
多路数据采集
缓存器0
缓存器1
缓存器7
AT89C52
串口通信
拨码开关
P0口
MAX232
图2数据采集模块总体硬件结构图
数据采集模块程序的编写,采用汇编语言,简单且运行效率高,程序的总体流程图如下:
开始
初始化
1分钟定时?
读取开关状态
比较数据
N
轮询采集卡
是否有变化?
刷新发送数据
计算校验和
形成数据帧
发送
Y
N
接受数据
根据不同数据做出相应动作
中断入口
中断返回
图3采集模块的软件总体流程图
3、汇集器模块的设计
多路汇集模块的主要功能是将多路(最多八路)串口过来的告警数据,汇集成一路数据,发送给网络通信模块;或是将网络通信模块过来的控制数据准确的分路给各个串口,实现双向通信。
自定义的通信协议,除了很好的识别各路告警数据外,还具有线路自检功能,监控中心可根据数据帧中内容,知道各模块之间的连接是否正常,各数据采集卡的工作状态是否正常等,大大增强了整个系统的可靠性。
硬件设计上采用了77E58单片机控制两片TL16C554四串口异步通信芯片来完成该模块数据汇集的功能。
总体结构及接口如下图:
TL16C554
串口1
串口2
串口3
串口4
控制总线
77E58
通信口
P0口
地址锁存器
74LS573
P2口
3-8译码器发
地址总线
数据总线
读/写
RD/WR
P3.5
复位
MAX
232
MAX
232
MAX
232
MAX
232
数据采集模块1
数据采集模块2
数据采集模块3
数据采集模块4
MAX
232
网络通模块
图4汇集器模块的硬件结构及接口
此处使用77E58单片机是因为其内部有1K的SRAM可以用来暂存各路的数据,从而就不必外挂RAM,简化了硬件结构。
控制程序的主要思路是采用寄存器查询方式进行数据收发,然后根据通信协议对数据进行相应处理,并配合定时器来达到线路的自检功能,流程图如下:
开始
77E58的初始化
各路串口的初始化
是否有数据?
接受并校验数据
处理数据
发送至网络通信模块
Y
N
无误
错误
复位定时器
定时中断
2分钟定时到?
发送失效信息
中断返回
N
Y
复位定时器
串口中断
发送中断?
发送下一数据?
发送完成?
接受数据
分析数据并分
路给指定串口
中断返回
N
Y
Y
N
图5汇集模块软件总体流程图
4、网络通信模块的设计
网络通信模块是本系统设计的重点也是难点所在。
主要功能是实现数据的网络传输。
主要包括对数据进行TCP/IP的打包或解包以及对网络控制器的控制与操作。
设计中,为了降低系统成本,采用的是8位微处理器AT89C55WD单片机和10M以太网络控制器RTL8019AS。
4.1硬件的设计
网络通信模块大致可以分为四个部分:
主CPU、存贮器(包括IS62C25632K的RAM和24C02I2C总线的EEPROM)、网络控制器RTL8019AS和串口通信部分。
各个部分在单片机AT89C55WD的协调控制下,各尽所能,共同完成网络通信的任务。
总体逻辑结构如图6所示。
地址锁存器
P0.0~P0.7
数据总线
P2.0~P2.6
地址总线
P2.7
片选
读/写
RD/WR
62256
AT89C55WD
RTL8019AS
P3.5
隔离变压器
数据总线
地址总线
复位
读/写
网络通信口
网络
接口
MAX232
通信串口
汇集器模块
网络
图6网络通信模块的硬件结构和接口
24C02
P1.6~P1.7
EEPROM
其中,设计的重点是网络控制器RTL8019AS的硬件设置和与单片机的接口设计。
RTL8019AS的硬件设置包括三个内容:
工作模式的设定、I/O基址与数据总线模式的设置以及网络接口的设置,这些硬件设置都是网络控制器正常工作的前提。
针对本课题所应用8位单片机为主CPU,对RTL8019AS进行相应的硬件设置。
方法如下:
工作模式设定为跳线方式,将管脚JP(第65脚)通过10K电阻上拉接VCC即可;I/O基址设定为300H,故需将引脚IOS3、IOS2、IOS1、IOS0悬空(RTL8019AS中,管脚悬空相当于接低电平,因为内部有下拉电阻);数据总线模式为8位模式,相应管脚第96脚IOCS16接低电平;网络接口设置为自检方式,将引脚PL0、PL1(第74、77脚)悬空即可。
AT89C55WD单片机对RTL8019AS进行读写和控制操作,是通过设计两者之间的接口实现的,这也是硬件设计的重点内容。
接口设计主要包括:
数据和地址总线、读写线和复位线的接口设计。
如总体结构图6所示,RT8019AS的读写线,连接到单片机对应的读写线(RD和WR);第33脚复位引脚RESDRV与单片机的P3.5相连,通过控制P3.5的输出来达到复位RT8019AS的目的。
根据前面的设置,RTL8019AS采用了8位的数据总线模式,故将起低8位数据总线接单片机的P0端口。
RTL8019AS共有20根地址线,为SA0~SA19,可寻址的输入输出地址共32个,地址偏移量为00H-1FH,根据前述设置,RTL8019AS的基址定为300H,所以寻址的地址为:
300H~31FH。
从地址对应表1中可以看出,地址线的SA19-SA5都是固定的值000000000011000,因此设计中将SA5-SA7和SA10-SA19都接地,而将SA0-SA4接到单片机P2端口的P2.0~P2.4,将SA8、SA9接P2口的P2.7。
表1地址对应表
引
脚
地
址
SA19~SA10
SA9
SA8
SA7
SA6
SA5
SA4
SA3
SA2
SA1
SA0
300H
0
1
1
0
0
0
0
0
0
0
0
…
0
1
1
0
0
0
X
X
X
X
X
31FH
0
1
1
0
0
0
1
1
1
1
1
上述设计表明,当单片机外部寻址0x8000时,即可寻址到以太网控制偏移量为0的基址0x300,这也是以太网控制器的命令寄存器的访问地址。
由此,完成了单片机与RTL8019AS的接口设计。
存储器部分可以分成两块:
一块是32K的外挂RAM62256,用于存放数帧、协议参数等信息,与单片机之间采用并行总线方式接口。
另一块是EEPROM24C02,用于上电复位时,初始化系统参数。
采用的IIC总线是一种串行模式,通过软件模拟实现的。
4.2软件的设计
网络通信模块的软件程序主要由下面几个部分组成:
网络控制器的驱动程序、精简的嵌入式TCP/IP协议栈、串口驱动、中断服务程序和IIC驱动以及应用函数。
其中设计的重点和难点是网络控制器RTL8019AS的驱动和精简的嵌入式TCP/IP协议栈的实现。
(1)RTL8019AS的驱动
RTL8019AS的驱动过程包括四个步骤,分别为复位操作、内部寄存器的初始化、接收数据包服务程序的设计和发送数据包服务程序的设计。
其中,复位操作是对RTL8019AS的复位引脚RSTDRV(此处连到了单片机的P3.5脚上),施加一个1us以上的高电平就可以复位;然后初始化内部寄存器,根据设计的工作方式,参照使用手册对其必要的寄存器进行配置,使RTL8019AS能按照所要求的工作。
接下来就是RTL8019AS的两个主要功能,即数据的接收和发送。
首先,读取内部的寄存器BNRY和CURR,一个是指向最后一个已经读取的页的读指针,另一个指向当前正在写的页的下一页的指针,通过判断两个寄存器之间的关系可以判断是否有新的数据包,当CURR≠BNRY+1时,说明有新的数据包,这时,程序就开始接收所收到且暂存于缓冲区中的数据。
与接收相比,数据的发送过程相对简单,将待发送的数据,通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送。
(2)精简TCP/IP协议栈的实现
考虑到我们要在嵌入式系统中实现TCP/IP协议栈,且主要是应用于远程监控等领域,其特点是数据流量较小,但可靠性要求比较高。
针对这样的需求,对TCP/IP协议栈进行一定的裁减,只实现必要的一些协议即可。
本设计中,精简的TCP/IP协议栈主要实现了6个基本协议的主要部分,包括ETH、ARP、ICMP、IP、UDP和TCP。
其中,以太网协议(ETH)负责网络接口数据帧的收发以及向上层提供服务;ARP协议实现IP地址和以太网物理地址之间的转换;ping程序用来检测服务器是否可达;IP协议、TCP协议、UDP协议负责为数据传输提供服务;TCP协议和UDP协议均为运输层协议,但是它们分别具有不同的特点,适用于不同的场合。
所有程序用C51语言编程实现,并采用Keil公司的KeilC51编译器进行编译。
下面给出精简的TCP/IP协议栈的工作流程:
总体初始化
有无串口告警数据?
有无网络数据包?
ARP包?
本地IP包?
是TCP包、UDP包、还是ICMP包?
处理TCP包发生
处理UDP包发生
处理ICMP包发生
处理ARP包发生
TCP发送还是UDP发送
TCP处理
UDP处理
丢弃该包
Y
Y
Y
Y
N
网络发送
N
N
N
图7TCP/IP的总体流程图
此外,网络通信模块的主程序——这里我们其为“守护程序”,顾名思义做的是“值班员”的工作。
它的主要工作就是查询RTL8019AS是否有数据到达;查询事件状态字是否有相应事件发生,如果有则转到相应的处理程序进行处理。
主程序以事件触发方式为主要设计思路。
下面给出网络通信模块总体的软件运行流程图:
开始
初始化
读取24C02配置参数
驱动8019
查询网络是否有数据包到达
重新配置8019
串口中断
接受数据?
发送数据?
Y
Y
N
N
接受并且分析数据
发送
中断返回
定时中断
ARP地址超时?
ARP重传超时?
TCP重传超时?
Y
Y
N
N
N
Y
中断返回
标记事件
标记事件
标记事件
告警数据?
配置数据?
标记发送事件
标记配置事件
Y
Y
N
N
接受数据事件?
ARP高速缓存事件?
ARP超时重传事件?
TCP超时重传事件?
N
Y
Y
Y
Y
N
N
N
发送数据事件?
8019重配置事件?
N
Y
Y
接受并处理
接受并处理
接受并处理
处理并发送
接受并处理
删超时地址
处理并发送
接受并处理
重传处理
重传处理
N
图8网络通信模块软件总体流程图
其中事件状态字定义如下:
#defineEVENT_ETH_ARRIVED0x01//有网络数据包到达
#defineEVENT_AGE_ARP_CACHE0x02//ARP高速缓存事件
#defineEVENT_ARP_RESEND0x04//ARP重传事件
#defineEVENT_TCP_RESEND0x08//TCP重传事件
#defineEVENT_DATA_SEND0x10//网络数据发送事件
#defineEVENT_CONFIG 0x20//RTL8019AS配置事件
5、结束语
本课题对局域网环境下TCP/IP的嵌入式应用进行了较为深入分析和研究,讨论了在这种特定条件下的系统整体的设计与实现方案,重点包括对以太网控制器RTL8019AS的配置和操作,链路层上以太网数据帧的收发以及精简TCP/IP协议栈的开发等,并最终完成了由低成本的51系列单片机构成了嵌入式系统的Internet接入,而且应用此设计的远程监控系统,经局域网实验测试,运行稳定,传输可靠,平均丢包率为1‰。
主要参考文献
[1]、胡汉才编著.单片机原理及其接口技术(第2版).北京:
清华大学出版社.2004
[2]、李朝青著.PC机及单片机数据通信技术.北京:
北京航空航天大学出版社.2000
[3]、W77E588-bitmicrocontroller.WINBONDELECTRONICSCORP.
[4]、TL16C554AsynchronousCommunicationsElement.TIINCORPORATE
[5]、RTL8019ASRealtekFull-DuplexEthernetControllerwithPlugandPlayFunction(RealPNP).REALTEKSEMI-CONDUCTORCO.LTD.
[6]、RTL8019AS如何接收一个数据包.
[7]、RTL8019AS如何读写网卡的RAM.
[8]、[日]井口信和著.TCP/IP网络工具篇.北京:
科学出版社.2003
[9]、[日]村山公保著.TCP/IP网络实验程序篇.北京:
科学出版社.2003
[10]、W.RichardStevens著,范建华等译.TCP/IP详解卷1:
协议.北京:
机械工业出版社.2000
[11]、GARYR.Wright著,陆雪莹蒋慧等译.TCP/IP详解卷2:
实现.北京:
机械工业出版社.2000
[12]、赵亮,侯国锐编著.单片机C语言编程与实例.北京:
人民邮电出版社.2004
[13]、徐爱钧,彭秀华著.KeilCx51V7.0单片机高级语言编程与μVision2应用实践.北京:
电子工业出版社.2004
13