地面气象观测站运行监测与控制系统设计

2023-03-04 13:25左湘文肖建辉荀家宝刘青松
计算机测量与控制 2023年2期
关键词:树莓采集器上位

左湘文,肖建辉,荀家宝,刘青松,张 磊

(1.中国气象局旱区特色农业气象灾害监测预警与风险管理重点实验室,银川 750002;2.宁夏气象防灾减灾重点实验室,银川 750002; 3.宁夏大气探测技术保障中心,银川 750006)

0 引言

随着我国气象事业不断发展,越来越多地面气象观测站投入使用,目前全国已建成国家级地面气象观测站约2 400套,省级地面气象观测站近60 000套。地面气象观测站观测数据为气象预报预警、气象服务业务开展提供了有力的观测支撑。随着站点规模的不断扩大,基层气象部门维修保障压力显著增加。地面气象站上传的报文或流数据主要为气温、湿度、气压、降水、风速、风向等气象观测数据,部分关键的设备运行状态数据并不上传,而且数据上传频率为一小时,维修保障人员无法全面且及时地掌握设备运行状态。有些站点地处偏远,处于无人值守状态,当主采集器或分采集器出现死机时需要奔赴现场重启解决,大大降低了维修保障工作时效。为提高地面气象观测站平均无故障时间和数据正确率,并降低基层气象部门维修保障人员劳动强度,开展地面自动气象站远程运行状态监测与控制方法研究迫在眉睫。

目前国内在地面气象观测站运行状态监测与远程控制方面已取得了一些成果。在运行监测方面,吴频频等设计了一种地面气象观测站监测软件[1],能够对站点观测数据异常状态进行远程监控,但是该软件是通过获取站点上传的气象观测数据来实现状态监控,并不能获取地面气象观测站存在本地的运行状态参数。杨维发等设计了一种便携式地面气象观测站故障分析仪[2]可在现场对地面气象观测站各种传感器运行情况进行监测和判断,但不能实现在远端运行状态实时监测并在出现状态异常时进行远程干预。在远程控制方面,张初江等设计了一套地面气象观测站远程智能控制系统[3],实现了对地面气象观测站主采集器的远程控制,但没有实现对各个分采集器的电源控制,而且控制器体积较大,功耗较高。

为了解决上文中提到的问题,实现地面气象观测站远程实时监控和控制的实际需要,设计了一套地面气象观测站运行监测与控制系统。通过在地面气象观测站主机箱向内部署一个体积小、功耗低的运行状态采集与电源控制器,可以获取较全面的地面气象观测站气象观测数据以及运行状态数据,并可以根据用户指令对地面气象观测站进行远程开关机以及重启控制。在远端部署上位机软件,维修保障人员可以通过上位机软件对地面气象观测站运行状态进行实时监测,发现设备死机故障可以及时重启,从而达到提高维修保障效率的目的。

1 系统功能设计

地面气象观测站运行监测与控制系统由部署在站端的“运行状态采集与电源控制器(以下简称:控制器)”以及部署在观测室或监控中心的“上位机软件”组成,系统总体结构如图1所示。控制器硬件设计基于树莓派卡片电脑来实现,其主要功能是:1)通过RS232串口实现地面气象观测站运行状态的采集和控制命令的转发;2)通过无线网络实现与上位机软件通信;3)通过控制继电器控制电路实现自动站各部件电源[4]控制。在用户发现故障时,根据上位机发送来的指令对地面气象观测站进行关机、开机或重启操作。上位机软件采用B/S结构设计,分为三个功能模块:1)数据通讯功能模块,实现与控制器通过网络实现数据通讯和数据存储;2)运行状态判识功能模块,实现对地面气象观测站数据和运行状态进行实时监测判断;3)用户交互模块,实现地面气象观测站运行状态展示及远程控制。运行状态采集与电源控制器通过无线扩频设备与上位机软件相连,软件通过UDP协议通讯。在软硬件设计上均采用模块化设计,尽量减小各功能模块之间的耦合度,提高了系统可维护性。

图1 地面气象观测站运行监测与控制系统总体结构图

2 控制器关键技术设计

控制器由控制单元和继电器控制电路组成。采用树莓派[5]卡片式计算机作为控制单元核心部件,树莓派是一个基于ARM构架的嵌入式开发平台,具有体积小巧、可靠性高、开发快捷以及低功耗的优点。树莓派可运行linux操作系统,完全支持Python语言开发,集成了GPIO和常用硬件控制引脚,可以方便快捷地和外围硬件电路进行交互。本次系统设计时采用的树莓派型号是Raspberry Pi 3b+。

