地震仪器排列监管系统设计与实现第4章下文档格式.docx

上传人:b****6 文档编号:18224623 上传时间:2022-12-14 格式:DOCX 页数:17 大小:327.65KB
下载 相关 举报
地震仪器排列监管系统设计与实现第4章下文档格式.docx_第1页
第1页 / 共17页
地震仪器排列监管系统设计与实现第4章下文档格式.docx_第2页
第2页 / 共17页
地震仪器排列监管系统设计与实现第4章下文档格式.docx_第3页
第3页 / 共17页
地震仪器排列监管系统设计与实现第4章下文档格式.docx_第4页
第4页 / 共17页
地震仪器排列监管系统设计与实现第4章下文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

地震仪器排列监管系统设计与实现第4章下文档格式.docx

《地震仪器排列监管系统设计与实现第4章下文档格式.docx》由会员分享,可在线阅读,更多相关《地震仪器排列监管系统设计与实现第4章下文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

地震仪器排列监管系统设计与实现第4章下文档格式.docx

排列信息分发模块将异常排列信息广播发送至各个手持终端,功能实现流程如图4.10所示。

系统首先读取每条信息的线号和桩号,并对照排列范围数据表,确定信息所属终端ID号和对应的查线员,依据数据通讯协议将提取到的异常数据进行封装。

信息封装完成后,系统将文本文件存储至工程文件目录下并根据数据类型关键字将异常排列信息分类存储至异常道数据表和电瓶低点数据表。

图4.10排列信息分发模块功能流程图

工作人员在系统主界面工具栏中点击自动发送图标后,系统定时查询工程文件下是否有待发送文件,若存在待发送文件,系统调用数据发送线程start()函数启动线程。

实现网络通信时,使用QUdpSocket类完成数据的发送和接收。

QUdpSocket类继承自QAbstractSocket,提供了UDP套接字API,用来接收和发送UDP数据报。

创建QUdpSocket对象后,调用成员函数writeDatagram()写入待发送数据,发送方式设置为QHostAddress:

:

Broadcast并且填入设定端口号,只要向网络写入了一个数据报,SOCKET就产生一个bytesWritten()信号,触发槽函数updateClientProgress()来更新进度条并接着发送剩余数据。

实现串口通信时,使用第三方类qextserialport为写入待发送数据,创建Win_QextSerialPort类对象mycom,设置波特率,数据位,奇偶校验,停止位,数据流控制等各项参数,然后调用open()函数以只写方式打开串口,最后将待发送数据写入write()函数中完成数据的发送。

4.5.5终端请求处理模块

终端请求模块负责处理接收到的终端数据查询和测试请求,向通讯管理模块发送数据及测试指令。

服务器和手持终端采用即时信息方式传输查询指令和测试请求。

服务器开启数据接收线程,同时建立UDP和串口数据接收通道,建立QUdpSocket循环监听设定端口。

针对串口数据接收,创建Win_QextSerialPort对象后设定定时器QTimer,定时调用槽函数readAll()获取数据。

服务器根据终端发送的登陆或退出请求将终端实时工作状态修改为在线或离线。

服务器向终端发送即时消息时,首先查看终端当前工作状态,后台工作人员仅向在线终端发送即时消息,发送即时信息时,用户首先在查线工列表中选中要发送的对象,然后在即时信息输入框中输入信息内容,点击发送后将即时信息发送至指定手持终端。

4.5.6界面显示模块

排列监管服务器主界面布局层次如图4.11所示。

本文采用手工编写创建界面代码,使用QtDesigner界面编辑器两种方式完成对界面的设计。

使用手工创建代码时,需要从Qt已有的QDialog、QWidget、QMainWindow等GUI类库中选择一个作为主窗体,然后创建其它所需控件,并使用布局管理器布局这些控件,最后将该布局设置为主窗体的布局。

图4.11服务器界面层次图

本地显示模块由异常道显示区、电瓶低电显示区、排列范围显示区、即时信息显示区和进度栏组成,各区域显示内容及字段说明如表4.8所示。

表4.8界面显示区域说明

区域名称

显示内容

字段说明

异常道显示区

系统提取的异常道信息

终端ID号、线号、站号、桩号、电阻、

埋置、漏电、时间、查线员姓名

电瓶低电显示区

系统提取的电瓶低点信息

终端ID号、线号、站号、桩号、

