基于Netty+ActiveMQ 的农村生活污水处理设施监测数据通信管理平台设计

2019-08-23 10:41刘祥宏潘泉涌
数字通信世界 2019年7期
关键词:下位数据包运维

刘祥宏,潘泉涌,方 宽

(1.浙江省建筑科学设计研究院有限公司,杭州 310000;2. 衢州市住建局,衢州 324000)

1 系统架构图

本系统建立在J2EE 平台上,将 Netty,ActiveMQ 消息中间件,MySQL 数据库、redis、json 等技术相结合,构建更加智能、更加稳定和并发更好的的通信管理平台。通信管理服务系统搭建在云平台之上,充分利用现代化信息技术手段实现农村生活污水处理设施终端数据采集的信息化、集约化,依托云平台的理念和优势,将已有的专业系统纳入其中,为主管部门、运维企业、其他相关部门提供统一的数据服务。系统架构图如图1所示。

图1 系统架构图

本系统最大的亮点在于使用Netty 作为通信框架,支持海量并发的同时,通过其预制的编码和解码器,实现对不同通信协议的解析后,将数据统一成通用json 格式推送到消息中间件。这样对于监管、运维等应用平台而言,数据格式统一、规范,便于使用。

本文通过对比分析国内现有的数据采集和通信管理解决方案,采用Netty+ActiveMQ 相结合的方式,降低技术难度的同时,实现农村生活污水治理设施终端数据采集、传输管理和及时推送。

2 数采和控制实现

平台可实现系统用户的需求,如查看农村生活污水处理设施的流量计、多功能电表、在线水质检测仪等实时数据,并根据设计好的指令对上述设备进行控制操作。Netty 与消息中间件的结合完美解决了通信链路和消息推送问题,为实现平台的通信管理和数据的实时推送奠定了基础。详细设计图如图2所示:

2.1 数采的设计与实现

平台的服务器分为Netty 通信服务与消息中间件两个部分。

(1)Netty 通信服务包括平台通用功能和通用接口,用来实现与各下位机(数采仪)的数据传送并将数据按照统一json 格式送入消息中间件,Netty 通信服务在初始化时与消息中间件(ActiceMQ)建立通信连接;

(2)消息中间件(ActiveMQ)实现消息的订阅和推送,主要负责将数据推送给监管平台、企业运维平台、其他授权接入的第三方平台,实现了数据的实时交互。

图2 通信管理详细设计图

通信管理平台将农村生活污水处理设施终端数据推送到应用平台的流程描述:

下位机(PLC、单片机、智能网关等)采集各传感器的实时数据,将这些数据上传到Netty 服务器,当与Netty 服务器第一次建立连接时,触发channelActive 方法建立通道,该通道在断开之前一直存在,此后下位机定时发送数据,并直接触发channelRead 方法接收,接收到的数据由平台统一处理,按照事先设计好的数据格式组成通用json 数据包,再按照设计的主题推送至消息中间件(ActiveMQ),监管平台、运维平台订阅相应主题即可获取推送消息(数据)。

Netty 服务器采用多线程服务器,对于每一个连接请求,dispatcher 都会为其创建并分配一个线程,该线程负责这个请求的处理,优点是执行粒度是完整的处理流程,处理逻辑清晰,易于开发。通信过程中,可通过心跳包实现长连接,通过线程池控制服务端线程数的快速增长。

除了消息中间件(ActiveMQ)以外,平台实现了一组restful风格的通用数据接口。监管平台、企业运维平台等可以在获取授权后,通过这些接口获取历史数据、终端信息,下达控制指令等。

平台实现了对TCP 字节流(数据帧)、MQTT 的数据解析。

2.1.1 TCP 字节流(数据帧)

下位机(数采仪)可以按照约定的数据包格式,将终端监测数据打包,以TCP 字节流(数据帧,字符集为utf-8)的方式上传。数据包格式可做如下设计:服务端收到数据包以后,按照通信协议解包以后,再将数据组合成通用格式的json 数据包,送到消息中间件。

