毕业设计-光纤网络光信号实时监测系统项目报告.doc

上传人:来看看 文档编号:3317240 上传时间:2019-08-11 格式:DOC 页数:31 大小:1.05MB
返回 下载 相关 举报
毕业设计-光纤网络光信号实时监测系统项目报告.doc_第1页
第1页 / 共31页
毕业设计-光纤网络光信号实时监测系统项目报告.doc_第2页
第2页 / 共31页
毕业设计-光纤网络光信号实时监测系统项目报告.doc_第3页
第3页 / 共31页
毕业设计-光纤网络光信号实时监测系统项目报告.doc_第4页
第4页 / 共31页
毕业设计-光纤网络光信号实时监测系统项目报告.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《毕业设计-光纤网络光信号实时监测系统项目报告.doc》由会员分享,可在线阅读,更多相关《毕业设计-光纤网络光信号实时监测系统项目报告.doc(31页珍藏版)》请在三一文库上搜索。

1、郑州大学毕业设计(项目报告) 题 目: 光纤网络光信号实时监测系统 指导教师: 李翠霞 职称: 副教授 学生姓名: 李文豪 学号: 20107760224 专 业: 计算机科学与技术(软件开发 JAVA) 院(系): 软件学院 完成时间: 2013-12-9 2013 年 12 月 9 日 目目 录录 第第 1 1 章章 项目概述项目概述.1 1.11.1 项目背景项目背景.1 1.21.2 项目来源项目来源.1 1.31.3 光时域反射测距设计依据光时域反射测距设计依据.1 1.41.4 光网络实时信号监测模块设计目标光网络实时信号监测模块设计目标.2 第第 2 2 章章 项目设计项目设计.

2、4 2.12.1 项目总体设计项目总体设计.4 2.22.2 研究思路与技术路线研究思路与技术路线.4 2.32.3 模块选型与设计模块选型与设计 .5 2.3.1 AQ7275 OTDR模块介绍模块介绍5 2.3.2 GSM模块设计模块设计.6 2.3.3 GPS模块设计模块设计7 2.3.4 下位机管理模块设计下位机管理模块设计7 2.3.5 实时监测上位机模块设计实时监测上位机模块设计7 2.3.6 电源模块设计电源模块设计8 2.3.7 软件设计软件设计8 第第 3 3 章章 项目实现项目实现.8 3.13.1 数据库连接模块数据库连接模块.9 3.23.2 W WEBEB浏览器端模块

3、浏览器端模块.11 3.33.3 J JAVAAVA客户端模块客户端模块.13 3.3.1 程序启动重连程序启动重连14 3.3.2 保存文件保存文件14 3.3.3 读取配置文件读取配置文件17 3.3.4 Java与下位机与下位机Socket通信通信.18 3.3.5 从从OTDR设备采集数据设备采集数据.22 3.3.6 事件是否发生变化算法事件是否发生变化算法24 3.3.7 发送发送HTTP POST.25 第第 4 4 章章 项目总结项目总结.26 4.14.1 项目技术总结项目技术总结.26 4.1.1 前台页面技术前台页面技术26 4.1.2 服务器和桌面客户端技术服务器和桌面

4、客户端技术26 4.34.3 个人收获与体会个人收获与体会.28 4.44.4 参考资料参考资料.29 1 第第 1 1 章章 项目概述项目概述 1.11.1 项目背景项目背景 近年来,多个路局报告了进入维护期的二型车光纤网络线路故障的事件。 以西安路局为例,就该问题做了故障统计,统计结果如下: 序 号 动车组列号发生次数 1CRH2036A4 2CRH2092C20 3CRH2093C17 4CRH2094C3 5CRH2096C8 6CRH2149C 2013 年 6 月 当动车组发生恒速打闪问题以后,伴随部分动车失流,如果长时间不能自复位,则 列车速度将会下降,司机需要重新提手柄加速并恒