电压、时间、查线员姓名

排列范围显示区

各终端工作范围规划情况

终端ID号、起始站号、起始桩号、终止

站号、终止桩号、日期、查线员姓名

即时信息接收区

从终端接收的短消息

终端ID号、信息内容、查线员姓

名、时间

即时信息显示区

向终端发送的短消息

终端ID号、信息内容

进度栏

数据处理和数据发送进度

4.6手持终端模块实现

4.6.1参数控制模块

参数控制模块负责对手持终端通讯参数进行配置。

本设计通过配置软件完成对手持终端应用程序的参数配置。

对手持终端进行参数配置时,将手持终端通过USB接口与PC端连接,在PC端运行配置软件,通过输入相应参数完成对服务器IP地址、服务器端口号、本地端口号、波特率和串口号的设置。

手持终端软件启动时,会先从初始化文件中读取各参数值完成系统软件配置。

4.6.2通信管理模块

手持终端集成3G模块与无线串口模块,正常工作状态下,手持终端主要采用3G网络完成与服务器间的通信,在网络信号弱的区域,自动切换为无线串口通信模式完成数据的收发,同时,查排列人员可以根据工作需要手动切换通信模式。

自动切换通信模式情况下,手持终端在3G模块工作时不断获取实时3G网络信号强度来控制3G模块的工作状态,本文通过AT指令获取3G模块所在位置信号强度,并合理制定通信模式切换门限值控制3G网络与无限串口通信模式的切换。

本文采用每隔2分钟发送指令的方式获取3G信号强度,获取3G模块实时信号强度值步骤如下:

1.连接3G模块对应串口,设置串口通信参数;

2.调用write()函数向3G模块发送AT+CSQ指令,AT+CSQ指令表示检查网络信号强度和SIM卡情况,命令格式为AT+CSQ<

CR>

3.调用readAll()函数获取回复命令,命令格式为AT+CSQ:

<

rssi>

,<

ber>

,RSSI(ReceivedSignalStrengthIndication)表示接收的信号强度指示,rssi值应在0到31之间,99表示无信号,数值越大表示信号质量越好,ber为误码率,值应为99;

4.根据rssi值计算实时信号强度,计算公式为:

信号强度=-133dBm+(rssi*2)。

5.对照表4.9判断当前网络状况。

参照相关介绍,结合实际实验,设定信号强度门限值。

表4.93G模块信号强度对照表

信号强度

网络状况

大于-91dBm

优秀

-91dBm至-101dBm

良好

-101dBm至-103dBm

较好

-103dBm至-107dBm

正常

-107dBm至-113dBm

小于-113dBm

脱网

通信模式自动切换模块旨在提高数据传输的可靠性,减少通信过程中数据丢失的概率。

然而,在数据传输的过程中,通信模式实时切换同样会影响数据接收的完整性。

针对此类问题,本文设计两套切换机制以保证数据的完整接收。

1.部分数据重传机制

部分数据重传机制原理图如图4.12所示。

图4.12部分数据重传机制实现流程图

针对2G/3G/4G网络切换至电台通信的情况,当获取的信号强度值低于门限值时,系统首先根据接收数据标志位判断线程是否正在接收数据,如果在接收数据,则先将已收到的部分数据缓存后切换通信模式,然后判断已收到的部分数据中是否含有本终端的完整数据,如果包含本终端的部分数据或没有本终端数据,则向服务器发送数据重传请求。

服务器根据终端发送的数据重传请求,发送属于其终端的数据。

数据重传机制保证了通信模式的实时切换,并且保证了数据的可靠传输,但是,要求服务器在待发送数据中提取需要重传的数据段,这就为服务器增加了工作量,同时,广播数据的发送也为其它终端增加了功耗。

2.延时切换机制

延时切换机制原理如图4.13。

图4.13延时切换机制实现流程图

延时切换机制优先保证当前数据的接收,检测到当前信号强度下可以收到数据,则认为当前网络仍具有接收完整数据的能力。

延时切换机制实现难度较小,不会为服务器增加工作负荷并且不会增加其它终端功耗,但存在数据接收不完整的风险。

通过对两种机制的对比分析和多次实验,本设计采用延时切换机制实现通信模式切换功能,同时适当提高信号强度门限值以保证数据传输的可靠性,本文设定信号强度值低于-107dBm时,将3G通信模式切换为无线串口通信。

4.6.3数据处理模块

