目前在用的煤矿安全监测、人员定位等系统均采用多层网络、多链路架构,如图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对象简谱)描述路由及软件编程。
路由描述的核心是链路层级关系描述。一些轻量的数据交换格式,如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
设计下位机固件更新功能代码应充分考虑灵活性、公用性,设计目标:① 该代码应能被任意设备使用。② 该代码应能适应常用的链路协议。
为满足上述目标,剖析代码功能,将代码分为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资源。
上位机采用B/S架构设计。前端Web页面可进行拓扑图展示、固件管理、设备选取等操作,如图7所示。服务器采用以太网与硬件设备通信,使用MySQL数据库存储固件数据。采用B/S架构符合远程运维构想,当服务器IP公网可寻址时,可以远程更新设备固件。
图7 上位机Web页面
Fig.7 Web interface of upper computer
为验证煤矿多层异构网络远程固件更新方法的可行性及稳定性,采用常用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 固件更新成功率统计
Table 1 Statistics of firmware update success rate %
设备以太网RS485总线CAN总线1234123第1层100———————第2层—100100100100———第3层——100100100100100100第4层——100100100———
表2 固件更新时间统计
Table 2 Statistics of firmware update time s
设备以太网RS485总线CAN总线1234123第1层10———————第2层—856620424163———第3层——1 2108763752 8652 1301 740第4层——2 3461 752812———
注:① 表1、表2仅适应本次实验网络拓扑结构。② 因各层设备固件大小差异较大,本文统计每100 kB数据传输时间供参考。③ 实验系统业务数据较少,总线空闲率较高,实际应用时传输时间会大于统计值。
(1) 理论分析及实验表明,采用JSON描述路由可实现多层异构网络下嵌入式设备固件更新。该方法对链路依存度低,可广泛应用于煤矿安全监控、人员定位等系统,降低工程维护工作量,具有一定的工程应用价值。
(2) 随着物联网技术在煤矿井下应用的推进,网络拓扑获取、设备路由解析、设备固件更新等功能需求迫切,可参考本文方法实现上述功能。
[1] 赵小虎,张申,谭得健.基于矿山综合自动化的网络结构分析[J].煤炭科学技术,2004,32(8):15-18.
ZHAO Xiaohu,ZHANG Shen,TAN Dejian.Analysis on network structures for mine comprehensive automation[J].Coal Science and Technology,2004,32(8):15-18.
[2] 汪丛笑.煤矿安全监控系统升级改造及关键技术研究[J].工矿自动化,2017,43(2):1-6.
WANG Congxiao.Research on upgrading of coal mine safety monitoring and control system and its key technologies[J].Industry and Mine Automation,2017,43(2):1-6.
[3] 郭江涛,杨娟.基于物联网感知的煤矿安全监控系统设计[J].自动化与仪器仪表,2015(5):35-36.
GUO Jiangtao,YANG Juan.Coal mine safety monitoring system based on Internet of things perception design[J].Automation and Instrumentation,2015(5):35-36.
[4] 孙继平.煤矿井下人员位置监测系统联网[J].煤炭科学技术,2009,37(11):77-79.
SUN Jiping.Networking of underground mine personnel position monitoring and measuring system[J].Coal Science and Technology,2009,37(11):77-79.
[5] 汪丛笑.煤矿安全监控系统智能化现状及发展对策[J].工矿自动化,2017,43(11):5-10.
WANG Congxiao.Present situation and development countermeasures of coal mine safety monitoring and control system intelligentization[J].Industry and Mine Automation,2017,43(11):5-10.
[6] 华刚,宋志月,王永星,等.物联网环境下煤矿安全监控系统体系架构研究[J].工矿自动化,2013,39(3):6-9.
HUA Gang,SONG Zhiyue,WANG Yongxing,et al.Research of architecture of coal mine safety monitoring and control system in the environment of Internet of things[J].Industry and Mine Automation,2013,39(3):6-9.
[7] 赵志刚.物联网技术在煤矿安全监察中的应用[J].煤矿安全,2014,45(7):102-105.
ZHAO Zhigang.Application of the Internet of things technology in coal mine safety supervision[J].Safety in Coal Mines,2014,45(7):102-105.
[8] 孙钢,朱忠常,景振兴.煤矿安全监控分站远程升级方案[J].工矿自动化,2012,38(3):58-60.
SUN Gang,ZHU Zhongchang,JING Zhenxing.Remote upgrade resolution of safety monitoring and control sub-station of coal mine[J].Industry and Mine Automation,2012,38(3):58-60.
[9] 魏民,王艺.物联网云平台终端远程更新技术研究与应用[J].电信科学,2018,34(10):137-142.
WEI Min,WANG Yi.Research and application of remote update technology of IoT terminal[J].Telecommunications Science,2018,34(10):137-142.
[10] 高静,段会川.JSON数据传输效率研究[J].计算机工程与设计,2011,32(7):2267-2270.
GAO Jing,DUAN Huichuan.Research on data transmission efficiency of JSON[J].Computer Engineering and Design,2011,32(7):2267-2270.
[11] Introduzione a JSON [EB/OL].[2020-04-20].http://www.json.org/json-it.html.
[12] JSON tutorial [EB/OL].[2020-04-20].https://www.w3school.com.cn/json/index.asp.
[13] 张涛,黄强,毛磊雅,等.一个基于JSON的对象序列化算法[J].计算机工程与应用,2007,43(15):98-100.
ZHANG Tao,HUANG Qiang,MAO Leiya,et al.Algorithm of object serialization based on JSON[J].Computer Engineering and Applications,2007,43(15):98-100.
[14] 李亚平,刘梦阳,张一村,等.一种基于JSON的网管拓扑实现[J].计算机与网络,2019,45(19):65-68.
LI Yaping,LIU Mengyang,ZHANG Yicun,et al.Implementation of a network management topology based on JSON[J].Computer & Network,2019,45(19):65-68.