5、速。因光纤隐蔽走线,且在地面测试 光纤状态性能均良好,故障仅在运行期出现,因此不能锁定光纤精确故障位置。当前采 取高级修时整体更换被怀疑车厢的车底光缆、连接器电钩光纤模块的办法,更换过程中 需要拆除 LJB 箱、车钩、辅助空压机、空调等各种设备,且无法进行责任判定。 1.21.2 项目来源项目来源 该项目来自网新智能技术有限公司的真实项目,该项目用于解决多个路局的光信号 故障问题。 1.31.3 光时域反射测距设计依据光时域反射测距设计依据 光时域反射测距通过使用瑞利散射和菲涅尔反射来表征光纤的特性。 瑞利散射是由于光信号沿着光纤产生无规律的散射而形成,通过测量回到光时域反 2 射设备端口的散

6、射光,可表明因光纤引起的衰减(损耗/距离)程度。若测试形成的轨迹 是一条向下的曲线,它说明了背向散射的功率不断减小(这是由于经过一段距离的传输 后发射和背向散射的信号都有所损耗) 。在波长已知情况下,瑞利散射功率与信号的脉冲 宽度成比例:脉冲宽度越长,背向散射功率就越强。瑞利散射的功率还与发射信号的波 长有关,波长较短则功率较强。如图所示: 图 1-3-1 瑞利散射 菲涅尔反射是离散的反射,它是由整条光纤中的个别点而引起的,这些点是由造成 反向系数改变的因素组成,例如玻璃与空气的间隙。在这些点上,会有很强的背向散射 光被反射回来。光时域反射测试模块就是利用菲涅尔反射的信息来定位连接点,光纤终

7、端或断点。如下图分别表示了机械熔接、法兰盘、连接器断开造成的菲涅尔反射: 图 1-3-2 机械熔接(1) 、法兰盘(2)和连接器(3)断开造成的菲涅尔反射 1.41.4 光网络实时信号监测模块设计目标光网络实时信号监测模块设计目标 1) 性能指标 3 中心波长:13l0nm20nm 事件盲区:1.00m 动态范围:35 / 33dB 衰减读出分辨率:0.01dB 群折射率设置范围:1.40001.6000 光纤连接器:FC 单系统功耗: 30W 测距精度:光信号动态监测精度: 1.00m。 2) 系统功能 下位机设备实现光信号的获取、解析、故障判定及故障信息上报,实时监测上位机 完成波形分析、

8、光信号统计信息的获取及在线故障判定。列车实时运行中,一旦发 现光信号的故障,即可实时获取环境信息,并将故障信息传输给上位机,由上位机 分析后通过发送器发送给地面 GSM 接收机。 故障通告内容应包括:光纤长度,事件故障点在光纤长度上所处的位置,光纤串联 中可能的故障器件,发生故障时列车行所处的经度和纬度及故障发生时间(需在上 位机中预植列车图形化运行线路) 。 所有故障信息通报信息在上位机保存。故障信息保存容量大于 1000 条,断电后信息 不丢失。地面终端可查取保存完毕的故障信息。 4 第第 2 2 章章 项目设计项目设计 2.12.1 项目总体设计项目总体设计 光网络实时信号监测系统包含

9、OTDR 模块、GSM 模块、GPS 模块、下位机管理模块、 实时监测上位机模块及电源模块六大功能模块。设计方案如下图所示。 图 2-1 光网络实时信号监测系统设计方案 其中: (1) OTDR 模块:负责定位光路故障点,分析故障类型及故障产生的具体位置; (2) GSM 模块:负责将故障信息发送至地面接收端,并传递地面接收端的查询信息; (3) GPS 模块:负责故障时获取列车运行地理位置信息; (4) 下位机管理模块:负责总体接受和处理来自 OTDR、GPS、GSM 模块数据,并保证各 模块的协同工作,对外输出计算统计结果; (5) 实时监测上位机模块: 完成波形分析、光信号统计信息的获取