数据处理模块将接收到的数据进行分析,并且对处理后的数据分类保存。

数据处理流程如图4.14所示。

图4.14数据处理模块功能流程图

启动手持终端后,系统通过通信模式标识符判断当前通信模式,并且开启当前模式下的数据监听。

手持终端软件采用全部接收、分段处理的方式对接收的数据进行处理。

在实现过程中,开启线程实时切换通信方式,并监听端口是否有数据。

当收到数据时,根据字符串sended对数据进行分段,将sended之前的数据进行处理,同时继续接收sended之后的数据。

进行数据分析时,首先读取终端ID号字段,判断是否是发给本终端的数据;

再根据数据类型关键字判断数据类型进行数据分类存储。

对地震道数据进行处理时,先将整段数据根据CDATA和dataok分条处理,再通过“/”对每条排列信息进行分割,最后将提取所需字段存入后台地震道数据表相应字段中;

对电瓶电压数据和排列范围数据处理方式与地震道数据处理方式相同,这里不再赘述。

4.6.4数字地图模块

数字地图模块提供当前待排查点与本终端位置关系。

查排列人员选中某一行待检查排列信息,进入信息详情页面后,界面将显示当前待排查点与查排列人员的位置关系,包括距离和方位。

进入信息详情页面时,系统通过串口获取手持终端当前位置信息。

GPS数据协议采用统一的NMEA协议,数据格式如表4.10所示。

表4.10$GPGGA协议结构说明

字段0

语句ID,表明该语句为GlobalPositioningSystemFixData(GGA)GPS定位信息

字段1

UTC时间,hhmmss.sss,时分秒格式

字段2

纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段3

纬度N(北纬)或S(南纬)

字段4

经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段5

经度E(东经)或W(西经)

字段6

GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=在估算

字段7

正在使用的卫星数量(00-12)(前导位数不足则补0)

字段8

HDOP水平精度因子(0.5-99.9)

字段9

海拔高度(-9999.9-99999.9)

字段10

地球椭球面相对大地水准面的高度

字段11

差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)

字段12

差分站ID号0000-1023(前导位数不足则补0,如果不是差分定位将为空)

字段13

校验值

将获取的GPS数据按照“,”分割后生成字符串列表GPS_StringList,根据列表GPS_StringList.at

(2)、GPS_StringList.at(3)、GPS_StringList.at(4)和GPS_StringList.at(5)得到手持终端当前经纬度值,其中北纬为正值,南纬为负值,东经为正值,西经为负值,根据经纬度值计算两点间球面距离

式中,

——手持终端所在位置经度值

——手持终端所在位置纬度值

——待检查点经度值

——待检查点纬度值

——地球平均半径,本文采用6371.393千米

待排查点与手持终端所在位置的方位关系由待排查点相对于手持终端所在位置的方位角表示,方位角又称地平经度(Azimuth,Az),是指从某点的指北方向线起,依顺时针方向到目标方向线之间的水平夹角[42]。

根据已知两点的经纬度后,计算两点间连线与水平线的夹角

将弧度制角

转化为角度制角

得到的角度并不总符合我们对方位角的定义,因此要根据B相对于A的位置在四个象限两个轴上进行讨论,依据不同情况对计算结果进行不同处理。

假设A点固定于原点,则方位角Azimuth在不同情况下的取值如表4.12所示:

表4.11坐标方位对照表

Bj-Aj>

0,Bw-Aw>

东北

Bj-Aj=0,Bw-Aw>

正北

Bj-Aj<

西北

Bj-Aj=0,Bw-Aw<

正南

0,Bw-Aw<

西南

0,Bw-Aw=0

正东

东南

正西

4.6.5查排列线路规划模块

最优路径规划模块为查排列人员提供最短查排列路线,将待排查点重新排列,生成最优组合序列,减少查排列工作时间,提高查线员工作效率。

本设计将模拟退火算法与功能模块相结合,将排查点的坐标值输入到模拟退火算法中生成最优排查点序列。

1.模拟退火算法原理

模拟退火算法将物理中固体物质降温原理应用于求解组合优化问题,将组合优化问题解空间中的一个解对应于固体降温过程中的一个状态,将目标函数对应于该状态下的能量。

以控制参数T来模拟固体的温度。

