光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx

上传人:b****6 文档编号:22051518 上传时间:2023-02-02 格式:DOCX 页数:31 大小:832.77KB
下载 相关 举报
光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx_第1页
第1页 / 共31页
光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx_第2页
第2页 / 共31页
光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx_第3页
第3页 / 共31页
光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx_第4页
第4页 / 共31页
光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx

《光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。

光纤网络光信号实时监测系统项目报告Word文档下载推荐.docx

1.2项目来源

该项目来自网新智能技术有限公司的真实项目,该项目用于解决多个路局的光信号故障问题。

1.3光时域反射测距设计依据

光时域反射测距通过使用瑞利散射和菲涅尔反射来表征光纤的特性。

瑞利散射是由于光信号沿着光纤产生无规律的散射而形成,通过测量回到光时域反射设备端口的散射光,可表明因光纤引起的衰减(损耗/距离)程度。

若测试形成的轨迹是一条向下的曲线,它说明了背向散射的功率不断减小(这是由于经过一段距离的传输后发射和背向散射的信号都有所损耗)。

在波长已知情况下,瑞利散射功率与信号的脉冲宽度成比例:

脉冲宽度越长,背向散射功率就越强。

瑞利散射的功率还与发射信号的波长有关,波长较短则功率较强。

如图所示:

图13-1瑞利散射

菲涅尔反射是离散的反射,它是由整条光纤中的个别点而引起的,这些点是由造成反向系数改变的因素组成,例如玻璃与空气的间隙。

在这些点上,会有很强的背向散射光被反射回来。

光时域反射测试模块就是利用菲涅尔反射的信息来定位连接点,光纤终端或断点。

如下图分别表示了机械熔接、法兰盘、连接器断开造成的菲涅尔反射:

图13-2机械熔接

(1)、法兰盘

(2)和连接器(3)断开造成的菲涅尔反射

1.4光网络实时信号监测模块设计目标

1)性能指标

●中心波长:

13l0nm±

20nm

●事件盲区:

≤1.00m

●动态范围:

35/33dB

●衰减读出分辨率:

0.01dB

●群折射率设置范围:

1.4000~1.6000

●光纤连接器:

FC

●单系统功耗:

≤30W

●测距精度:

光信号动态监测精度:

≤1.00m。

2)系统功能

●下位机设备实现光信号的获取、解析、故障判定及故障信息上报,实时监测上位机完成波形分析、光信号统计信息的获取及在线故障判定。

列车实时运行中,一旦发现光信号的故障,即可实时获取环境信息,并将故障信息传输给上位机,由上位机分析后通过发送器发送给地面GSM接收机。

●故障通告内容应包括:

光纤长度,事件故障点在光纤长度上所处的位置,光纤串联中可能的故障器件,发生故障时列车行所处的经度和纬度及故障发生时间(需在上位机中预植列车图形化运行线路)。

●所有故障信息通报信息在上位机保存。

故障信息保存容量大于1000条,断电后信息不丢失。

地面终端可查取保存完毕的故障信息。

第2章项目设计

2.1项目总体设计

光网络实时信号监测系统包含OTDR模块、GSM模块、GPS模块、下位机管理模块、实时监测上位机模块及电源模块六大功能模块。

设计方案如下图所示。

图2-1光网络实时信号监测系统设计方案

其中:

(1)OTDR模块:

负责定位光路故障点,分析故障类型及故障产生的具体位置;

(2)GSM模块:

负责将故障信息发送至地面接收端,并传递地面接收端的查询信息;

(3)GPS模块:

负责故障时获取列车运行地理位置信息;

(4)下位机管理模块:

负责总体接受和处理来自OTDR、GPS、GSM模块数据,并保证各模块的协同工作,对外输出计算统计结果;

(5)实时监测上位机模块:

完成波形分析、光信号统计信息的获取及在线故障判定;

(6)电源模块:

独立供电,系统功耗<

30W。

2.2研究思路与技术路线

本设计里,主要通过实时监测上位机与下位机设备完成系统功能,其中:

(1)下位机,实现设备光信号的获取、解析、故障判定及故障信息上报;

(2)实时监测上位机,完成波形分析、光信号量的实时获取与在线故障判定。

