三维雷电探测系统监视软件设计与实现
2022-03-17李力聂成彭军
李力,聂成,彭军
(1.湖北省气象信息与技术保障中心,湖北 武汉 430074;2.襄阳市气象局,湖北 襄阳 441021)
0 引言
雷电属于气象领域中的强放电现象,至今依然对森林防火和生命财产等社会安全领域构成极大挑战,也对航空、航天、供电、通讯等诸多社会生产部门带来重大影响.雷电探测仪目前已经大面积部署于气象、部队、电力、电信等国民安全骨干行业,组网后构成雷电探测系统通过监测雷电活动的范围和频度对重点目标进行预警预报,在气象防灾减灾、卫星火箭发射、雷击定点监测等诸多领域发挥着关键作用.传统的二维雷电探测仪只能探测云地闪和二维定位,无法测量云内闪电,而且二维时差雷电探测系统使用的数据处理中心软件定位算法简单,监视功能不全,数据处理量小,结果解算较慢[1-4].
三维雷电探测仪使用时差定位法,通过接收云闪、云地闪辐射的闪电回击脉冲信号,可以解算出闪电辐射源的时间、位置、高度、强度、极性等重要参数信息,是目前升级传统二维雷电探测系统的最佳方案[5-8].针对三维雷电探测系统接收处理数据量相比二维雷电探测系统增加数倍,定位算法相较二维系统复杂许多的状况,使用C++ builder编程与C/S架构开发三维雷电监测和综合分析系统.重点阐明系统监视软件的功能模块与关键处理设计,并通过湖北省三维雷电探测系统的实际运行分析,期望实现设计合理、信息及时、功能齐全、移植性强、友好直观的三维雷电探测系统监视软件.
1 系统监视软件
1.1 软件功能需求系统监视子系统(system monitoring subsystem,SMS)在省级台站雷电监测与综合分析系统中发挥核心作用.监视子系统收到数据接收处理子系统(data accepting and processing subsystem,DAPS)从内部传输控制协议(transmission control protocol,TCP)发来的探测子站配置与状态信息,雷电回击与定位结果等数据[9-11].收到的信息数据先分类再储存,显示为列表方式,并使用状态信息判别此刻探测子站的状态情况;还通过公共广域网以用户数据包协议(user datagram protocol,UDP)接收DAPS、数据存储子系统(data storage subsystem,DSS)发来的回击数据、状态数据、三维定位结果等统计信息和DAPS、DSS软件的状态信息.
1.2 软件运行组成系统监视子系统与数据存储子系统、数据接收子系统(data accepting subsystem,DAS)、数据处理子系统(data processing subsystem,DPS)的运行环境关系如图1所示.
图1 系统监视软件运行环境图
根据系统监视软件的功能,设计软件由TCP网络数据接收、UDP组播数据收发、系统运行状态监视、探测仪状态监视、数据文件存储等5个模块组成,系统监视软件组成如图2所示.
图2 系统监视软件部件组成图
1)TCP网络数据接收模块:通过网络TCP协议建立与DAS、DPS的功能连接.接收DAS发送的探测站配置信息、回击数据、状态数据,接收DPS发送的三维定位结果信息.
2)UDP组播数据收发模块:通过网络UDP协议定时向DAS、DPS、DSS发送软件状态巡检信息,接收软件返回的运行状态、回击数据统计、状态数据统计、三维定位结果统计信息.
3)系统运行状态监视模块:以列表方式实时显示系统最新接收的回击数据、状态数据、三维定位结果数据,以场景方式显示与其他功能的交互状态.
4)探测仪状态监视模块:根据接收到的探测仪状态数据,判断当前探测仪的状态,提供人机交互界面,对探测仪的状态进行监视.
5)数据文件存储模块:存储收到的回击数据、状态数据、三维定位结果数据和DAS、DPS、DSS的运行状态信息,每天分别生成一个回击数据文件、状态数据文件、三维定位结果信息文件以及日志文件,每月形成一个独立文件夹.系统监视软件的数据流程和控制流程如图3所示.
图3 系统监视软件数据流程和控制流程图
2 软件模块设计
2.1 TCP网络数据接收模块系统监视软件的身份为TCP服务器,其他软件均作为客户端与之连接;TCP交互双方设计并实现各自软件,发送方不会考虑由于发送数据速度过快造成的数据粘包,系统监视软件的TCP网络数据接收模块需要对可能的沾包进行处理,做到网络数据不多、不少、不丢失、不增加.对于TCP交互可能出现的沾包现象,系统所做关键处理设计为:系统启动时,构造缓冲用于TCP数据接收和处理,同时创建一个整形变量,记录处理后剩余的数据长度[11-13].TCP数据的接收和处理设计描述如下:
/*
接收网络数据,注意新接收的数据放在接收缓冲后面,其中_revlength为本次接收的数据长度,m_pTCPReceiveCache为系统设计的接收和处理缓冲,m_TcpProcessLeftDataLength为处理剩余的数据;
*/
_revlength=recv(_socket,(LPSTR)m_pTCPReceiveCache+m_TcpProcessLeftDataLength,MAX_LENGTH_TCPRECV,0);
m_TcpProcessLeftDataLength+=_ revlength;//剩余数据增加
_thisLength=GetFirstFrmLength();//获取第一帧TCP数据的长度
/*如果剩余数据中有一个完整合法的数据,则对该完整消息进行处理*/
while(_thisLength !=-1 && m_TcpProcessLeftDataLength>=_thisLength)
{
…//根据消息的种类对合法消息进行处理
Switch(接收数据种类)
{
Case 探测站配置信息:
对探测站配置信息进行解析,交由探测仪状态监视模块对模块进行初始化;
Break;
Case 回击数据:
对回击数据进行解析,交由数据文件存储模块存储回击数据
交由系统运行状态监视模块以列表方式进行显示;
Break;
Case 状态数据:
对状态数据进行解析,根据状态数据判断探测仪当前工作状态;
交由数据文件存储模块存储状态数据
交由探测仪状态监视模块进行显示;
Break;
Case 三维定位结果数据:
对三维定位结果数据进行解析,交由数据文件存储模块存储三维定位结果数据
交由系统运行状态监视模块以列表方式进行显示;
Break;
default:
Break;
}
m_TcpProcessLeftDataLength-=_thisLength;//剩余数据减少
if(m_TcpProcessLeftDataLength>0) //数据恢复
{
memcpy(m_pTCPReceiveCache,m_pTCPReceiveCache+_thisLength,
m_TcpProcessLeftDataLength);
_thisLength=GetFirstFrmLength();//获取第一帧TCP数据的长度
}
}
2.2 UDP组播数据收发模块UDP信息处理是UDP组播数据收发模块的关键.由于每一种消息数据字段的意义和格式不同,需要根据消息的种类进行不同处理,程序关键处理设计主流程如下:
//广播数据处理
Void HandleUdpData(UCHAR* buffer,unsigned short len)
{
if(接收数据为DAS运行状态)
{
//杀掉DAS运行超时时钟;
//交由数据文件存储模块存储DAS的运行日志到日志文件
//交由系统监视模块以列表形式显示DAS的运行日志;
}
else if(接收数据为DPS运行状态)
{
//杀掉DPS运行超时时钟;
//交由数据文件存储模块存储DPS的运行日志到日志文件
//交由系统监视模块以列表形式显示DPS的运行日志;
}
else if(接收数据为DSS运行状态)
{
//杀掉DSS运行超时时钟;
//交由数据文件存储模块存储DSS的运行日志到日志文件
//交由系统监视模块以列表形式显示DSS的运行日志;
}
}
2.3 系统运行状态监视模块以列表方式实时显示系统新接收的回击数据、状态数据、三维定位结果数据,以树形结构显示各探测站点,并用图标方式显示当前探测仪的状态信息[14-15].
1)回击数据显示字段包括:探测仪名称,接收事件时间,地理位置,角度,强度,电磁场强度值,最陡点强度值,起点到峰点时间差,最陡点到峰点时间差,峰点到半周过零点时间差.
2)状态数据显示字段包括:探测仪,地理位置,最近一次自检开始时间,最近一次自检通过标志,当前阈值,当前阈值平均通过率,最近一次自检开始时GPS信息,10 MHz恒温槽石英晶振频率值的偏差.
3)三维定位结果信息显示字段包括:时间,地理位置,峰值强度,最大陡度,误差,定位方式,处理标志,定位站信息.
2.4 探测仪状态监视模块根据收到的探测仪状态数据,判断当前探测仪状态,探测仪状态异常的可能原因:
1)长时间(暂定10分钟)收不到探测仪发送的状态数据;
2)状态数据中参数值不合法,包括自检通过值不等于1 024,GPS阈值不在[-10,10]的区间内,晶振偏差阈值不在[-10,10]的区间内,当前阈值不等于100,背景噪声超过了1 000等;
3)发送的探测仪状态数据时间码没有更新.根据上述原则,判断探测仪状态的关键设计如下:
Bool JudgeState(STATEDATA _statedata, STATEDATA _lastStateData)
{
//如果参数的值不合法则认为状态异常
if(_statedata.resultofselftest!=1024||_statedata.DOP>10||_statedata.DOP<-10||_statedata.
DOP==0||_statedata.frequencyerr>10||||_statedata.frequencyerr<-10||_statedata.threshold!
=100||_statedata.TCR>1000)
return false;
if(本次状态数据的时间码和上一次的时间码一致)
return false;
//备份本次状态数据,把本次状态数据赋值给备份状态
//杀掉故障探测仪的状态超时时钟(在指定时间内没有收到状态数据,则认为该探测仪故障)
//重新启动超时时钟
}
2.5 数据文件存储模块为确保每种文件每天生成一个,每月形成一个单独的文件夹,系统设计软件启动时或每日凌晨零点(使用定时时钟)创建回击数据文件、状态数据文件、三维定位结果数据文件和日志文件.以2021年7月为例,其目录组织结构如下:
Data
├─back//回击数据目录
│ └─202107//2021年7月目录
├─log//日志数据目录
│ └─202107//2021年7月目录
├─pos//三维定位结果数据目录
│ └─202107//2021年7月目录
└─state//状态数据目录
└─202107//2021年7月目录
回击数据、状态数据、三维定位结果数据、日志文件均以“某参数列”+“tab”+“其他参数列”的形式提供,以便使用Excel查看文件.
3 软件系统应用
针对本文中所述的三维雷电探测系统监视软件,专门开发了功能齐备、简洁友好、面向用户的雷电监测和综合分析系统界面,并与数据接收处理、系统监视、数据存储和数据再处理子系统构成的省级台站雷电探测系统进行数据关联,实现了软件系统的状态监视查询、采集数据分析以及其他功能模块集成应用[13-14],验证了上述系统软件开发设计的可行性.
3.1 运行监视功能将雷电监测和综合分析系统安装部署于省级平台,软件可监视接收处理后的湖北省三维雷电定位仪回击与定位结果数据,如图4所示.
图4 软件监视回击数据与定位结果
软件系统用列表方式实时显示最新接收的回击数据和三维定位结果.站名、日期、时刻、纬度、经度、强度、陡度、误差和高度等信息排列于界面右侧,数据信息用黑色与红色表示探测结果可信与不可信.
3.2 状态监视功能三维雷电探测系统监视软件通过接收的状态数据,判断当前探测仪状态,使用交互界面进行设备状态监视,如图5所示.
图5 软件监视探测仪状态
软件系统以场景方式展示与TCP数据接收、UDP数据收发等其他功能的交互状态.探测站、IP地址、端口号,状态数据、云地回击、云间回击的信息条数显示于界面左侧,设备状态用绿色与红色表示正常与异常.站名、地理位置、最近一次自检开始时间、自检通过标志、当前阈值、当前阈值平均通过率、自检开始时GPS误差值、定位仪编号、10 MHz恒温槽石英晶振频率值的偏差等实时信息显示于界面右侧.
4 总结
本文中针对组网之后的三维雷电探测系统监视功能需求,开发了省级台站雷电监测和综合分析系统监视软件,设计了TCP网络数据接收、UDP组播数据收发、系统运行状态监视、探测仪状态监视、数据文件存储5个模块,实现了通过列表方式实时显示系统最新接收的回击数据、状态数据、三维定位结果数据.通过场景方式显示与其他功能的交互情况;通过接收的状态数据,判断当前探测仪状态,并提供人机交互界面,对探测仪状态进行监视;通过分类存储收到的相关探测数据和运行状态信息,每天生成独立的文件,每月形成独立文件夹.利用湖北省三维雷电探测网构建实验平台测试验证系统运行与软件功能的稳定性和全面性,结果表明,系统监视软件设计合理、信息及时、功能齐全、移植性强、友好直观,满足三维雷电探测系统的监视需求,对其他类型探测设备系统监视软件的设计与开发具有广泛参考价值.