在每一个温度值下进行“解变换产生新解——准则判别——新解取舍”的迭代过程,根据Metropolis准则决定是否保留当前解,随着温度的降低,该算法有可能从局部最优解区域跳出,得到全局最优解[43]。

2.最优查排列线路求解过程

根据算法原理,求解最优路径的问题可以划分为以下三步操作:

解空间的生成:

解空间

表示遍历每个排查点当且仅当一次的所有路径,表示为

的一个排列,指的是从

点出发,经过

点后返回出发点的路径序列。

目标函数的建立:

在模拟退火算法中,将闭合路径的值作为目标函数,使用目标函数来评价新解的优劣,保证了产生新解的质量。

根据对问题的描述,目标函数定义为

——第

条路径

——路径

中的第

个排查点

个点到

个点的距离

中的排查点数量

新路径的产生:

随机产生1和

之间的两个相异数

,设

,则原路径

变为

,采用这种方式交换两个排查点在路径序列中的位置。

结合模拟退火算法计算最优查排列路径流程如图4.15所示,具体步骤如下

图4.15最优路径计算流程图

(1)定义并初始化算法基础参数,参考已有文献,具体参数值如表4.13所示:

表4.12模拟退火算法参数说明

参数名称

关键字

参数值

说明

MAXN

constint

501

最大排查点数量

INIT_T

constdouble

2000

初始温度

RATE

0.95

温度衰减率

FINAL_T

10-10

终止温度

IN_LOOP

13000

内层循环次数

OUT_LOOP

外层循环次数

P_LIMIT

10000

概率选择次数

为满足系统的实时性要求,考虑实际应用中对查排列线路规划的效率问题,本文通过定义P_LIMIT概率选择次数降低算法复杂度,当判定算法多次得到同一值时,提前跳出循环,将当前值作为最优解结束计算,这种改进大大减少计算时间,并且对上百个点计算结果的精确度满足实际应用要求。

(2)定义初始温度,定义结构体path,创建初始路径bestpath,计算初始路径长度curpath.Length。

(3)定义当前路径curpath和新路径newpath,将初始路径作为当前路径curpath。

(4)调用qswap()函数交换newpath.City[x]和newpath.City[y]两点顺序,其中x,y=rand()%N+1,且x≠y,生成新序列作为newpath,计算序列长度newpath.Length,得到路径长度差delta。

(5)如果delta<

0,则接收newpath作为curpath,否则,以概率exp(-delta/T)>

random(0,1)接受newpath作为curpath。

(6)判断是否满足内部循环终止条件,若满足则跳转至步骤(7),否则跳转至步骤(3)。

(7)判断是否满足外部循环终止条件,若满足则跳转至步骤(8),否则按规则T=T*RATE降温,然后跳转至步骤(3)。

(8)返回curpath即为最优路径解,输出最优序列,结束。

3.最优路径规划模块实现

最优查排列路径模块实现流程如图4.16所示,在实现的过程中,使用排列信息测试数据作为计算初始解,计算最优路径下各点序列,排列信息列表如图4.16所示。

通过重载重载当前窗体类的keyPressEvent方法,实现按键事件的响应。

调用key()函数判断键值正确后,系统访问后台数据库表dz_channel,通过query函数执行SQL查询语句,获取表中坐标字段列数据,调用QFile类成员函数write()将获取的坐标数据写入初始解文件,同时在数据库中创建临时数据表dz_start_route,表中字段包括序号number和坐标position,通过函数init()设置算法参数后,调用算法接口sa()计算最优查排列路径,算法得到最优路径序列后,将各坐标值按最优序列写入最优解文件f_zuobiao.txt,同时创建临时数据表dz_final_route,表中按最优顺序存放个点坐标。

最后调用query.exec()函数执行关联查询,将数据表dz_channel各行数据按表dz_final_route中坐标序列排序后,显示在地震道数据界面,完成一次最优路径规划操作。

图4.16最优路径规划模块功能流程图

4.7本章小结

本章在介绍排列监管系统各个功能模块设计的基础上详细阐述了各个功能模块的具体实现过程。

本章首先完成整体数据库设计,提出服务器平台的E-R模型,列举部分数据表的内容及创建过程。

其次对系统通讯协议的实现进行具体描述。

最后对服务器和手持终端软件模块分别进行介绍,并且对通信管理、最优路径规划等重点模块的实现流程和编码过程进行详细阐述。

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

当前位置:首页 > 初中教育 > 中考

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

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