在系统实现中,树莓派上运行Raspberry Pi操作系统。在软件方面,运行状态监测及供电控制程序采用Python语言实现运行状态监测[6]、电源控制并与上位机软件进行通信。在硬件设计方面,树莓派第6引脚(GND)、第8引脚(TXD)、第10引脚(RXD)与地面气象观测站调试通信接口相连,通过RS232通信接口实现对地面气象观测站观测数据和运行状态的获取。第36、37、38、40引脚与继电器控制模块相连,用来控制地面温度分采集器、温湿度分采集器、雨量分采集器以及主采集器电源的通断,后期可根据需要进一步扩展继电器控制电路。控制器硬件结构如图2所示。

图2 控制器硬件结构图

2.1 控制器运行状态监测及供电控制程序设计

控制器支持与我国气象部门常用的DZZ4、DZZ5和DZZ6型地面气象观测站主采集器通讯。程序流程见图3。

如图3所示,当控制器上电后通过握手命令与地面气象观测站采集器通信[7]握手,当在5秒内收到采集器返回指令[8]则进行下一步,反之则更换另一型号采集器的串口指令集,直到握手成功,若遍历控制器内所有指令集后仍然没有握手成功,则结束程序。

图3 控制器运行状态监测及供电控制程序流程图

在通信握手成功后进入程序循环执行状态,先检查网络通讯缓存中是否有上位机软件发来了控制指令。若有指令则读取上位机指令,识别指令种类和控制通道,并控制树莓派对应GPIO引脚电平变化来使继电器执行指令动作,可执行断开、闭合、整机时序重启等控制动作,控制完毕后生成控制完成回执回传给上位机。若网络通信缓存中没有上位机控制指令则检查是否达到运行状态获取时刻,若已到达获取时刻则向主采集器发送获取指令,获取成功后完成数据打包,并发送至上位机,若获取失败则向上位机发送数据获取失败标识。

考虑到采集器在繁忙时有可能不会回复控制器读取指令,为保证系统的可靠性,控制器程序会等待5秒,在5秒内没收到信息的情况下会发送3次读取指令,若三次都没有收到运行状态信息,则认为主采集器状态异常,发送失败标识。另外,在设置运行状态数据获取时刻时要满足两个条件:一是获取数据间隔时间要大于60秒,因为地面气象观测站数据采集频率在60秒以上。二是尽量避免影响地面气象观测站整点数据和分钟数据传输,因为地面气象观测站在每小时整点[9]会处理并上传整点观测数据,在每分钟30秒前会上传分钟数据,所以应不在每小时整点前5分钟、后3分钟以及每分钟前30秒获取数据。本文在控制器程序中将运行状态数据获取时刻设置为每小时的06分40秒、11分40秒、16分40秒、21分40秒、26分40秒、31分40秒、36分40秒、41分40秒、46分40秒、51分40秒、54分40秒。程序流程如图3所示。

2.2 继电器控制电路设计

各继电器控制电路实现了对控制主采集器、地面温度分采集器、温湿度分采集器、雨量分采集器供电线路的通断的控制,单路继电器控制电路设计方案如下:电源控制模块有四路相同的继电器控制电路组成,另外可根据需要增加备份,单路继电器控制电路如图4所示:P1端子1脚接电源供电VCC,2脚接地面温度分采集器、温湿度分采集器或雨量分采集器等供电正极输入端,3脚悬空。为保证树莓派控制模块安全,采用PC817光电耦合器实现继电器通断控制。通过上拉电阻将树莓派GPIO引脚电平设为高电平[10],当控制器收到上位机控制指令后,会在指定的GPIO引脚输出低电平,PC817的3、4脚导通,S8050三极管基极输入电流,Q1三极管处于导通状态,继电器K1的3、5脚闭合,需要控制的电源断开,反之电源闭合。继电器为感性元件,在继电器通断时会产生反向势能可能会烧坏电子元件,在继电器控制端并联一个续流二极管D3,可以起到吸收反向势能的作用[11]。

图4 单路继电器控制电路图

3 上位机关键技术设计与实现

3.1 上位机数据通讯程序设计

上位机数据通讯功能模块是使用Python语言编写的控制台程序,数据通讯功能模块通过UDP/IP协议与控制器通讯,利用Socket接口[12]实现接收控制器数据并发送用户电源控制指令。程序流程见图5。

如图5所示,程序开始运行时,首先侦听网络通讯缓存中是否有控制器发来的地面气象观测站运行状态数据包,若有则检查数据格式,若格式错误则将读取错误标识写入数据库。若格式正确则将数据格式化后,然后通过SQL语言将运行状态数据写入数据库。

图5 上位机软件数据通讯程序流程图

若没有侦听到地面气象观测站运行状态数据包,则检查用户是否发出控制指令,若没有则继续侦听通讯缓存,若用户发送了控制指令,则通过UDP/IP协议向控制器发送指令,收到回执后,生成控制完成标识并写入数据库,循环等待后接收失败则生成失败标识写入数据库。

3.2 运行状态判识模块程序设计

地面气象观测站运行状态主要有:采集器状态,电池电压,主机箱门状态以及个各传感器运行状态等。其中采集器状态、电池电压、主机箱门等状态信息可以直接从采集器中读取在进行判识,称为直接状态数据。传感器[13]运行状态包含温度、湿度、气温、气压、风速、风向、降水、能见度等传感器的状态。各传感器状态无法从地面气象观测站采集器中直接获取,要通过对传感器观测数据分析判识获得,若观测数据异常则认为传感器状态可疑或故障,这类数据称为间接状态数据。

上位机运行状态判识模块是使用Python语言编写的控制台程序。运行状态判识与分析模块程序执行流程如图6所示。程序开始运行时,先装载本站参数,包括各站元数据信息以及气象要素观测历史极值。然后读取数据库是否有新的运行状态数据,若没有则等待一段时间再读取,若有新数据则读取一行新数据,并遍历其中每个状态数据。如果该数据为直接状态数据,布尔类型的数据(采集器状态、主机门开关状态等)直接读取,浮点数类型(电池电压等)数据则需要进行阈值判断。若该数据为间接状态数据,则首先进行本站历史极值对比,若超过历史极值(包括低值与高值)则认为传感器状态异常,之后读取之前若干时刻的观测数据进行时间变化率检查,若变化率过低或者过高则判断传感器状态异常。最后将判识结果写入数据库,供用户交互模块读取。需要说明的是在时间变化率检查时,每种气象要素时间变化率阈值以及读取历史数据的长度并不相同,这主要由各类传感器正常情况下观测要素随时间变化快慢以及变化特征决定。

图6 上位机运行状态判识程序流程图

3.3 用户交互模块功能设计

用户交互模块直接面对业务值班员等用户。在设计用户交互模块时要考虑到系统使用的便利性,要实现可以通过不同计算机终端访问系统,故采用B/S结构设计,利用Flask框架技术实现。Flask[14]是一个轻量级的可定制框架,使用Python语言编写,其WSGI工具箱采用Werkzeug ,模板引擎则使用Jinja2。较其他型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,适合中小型网站的开发。另外,Flask具有较强的扩展性,用户可以根据自身需要添加定制功能。

用户交互模块设计遵循直观便捷原则[15],在实时显示运行状态数据与报警设计时,以界面展示直观、美观为出发点,通过清晰直观的展示界面,实现对自动站气象观测数据、运行状态、报警信息等信息的实时监测,对于直接状态数据,使用圆形“小灯”表示,红色为异常,绿色为正常。对于间接状态数据,数字变为红色为异常,其他颜色为正常。在自动站供电的远程控制设计时,以操作便捷,反馈明确为出发点,可以手动单独关闭、打开或重启主采集器、温湿分采集器、雨量分采集器,也可以一键时序重启整个地面自动气象站。用户界面见图7。

图7 用户交互模块界面示意图

3.4 数据存储

采用Mysql数据库系统实现本系统数据库构建,数据库包含自动站点信息表、运行状态信息表、控制器操作日志表、用户信息表。站点信息表存储需要监测的自动气象站区站号,控制器标识等信息;运行状态信息表存储接收到的各站运行状态数据;控制器操作日志表用来记录用户操作控制器的日志信息;用户信息表存储系统用户权限、名称、密码、所述机构等信息。

4 实验结果与分析

4.1 可靠性测试

测试指标:使用运行状态获取成功率与运行状态异常判识成功次数作为测试的指标。运行状态获取成功率计算公式见式(1):

(1)

式(1)中,E为运行状态获取成功率,ES为测试时段内运行状态数据应获取总次数,Ea为系统运行状态数据实际获取次数。因为测试时间有限,地面自动气象站自然出现状态异常次数可能较少,所以人为设置典型地面自动气象站运行状态异常情况[16-17]进项测试,用运行状态异常判识成功次数(N)来衡量系统判识性能。

测试方法:在可靠性测试中,将地面气象观测站运行监测与控制系统接入DZZ5、DZZ6型地面气象观测站测试运行1个月(30天),每小时获取数据11次,共获取7 920次。人为设置10运行状态异常情况,并依次触发,详情见表1。

表1 人为运行状态异常简述

测试结果与分析:运行状态获取成功率E与运行状态判识异常成功次数N见表2。DZZ5型地面气象观测站E值为100%,DZZ6型地面气象观测站E值为99.5%,DZZ6型地面气象观测站相对较低的原因有可能是在该系统与主采集器通信的时刻出现了主采集器程序长时间繁忙的情况所致,需要对该型号主采集器程序运行机制开展进一步研究。该系统对于两种型号地面气象观测站出现的运行状态异常情况都能准确判识,N值均为10次。

表2 运行状态数据获取成功率以及人为 运行状态异常判识测试结果

4.2 控制器功耗测量

测试指标:使用控制器瞬时功率(Pr)、控制器平均功率(Pra)、整机瞬时功率(P)、整机平均功率(Pa)以及平均续航时间(T)作为功耗测试指标。平均续航时间是指:在只有蓄电池供电的情况下测量设备从开机到因电力不足而关机的时长,反复测量5次后取平均值。

测试方法:将系统控制器接入典型的DZZ5型地面气象观测站,该站配有风向、风速、温度、湿度、气压、地温、降水、能见度八个观测要素传感器,供电采用免维护蓄电池供电(蓄电池充满电,不接太阳能或市电供电装置,蓄电池参数为12 V 65 AH)。用功率监测装置分别接在控制器与地面气象观测站电力输入端进行功率监测[18],每2秒记录一次Pr和P值,经过30分钟的测试,共记录900次,期间控制了15次继电器并同时向上位机发送信息。

测试结果与分析:功率变化见图8。试验表明控制器瞬时功率Pr在3.6~5.7 W之间波动,计算得到控制器平均功率Pra为3.9 W,在程序触发继电器工作时Pr较大,在4.6~5.7 W之间。同时测量地面气象站整机(包含控制器)瞬时功率P在64.3~75.1 W之间波动,计算得到整机平均功率Pa为69.1 W,控制器平均功率占八要素地面气象站整机功率的5.6%。用同一块满电12V65AH免维护蓄电池供电情况下,将控制器接入DZZ5型地面气象观测站进行续航时间测试5次,平均电池续航时间T为8小时09分,在不接入控制器的情况T值为8小时34分,平均续航时间减少了4.9%。

实验表明控制器耗电量相对较小,在蓄电池供电情况下,对8要素地面气象观测站工作时间影响不明显。而2要素(温度、雨量)气象站和4要素气象站(风速、风向、雨量、温度)中由于气象站本身功耗减小,很可能导致控制器功耗所占比例有所上升,对电池续航时间影响也更加明显,所以在使用该系统控制器时要考虑更换容量更大的电池,否则有可能会明显影响地面气象观测站续航时间。

图8 控制器与地面气象观测站整机功耗对比情况

5 结束语

该系统支持对DZZ4、DZZ5、DZZ6型地面气象观测站和DSN3型[19]自动土壤水分站进行运行监测和远程电源控制,指令集更新后可以支持更多型号的设备。该系统在宁夏5个八要素地面气象观测站使用9个月,运行期间控制器出现7次无法远程控制站点设备的故障,经检查发现有6次是由于继电器控制电路与树莓派连接端子接插不牢靠导致,用焊锡固定连接后恢复正常;有1次是由于人为维护地面气象站时没有及时恢复控制器供电引起。上位机软件在试运行中修复软件漏洞19个,完善功能点11个,目前运行稳定,软件界面友好,操作便捷。实际应用证明,该系统可以实现对地面气象观测站设备实时监控,并只实现了远程控制,维修人员不用到达现场就可以解决自动站程序死机等故障,显著提高了维修效率,取得了良好的效益。在下一步工作中,一是开展降低控制器功耗研究并进一步缩小体积,在保证靠性的情况下,基于低功耗版本树莓派或其他嵌入式开发平台设计研发更低功耗、更小巧便携的控制器;二是对DZZ6等主采集器程序运行机制开展深入研究,改进控制器运行状态监测及供电控制程序,进一步提高系统获取运行状态成功率。

猜你喜欢
树莓采集器上位
COVID-19大便标本采集器的设计及应用
基于树莓派的骑行智能头盔设计
特斯拉 风云之老阿姨上位
基于树莓派的远程家居控制系统的设计
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
响应面法优化红树莓酒发酵工艺
以新思路促推现代农业上位