通过以上设计,可实现:

在列车实时运行中,一旦发现光信号的故障,即可实时获取环境信息,并将故障信息发送给地面GSM接收终端。

2.3模块选型与设计

系统包括AQ7275OTDR模块、GSM模块、GPS模块、下位机管理模块、实时监测上位机模块及电源模块。

总体硬件架构如下图所示:

图23总体硬件架构图

2.3.1AQ7275OTDR模块介绍

AQ7275OTDR模块实际包含了OTDR接口、滤波、合波等,其功能可简记如下:

图23-1光信号处理示例图

模块功能说明:

1)OTDR接口。

包括激光器发射输出与反射光输入,测试接口与WDM对接。

2)激光器控制电路。

负责激光器的打开与关闭,同时可以控制激光器的工作电路。

3)数据采集电路。

负责将反射回来的光信号转换成数字电信号。

4)FPGA。

根据DSP的命令控制激光器开与关,同时收集数据采集电路的数字信号,在内部进行数据累加,并提供给DSP。

5)DSP。

根据命令控制FPGA,向FPGA读取数据,并按OTDR算法处理数据,将处理结果发送到外部电路。

外部接口电路。

外接通信处理单元。

2.3.2GSM模块设计

工业级双频GSM/GPRS模块,工作频段双频:

900/1800MHz,可以低功耗实现语音、SMS(短信)、数据和传真信息的传输,支持基站定位功能。

项目

特性

工作频段

EGSM900MHz/DCS1800Mhz自动搜索2个频段

发射功率

Class4(2w)@EGSM900M

Class1(1w)@DCS1800M

GPRS连接特性

GPRSmlti-slotclass10/8

GPRSmobilestationclassB/CC

GPRS数据特性

下行传输特性:

最大85.6kbps

上行传输特性:

最大42.8kbps

编码格式:

CS-1、CS-2、CS-3和CS-4

支持通常用于PPP连接的PAP协议

内嵌TCP/IP协议,支持TCP/UDP通信,支持FTP/HTTP服务

支持分组广播控制信道(PBCCH)

支持CSD(电路交换)传输速率:

2.4/4.8/9.6/11.4kbps

支持非结构化补充数据业务(USSD)

音频特性

支持HalfRate、FullRate、EnhancedFullRate、Adaptivemutirate等编码模式

支持回音消除功能

支持噪声抑制功能

短信(SMS)

支持MT/MO/CB/TEXT和PDU模式

短信存储设备:

SIM卡

工作温度

-40~+85°

C

2.3.3GPS模块设计

GPS模块具有50个通道,追踪灵敏度高达-161dBm,测量输出频率最高可达5Hz。

接口特性

TTL,兼容3.3v/5V单片机系统

接收特性

50通道,GPSL1(1575.42Mhz)C/A码,SBAS:

WAAS/EGNOS/MSAS

定位精度

2.5Mcep(SBAS:

2.0CEP)

更新速率

最大5Hz

捕获时间

冷启动:

27s(最快)

温启动:

27s

热启动:

1S

捕获追踪灵敏度

-161dBm

通信协议

NMEA(默认)/UBXBinary

串口通信波特率

4800、9600、38400(默认)、57600

2.3.4下位机管理模块设计

光信号处理模块实现了光信号物理层的解析,而通信与实时监测模块则完成光信号量的实时获取与故障判定。

下位机管理模块通过与FPGA及DSP模块进行通讯,采用滤波技术滤除检测期间无用信息,根据实际现场需要实时获取各类状态数据,并给出故障判定。

一旦检测到光纤工作异常,记录当前的时间和列车运行的地点,并且将这些信息数据传输给上位机。

模块的抗传导、静电放电、浪涌抗扰度等EMC性能均经过专业测试,并参照铁路交通应用标准,可适应与列车的特殊工况。

2.3.5实时监测上位机模块设计

实时监测上位机完成波形分析、光信号统计信息的获取及在线故障判定。

列车实时运行中,一旦发现光信号的故障,即可实时获取环境信息,并将故障信息发送给地面GSM接收终端。

故障通告内容应包括:

光纤长度,事件故障点在光纤长度上所处的位置,光纤串联中可能的故障器件,发生故障时列车行所处的经度和纬度及故障发生时间、速度(需在上位机中预植列车图形化运行线路)。

所有故障信息通报信息在上位机保存。

上位机通过网口与OTDR设备连接,并实时传输数据。

2.3.6电源模块设计

无需车厢额外供电,通过外部自带模块对系统进行供电。

电源模块金属六面屏蔽封装,具有过流保护、短路保护、过压保护等功能,使其安全性、稳定性和可靠性得到充分保障,正适用于铁路列车的特殊工况。

2.3.7软件设计

软件设计功能架构图如下所示:

图23-7软件设计功能架构图

第3章项目实现

在此处项目研发过程中本人主要负责实时监测上位机模块的开发。

因此,项目实现主要围绕该模块。

上位机模块又可以划分为两个模块:

1)Web模块(包括:

浏览器界面和服务器端)

2)Java客户端模块

Web浏览器端采用javascript+css+ajax+jquery,使用定时向服务器端发送ajax请求,请求Web服务器数据,数据采用json格式传输。

浏览器端拿到数据后,开始更新界面。

地图使用XX地图API(javascript版),从服务器端获取的经纬度信息(GPS坐标)转成XX地图特有的经纬度,并以标注的形式显示在地图上(旧事件为洋紫色标注,最新事件为淡绿色标注)。

Java客户端负责与下位机和OTDR设备进行通信,从下位机获取列车经纬度信息,从OTDR设备获取列车事件点信息(光信号故障点集合),完成分析数据之后,发送定义好格式的数据(以字节为单位)给下位机,同时发送HTTPPOST请求(字符串形式)给Web服务器。

3.1数据库连接模块

Web服务器端数据库采用文本文件类型的轻量级数据库sqlite,主要目的是:

提高软件性能、减少时间成本和降低后期维护等。

使用sqlite数据库主要分三部分:

1.加载sqlitejdbc.dll2.使用sqlitejdbc-v037-native.jar3.加载数据库驱动。

图3-1-1Web端架构

图3-1-2数据库连接

3.2Web浏览器端模块

图3-2-1

预定义列车路线:

京沪(北京-上海)、京广(北京-广州)、郑西(郑州-西安)、胶济(青岛-济南)、杭宁(杭州-南京)

部分关键代码如下:

图3-2-2京沪线(封装成数组)

图3-2-3XX地图API

图3-2-4列车事件(故障点集合)显示

同一时间的故障点集合(事件)显示在XX地图的同一标注中。

图3-2-5路线定义

可自由选择线路,默认为显示所有列车路线。

清除事件按钮可初始化sqlite数据库表(删除旧事件列表,重新初始化故障点集合)。

3.3Java客户端模块

主界面如图3-3所示:

图3-3程序主界面

3.3.1程序启动重连

以多线程的形式启动主程序,防止程序主界面出现卡死的现象。

在初始化主界面时,同时启动连接下位机(Socket通信,端口号:

1200IP:

下位机默认)的线程。

如果发现下位未启动则一直尝试重连,直至连接下位机成功,开始测试按钮才能开始点击。

点击开始测试按钮后,开始定时任务,周期60s。

部分关键代码:

图3-3-1

3.3.2保存文件

Java客户端从OTDR设备中获取事件(故障点集合)信息,完成数据的分析后,保存最原始的文件信息为TMP.CSV,方便EXCEL打开查看。

图3-3-2为EXCEL打开效果:

图3-3-2

关键代码:

package.insigma.utils;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.util.Date;

importmons.logging.Log;

importmons.logging.LogFactory;