Netty 对于TCP 字节流(数据帧)有多种解码方式,可以采用定长数据或者固定结尾字符(比如以回车换行作为结尾符)等方式,可以有效解决半包、粘包等问题。

2.1.2 MQTT 消息

根据农村生活污水处理设施点多面广、网络条件差、监测数据数据量少、实时性和安全性低的特点,特别适合采用MQTT技术。本次设计基于MQTT 3.1.1版本,在Netty 服务端实现了QoS=1 和QoS=0的消息订阅/发布,并根据实际需要,设计了up、data、ctrl、alarm 四个主题,分别用来订阅和发布终端设备信息,监测数据,控制指令和报警信息。

图3

MQTT 消息体的数据包采用json 数据格式,将终端编码、数据等按照协议打包以后按照约定主题发布即可。Netty 服务器在下位机创建通道时,可按照终端编码事先创建四个主题。如,终端编码为2018122500001,则创建202018122500001/up、2018122500001/data、2018122500001/ctrl、2018122500001/alarm四个主题。通信管理平台提供了设备注册功能,通过注册且处于启用状态的终端,可自动根据终端编码创建上述四个主题。

2.1.3 JSON 数据格式

JSON 是一种轻量级数据交换格式,它采用完全独立于语言的文本格式,此特性使JSON 成为理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,提升网络传输速率。本平台的各数据通信环节均采用JSON 格式通信,使用对象和数组两种结构。对象在JSON 格式表示为“{ }”中的内容,数组在JSON 格式是中括号“[ ]”中的内容,通过这两种结构可以表示各种复杂的结构。

2.2 控制实现

当用户发送控制信息时,数据又是如何从上位机(服务端)到达控制设备的呢?这个流程和2.1中介绍的数采流程相反。值得一提的是,采用MQTT 消息订阅和发布方式时,如果没有根据终端(下位机)的编码进行主题创建,那么指令下发时,所有订阅了ctrl 主题的终端都会收到指令消息,然后终端需要根据消息里面的终端编码或者具体指令来判断该指令是否需要执行。

3 平台功能设计

通信管理平台功能效果图如下:

图4

3.1 接入安全控制

下位机在接入通信管理平台时,可以通过验证用户名、密码以及注册设备编码等方式进行接入端身份验证。平常通信过程中,可以通过到包数量和数采频率对通信进行动态监控,如果到包数量异常,可以人为关闭通道和加入通信黑名单等手段进行通信管理。

3.2 接入设备管理

通信管理平台通过设备白名单对接入设备进行验证。农村生活污水处理设施终端(下位机)在平台注册且启用时,才有权限接入本平台。一旦判定接入设备存在风险,管理员可以手动将风险设备禁用或者踢出白名单,Netty 服务将关闭该设备的通信通道,切断连接,中止接入。该设备再次接入时,会因为不在白名单而被拒绝。

3.3 监测设备及数据管理

以农村生活污水治理设施终端为最小单位,管理终端的监测设备(传感器)。通过列表结合图表的方式,可以动态展示各终端监测数据在时间维度的变化情况,结合报警数据。

3.4 报警数据

下位机发生异常时,向平台传输报警数据。平台本身根据调度任务分时段计算各下位机的数据到达率,如果掉包率过高或者到包数远超预计,可以对用户进行警告提示。

4 结束语

本平台使用Netty+消息中间件技术解决了下位机与服务器双向通讯的问题,后台可以随时向监管平台、企业运维平台实时推送消息(数据),以保证终端数据的真实、实时。下一步工作将在通信协议(数据格式)上进行进一步细化、分类和规范,将数据采集、管理、控制、实时推送做到最优。

猜你喜欢
下位数据包运维
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
运维技术研发决策中ITSS运维成熟度模型应用初探
提高火力发电厂自动电压控制系统投入率的措施
发射机房监控系统之下位机
C#串口高效可靠的接收方案设计
风电运维困局
杂乱无章的光伏运维 百亿市场如何成长
配电线路的运维管理探讨
围观党“下位”,吐槽帝“登基”