基于CAN 总线的矿用传感器远程在线升级功能设计

2020-08-21 08:02宋益东
煤矿安全 2020年8期
关键词:标识符矿用分站

宋益东

(1.煤科集团沈阳研究院有限公司,辽宁 抚顺113122;2.煤矿安全技术国家重点实验室,辽宁 抚顺113122)

矿用传感器是煤矿安全监控系统中最末端的感知设备,是监控系统中所有的数据来源。目前煤矿在用模拟量传感器均为数字化智能传感器[1-2],随着煤矿开采自动化程度的提高,不可避免的涉及到传感器固件程序升级问题。传统的方式是传感器部分或全部从井下拿到地面,固件升级后再返到井下进行安装。矿用传感器使用量非常大,并且在井下分布比较分散且大部分在采掘工作面,距离地面中心站较远,采用传统的方式效率比较低,并且更换甲烷等传感器需要切断工作面的动力电,给煤矿的安全生产带来影响,所以在线升级[3]固件程序是一个很好的解决方案,在煤矿机电设备检修的间隙,通过井下工业环网将需要升级的固件程序下发到监控分站,由监控分站通过总线[4-6]发送到传感器,从而实现煤矿井下传感器的在线升级。

1 矿用传感器在线远程升级组成结构

1.1 系统组成

系统主要由地面中心站服务器、环网交换机、矿用监控分站、矿用传感器及执行器等组成。中心站服务器与矿用分站通过以太网光纤网络连接,矿用分站和矿用传感器之间通过CAN 总线连接,升级固件程序通过中心站通过以太网下载到矿用分站中,矿用分站通过CAN 总线传输给矿用传感器,系统组成结构图如图1。

图1 系统组成结构图Fig.1 System composition structure

1.2 矿用传感器

矿用传感器主要由STM32F103Rx[7]处理器、稳压电源电路、晶振电路、复位电路、CAN 总线通信电路、ADC 转换外围电路、红外遥控电路及LEC 显示电路组成。矿用传感器结构如图2,STM32F103 为Cortex-M3[8]内核,具有成本低、功耗低、高性能、实时性好等特点。片上资源比较丰富,包括1 路CAN 通信接口,5 个USART 接口、JTAG 调试口,4 个16 位定时器、3 路ADC 通道等;片内具有256KB 的Flash和48KB 的SRAM。

图2 传感器组成结构图Fig.2 Sensor structure diagram

3 在线升级技术

在线升级是指MCU 中运行的固件程序在运行过程中对实现对片内代码存储Flash 的擦除、编程,新的固件程序通过CAN 总线通讯接口下载到MCU的Flash 中,IAP[9-10]技术可以对存储固件程序的Flash 区域进行重新烧写然后利用IAP 功能实现在线更新矿用传感器固件。因此,利用IAP 技术可以方便地通过CAN 总线通信口对矿用传感器中的固件程序进行远程更新升级。和传统方式相比,基于IAP 技术的固件升级不需要到井下替换传感器,不需要打开外壳,不需要使用下载器等。

3.1 Flash 存储器分区及在线升级过程

STM32F103RCT6 的片内Flash 写保护以扇区为单位,每扇区4 KB,根据Flash 容量不同,页大小分为1 KB 和2 KB,本文用处理器页大小为2 KB 。也就是对FLASH 的编程写入以2 KB 为单位,本设计传输协议制定也以此为单位进行数据传输。处理器片内256 K 的Flash 划分为3 个区域:第1 区域用来存储Bootloader 程序,包括Flash 操作相关程序、中断向量,硬件驱动、通信协议驱动等;第2 区域用来存储正常运行的固件程序;第3 区域存储固件升级程序,片上FLASH 存储器分区如图3。根据矿用传感器固件大小进行容量划分,矿用传感器固件为28 KB,相对于256 K 的Flash 有很大的预留空间,每一区域中间可以预留一定的空白区域,防止区域程序重叠。通过修改STM32F103 的Bootloader 程序或工程的链接脚本可以修改程序存储的起始地址。

图3 片上Flash 存储器分区Fig.3 Flash memory partition on a chip

矿用传感器在出厂时是将Bootloader 配置程序烧写到Flash 的第1 部分,并对该区域进行读写保护,防止升级过程中的误操作把Bootloader 程序擦除。第1 区域引导程序只能通过下载器编程;第2 区域的固件应用程序通过在线方式编程或下载器编程;第3 区域升级更新程序通过IAP 在线方式编程。当矿用传感器需要进行固件升级时,用户固件程序跳转到Bootloader 程序,Bootloader 程序不需要对旧版本的用户固件程序进行擦除,直接将新版本的用户固件程序通过CAN 总线接口下载到第3 区域的Flash 中,通过将中断向量表从新映射,使Bootloader程序跳转到第3 区域进行运行,从而完成固件程序的更新。

