浅析阿克苏空管站QNH值实时监控设计与应用

发表时间:2020/10/28   来源:《科学与技术》2020年6月第18期   作者:宋 凯
[导读] 基于C#语言编写QNH值实时监控软件,可实现AWOS(民航自动气象观测系统)QNH值、振筒气压仪QNH值的数值对比告警功能。
        宋 凯
        (民航新疆空管局 阿克苏 843000)
        摘要:基于C#语言编写QNH值实时监控软件,可实现AWOS(民航自动气象观测系统)QNH值、振筒气压仪QNH值的数值对比告警功能。
关键词:QNH;C#;AWOS;数值对比
0 引言
        民航气象观测业务不仅是航空气象工作的基础,而且与飞行安全有着密切的关系。其中,气象观测提供给相关用户单位的修正海平面气压值是航空器着陆时的重要参考数据。由于观测员在发报时,必须要重点对实况报文中的气压组进行人工检查。因此,避免出现观测员误报气压组数据等现象,更好地服务于用户的同时,也能够在振筒气压仪出现如传感器故障导致气压数据不对时气象机务员能够及时处理,阿克苏空管站研发了基于C#语言编写的气压报警系统,此系统作为空管站现有气象业务监控平台子系统,对不同气压传感器测量的数据进行实时对比,当气压数据异常或者设备故障时,产生声音告警和短信提示信息。
        
1 系统整体设计
        本系统包括硬件系统和软件系统两方面。硬件系统由振筒气压传感器及服务器构成,工作原理是处于三个不同测量位置的振筒气压传感器以网络信号的形式将测量数据传回服务器,并且将AWOS气压值引接至民航气象信息系统通信分系统。其具体布局如图1所示。
软件系统的原理是通过三个振筒气压仪所测得的信号与AWOS自动观测系统所测信号进行对比,最终产生一个最大差值,进行声光告警。




图1 AWOS气压值引接至民航气象信息系统通信分系统布局图

2  硬件设计
        在硬件组成中,三个振筒气压仪分别位于阿克苏空管站区域管制室、观测室、塔台。由于振筒气压仪输出信号为RS-232信号,理论传输距离仅为15米,但实际每个区域之间的距离相隔超过10米,且要将信号引接至机房服务器,导致RS-232信号无法直接用于信号传送。因此,本系统设计选择使用信号转换器将RS-232信号转为网络信号传输至机房服务器及各用户数据使用区域,与此同时对信号转换器相关参数进行配置。信号转换器参数配置如图2所示。

图2 信号转换器参数配置示意图

3  软件设计
        软件方面的设计原理是接收串口信号转换为UDP协议的网络信号进行处理。每分钟获取一次AWOS及三个振筒气压仪传感器的测量数据,将四个数据对比后输出一个最大差值,如果这个差值超出程序设定阈值,则触发告警。具体设计流程如图3所示。

图3 软件设计流程图

3.1  AWOS数据获取
        AWOS状态数据每分钟生成一次,因此本系统利用FTP协议获取民航通信系统存储的自观状态数据,再利用分割函数将气压数据从状态数据中分割出来,部分实现代码如下。