10、及在线故障判定; (6) 电源模块:独立供电,系统功耗 8 b1 = (byte) (n 16 b0 = (byte) (n 24 return b; /* * byte convert int * param b * return */ public static int bytes2Int(byte b) return b3 20 int len = b.length; byte dest = new bytelen; System.arraycopy(b, 0, dest, 0, len); byte temp; for (int i = 0; i = 8; return byteArr

11、ay; /* * int convert 1 byte * param num * return */ public static byte int2OneByte(int num) return (byte) (num /* * int convert byte(length = 2) * param num * return */ public static byte int2TwoBytes(int num) byte b = new byte2; b1 = (byte) (num b0 = (byte) (num 8 return b; /* * short convert byte

12、* param b * return 22 */ public static short bytes2Short(byte b) return (short)(b1 /解析数据 String arr = null; try 23 arr = msg.split(“n“); catch(NullPointerException e) log.error(“otdr设备工作不正常“); return list; /从第20行开始解析数据 boolean flag = false; /标志是否是最后一个故障点 try for(int i = 20; i = 3) /故障距离(单位:米) float

13、distance = Float.parseFloat(msgContent1)*1000; event.setDistance(formatFloat2(distance); /损耗 没耗损为0.0(单位:db) if(isNotNull(msgContent2) float loss = Float.parseFloat(msgContent2); event.setLoss(formatFloat2(loss); else event.setLoss(0.0f); /默认衰减 list.add(event); catch(Exception e) /System.out.println(

14、msg); log.error(“解析事件时发生错误!“); 24 /e.printStackTrace(); return list; 3.3.63.3.6 事件是否发生变化算法事件是否发生变化算法 上位机软件(Java 开发)从下位机获取经纬度,从 OTDR 设备获取事件(故障点集 合) 。完成事件的分析,如果事件发生变化(对比上次事件) ,则上位机软件(Java 开发) 负责向下位机发送最新事件信息;否则,不发送。下位机负责向 GSM 终端(Android 客 户端)发送短信。 关键代码如下:关键代码如下: package .insigma.utils; import java.util

15、.List; import .insigma.pojo.Event; /* * 对比事件点 * author Jingxuan * */ public class ContrastList /对比故障列表,看故障点是否发生变化 public static int CompareEvent(List currentEventList, List lastEventList) int flag = 0; /0 没发生变化 1 变化 if(lastEventList.size() = 0 else if(currentEventList.size() = 0 else if(currentEvent

16、List.size() != lastEventList.size() /故障点个数发生变化 flag = 1; else if(currentEventList.size() = currentEventList.size() /故障点个数没发生变化 /分析故障点 for(int i = 0; i = 1) return 1; return 0; 3.3.73.3.7 发送发送 HTTPHTTP POSTPOST 如果上位机软件(Java 开发)检测到事件发生变化,开始向下位机发送最新事件信息的 同时也向 Web 服务器发送 HTTP POST 请求(包含最新事件信息) 。上位机软件采用 A

17、pache 组织的开源工具 HTTPCLIENT 发送 HTTP POST 请求。 关键代码入图关键代码入图 3-3-7 所示:所示: 26 图 3-3-7 发送 HTTP POST 请求 第第 4 4 章章 项目总结项目总结 4.14.1 项目技术总结项目技术总结 4.1.14.1.1 前台页面技术前台页面技术 前台使用百度地图 API(Javascript 版本) 、jquery、CSS 等技术或工具。在 js 脚本 中使用 jquery 的 ajax 函数定时向服务器发送请求,请求事件列表,服务器接收到请求 之后,查询 sqlite 数据库中的 event 表(存放事件信息) 。浏览器和

18、服务器的数据交互 格式为 gson,js 脚本拿到服务器返回的 gson 格式的事件信息后,开始解析数据,从而 更新浏览器界面。 本次开发过程中,大量使用百度地图的 API,开发项目之前大致了解百度地图 API 类 的使用。页面布局使用 CSS+DIV,按钮、字体和窗体样式等也都使用了 CSS 技术。使用 jquery 这个开源的 js 框架,减少开发成本、提高开发效率、降低 js 代码的复杂度和减 少 js 脚本的书写量。Ajax 技术可以动态无刷新更新界面,提高用户体验,给用户视觉 上的享受,而且还能减少服务器端压力,降低服务器流量的浪费,从而减少开发成本。 4.1.24.1.2 服务器和

19、桌面客户端技术服务器和桌面客户端技术 (1)Servlet: servlet 是在服务器上运行的小程序。这个词是在 Java applet 的环境中创造的, Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运 27 行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一 些程序,常常是根据用户输入访问数据库的程序。这些通常是使用 CGI(Common Gateway Interface)应用程序完成的。然而,在服务器上运行 Java,这种程序可使 用 Java 编程语言实现。在通信量大的服务器上,Java servlet 的优点在于它们的

20、执 行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创 建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。 (2)JNI: JNI 是 Java Native Interface 的缩写,中文为 JAVA 本地调用。从 Java1.1 开始, Java Native Interface(JNI)标准成为 java 平台的一部分,它允许 Java 代码和其 他语言写的代码进行交互。JNI 一开始是为了本地已编译语言,尤其是 C 和 C+而设 计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 (3)SQLite: SQLite,是一款轻型的数据

21、库,是遵守 ACID 的关联式数据库管理系统,它的设计目 标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低, 在嵌入式设备中,可能只需要几百 K 的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 这两款开源 世界著名的数据库管理系统来讲,它的处理速度比他们都快。 (4)HttpComponents: HTTP 协议(超文本传输协议)也许是当前互联网领域最重要的协议。Web 服务(Web Service

22、s) 、基于网络的应用和网络计算的增长对 HTTP 协议角色的扩展作用远胜于 用户驱动的 Web 浏览器(译者按:HTTP 协议的最初目的可能正是为浏览器提供良好 的支持) ,同时不断增长的更多应用也需要 HTTP 协议的支持。基于对 HTTP 协议良好 的支持和扩展的设计,HttpComponents 也许会被正在构建 HTTP 客户端或者服务器端 应用的人所感兴趣:比如 WEB 浏览器、网页蜘蛛(爬虫) 、HTTP 代理、WEB 服务库、 或是基于调整或扩展 HTTP 协议的分布式通信系统。 (5)Commons-logging: Commons Logging (JCL)提供的是一个 J

23、ava 的日志接口,同时兼顾轻量级和不依赖 于具体的日志实现工具。 它提供给中间件/日志工具开发者一个简单的日志操作抽 象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志 实现工具的更高级别的细 节。JCL 提供的接口,对其它一些日志工具,包括 Log4J, Avalon LogKit, and JDK 1.4 等,进行了简单的包装,此接口更接近于 Log4J 和 LogKit 的实现。 28 4.24.2 技术创新及特点技术创新及特点 (1) jQuery 极大的方便了程序员对 js 脚本的开发,缩短开发时间、提高开发效率、 也提高了用户体验。 (2) 使用百度地图 A

24、PI(javascript 版本) ,熟悉了百度地图 API 的使用,在一次开 发的基础上,方便开发者进行二次开发,节约开发成本,提高开发效率。 (3) AJAX 使得 Web 页面可以局部刷新,大量减少数据交互产生的流量、节约服务器 宽带、缓解服务器压力、界面上提高用户体验。 (4) JNI 的使用使得 Java 可以调用 C/C+。Java 在处理硬件方面,性能和效率远远 不如 C/C+,当我们的项目在高层次上必须使用 Java,而底层必须使用 C/C+时, 我们可以采用 JNI 技术,使用 java 代码调用由 C/C+生成的 DLL 文件,从而可 以提高性能和效率上的硬性要求。 (5)

25、 项目中使用了日志管理功能,使用日志管理方便后期维护和故障排查。 (6) 项目中使用了 Java 桌面应用程序直接向 Web 服务器发送 HTTP POST 请求的技术, 使得桌面应用程序直接可以安全的与 Web 服务器交互。 (7) 项目中大量使用封装和设计模式等思想,避免重复造车轮子,重用代码,提高开 发效率,较少开发周期。 4.34.3 个人收获与体会个人收获与体会 不知不觉,时间如白驹过隙匆匆在指尖溜走。看着满地的泛黄的落叶,不禁感叹时 间沧桑与无奈。 在浙大网新实训的四个月中,有同学的陪伴,有老师的照顾。一路走来,也不觉得 多么累。在实训过程中也学到不少知识,在学校的大部分都是理论性

26、知识,真正用于项 目实战的并不多。在实训过程中,巩固了理论基础,把从书本上学到的理论性知识用实 战来巩固、消化,从而提高理解能力和感悟力。实训中,老师也讲授了不少的书写代码 的技巧,对于我们提高开发效率无疑是有很大帮助的。IDE 工具的使用技巧提高我们的 开发效率,IDE 的帮助减少代码书写的错误,IDE 工具的使用更能自动生成关键代码, 减少开发时间、缩短开发周期、节约开发成本。 本项目是我在网新智能技术有限公司实习的时候参加的项目,该项目为真实的项目 的,用来解决实际工业中的问题。在拿到项目的需求分析文档后,我明白了自己的任务。 我的主要任务是实时监测上位机软件模块的开发,该模块又可以主要

27、分两个模块:Web 和桌面客户端,要求开发语言必须是 Java。首页,我面临的第一个问题是:Java 调用 C+的 DLL 文件。公司的有经验的前辈告诉我要使用 JNI,花了一个下午的时间,我明 白了 Java 使用 JNI 调用 DLL 的过程。在开发 Web 界面时,我遇到的第一个问题是: GPS 坐标和百度的经纬度坐标怎么转化?查阅了一些资料,最后发现,百度地图 API 本 身提供的有 GPS、谷歌坐标与百度地图坐标之间的转化工具类。第二个问题是:如何服 务器端向浏览器端推送数据?在刚遇到这个问题时,我脑袋一片空白,不知道如何处理。 但是,老师常说:“内事找百度,外事找谷歌“。首页,我找

28、了百度,然后就发现了问 题的解决方案,使用 pushlet 这个开源的框架。但是,当我真正使用 pushlet 的时候,有 些问题更难解决了。搞了两天,我找到了另外的解决方案-定时发送 Ajax 请求,后来才 发现定时发送 ajax 请求完全可以解决此问题。 当我在 Web 服务器端使用 sqlite 文本文件 数据库的时候,遇到了项目中最经典的一个难题-调用 DLL 文件。Sqlite 为嵌入式数据 库,如果想使用它,必须加载 DLL 文件。但是,使用类似普通 java 项目加载 DLL 文件 的方法不能解决问题,sqlite 数据库仍然无法使用。最后发现,在普通 java 项目中的 PAT

29、H 和 web 项目中的 PATH 是不同的,web 项目中 PATH 包含两部分:jre 中的 PATH 29 和 TOMCAT 的 PATH。除此之外,DLL 文件放置的位置和普通 java 项目也有很大的不 同-除了类加载路径存放一份 DLL,启动 TOMCAT 的目录也必须存放一份 DLL。 本次项目中遇到很多问题,上面叙述的是一些经典问题。遇到问题是可喜的,因为 这代表要解决这些问题,解决这些问题之后,我的解决问题的能力又得到了锻炼。本次 项目的完成,我要感谢我在实习公司的指导老师-陈小波与一些帮助我的师兄和前辈们。 陈小波老师,在 C+方面帮助我很多,在解决 JNI 上离不开小波老

30、师的帮助。在硬件方 面,我不是很懂,幸得公司的前辈们指点,教授了我一些设备的使用和知识。在开发过 程中,硬件方面问题迎刃而解。最后,要感谢的是我大学的辅导员文佳老师和毕业设 计指导老师李翠霞老师。在文佳老师的辛苦教育和帮助下,我将要度过四年的大学的 生活,在大学的成长离不开文佳老师。李翠霞老师在毕业设计上给予我很大帮助,通过 项目的审核和毕业设计的要求,我更加明白了项目需求分析和文档的重要性。 四年的大学生活将要画上一个完美的句号,感谢那些曾经帮助过我和鼓励过我的朋 友们,是你们的关怀,让我这颗小树苗更加茁壮成长,让我在面对风雨时,更能昂首挺 胸。 4.44.4 参考资料参考资料 1. HttpComponents: http:/ 0emUnyoo4f_tQdUsW7pJ4dRCaAJ5n347uNQQ2u8_q http:/hc.apache.org/ 2. servlet http:/ 3. SQLite http:/ 4. commons-logging http:/commons.apache.org/proper/commons-logging/ 5.Java 设计模式清华大学出版社 耿祥义 张跃平著

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1