APP下载

煤矿多层异构网络远程固件更新方法

2020-12-31袁凤培

工矿自动化 2020年12期
关键词:本机固件网络拓扑

袁凤培

(1.中煤科工集团常州研究院有限公司, 江苏 常州 213015;2.天地(常州)自动化股份有限公司, 江苏 常州 213015)

0 引言

目前在用的煤矿安全监测、人员定位等系统均采用多层网络、多链路架构,如图1所示。分站通过以太网与地面控制主机连接,传感器或执行器通过RS485或CAN等现场总线与分站连接[1]。随着矿用产品数字化推进,特别是物联网技术逐步应用,产品的复杂度、智能化水平等不断提高,产品持续维护需求进一步加大[2-7]。

图1 煤矿多层异构网络架构Fig.1 Structure of multi-layer heterogeneous networks in coal mines

得益于以太网完整的链路协议,目前接入环网的分站或网关大多已实现远程固件更新功能[8-9]。地面控制主机通过环网与分站通信,固件数据可通过Web,FTP(File Transfer Protocol,文件传输协议),TFTP(Trivial File Transfer Protocol,简单文件传输协议)等方式推送到下位机,下位机校验无误跳转至Bootloader,Bootloader使用IAP(In Application Programming,在应用编程)接口将新固件编程至指定Flash地址,引导MCU跳转运行新固件。

随着微电子技术的发展,一些小型MCU能够支持IAP技术。主机通过RS485或CAN总线将固件数据下载至传感器,Bootloader更新固件。该方式实现了设备免开盖维护,但需要工程人员深入现场,当传感器数量较多、分散分布时,维护工作量依然很大。若能从地面控制主机直接更新各级设备固件,必将大大减轻工程维护工作量。鉴此,本文针对煤矿多层异构网络远程固件更新方法展开研究。

与点到点的固件更新不同,在多层异构网络下,固件数据需要经过多个设备中转、穿越多种链路才能到达目标设备。因此,固件数据在传递前必须要有详细信息描述数据的目标及需要穿越的链路,即数据需要路由描述。可见,实现多层异构网络远程固件更新的核心在于实现路由描述。Bootloader实现、IAP技术的应用已相当成熟,本文不再赘述,重点讨论如何利用JSON(Java Script Object Notation,JS对象简谱)描述路由及软件编程。

1 路由描述

路由描述的核心是链路层级关系描述。一些轻量的数据交换格式,如XML(eXtensible Markup Language,可扩展标记语言),JSON等,具有描述层级关系的优势。综合考虑解析难度、传输效率、可读性等,选择JSON来描述路由信息[10]。

JSON是ECMAScript(欧洲计算机协会制定的JS规范)的子集,采用完全独立于编程语言的文本格式来存储和表示数据[11-12]。其具有便于阅读、层次简洁、结构清晰、易于扩展等优势,是理想的数据交换语言[13]。JSON按对象组织数据,每个对象包含1个或多个键/值对,数组可包含多个对象,该特性可用于描述网络拓扑[14]。利用“键”描述链路,利用“值”描述该链路下游设备,利用“值中值”描述设备间层级关系,这就是JSON路由描述方法。以图2为例,其展示了在Notepad++中利用JSON描述一段网络,从中可看出设备CH4相对于根设备KJF130的路由信息。

图2 JSON路由描述示例Fig.2 Example of JSON route description

采用JSON描述固件路由包括设备属性描述、网络拓扑构建和固件路由描述3个部分。

(1) 设备属性描述。以JSON方式描述设备的固有属性,便于上游主机对网络拓扑进行解析和管理。在考虑带宽的基础上设置简洁明了的键/值对,如设备ID、设备名称、软件版本、硬件版本、链路端口等。设备属性JSON描述示例如图3所示。

图3 设备属性JSON描述示例Fig.3 Example of JSON description of device property

(2) 网络拓扑构建。本机获取下游从机的属性描述信息并添加到对应端口数组(如图3中的ETH,RS485_1,CAN_1)的过程即构建网络拓扑。开始时本机属性JSON描述信息中的端口数组为空,经过一定时间的链路巡检后,本机属性JSON描述信息将被扩充,包含不同链路下所有从机的属性信息,形成本机网络拓扑信息。当本机作为从机时,

该信息被上游主机获取,层层提交后,最终在根设备处形成所有从机属性的JSON描述,即系统网络拓扑。图2展示了经过链路巡检后,设备KJF130下的网络拓扑数据。

构建网络拓扑是实现多层异构网络固件更新的关键。煤矿工业现场环境复杂,只有通过“自举”而非“配置信息”建立实时拓扑,才能真实展现当前网络状况,上位机才能根据用户选择及拓扑生成有效的固件路由描述。

(3) 固件路由描述。用户通过网络拓扑图选取需要更新的设备,上位机软件即可根据设备拓扑位置生成路由JSON数据。该数据不仅描述了固件信息(长度、校验、版本等),还描述了该固件需要经过哪些设备的哪些端口才能到达目标设备。以图4为例,其展示了对CH4更新固件需要经过2层设备的2个不同链路才能完成。

图4 固件路由描述示例Fig.4 Example of firmware routing description

本机使用路由描述中的ID字段判断路由是否包含本机,该键值使用链路地址(如RS485从机地址)唯一标明。本机还需通过路由中的链路字段判断路由归属本机还是本机的下游从机:路由中没有链路字段时,路由属于本机,完成固件接收后将升级本机;路由中含有链路字段时,本机启动相应链路进行路由转发,且转发的路由信息将剥离本机ID及链路字段。固件路由传输过程如图5所示。

图5 固件路由传输过程Fig.5 Firmware routing transfer process

2 软件编程

2.1 下位机软件

设计下位机固件更新功能代码应充分考虑灵活性、公用性,设计目标:① 该代码应能被任意设备使用。② 该代码应能适应常用的链路协议。

为满足上述目标,剖析代码功能,将代码分为3个部分:① 应答上游主机的prb_server_msg_analyse功能函数,该函数将应答上游主机的所有数据访问。② 本机核心数据处理任务task_prb_msg_bridge,包含更新本机拓扑、进度,存储接收的路由、固件数据,判断业务流程等核心功能。③ 本机主口链路服务任务task_prb_client_x,包含获取下游从机拓扑、进度,转发路由、固件等功能。下位机软件框架如图6所示。

图6 下位机软件框架Fig.6 Framework of lower computer software

上游主机访问本机时,经过链路协议解析确认请求为远程固件更新后,调用prb_server_msg_analyse函数解析数据,应答主机。上游主机请求获取拓扑,从机响应,上传拓扑JSON,一段时间后整个系统拓扑稳定,形成系统网络拓扑图。下载固件时,上游主机先传输JSON路由数据,本机完整接收后,判断路由目标是否包含本机或本机的下游从机,进而决定是否接收固件数据。如需要接收固件,本机完整接收固件数据后判断是否更新本机或搜索相应链路转发。

本机作主机时,链路服务任务task_prb_client_x将定时询问下游从机拓扑是否变化,以“不变不传”为原则,兼顾动态性能及带宽。当链路服务任务接收到转发信号时,开始转发数据,即向下游从机广播JSON路由和固件数据。每条物理链路对应一个链路服务任务,使得分布在不同链路的相同设备可同时进行固件更新。

固件更新功能代码基于RTOS(Real-time Operating System, 实时操作系统)设计,固件数据以文件系统形式存储于本机外置Flash存储器。代码本身无层级限制,本机支持的设备数量取决于本机RAM资源。

2.2 上位机软件

上位机采用B/S架构设计。前端Web页面可进行拓扑图展示、固件管理、设备选取等操作,如图7所示。服务器采用以太网与硬件设备通信,使用MySQL数据库存储固件数据。采用B/S架构符合远程运维构想,当服务器IP公网可寻址时,可以远程更新设备固件。

图7 上位机Web页面Fig.7 Web interface of upper computer

3 实验结果

为验证煤矿多层异构网络远程固件更新方法的可行性及稳定性,采用常用MCU模拟分站、网关、传感器等设备搭建多层异构网络实验系统。各设备均使用FreeRTOS操作系统进行任务调度,使用cJSON解析JSON数据,外扩4 MB SPI Flash存储固件数据,数据存储采用EFS嵌入式文件系统。实验系统通信链路包含以太网、RS485、CAN,网络深度达4层。搭建的网络拓扑如图7所示。实验统计每层设备固件更新成功率和每100 kB数据传输时间,共进行500次,统计数据见表1、表2,其中RS485总线1,2,3,4分别代表传输速率2.4,9.6,19.2,115.2 kbit/s,CAN总线1,2,3分别代表传输速率10,50,100 kbit/s。

表1 固件更新成功率统计

表2 固件更新时间统计Table 2 Statistics of firmware update time s

4 结论

(1) 理论分析及实验表明,采用JSON描述路由可实现多层异构网络下嵌入式设备固件更新。该方法对链路依存度低,可广泛应用于煤矿安全监控、人员定位等系统,降低工程维护工作量,具有一定的工程应用价值。

(2) 随着物联网技术在煤矿井下应用的推进,网络拓扑获取、设备路由解析、设备固件更新等功能需求迫切,可参考本文方法实现上述功能。

猜你喜欢

本机固件网络拓扑
基于通联关系的通信网络拓扑发现方法
基于ADS-B的防撞检测算法研究
飞机相遇模型仿真技术研究
不再烦人隐藏Windows 10的更新
能量高效的无线传感器网络拓扑控制
2017款捷豹F-PACE网络拓扑图及图注
基于SHA1的SCADA系统PLC固件完整性验证方法
劳斯莱斯古斯特与魅影网络拓扑图
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证