publicclassSaveFileUtil{

privatestaticfinalLoglog=LogFactory.getLog(SaveFileUtil.class);

publicstaticbooleansaveFile(Stringstr,Datedate,doublelng,doublelat){

String[]arr=null;

try{

arr=str.split("

\n"

);

}catch(NullPointerExceptione){

log.error("

otdr设备工作不正常"

returnfalse;

}

Filefile=newFile("

TMP.csv"

if(!

file.exists()){

try{

log.info("

TMP.csv文件不存在,开始创建"

file.createNewFile();

TMP.csv文件创建成功"

}catch(IOExceptione){

//e.printStackTrace();

log.error("

创建文件TMP.csv时,发生错误"

returnfalse;

}

try{

BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream(file)));

StringBuildersb=newStringBuilder();

Stringtemp;

while((temp=br.readLine())!

=null){

sb.append(temp);

sb.append("

\r\n"

sb.append("

事件号,距离(km),熔接耗损(db),回波耗损(db),累计耗损(db),db/km,事件类型,区间折射率"

for(inti=20;

i<

arr.length;

i++){

sb.append(arr[i]);

时间,经度,纬度"

sb.append(StringUtils.formatDate(date)+"

"

+lng+"

+lat);

BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(file)));

bw.write(sb.toString());

bw.flush();

bw.close();

returntrue;

}catch(FileNotFoundExceptione){

//e.printStackTrace();

TMP.csv不存在"

}catch(IOExceptione){

数据写入文件时发生错误"

returnfalse;

}

publicstaticbooleandeleteFile(){

if(file.exists()){

if(file.delete()){

log.info("

删除文件TMP.csv成功"

returntrue;

else{

文件TMP.csv不存在,删除失败"

}

3.3.3读取配置文件

配置文件包含下位机IP、PORT和Web服务器配置等信息。

关键代码如图3-3-3所示:

图3-3-3

(1)读取配置文件

Properties文件:

图3-3-3

(2)配置文件

3.3.4Java与下位机Socket通信

下位机软件使用开发语言C++,上位机(PC)使用高级语言Java。

Java和C++的字节顺序在不同机器上会有所不同,下位机软件(C++开发)负责字节顺序(大端、小端)的转化。

上位机软件(Java开发)与下位机(C++开发)采用最底层的数据类型--字节进行通信。

Java与C++TCP通信接口的定义:

TCP通信接口:

获取GPS信息包格式:

操作符号:

4字节,int值为1

报文长度:

4字节

回复GPS信息包格式:

4字节,int值为2

经度:

16字节

纬度:

发生事件变化时,发送数据包格式:

4字节,int值为3

4字节,int

列车位置经度:

列车位置纬度:

当前时间:

时1字节,分1字节,秒1字节,年2字节,月1字节,日1字节,预留1字节整形

事件个数:

事件1,距离:

4字节,float

事件1,衰减:

事件n,距离:

事件n,衰减:

字节工具类:

本次项目中上位机软件(Java开发)使用到的数据类型和特定字节大小的转换。

importjava.util.Calendar;

/**

*字节工具类

*@authorjingxuan

*/

publicclassByteUtils{

/**

*intconvertbyte[]

*@paramn

*@return

publicstaticbyte[]int2Bytes(intn){

byte[]b=newbyte[4];

b[3]=(byte)(n&

0xff);

b[2]=(byte)(n>

>

8&

b[1]=(byte)(n>

16&

b[0]=(byte)(n>

24&

returnb;

*byte[]convertint

*@paramb

publicstaticintbytes2Int(byteb[]){

returnb[3]&

0xff|(b[2]&

0xff)<

<

8|(b[1]&

16

|(b[0]&

24;

*floattobyte[]

*@paramf

publicstaticbyte[]float2Bytes(floatf){

intfbit=Float.floatToIntBits(f);

for(inti=0;

4;

i++){

b[i]=(byte)(fbit>

(24-i*8));

intlen=b.length;

byte[]dest=newbyte[len];

System.arraycopy(b,0,dest,0,len);

bytetemp;

len/2;

++i){

temp=dest[i];

dest[i]=dest[len-i-1];

dest[len-i-1]=temp;

returndest;

//时1字节,分1字节,秒1字节,年2字节,月1字节,日1字节,预留1字节

*日期转成8字节byte[]

*@paramdate

publicstaticbyte[]date2Bytes(Datedate){

byte[]b=newbyte[8];

Calendarcal=Calendar.getInstance();

cal.setTime(date);

intyear=cal.get(Calendar.YEAR);

intmonth=cal.get(Calendar.MONTH);

intday=cal.get(Calendar.DAY_OF_MONTH);

inthour=cal.get(Calendar.HOUR_OF_DAY);

intminute=cal.get(Calendar.MINUTE);

intsecond=cal.get(Calendar.SECON

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

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1