3.2 CAN 总线传输协议及效验机制

CAN 总线协议[5]分为远程帧和数据帧,远程帧多用于命令传递,数据帧用于数据传输,数据帧格式分为标准帧格式和扩展帧格式,标准帧为11 位标识符,扩展帧为29 位标识符,设计矿用传感器CAN总线通信协议以CAN2.0A 标准帧为主,对CAN2.0A帧结构进行了从新划分,对仲裁段的标识符和数据段中的数据场进行了从新划分。CAN2.0A 链路层标准帧数据结构包括帧起始、仲裁段、控制端、数据段、CRC 校验段、ACK 应答段和帧结束。

CAN 总线在线升级的关键是要设计CAN 总线应用层协议,通信协议设计的重点是CAN 标识符的分配与设计,所设计的应用层协议将CAN 协议中的11bit 标识符区域划分为3 个部分, 标识符区域划分表见表1。

表1 标识符区域划分表Table 1 Identifier area division table

在矿用传感器升级协议中,ID10-ID6 这8 位填充接收数据传感器地址;ID3-ID1 这3 位为命令类型码;ID0 为帧类型占用1 位,单帧数据用0 表示,多帧数据用1 表示。单帧数据主要应用于升级命令类,包括:数据包、升级申请,信息应答,错误应答等;多帧数据每帧数据的第1 个字节为帧序,第2 个字节以后为升级固件数据,构固件程序升级数据格式见表2。每个数据包为固定的1 024 字节数据,当接收完2 包数据后进行FLASH 写入操作,这是因为利用IAP 技术进行擦除或者写入时,每次对片上FLASH 编程的字节数为固定的2 048 字节。

4 在线升级程序流程

矿用传感器在线升级流程如图4。

在正常执行应用程序的过程中,当接收到矿用分站固件升级指令后,程序跳转到Bootloader 执行IAP 程序,当矿用分站接收到返回指令后,逐帧发送有效数据到矿用传感器,传感器每接收1 帧升级数据都会检验其目标地址合法性、数据完整性等信息,对于有效的升级固件数据,系统将按照目标地址写入SRAM 的待写入区。当接收2 包固件数据为2 048 字节后,为了节省SRAM 资源占用,将1 页2 KB 数据写入FLASH,待写入成功后,返回写入成功信息给矿用分站,分站继续发送固件数据,一直到所以固件程序发送完成。待更新代码全部写入备份区后,通过更新中断向量表从新映射,实现程序指针跳转到新的固件main 函数执行,实现程序的平稳过度。在接收数据的过程中如果有错误指令信息,分站则重新发送出现错误的数据帧。

表2 固件程序升级数据格式Table 2 Firmware program upgrade data format

图4 在线升级流程图Fig.4 Online upgrade flow chart

如果在升级过程中传感器掉电、通信中断或者通信超时等造成在线升级失败时,矿用传感器会继续执行第2 区域固件程序,仍然能按照原有用户程序继续正常运行。

5 结 语

结合全数字化监控系统现有网络结构,工业以太网+总线的方式,设计了基于CAN 总线的矿用传感器远程在线升级功能,制定了CAN 总线应用层通信协议。利用以太网网络节点上的矿用分站,使得矿用传感器的固件更新更加高效方便,降低设备维护成本,提高了系统的稳定性。通过将处理器片上FLASH 合理分区及固件程序数据分块传输等方式,实现了即使升级出现错误时也能保证传感器的稳定运行。实验测试证明,该技术方案具有较好的可行性、稳定性和可靠性,可以广泛地应用于CAN 总线式嵌入式固件程序升级。

猜你喜欢
标识符矿用分站
基于底层虚拟机的标识符混淆方法
佩雷兹获赛季个人首个分站冠军——2022 F1摩纳哥大奖赛
勒克莱尔轻取分站大满贯 维斯塔潘三站两退前途多舛
——2022 F1澳大利亚大奖赛
DOI标识符查找文献的方法
基于区块链的持久标识符系统①
DOI标识符查找文献的方法
浅谈热处理对矿用圆环链钢25MnV的组织和性能影响
基于EG8030的矿用移动式三相逆变电源设计
乐清市矿用设备厂
基于PLC小型矿用桥式起重机的设计