时间:2024-07-28
丁 远
(1.中煤科工集团沈阳研究院有限公司,辽宁抚顺 113122;2.煤矿安全技术国家重点实验室,辽宁抚顺 113122)
工业互联网[1]对数据扁平化要求较高,提倡信息端与生产现场协同制造。在煤矿安全监控系统[2]中,1 个煤矿按照40 台分站布局来计算,可安装1 000~1 200 台传感器,每个传感器节点在不停的更新数据。由于传感器完全分散,如果完全采用云计算[3]方式不对数据进行分布式采集处理,随着传感器不断增加时,当前网络逐渐臃肿,传输效率与信息安全均得不到有效保障,大量的数据给数据库存取技术以及数据查询带来挑战;另外由于工业互联网二级节点系统软件与煤矿监控系统在上层协议、格式一般是不同的,所以煤矿监控系统接入工业互联网还需要在监控系统的交换机端在进入工业互联网时进行格式封装与协议转换;另一方面,对于一些实时性要求高的工业现场,云计算过度依赖服务器,一旦出现宕机、网络异常等,都将造成不可以估计的损失。鉴于此,提出并设计了一种具备分布式计算能力且通用性强[4]的网关方案,协议层建立在由MQTT 协议[5]构建的完整消息分发系统,实现分布式计算、编译部署的完整消息分发系统,可实现数据采集与分布以及煤矿监控系统接入工业互联网功能。
网关具备2 种功能:一是协议转换,对远端云平台指令分析下发以及对下行监控分站数据计算与处理后上传;二是接入工业互联网二级子节点系统。从硬件通信接口来看,监控分站对上层设计一般采用以太网、LONWORKS、CAN、485 等总线;从软件协议看,各个协同厂家的通信协议均为自定义非标协议,协议不统一的;从AQ 6201—2019 行业标准[6]来看,对数据处理时间,上层指令响应速度均有严格要求。因此网关硬件架构要围绕多接口来设计,软件架构要围绕“强实时性”以及协议统一设计。
根据需求分析确定硬件架构设计需要融合多总线, 网关硬件架构图如图 1, 系统使用STM32F429RCT6 作为主控芯片,该芯片主频可达到180 MHz, 具有8 路UART,1 路以太网控制器,2 路CAN 总线控制器。主控芯片通过UART 外挂4 片MAX3845 芯片实现4 路RS485 总线通信,2 路CAN总线通过内置CAN1、CAN2 控制器外加2 片CTM1051 收发器实现,以太网接口通过内置以太网控制器加外置DP83848C 网卡实现,WIFI、4G、5G 等模块通过UART 加相应通信模块实现。
图1 网关硬件图Fig.1 Gateway hardware diagram
需要强调下,因为目前大部分模块,设备中RS485、LONWORKS、LIN 总线、WIFI、4G 等,厂家为了兼容性以及使用方便性考虑,往往设计成UART接口,所以选择主控芯片时,具备UART 的数量往往是优先考虑的。
网关软件主要负责监控系统与工业互联网二级子节点系统之间的指令处理和数据转发传输,是下行系统和远端云服务器之间的桥梁,软件体系结构如图2。
图2 软件结构图Fig.2 Software diagram
协议转换模块在网关的软件结构中起着承上启下作用:可根据总线接口的不同自适应加载相关通讯协议并且将下行系统上传的数据、指令应答等信息保存到临时数据存储区,主控上传模块负责监控数据缓存区的数据、状态是否改变,如改变立即上传,否则周期性上传,上传时先封装JSON 格式后再上报MQTT 客户端。驱动读写模块实现各个硬件操作,如RS485、4G 等。网口模块比较繁琐,不仅要操作内部控制器还有移植第三方开源TCPIP 协议栈,如LwIP 协议栈[7]。MQTT 模块构建了发布/订阅消息的转发模型,实现不同的客户端的即时通信。分布式计算模块属于软件架构中仅次于协议转换的核心模块,负责实现边缘计算功能,不仅实时分析云端服务器发出的请求指令与对下行设备的控制指令,而且还需要计算处理上行数据后上报云服务器,连通监控系统和工业互联网。
为了加强系统的实时性,网关使用FreeRtos 嵌入式实时操作系统作为任务调度的总管。使用RTOS 后,网关的应用程序由一系列独立的任务组成,每个任务之间有操作系统内核完成调度,不用开发者再使用定时器模拟调度,减少了开发周期并且避免了不必要的错误产生。
网关需要处理的数据很多,为了保证处理的实时性与正确性,需要考虑各个线程之间保证互不干扰和同一个内存空间当多个线程同时访问时数据完整性与正确性。另外,为了实现网关的内部系统资源与用户数据的隔离,数据处理中的各个线程间通信的同步与互斥采用信号量和事件组实现,采用共享内存实现不同任务间数据交互,提高了分布式计算的抗干扰性、增加了网关的可用性。另外新标准下,煤矿监控系统交换机一般都是以太网传输,并且本方案中的网关设备具备TCP/IP 的支持,网关可以与交换机进行通信,为了减少软件修改加快应用进度,网关采用Modbus 协议,这样下行系统只需少量修改便可直接应用。
根据传输数据的格式、物理接口等条件的不同,Modbus 通信协议可以分为适用于串行链路的Modbus RTU、Modbus ASCII,以及通过TCP/IP 传输的Modbus/TCP 等多种模式。为了方便在不同模式下的数据传输,Modbus 通信协议定义了1 个与基础通信层无关的数据应用单元在不同的传输模式下,只需要在其首位加上相应的附加域,便可以正常的传输数据信息。Modbus TCP 通信协议[8]是建立在物理层为以太网,并且取消校验和与地址等信息的Modbus协议簇中的一种,采用主机主动发送请求指令查询从设备,从设备被动应答的一主多从的通讯模式。Modbus TCP 协议为了实现相同IP 段的多个独立终端同时工作时的不冲突,协议头由4 个域(7 个字节)组成(简称为MBAP)。
另外当网关故障时,新接入的网关能否无缝链接,不需要重新进行配置,本设计采用STM32F429芯片内置全球唯一ID 码可以做标识识别主键,当设备更换时,云端服务器可以导入历史配置,灵活可扩展。工业互联网为了有效地管理和监控各个节点的数据,通过将部分计算能力迁移到网关,网关分担了繁重的计算任务,达到了提高工业互联网对设备的管理能力,使系统具有有很高开放性,提高了效率。
针对煤矿监控系统使用环境,为了达到对监控系统井下现场设备数据采集与控制,采用了MQTT协议构建了完整的消息转发系统。MQTT 协议是最初是由IBM 于20 世纪90 年代主导开发的物联网传输协议。它是一个开源、可靠的网络传输协议,采用轻量级的发布/订阅式消息[9]传输模式,可提供可靠的网络服务给低带宽和不稳定的网络环境中的物联网设备。
MQTT 应用于TCP/IP 的应用层,为了减少资源开销以及保证订阅/发布图题消息的实时性,MQTT使用TCP 的长连接。MQTT 属于1 对多消息,有3 种身份:发布者、订阅者以及消息代理。每一条MQTT命令消息都包含1 个只有2 个字节的固定报头,有些消息会携带1 个可变报头或有效载荷,为了实现在相同数据量条件下流量消耗最小,MQTT 基于二进制形式实现的。MQTT 协议报头见表1。
表1 MQTT 协议头Table 1 MQTT protocol header
Byte1 用于表示MQTT 消息的报文类型以及某些类型的控制标记,高4 位(bit7~bit4)表示协议类型,总共可以表示16 种协议类型,其中0000 和1111 是保留字段。首字节的低4 位(bit3~bit0)用来表示某些报文类型的控制字段,实际上只有少数报文类型有控制位。剩余长度从Byte2 开始,最长可达4 字节。所以剩余长度范围是Byte2-Byte5。
协议头中的服务质量字段决定了网关与工业互联网之间的通信质量。QoS[10]是发送者和接收者之间对于消息传递的可靠程度的协商,旨在协议层解决传输质量问题。QoS 可根据分发次数分3 个等级:QoS0 至多发送1 次,QoS1 至少分发1 次,QoS2 仅分发1 次。设计的网关为了保证效率以及准确性,选择QoS1 服务质量等级。QoS1 存在可能出现重复的问题,所以需要在应用里手动对消息进行去重设置,芯片的唯一ID 是网关与工业互联网之间的通信主键,当收到新消息的时候,通过消息的ID 来判断是否是重复的消息,如果重复丢弃,否则更新消息ID 并存储数据包。这样做就可以保证消息的可靠性和准确性的同时不会出现重复的问题,该算法适用于在使用MQTT 时需要保证数据的准确性的同时又要兼顾传输速度的情况,在应用程序客户端进行去重处理,就减少了对数据传输速度的影响。为了实现准确高效的订阅,每个客户端可设定不同主题进行消息过滤,当网关接收到带有确定的发布消息服务质量等级的发布消息后,主动将消息发送到消息代理服务器,消息代理服务器收到消息后按照内部的消息队列排列次序发送主题消息。
试验平台采用中煤科工集团沈阳研究院KJ1177X 监控系统与工业互联网二级子节点接入云平台(目前处于调试阶段没有正式运行),准备2 台KJ1177X-F1 监控分站,1 台通过以太网与网关连接,1 台通过CAN 总线与网关连接,在云端服务器打开WireShark 软件进行抓包测试延时与观察数据,发布端每100 ms 发送1 次数据,共进行100 次试验,延时结果取平均值范围在12~16 ms 之间波动,符合AQ 6201—2019 标准巡检周期以及异控断电时间要求。另外,分别进行10、15、20、30 kB 数据负载测试,试验结果可表明所在负载增加延时可控制在500 ms 以内,由于监控系统单次上传数据不可能达到10 KB 量级,所以实时性达到AQ 6201—2019标准要求。
以工业互联网二级子节点系统为平台,煤矿监控系统为接入对象,分析了工业互联网系统结构以及煤矿监控系统接入工业互联网所需关键技术后,设计并开发了一种分布式计算网关,此网关应用在监控系统交换机与工业互联网连接端,对交换机下属的监控分站发来的数据进行解析处理后封装JSON 格式,通过MQTT 协议传入工业互联网云端软件。该方案有效的解决了煤矿监控系统接入工业互联网平台的问题,通过采用QoS1 服务质量解决了数据传输过程中存在的丢包问题,通过设计去重算法解决了QoS1 重复包的问题,仿真测试结果表明此方法在数据传输压力测试过程中没有出现丢帧情况,并且延时造成的影响在AQ 6201—2019 标准要求的巡检周期以及异控时间范围内,满足传输效率要求达到设计的预期效果。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!