田阔 明平寿 杨恒 张梦辉 皮理想
1.中冶武勘工程技术有限公司;2.中冶武勘智诚(武汉)工程技术有限公司
本文提出了一种组件式数据采集模型,基于该模型,设计并实现了一套组件式数据采集系统。其核心思想是将数据采集过程分解为通信、解析、输出三个子过程,对应通讯组件、解析组件、输出组件,实现物理世界到数字空间的映射,三类组件分别负责与设备数据交换、报文解析、数据输出。只要组件继承接口模块,就能纳入数据采集系统中统一管理,能够对每一个组件单独进行维护和升级,尽可能地复用每一个组件成果,等同于利用不同协议数据采集中的共性子过程,实现现有资源再利用,减少研发投入、技术难度、运维成本效果。
没有数据采集,物联网将是无源之水。收集设备数据、过程数据、质量数据,可以用于监测设备运行状态、优化生产流程、预测性维护、提高产品质量、改进用户体验、提高能源利用效率等场景,是企业提质、降本、增效、节能、减排活动的重要支撑[1-3]。
一个工厂所涉及的物联网设备基数多,不同设备间数据格式和协议不一,实现高效、可靠、统一的数据采集成为了一个难题[4]。主流的数据采集方案是给每一类设备每一类协议开发独立的采集程序,众多独立采集程序直接部署或发布成微服务,采集程序将数据汇聚到消息队列中,供持久化模块统一消费存储[5-8]。当新增一类协议数据时,需要技术人员新建一项较为庞大的软件工程,存在一定技术难度,还需在软件进行充分测试后,再对新设备数据进行接入与持久化;另外,繁多的采集服务,增加采集系统交付周期、研发成本,也给工厂采集数据运维带来困难。
物联网数据采集系统包括设备连接管理、报文结构解析、数据内容输出三个模块,由此可以推导出:一个完整的数据采集过程,可以分解为通信、解析、输出三个子过程。进一步地,本文提出一种组件式数据采集模型,其核心思想在于采集过程组件化,将物理世界中的通信、解析、输出三个子过程,分别对应数字空间的通讯组件、解析组件、输出组件,通过组合不同的通讯组件、解析组件、输出组件,形成多个数据采集通道,完成对多设备多协议物联网数据进行采集,并提供数据持久化、显示服务。
如图1 所示为本文提出的组件式数据采集模型示意图。其中,采集通道是通讯组件、解析组件、输出组件三类组件的组合,实现与设备或传感器通信、数据格式解析、数据输出工作,实现物联网数据接入、数据汇聚。
图1 组件式数据采集模型Fig.1 Component based data collection model
(1)通讯组件是物理世界中的通信在数字空间的映射,每一种通讯组件与通信协议一一对应,支持TCP、MQTT、HTTP、串口、OPC UA 等多种通信协议,作为通信代理,被动或主动与现场设备建立通信信道,接收或轮询现场设备数据并发送到解析组件,同时将解析组件返回的反馈数据,回传给物理设备。
(2)解析组件是物理世界中的数据解析在数字空间的映射,每一种解析组件与数据协议一一对应,支持HJ212、JTT809、CJT188、DLT645、BACnet、Modbus等多种数据解析方法,解析来自通讯组件传递的数据,将解析结果发送到输出组件,并计算反馈数据发送给通讯组件。
(3)输出组件是物理世界中的显示输出在数字空间的映射,支持数据库插入、HTTP 接口传输、文件写入、控制台打印等多种数据持久化、发布、显示方法,用于将来自解析组件的数据输出到指定的数据库系统、文件系统或介质中。
如图2 所示是在上述组件式数据采集模型的基础上形成的数据采集系统架构图,对各类组件做了接口约束,引入通道服务对组件调度管理,实现组件的统一调度管理,同时确保当现有组件不能满足数据采集需求时,技术人员可在数据采集系统里新增一个继承了接口模块的组件,并注册到组件服务里,完成新协议新设备数据接入、存储。通讯组件、解析组件和输出组件都是独立的组件,可以分别进行维护和升级,通过对现有资源再利用,减少研发投入、技术难度、运维成本效果。
图2 组件式物联网数据采集系统架构图Fig.2 Architecture diagram of component based IoT data collection system
每一个组件通过继承一个或多个接口,实现对组件进行约束,纳入到通道服务中统一管理,其中具体描述如下:
(1)通用组件接口,用于定义和约束通讯组件、解析组件、输出组件的名称、编号、参数列表、日志函数,并使组件符合采集系统要求;
(2)通用组件方法,用于固化通讯组件、解析组件、输出组件所需的通用方法,包括组件名称的查询及设置方法、组件编号的查询及设置方法、组件参数的查询及设置方法、组件日志函数的设置及调用方法;
(3)通讯组件接口,用于定义通讯组件的启动方法、关闭方法,其中启动方法、关闭方法均约束了入参类型,并强制要求启动和关闭方法返回执行状态;
(4)解析组件接口,用于定义解析组件的执行方法,并约束该执行方法返回执行状态;
(5)输出组件接口,用于定义输出组件的执行方法,并约束该执行方法返回执行状态。
上述接口模块定义通讯组件、解析组件、输出组件的接口,实现多个组件通用方法,确保组件在采集系统中正确运行。同时,在现有组件不能满足数据采集需求时,允许技术人员在数据采集子系统中新增一个继承了接口模块的组件,完成新设备新协议的数据接入、解析、输出工作。组件式数据采集系统,并不拘泥具体设备具体协议,也不局限具体的数据发布和共享方式,只要组件继承接口模块,就能纳入数据采集系统中统一管理。
一个完整的采集过程分解为通信、解析、输出三个子过程,对应通讯组件、解析组件、输出组件。这三类组件职责明确,分别负责与设备数据交换、报文解析、数据输出。通过对组件的调度管理,复用每一个组件成果,等同于利用不同协议数据采集中的共性子过程。
其中组件有序调度是关键,由通道服务对通讯组件、解析组件、输出组件进行管理,包括提供组件注册服务;查询通讯组件、解析组件、输出组件编码及名称清单服务;根据组件编码获取组件实例化;对通讯组件、解析组件、输出组件编码进行组合,形成采集通道;提供采集通道的开启、关闭功能。
依据章节2 的系统架构图,编程开发了一套组件式采集系统软件,目前已应用到多个大型项目中,主要实现了组件模块、通道服务、日志服务、数据发布等功能。
组件模块包括组件接口,以及继承了组件接口的通讯组件、解析组件和输出组件。其中通讯组件包括TCP服务通讯组件、TCP 客户端通讯组件、MQTT 服务通讯组件、MQTT 客户端通讯组件、HTTP 服务通讯组件、HTTP 客户端通讯组件、串口通讯组件、OPC UA 通讯组件;解析组件包括HJ212 解析组件、JTT809 解析组件、CJT188 解析组件、DLT645 解析组件、BACnet 解析组件、Modbus 解析组件;输出组件包括关系数据库输出组件、时序数据库输出组件、文件输出组件、WebAPI输出组件、控制台输出组件、WebSocket 输出组件。
通道服务负责通道的创建、初始化、运行、销毁全过程,是数据采集系统的核心模块。通道服务所管理的通道,实现通讯组件、解析组件、输出组件的注册、组合、调度,负责目标协议或设备的数据采集。如图3 所示为通道服务编辑界面,如图4 所示为数据采集通道运行截图。
图3 数采通道编辑Fig.3 Data acquisition channel editing
图4 数采通道运行截图Fig.4 Screenshot of data acquisition channel operation
日志服务提供了系统日志和报文日志的记录和存储,为故障排查和问题分析、性能监控和优化、安全审计和合规性、资源利用和容量规划、业务分析和决策支持提供数据支撑。日志服务在系统运维、安全监控、性能优化和合规性等方面发挥着重要的作用,帮助保障系统的可用性、安全性和稳定性。
通过使用本采集系统的MQTT 代理进行数据发布,不同设备和协议的数据可以以统一的方式进行共享。其他设备或应用程序可以订阅相关的主题,从而实现数据的订阅和获取。这种方式可以有效地实现设备间的数据交换、共享和集成,提供更灵活和扩展的数据通信方式。
使用统一的数据格式,配合MQTT 协议进行数据发布,可以简化系统的集成和数据处理流程,提高系统的可靠性和可扩展性。同时,通过使用发布-订阅模式,可以实现数据的实时更新和传递,满足实时数据共享和订阅的需求。
本文根据物理世界中的数据采集过程,推导出一种组件式数据采集模型,即物理世界的设备数据交换、报文解析、数据输出与数字空间的通讯组件、解析组件、输出组件一一对应。基于该数据采集模型,设计了组件式数据采集系统架构,通道是采集系统的核心,主要用来对三类组件进行管理,包括提供组件注册服务、查询组件编码及名称清单服务、对组件实例化、对组件进行组合、提供通道的开启与关闭功能。最后实现了组件式数据采集系统,其系统具备组件模块、通道服务、日志服务、数据发布四大功能。该数据采集系统在项目中的应用实践表明,可以用配置的形式高效完成物联网数据的接入和持久化工作,有效提高了设备接入效率,降低了系统运维成本。