已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
郑州大学毕业设计(项目报告) 题 目: 光纤网络光信号实时监测系统 指导教师: 李翠霞 职称: 副教授 学生姓名: 李文豪 学号: 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 章章 项目设计项目设计.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浏览器端模块浏览器端模块.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 服务器和桌面客户端技术服务器和桌面客户端技术26 4.34.3 个人收获与体会个人收获与体会.28 4.44.4 参考资料参考资料.29 1 第第 1 1 章章 项目概述项目概述 1.11.1 项目背景项目背景 近年来,多个路局报告了进入维护期的二型车光纤网络线路故障的事件。 以西安路局为例,就该问题做了故障统计,统计结果如下: 序 号 动车组列号发生次数 1crh2036a4 2crh2092c20 3crh2093c17 4crh2094c3 5crh2096c8 6crh2149c 2013 年 6 月 当动车组发生恒速打闪问题以后,伴随部分动车失流,如果长时间不能自复位,则 列车速度将会下降,司机需要重新提手柄加速并恒速。因光纤隐蔽走线,且在地面测试 光纤状态性能均良好,故障仅在运行期出现,因此不能锁定光纤精确故障位置。当前采 取高级修时整体更换被怀疑车厢的车底光缆、连接器电钩光纤模块的办法,更换过程中 需要拆除 ljb 箱、车钩、辅助空压机、空调等各种设备,且无法进行责任判定。 1.21.2 项目来源项目来源 该项目来自网新智能技术有限公司的真实项目,该项目用于解决多个路局的光信号 故障问题。 1.31.3 光时域反射测距设计依据光时域反射测距设计依据 光时域反射测距通过使用瑞利散射和菲涅尔反射来表征光纤的特性。 瑞利散射是由于光信号沿着光纤产生无规律的散射而形成,通过测量回到光时域反 2 射设备端口的散射光,可表明因光纤引起的衰减(损耗/距离)程度。若测试形成的轨迹 是一条向下的曲线,它说明了背向散射的功率不断减小(这是由于经过一段距离的传输 后发射和背向散射的信号都有所损耗) 。在波长已知情况下,瑞利散射功率与信号的脉冲 宽度成比例:脉冲宽度越长,背向散射功率就越强。瑞利散射的功率还与发射信号的波 长有关,波长较短则功率较强。如图所示: 图 1-3-1 瑞利散射 菲涅尔反射是离散的反射,它是由整条光纤中的个别点而引起的,这些点是由造成 反向系数改变的因素组成,例如玻璃与空气的间隙。在这些点上,会有很强的背向散射 光被反射回来。光时域反射测试模块就是利用菲涅尔反射的信息来定位连接点,光纤终 端或断点。如下图分别表示了机械熔接、法兰盘、连接器断开造成的菲涅尔反射: 图 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) 系统功能 下位机设备实现光信号的获取、解析、故障判定及故障信息上报,实时监测上位机 完成波形分析、光信号统计信息的获取及在线故障判定。列车实时运行中,一旦发 现光信号的故障,即可实时获取环境信息,并将故障信息传输给上位机,由上位机 分析后通过发送器发送给地面 gsm 接收机。 故障通告内容应包括:光纤长度,事件故障点在光纤长度上所处的位置,光纤串联 中可能的故障器件,发生故障时列车行所处的经度和纬度及故障发生时间(需在上 位机中预植列车图形化运行线路) 。 所有故障信息通报信息在上位机保存。故障信息保存容量大于 1000 条,断电后信息 不丢失。地面终端可查取保存完毕的故障信息。 4 第第 2 2 章章 项目设计项目设计 2.12.1 项目总体设计项目总体设计 光网络实时信号监测系统包含 otdr 模块、gsm 模块、gps 模块、下位机管理模块、 实时监测上位机模块及电源模块六大功能模块。设计方案如下图所示。 图 2-1 光网络实时信号监测系统设计方案 其中: (1) otdr 模块:负责定位光路故障点,分析故障类型及故障产生的具体位置; (2) gsm 模块:负责将故障信息发送至地面接收端,并传递地面接收端的查询信息; (3) gps 模块:负责故障时获取列车运行地理位置信息; (4) 下位机管理模块:负责总体接受和处理来自 otdr、gps、gsm 模块数据,并保证各 模块的协同工作,对外输出计算统计结果; (5) 实时监测上位机模块: 完成波形分析、光信号统计信息的获取及在线故障判定; (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 bytearray; /* * 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 * 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 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(msg); log.error(“解析事件时发生错误!“); 24 /e.printstacktrace(); return list; .6 事件是否发生变化算法事件是否发生变化算法 上位机软件(java 开发)从下位机获取经纬度,从 otdr 设备获取事件(故障点集 合) 。完成事件的分析,如果事件发生变化(对比上次事件) ,则上位机软件(java 开发) 负责向下位机发送最新事件信息;否则,不发送。下位机负责向 gsm 终端(android 客 户端)发送短信。 关键代码如下:关键代码如下: package .insigma.utils; import java.util.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(currenteventlist.size() != lasteventlist.size() /故障点个数发生变化 flag = 1; else if(currenteventlist.size() = currenteventlist.size() /故障点个数没发生变化 /分析故障点 for(int i = 0; i = 1) return 1; return 0; .7 发送发送 httphttp postpost 如果上位机软件(java 开发)检测到事件发生变化,开始向下位机发送最新事件信息的 同时也向 web 服务器发送 http post 请求(包含最新事件信息) 。上位机软件采用 apache 组织的开源工具 httpclient 发送 http post 请求。 关键代码入图关键代码入图 3-3-7 所示:所示: 26 图 3-3-7 发送 http post 请求 第第 4 4 章章 项目总结项目总结 4.14.1 项目技术总结项目技术总结 .1 前台页面技术前台页面技术 前台使用百度地图 api(javascript 版本) 、jquery、css 等技术或工具。在 js 脚本 中使用 jquery 的 ajax 函数定时向服务器发送请求,请求事件列表,服务器接收到请求 之后,查询 sqlite 数据库中的 event 表(存放事件信息) 。浏览器和服务器的数据交互 格式为 gson,js 脚本拿到服务器返回的 gson 格式的事件信息后,开始解析数据,从而 更新浏览器界面。 本次开发过程中,大量使用百度地图的 api,开发项目之前大致了解百度地图 api 类 的使用。页面布局使用 css+div,按钮、字体和窗体样式等也都使用了 css 技术。使用 jquery 这个开源的 js 框架,减少开发成本、提高开发效率、降低 js 代码的复杂度和减 少 js 脚本的书写量。ajax 技术可以动态无刷新更新界面,提高用户体验,给用户视觉 上的享受,而且还能减少服务器端压力,降低服务器流量的浪费,从而减少开发成本。 .2 服务器和桌面客户端技术服务器和桌面客户端技术 (1)servlet: servlet 是在服务器上运行的小程序。这个词是在 java applet 的环境中创造的, java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运 27 行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一 些程序,常常是根据用户输入访问数据库的程序。这些通常是使用 cgi(common gateway interface)应用程序完成的。然而,在服务器上运行 java,这种程序可使 用 java 编程语言实现。在通信量大的服务器上,java servlet 的优点在于它们的执 行速度更快于 cgi 程序。各个用户请求被激活成单个程序中的一个线程,而无需创 建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。 (2)jni: jni 是 java native interface 的缩写,中文为 java 本地调用。从 java1.1 开始, java native interface(jni)标准成为 java 平台的一部分,它允许 java 代码和其 他语言写的代码进行交互。jni 一开始是为了本地已编译语言,尤其是 c 和 c+而设 计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。 (3)sqlite: sqlite,是一款轻型的数据库,是遵守 acid 的关联式数据库管理系统,它的设计目 标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低, 在嵌入式设备中,可能只需要几百 k 的内存就够了。它能够支持 windows/linux/unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 tcl、c#、php、java 等,还有 odbc 接口,同样比起 mysql、postgresql 这两款开源 世界著名的数据库管理系统来讲,它的处理速度比他们都快。 (4)httpcomponents: http 协议(超文本传输协议)也许是当前互联网领域最重要的协议。web 服务(web services) 、基于网络的应用和网络计算的增长对 http 协议角色的扩展作用远胜于 用户驱动的 web 浏览器(译者按:http 协议的最初目的可能正是为浏览器提供良好 的支持) ,同时不断增长的更多应用也需要 http 协议的支持。基于对 http 协议良好 的支持和扩展的设计,httpcomponents 也许会被正在构建 http 客户端或者服务器端 应用的人所感兴趣:比如 web 浏览器、网页蜘蛛(爬虫) 、http 代理、web 服务库、 或是基于调整或扩展 http 协议的分布式通信系统。 (5)commons-logging: commons logging (jcl)提供的是一个 java 的日志接口,同时兼顾轻量级和不依赖 于具体的日志实现工具。 它提供给中间件/日志工具开发者一个简单的日志操作抽 象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志 实现工具的更高级别的细 节。jcl 提供的接口,对其它一些日志工具,包括 log4j, avalon logkit, and jdk 1.4 等,进行了简单的包装,此接口更接近于 log4j 和 logkit 的实现。 28 4.24.2 技术创新及特点技术创新及特点 (1) jquery 极大的方便了程序员对 js 脚本的开发,缩短开发时间、提高开发效率、 也提高了用户体验。 (2) 使用百度地图 api(javascript 版本) ,熟悉了百度地图 api 的使用,在一次开 发的基础上,方便开发者进行二次开发,节约开发成本,提高开发效率。 (3) ajax 使得 web 页面可以局部刷新,大量减少数据交互产生的流量、节约服务器 宽带、缓解服务器压力、界面上提高用户体验。 (4) jni 的使用使得 java 可以调用 c/c+。java 在处理硬件方面,性能和效率远远 不如 c/c+,当我们的项目在高层次上必须使用 java,而底层必须使用 c/c+时, 我们可以采用 jni 技术,使用 java 代码调用由 c/c+生成的 dll 文件,从而可 以提高性能和效率上的硬性要求。 (5) 项目中使用了日志管理功能,使用日志管理方便后期维护和故障排查。 (6) 项目中使用了 java 桌面应用程序直接向 web 服务器发送 http post 请求的技术, 使得桌面应用程序直接可以安全的与 web 服务器交互。 (7) 项目中大量使用封装和设计模式等思想,避免重复造车轮子,重用代码,提高开 发效率,较少开发周期。 4.34.3 个人收获与体会个人收获与体会 不知不觉,时间如白驹过隙匆匆在指尖溜走。看着满地的泛黄的落叶,不禁感叹时 间沧桑与无奈。 在浙大网新实训的四个月中,有同学的陪伴,有老师的照顾。一路走来,也不觉得 多么累。在实训过程中也学到不少知识,在学校的大部分都是理论性知识,真正用于项 目实战的并不多。在实训过程中,巩固了理论基础,把从书本上学到的理论性知识用实 战来巩固、消化,从而提高理解能力和感悟力。实训中,老师也讲授了不少的书写代码 的技巧,对于我们提高开发效率无疑是有很大帮助的。ide 工具的使用技巧提高我们的 开发效率,ide 的帮助减少代码书写的错误,ide 工具的使用更能自动生成关键代码, 减少开发时间、缩短开发周期、节约开发成本。 本项目是我在网新智能技术有限公司实习的时候参加的项目,该项目为真实的项目 的,用来解决实际工业中的问题。在拿到项目的需求分析文档后,我明白了自己的任务。 我的主要任务是实时监测上位机软件模块的开发,该模块又可以主要分两个模块:web 和桌面客户端,要求开发语言必须是 java。首页,我面临的第一个问题是:java 调用 c+的 dll 文件。公司的有经验的前辈告诉我要使用 jni,花了一个下午的时间,我明 白了 java 使用 jni 调用 dll 的过程。在开发 web 界面时,我遇到的第一个问题是: gps 坐标和百度的经纬度坐标怎么转化?查阅了一些资料,最后发现,百度地图 api 本 身提供的有 gps、谷歌坐标与百度地图坐标之间的转化工具类。第二个问题是:如何服 务器端向浏览器端推送数据?在刚遇到这个问题时,我脑袋一片空白,不知道如何处理。 但是,老师常说:“内事找百度,外事找谷歌“。首页,我找了百度,然后就发现了问 题的解决方案,使用 pushlet 这个开源的框架。但是,当我真正使用 pushlet 的时候,有 些问题更难解决了。搞了两天,我找到了另外的解决方案-定时发送 ajax 请求,后来才 发现定时发送 ajax 请求完全可以解决此问题。 当我在 web 服务器端使用 sqlite 文本文件 数据库的时候,遇到了项目中最经典的一个难题-调用 dll 文件。sqlite 为嵌入式数据 库,如果想使用它,必须加载 dll 文件。但是,使用类似普通 java 项目加载 dll 文件 的方法不能解决问题,sqlite 数据库仍然无法使用。最后发现,在普通 java 项目中的 path 和 web
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 岩棉板外墙保温防火隔离带设置方案
- 危化品仓库泄漏堵漏应急演练方案
- 2026年村镇(社区)后备干部考试参考试题及答案
- 粉体输送设备操作工安全操作规程
- 2027届包头市重点中学八年级数学第一学期期末经典试题含解析
- 2026年保密在线知识试题及答案
- OC岗位专业考试题(含详细答案解析)
- 呼吸康复评估专家共识(2025版)
- 支撑檩条安装施工工规程
- NYU留学生 阿里前端校招面试真题(含详细解析)
- DB4201∕T 693-2024 建筑与市政工程软弱地基基础技术规程
- 物流司机制度管理制度
- T/CECS 10350-2023除臭收集用轻质高强度玻璃钢盖
- 江苏省2025年中职职教高考文化统考数学试题
- 广东市政工程施工安全管理资料统一用表 上册
- 2024年人教版六年级语文上册《第4单元语文园地四》教学课件
- 战略合作协议范本
- SH∕T 3097-2017 石油化工静电接地设计规范
- 回迁房屋买卖服务合同范本
- DB 3406T 022-2024市政道路建筑垃圾填筑 路基施工技术规范
- 急诊科护理典型案例分析
评论
0/150
提交评论