基于ARM架构的嵌入式系统在自动气象监测系统的应用:以NVST气象站为例*
2021-01-19王新华谌俊毅
王新华,陈 东,罗 林,张 涛,杨 磊,徐 稚,谌俊毅
(1. 中国科学院云南天文台,云南 昆明 650216;2. 中国科学院大学,北京 100049)
地基天文望远镜的成像质量与台址及周围环境密切相关,在高分辨率太阳图像复原时,需要知道观测时刻周围环境的准确信息,从而更为精确地统计台站周围的大气性质。自动气象监测系统是现代天文观测台站必备的辅助系统之一,主要目的是实时监控气象信息并提供给望远镜系统,以保障望远镜等设备的安全;提供某些观测过程需要的精准气象及观测条件数据,作为数据处理的辅助参数;提供长期的气象及观测条件数据,用于评估台站的观测条件[1-3]。
1 天文台站自动气象监测系统
自动气象监测系统中使用较为广泛的STM32系列微控制器是ARM Cortex-M3内核的高性能嵌入式控制芯片,主频为72 MHz,拥有丰富的通信接口[4]。文[5]基于此微控制器开发了一套较为轻便的气象站数据实时显示系统,系统结构如图1(a)。此类气象站的优点是低功耗、高可移动性、资源占用少;缺点主要表现为性能较低,无法满足多任务、大批量数据的快速处理和管理,难以提供完整的远程访问等软件功能,需要添加服务器才能提供实时数据访问、数据库存储等功能,明安图射电频谱日像仪的Vantage Pro气象站就是这种类型[6]。
基于个人计算机开发的自动气象监测系统,如图1(b)。个人计算机完成数据的获取和处理,并提供如人机交互界面等丰富的软件功能。此类气象站的优点是性能高、数据处理快、实时性高,有强大的操作系统,可以为用户提供丰富的软件功能。缺点主要表现在可移动性差,由于必须依赖个人计算机,在野外选择台址时非常不便;个人计算机功耗较高,在野外无法使用市电供电的情况下对供电系统是个考验,需要专门的个人计算机完成数据的采集和发布;部分个人计算机是气象站商家提供的,此类系统一般闭源,自行修改调试繁琐[7],如抚仙湖1 m新真空太阳望远镜原气象站[8-9]。
根据未来天文台站自动气象站的发展趋势,气象站要具备低功耗、低成本、高可移动性和完备的软硬件功能等特点,本文使用基于ARM的嵌入式系统实现1 m太阳望远镜自动气象监测系统的开发。基于ARM的嵌入式系统是微控制器和个人计算机的折中产品,可以运行一个经过裁剪的Linux系统,提供丰富的软件功能,其性能满足多任务的快速数据处理需求,同时有较低的功耗和较高的可移动性。本文以1 m太阳望远镜气象站系统改进为例进行系统的开发和测试。
2 改造方案
2.1 1 m太阳望远镜现有自动气象监测系统存在的问题
1 m太阳望远镜位于抚仙湖太阳观测基地,隶属于中国科学院云南天文台,是我国21世纪初主要的地面光学及近红外太阳观测设备,有效口径为1 m,真空窗直径达到1.2 m,是目前世界上口径最大的真空望远镜,可在0.3~2.5 μm波段对太阳进行高分辨率成像和多波段光谱观测,测量太阳磁场的精细结构和高时空分辨率的演化过程。1 m太阳望远镜原自动气象监测系统结构见图2(a)。
图2 1 m新真空太阳望远镜原气象站。(a)原气象站系统结构图;(b)原气象站2017~2018年数据丢失率
自动气象监测系统在实际使用中遇到以下问题:
(1)数据丢失:2017~2018年有225天没有数据记录,对有数据的140余天进行统计,数据丢失率在6%左右,整个系统处于不可控状态,数据丢失统计结果如图2(b)。
(2)数据离线存储,不便于远程和本地的数据查询。
(3)自2019年7月起,系统频繁宕机导致无法获取气象数据,尤其是风速等信息,对1 m太阳望远镜的安全带来了极大的隐患。同时,由于无法提供观测时间内的环境信息,已经影响如自适应光学(Adaptive Optics, AO)系统的数据处理。
(4)原自动气象监测系统软件是个封闭系统,无法根据实际情况自行增减功能。
鉴于上述情况,本文在利用原有气象参数传感器的基础上,使用基于ARM架构的嵌入式系统开发一套功能完备、高稳定性、低功耗、低成本的自动气象监测系统。系统目的是以一定频率为抚仙湖太阳观测站内所有设备提供站点实时的气象信息,保障1 m太阳望远镜及周边设备的安全,同时站点内所有的仪器设备可以获取气象环境信息。
具体要求包括:
(1)每隔10 s向1 m太阳望远镜提供温度、湿度、雨量、气压、风速、风向、露点、辐射强度、观测天区图像等信息,并可以通过浏览器访问;
(2)获取其他台站提供的基本太阳活动信息,并在发生剧烈太阳活动时给出提示;
(3)极端气象条件报警:当风速、湿度、温度、露点等达到预设警报值时,通过声光等手段报警;
(4)由于传感器、数据传输等造成的数据丢失率 <10%,即每天数据丢失小于864条(共8 640条),约合2.4 h的气象数据;
(5)气象环境数据按标准归档到数据库,方便日后查询和分析;
(6)可以在外网获取实时气象信息。
2.2 系统设计
2.2.1 系统总体结构和功能
系统由本地和远程两部分构成,本地包括数据获取、监控报警、数据入库等。图3是系统结构及功能图,远程包括显示实时气象数据和当天历史气象数据以及通过百度数据可视化的内网隧道功能为外网用户提供气象信息。图4是系统软件功能示意图。
图3 系统结构及功能图Fig.3 System structure and function diagram
2.2.2 本 地
本地包括气象站数据采集、数据存储、监控报警及数据处理。
(1)气象站数据采集
通过访问1 m太阳望远镜原有气象站上位机获得气象数据,可以采集风速、雨量、温度、气压、辐射、风向、湿度等数据,通讯协议支持MODBUS和XPH,本文采用MODBUS通讯协议与气象站上位机通讯。
(2)数据存储
系统每隔10 s访问一次气象站上位机并将数据存储到本地,为了加快数据的成图速度,原始数据存放在内存中,并定期备份到本地磁盘。
(3)监控报警
天气预警流程如图5,当风速高于12 m/s或有太阳活动爆发时通过声光等手段发出预警。
(4)数据处理
数据处理包括气象传感数据包的拆分和校验、数据的折线图显示(最大值、最小值、均值)、预警、全天图像的数据获取。
图4 软件功能示意图Fig.4 Software function diagram
图5 天气预警流程图Fig.5 Weather warning flow chart
2.2.3 远程访问
远程包括网络服务器、MySQL数据库及百度数据可视化。
(1)网络服务器
网络服务器基于NodeJS开发,图6是网络服务器界面,提供气象数据、天区实况、耀斑爆发等信息,点击气象参数可以查看当天对应参数的历史数据。
(2)MySQL数据库
由于气象数据的入库与采集是并行的,此模式会遇到两个问题:(1)连接数据库和写入数据花费的时间小于10 s,而数据的频率是10 s一次,导致数据的重复存储;(2)若数据库长时间连接异常,会造成数据丢失。针对这两个问题,系统的解决方案如下。
创建missing.csv文件,当数据库连接异常时,将这段时间的新数据缓存到missing.csv,待连接恢复后将数据库的最新数据的写入时间和丢失的数据做比较,如果不同则将missing.csv的数据存到数据库;如果数据库连接正常,将前一次存储的数据和最新获取的数据作比较,两者相同则不插入数据库,两者不同则插入数据库。这种方式既避免了数据的重复存储,也避免了数据丢失,通过这种方式将数据库访问程序与上位机访问程序分离后不会再出现数据库数据与本地数据不同的情况,显著提高了数据的完整性和系统的鲁棒性。图7是防数据丢失程序流程图。
图6 网络页面Fig.6 The web page
图7 防数据丢失程序流程图Fig.7 Data loss prevention program flow chart
(3)百度数据可视化:为了便于外网用户访问气象数据,本文采用百度数据可视化平台提供外网数据可视化服务。数据可视化是百度云推出的数据可视化服务平台,目标是解决报表和大屏的数据可视化问题,解放数据可视化系统的开发人员。大屏与报表的图表数据源可以复用,用户可以方便地为同一套数据搭建不同的展示形式,实现在外网访问内网的气象站数据。本文使用MySQL模型直接读取数据库中的数据,显示实时环境信息和历史气象信息的折线图。
2.3 系统调试及运行测试
(1)运行状况
从2019年10月8日至2020年4月30日,系统已经稳定运行150余天,中途出现过网络断开多天的情况,但是网络恢复后,程序可以自动恢复数据,数据库的数据没有丢失,即断网期间本地存储的数据全部同步到数据库一端,说明气象站的数据管理方案是可靠的。
(2)数据量
系统7 × 24 h运行,每天本地备份的数据量为500 kB,一年数据量约为180 MB;全天图像和各监测量趋势图总计1.5 MB,一年数据量约为550 MB。系统每隔一年清理一次本地的备份。
(3)数据丢失率(除去停机等特殊情况)
截至2020年4月底,每天的数据丢失率如图8(a),可以看到在气象站运行初期,由于需要进行调试,系统的整体运行状态较稳定运行期间差一点,但是仍然达到数据丢失率小于10%的要求。图8(b)是4月最后10天的运行情况,图8(c)是2019年10月至2020年4月的运行情况。通过统计发现,系统的数据丢失率在4%左右,满足预期。
3 总结及未来计划
3.1 总 结
目前系统基本实现了预期目标,运行稳定,满足日常使用要求。系统在日常工作状态下功耗约为10 W,在断电情况下7 800 mAh的微型不间断电源能供电4 h左右,硬件成本只相当于同等功能个人计算机的1/4左右。同时搭载的Linux系统生态完整,满足气象站数据处理的硬件和软件要求,又因其强大的扩展功能和便携性等特点,未来考虑用基于ARM架构的嵌入式系统进行更多软件的开发。
3.2 未来计划
(1)采用更高性能的ARM开发板,提高数据处理能力和存储介质的访问速度;
(2)采用更可靠的RS485串口服务器,获得更稳定的数据访问;
(3)在高性能ARM开发板的加持下,开发集成视宁度监测 + 云量 + 气象参数等下一代高性能、低功耗、低成本一体式天文环境监测系统。
图8 天文气象站数据丢失率统计图