ftp.ftpDownload("ftp://" + awosFtpServer + "/mydb/awosdev/receive/" + awosFtpFileName[0], awosFtpUser, awosFtpPasswd, awosFtpLocalDataPath, awosFtpFileName[0]);
StreamReader sr = new StreamReader(Application.StartupPath + @"\pressData\" + pressMoniAwosFtpFileName);
string str = sr.ReadToEnd();
string[] strArr = Regex.Split(str, "\n");
string[] strArr1 = Regex.Split(strArr[3], " ");
string pressAwosQNH = strArr1[12];
textBox20.Text = pressAwosQNH;
sr.Close();

3.2 振筒气压仪数据获取
        本文中所提到的振筒气压仪是太原市太行压力测试有限公司生产的XDY-03型,该振筒气压仪串口连接参数为2400、8、N、1。其中,数据获取分为两部分进行:
(一)需要向振筒气压仪发送“R”字符,仪器才会返回一个气压数据。
         部分实现代码如下:
 UdpClient udpSender = new UdpClient(4040);
udpSender.Connect(remotehost, remoteport);
 byte[] sendBytes = Encoding.ASCII.GetBytes("R");
 udpSender.Send(sendBytes, sendBytes.Length);
 udpSender.Close();
        (二)在振筒气压仪收到字符后,会给发送方返回测量数据。在接收到数据后,会检查数据的报头和报尾,如果报头报尾分别为"\n"和"\v",则利用分割函数将气压数据从测量数据中分割出来,否则将提示错误。需要注意的是,在获取到气压值后,该气压值为场面气压值,要将其转换为对应的修正海平面气压值才可使用。
转换公式为:QNH=
        获取振筒气压仪数据功能实现代码如下:
private void pressUdpReceiver1()
{
UdpClient udpReceive = new UdpClient(4041);
IPEndPoint remoteIpEndPoint = new IPEndPoint(System.Net.IPAddress.Parse("172.27.18.41"), 4041);
  while (true)
            {
                double press;
                byte[] receiveBytes = udpReceive.Receive(ref remoteIpEndPoint);
                string returnData = Encoding.ASCII.GetString(receiveBytes);
                receiveBytes = udpReceive.Receive(ref remoteIpEndPoint);
                returnData += Encoding.ASCII.GetString(receiveBytes);
                if (!(returnData.StartsWith("\n") && returnData.EndsWith("\v")))
                {
                    returnData = "error";
                }
                else
                {
                    returnData = returnData.Substring(1, 7);
                    press = double.Parse(returnData) * pressH;
                    returnData = press.ToString().Substring(0,7);
                }
                textBox21.Text = returnData;
            }
            
 }

3.3 气压数据对比
        在获取到三个振筒气压仪及AWOS气压数据后,利用冒泡排序法将4个数据两两相减,最终获取一个最大的差值,如果这个差值大于理论阈值,则产生告警。部分实现代码如下。
for (int i = 0; i < 4; i++)
      {if (pressFloat[i] != 0.0)
        { for (j = i + 1; j < 4; j++)
         { if (pressFloat[j] != 0.0)
          { pressDev = Math.Abs(pressFloat[i] - pressFloat[j]);
             if (pressDev > pressMaxDev)
                { pressMaxDev = pressDev;
                  switch (i)
                  { case 0:
                    pressDev1 = "AWOS";
                    break;
                    case 1:
                    pressDev1 = "区调振筒气压仪";
                    break;
                    case 2:
                    pressDev1 = "观测振筒气压仪";
                    break;   }
                    switch (j)
                   {  case 1:
                       pressDev2 = "区调振筒气压仪";
                        break;
                        case 2:
                        pressDev2 = "观测振筒气压仪";
                        break;
                        case 3:
                        pressDev2 = "塔台振筒气压仪";
                        break; } } } } } }

3.4 气压数据差值超限告警
        根据《民用航空自动气象观测系统技术规范》文件要求,传感器测量最大允许误差值为0.3百帕。阿克苏空管站实际情况为0.6百帕,此数值的来源由一个传感器测量误差允许在0.3百帕以内,则两个传感器测量误差在0.6百帕内确定的。因此,本程序设置告警阈值为0.6百帕。在触发告警条件后会产生声音告警和短信提示,并且程序界面会有一个显示状态的圆圈,在数据获取正常并且差值不超过设定阈值时,圆圈显示绿色;当数据获取失败或者数据获取不完整时,相应的显示栏里会出现“error”并且圆圈显示红色,此时程序会控制短信猫发送告警短信提示;当数据差值超出设定阈值时,圆圈同样会变成红色,并且程序控制短信猫发送告警短信提示。告警显示栏如图4所示。

图4 告警显示栏

4 结语
        按照阿克苏空管站观测岗位手册《观测发报操作程序》规定,观测员在发报前要对修正海平面气压(QNH)做到五核对(即自观系统和自动气象站气压核对、自动气象站和振筒气压仪气压核对、自观系统和振筒气压仪气压核对、发报软件生成的报文和自观数据气压核对、提前编好的应急报文和发报软件生成气压核对),此程序实现了相关文件规定的五核对功能,避免了因人为疏忽导致的问题产生。同时,此程序是基于阿克苏空管站现有气象业务监控平台程序开发,具有功能拓展容易的特点。后续还可新增利用民航气象信息系统中存储上一时次观测报文的气压数据与自观气压数据核对的功能,这对进一步完善观测气压对比程序具有十分重要的意义,最终将QNH值误报漏报的概率降到最低,真正实现人与机器的相互辅助。



参考文献:
        
        [1][民用航空气象 第9部分:自动气象观测系统数据输出格式][Z].中国空中交通管理局,2011.MH/T 4016.9-2011.
        [2]秦敏恒.关于修正海平面气压计算的方法讨论[J].内蒙古科技鱼经济.2019(02):80-82.
        [3]翟晓,薛华星.一种修正海平面气压数据监控方法在深圳机场的应用[J].气象科技进展,2019,9(03):238-239.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: