APP下载

道路气象环境监测系统设计

2024-10-10王锋

科技创新与应用 2024年29期

摘 要:为预防很多不定时或不可预知因素(暴雪、飓风、暴雨和道路倾斜等)会对车辆行驶环境安全构成威胁,该文实现一种基于物联网的龙芯架构和Loongbian操作系统,采用多采集节点与中心处理节点架构设计的道路气象环境监测系统,旨在提高道路气象环境监测安全,系统具有良好的可靠性和扩展性,能够满足实际应用需求。

关键词:物联网;边缘计算;气象信息;道路监测;系统设计

中图分类号:U495 文献标志码:A 文章编号:2095-2945(2024)29-0138-04

Abstract: In order to prevent many uncertain or unpredictable factors (blizzard, hurricane, rainstorm, road inclination, etc.) from threatening the safety of the vehicle driving environment, this paper implements a Loongson architecture and Loongbian operating system based on the Internet of Things. The road meteorological environment monitoring system is designed with the architecture of multiple acquisition nodes and central processing nodes, which aims to improve the safety of road meteorological environment monitoring. The system has good reliability and scalability, and can meet the needs of practical applications.

Keywords: Internet of Things; edge computing; meteorological information; road monitoring; system design

很多不定时或不可预知因素(暴雪、飓风、暴雨和道路倾斜等)会对车辆道路环境安全构成威胁。近年来,国务院办公厅、国家发展改革委、交通运输部等颁布关于推行交通运输信息化、智慧交通、数字交通等举措。同时,2021年5月6日,住房城乡建设部、工业和信息化部确定北京、上海、广州、武汉、长沙和无锡6个城市为智慧城市基础设施与智能网联汽车协同发展第一批试点城市。

为了获取到道路气象环境的实时信息,设计出了基于龙芯的道路气象环境监测系统,系统采用基于国产化的处理器芯片2K1000,是面向工业控制与终端等领域的低功耗通用处理器,同时,操作系统也采用国产自研的Loongbian的操作系统。考虑到道路的恶劣环境,在传感器方面选择了3款工业级气象传感器模块作为感知端,分别为德国Luff 气象传感器、芬兰维萨拉气象传感器、Luff 雪深传感器,具有良好的精确度和抗干扰、稳定性。在网络传输方面考虑到后续客户针对数据的解析和利用,采用MQTT协议对数据进行传输,CJSON格式对数据进行封装处理。

1 系统整体架构

本系统采用物联网架构,系统完成各个层之间的链接。系统体系架构4个层次为:感知层、传输层、处理层、应用层。系统架构图如图1所示。

感知层由3个分别是德国Luff气象传感器、芬兰维萨拉气象传感器、Luff 雪深传感器的数据发生器或传感器模块构成数据感知模块,利用传感器采集气象环境信息。

传输层由软硬件龙芯终端及Loongbian操作系统构成,在系统中编写接收传感器数据、对数据进行CRC校验、数据的JSON格式封装、Sqlite数据库存储,围绕着数据采集、分析、处理、封装和传输整个流程实现。采用了ARM的采集终端,在通信方面可使用有线或无线的方式把数据传输到服务器,从而实现对各类数据资源的共享和优化管理。

处理层搭配MQTT云端服务器,以及通过MQTT协议把数据发布到Mqtt Broker的下位机程序。主要是获取采集终端送过来的数据,在云服务器端部署Mqtt Broker,并为应用层应用程序平台提供接口。

应用层直接面对用户,为用户提供丰富的服务功能,主要解决数据获取处理、人机界面问题,采用MQTT客户端,在应用层我们开发了客户端程序,用来显示传感器数据信息和报警信息等。部署在PC端的Mqtt Client程序构成,负责从Mqtt Broker服务器订阅数据并实时显示(图2)。

2 系统构成

道路气象环境监测系统由3部分构成:数据感知层,通过连接龙芯采集终端UART端口,即RS485总线采取轮询的方式实时或按时间间隔采集获取传感器数据。数据处理层:数据服务器。存储各数据终端送过来的数据,具有数据查询和统计结算功能。应用层:包含PC端web登录及移动端APP。可进行分类分项查询,以图形、报表等方式显示数据,同时具有管理控制功能。

2.1 数据感知层

本系统选择了3款工业级气象传感器模块作为感知层模块用于感知气象信息,分别为德国Luff气象传感器、芬兰维萨拉气象传感器、Luff雪深传感器,3款传感器均采用RS485接口作为数据通信接口,通过UMB-ASCII 2.0数据协议作为测量值的通信与输出,统一配置半双工RS485,波特率9 600,无校验,8位数据位,1位停止位等配置。也可以通过模拟器来模拟传感器数据,对系统进行测试(图3)。

2.2 数据处理层

数据采集终端选择基于龙芯2K1000处理器的龙芯终端,板子运行Loongbian操作系统,基于Linux 5.7 内核。

基于Loongbian操作系统的下位机程序采用2套程序来完成以下工作:通过RS485接收传感器数据、对数据进行CRC校验、数据的JSON格式封装、Sqlite 存储,以及通过MQTT协议把数据发布到Mqtt Broker服务器端。

考虑到以后产品的成型,龙芯2K1000芯片下位机程序采取2套程序,建立多个采集节点-中心节点的模式,如图4所示。

采集节点-中心节点模式的主体思想是在每一个数据采集端需要部署一套气象环境监测系统作为采集节点,每一个采集节点对应实际场合的某路段的某个监测点,该监测点部署多个不同类型的传感器用于采集不同气象信息和采集节点终端,对该监测点的环境进行实时监测。

在数据中心再部署气象环境数据处理系统作为中心节点来接收每一个采集节点终端发送过来的数据。

2.2.1 采集节点的工作流程

传感器数据的接收采用RS485总线,连接到教育派UART5口,设备节点为“/dev/ttyS3”,通过RS485转USB口连接到电脑,用来接收数据发生器的模拟数据。

龙芯教育派接收到数据后,首先需要对数据头和长度进行判断,判断是否符合相应传感器数据报文;符合后,进行CRC校验,采用逆向算法进行CRC校验,校验完成,进行入队列InQueue操作,同时存储到sqlite数据库。另外再起一个TcpClient网络处理线程,此线程首先进行出队列OutQueue操作,此时创建一个结构体来对数据进行打包处理,加入帧头、帧尾、监测点、正向算法加入CRC校验等数据进行封装,最后进行TCP socket发送数据。

2.2.2 中心节点工作流程

中心节点同样采用龙芯终端模块,Loongbian系统下开发程序,中心节点首先创建一个TCP Service服务器监听线程,接收来自不同采集节点终端客户端的连接,接收的数据首先进行帧头、CRC以及帧尾判断,紧接着对不同传感器的数据进行入队列和保存数据库操作,对数据进行处理时加入获取时间数据块;另外一个线程进行出队列操作、调用cJSON库对数据进行JSON对象格式的转换并通过MQTT协议调用mosquitto库发布数据到Mqtt Broker。

2.3 应用层

应用层为PC端的Mqtt Client程序。数据处理层的龙芯终端程序把数据发送到MQTT服务器端,MQTT是基于客户端-服务器的消息发布/订阅传输协议,在PC端通过mosquitto代理服务软件搭建了MQTT服务器。有了服务器,自然就需要Mqtt Client端,因此需要开发一款PC Mqtt Client端用来订阅数据,并实时显示数据的功能程序。

根据MQTT协议特点,对于数据的订阅,只要向MQTT服务器“订阅”某个topic,服务器就会自动创建该topic,另一个client就可以往这个topic发布消息。

MQTT的服务器就是“代理”(broker)功能,负责client管理和消息转发。

只要订阅了某个topic,当该topic被另一个client发送消息时,broker会自动地向订阅了这一topic的client转发消息,不管订阅者有多少个,都能够订阅到数据,即形成了单服务器(broker)-多Mqtt Client的模式。

3 传感器数据报文格式设计

道路气象环境监测系统终端采集各大传感器数据,需要明确每个感知模块的数据格式,根据各个传感器模块的数据手册确定其数据格式。

3.1 风速传感器数据格式设计

根据WS600发送数据确定WS600数据报文格式如下:

Lufft 600: $ 28 673 M 00 100 42 893 00 200 46 825 00 300 51 890 00 401 03 499 00 501 65 357 00 805 65 520 00 620 00 000 00 820 00 000 00 700 00 000×49 743\r。

其中,M表示测量指令,42 893表示[+60 ℃-(-50 ℃)]/65 520×42 893+(-50 ℃)=22 ℃,空气温度值,46 825表示100/65 520×42 893=65.5%,相对湿度值,51 890表示[1 200-300]/65 520×51 890+300=1 012.8 hPa,绝对气压值,00 376表示75/65 520×376=0.43 m/s,实时风速值,65 357表示360/65 520×65 357=359.1°,实时风向值。65 520表示100/65 520×65 520=100%。

确定好感知模块的数据格式后,在龙芯终端程序中对数据格式建立相对应的结构体。

3.2 雨量传感器数据格式设计

雨量提供获取数据信息的协议有3种:ASCII协议、SDI-12协议、NMEA 0183 V3.0,考虑到与其他传感器的兼容性,本系统采用ASCII协议,统一挂载在一根RS485总线。

根据wxt520传感器ASCII 协议通信协议的数据命令和数据信息格式分析得出wxt520数据包格式如下

0r0,Dm=134 D,Sm=10.0 M,Ta=26.2 C,Ua=61.3 P,Pa=959.4 H,Rc=0.00 M,Ri=0.3 MGez,

式中:0r0为合成数据信息,Dm为风向,Sm为风速,Ta为温度,Ua为湿度,Pa为大气压,Rc为累计雨量,Ri为降雨强度。

3.3 雪深传感器数据格式设计

选用一款激光雪深探测器,可以远距离测量雪深,数据精确,测量范围为0~15 m,使用光学测量方法,不受温度和风的影响。

报文格式如下:

B001:4E:SS;1=085;003.011 7;+02.125 3;185;+15;17.8;15:00:8E。

其中,+02.125 3 代表雪深2.12 m。

4 数据库设计

龙芯Loongbian操作系统,基于Linux 5.7内核属于嵌入式Linux操作系统内核。在选择数据库方面从占用空间和操作便利性方面考虑,选择SQLite数据库作为数据的存储载体。在建立数据库表方面从采集的数据源划分我们建立了3个表格,见表1—3。

5 客户端程序设计

客户端Mqtt Client客户端采用C#语言开发,采用发布/订阅模式传输机制从MQTT服务器获取数据,采用MQTT的服务器中间件为Mosquitto,界面上通过设定服务器地址,创建Mqtt Client客户端,点击“订阅数据”按键后会自动发送订阅主题获取数据(图5)。

6 结论

针对道路气象环境数据监测、自主国产化等需求,提出来一种基于国产龙芯芯片与系统的道路气象环境监测系统设计,系统采用全新的基于物联网的“龙芯2K1000芯片+Loongbian系统”下的边缘端开发,以及多采集节点与中心节点的架构方式。可以满足道路气象信息环境数据采集处理等需求,系统运行稳定可靠,数据采集处理实时性高,说明采用此架构进行系统设计合理可靠,为后续国产化系统应用和数据处理提供经验。

参考文献:

[1] 石龙龙,林宝军,王正凯,等.基于龙芯的高可靠性卫星数据处理系统[J].微电子学与计算机,2021,38(7):25-29.

[2] 张卓.基于气象信息的变电站监测系统设计[D].太原:中北大学,2023.

[3] 李长亮,马宗普.气象信息在宁夏高速公路运行监测系统中的应用[J].中国交通信息化,2022(S1):304-306.