91学术服务平台

您好,欢迎来到91学术官网!站长邮箱:

发布论文

论文咨询

基于CAN总线和IAP的煤矿用传感器程序离线升级技术研究

  2024-06-11    76  上传者:管理员

摘要:针对传统煤矿用传感器程序固件升级方法存在的维护成本高、操作不便的问题,分析了多种现有程序升级方法的优势与局限,提出一种基于CAN总线和IAP技术的传感器程序离线升级方法,通过划分3段存储空间实现代码的分时加载,利用传感器现有硬件接口和离线烧写器实现数据传输,设计了一种包含计数校验、CRC校验、阶段码校验的三重校验机制保证升级的成功率和稳定性。经测试,使用该方法升级传感器程序所需时间较传统在线IAP方法缩短,升级成功率大于92%,传感器程序升级失败时仍能正常运行原功能代码。

  • 关键词:
  • CAN总线
  • 三重校验
  • 煤矿用传感器
  • 离线IAP
  • 程序升级
  • 加入收藏

煤矿用传感器是煤矿安全监控系统的重要组成部分,是保障煤矿安全生产不可或缺的监控设备。近年来,随着煤矿开采工作对智能化、自动化程度要求越来越高,为应对不断出现的新需求,传感器在使用中需对应进行固件程序的升级。目前常见的固件程序升级方式为人员下井将传感器取回地面维护中心统一进行开盖升级。使用该方法进行升级费时费力,维护成本很高。为此,现场亟需一种低成本、易用可靠的升级方式来满足煤矿用传感器的升级需求。


1、现有技术方案分析


为满足传感器程序升级的需求,黄友胜提出一种基于在系统编程(ISP)的离线升级方法,利用移动存储介质保存待升级代码,人员带至井下后连接到传感器中单片机预定接口进行升级。该方法烧写速度快,升级稳定性和成功率高,且由于使用的ISP模块多为单片机自带,开发成本较低。但由于ISP升级时首先需进行调整单片机BOOT(启动)引脚电平的操作,需开盖或在传感器外壳预留特定的端口才能完成。无论是开盖操作带来的额外工作量及降低外壳防护性能、遗失螺丝造成的安全隐患,还是外壳预留额外端口带来的传感器硬件改造成本增加,均使该方案的实用性大打折扣。马建提出一种基于在应用编程(IAP)和CAN总线的在线升级方法,利用井下原有CAN通信网络将待升级程序传送至传感器,发送完成后再对原有程序进行覆盖升级。该方法无需人员下井即可完成升级,且不需对现有传感器硬件进行改造,节省了人员和设备改造成本。但该方法的升级成功率与稳定性相对不足,且由于煤矿用CAN总线通讯距离可达2~6 km,单通道一般可挂载10+台传感器,为保证通信质量以及多台传感器与分站有序进行数据交互,CAN通信速率一般较慢,巡检周期较长。以常见的5 kbit/s速率、1帧/s数据交互计算,完成100 k B大小的程序分包传送需约3.56 h,升级期间传感器的正常数据采集与上传均受影响,大规模使用该方法进行传感器的程序升级将使安全监控系统长时间失能。使用基于ISO 15765标准的协议重构CAN通信协议虽然能够解决传输速度问题,但其无法与整个上位机、分站、传感器的现有传输逻辑兼容,升级需重构整个体系的通信逻辑,开发及升级的成本较大。吕春艳提出利用4G无线通信技术完成远程升级,该方法符合煤矿智能化的发展趋势,但需较大的成本投入来保证硬件基础,不利于在现有条件下进行推广。

基于以上技术方案的优势与局限,本研究提出一种充分利用现有硬件资源、可兼容监控系统现有通信逻辑,基于CAN总线和IAP技术的离线升级方法,通过划分传感器存储区引导代码分散加载,设计了带两次握手的CAN通信变速机制和三重校验机制的升级协议,实现了传感器程序的井下稳定、低成本、快速升级,达到了煤矿安全生产现场对于传感器程序升级方法在便利性、可靠性、速度与成本等各方面需求的平衡。


2、技术原理


2.1 IAP代码分散加载技术原理简介

IAP技术,即在应用编程技术,指将程序存储空间分为多部分,用户在其中第1部分Bootloader(启动引导)区运行程序时,可对App(应用)区进行再次编程并引导程序进入各分区执行的技术。程序运行时首先执行Bootloader区部分,若检测到程序升级命令,则执行App区程序的覆写升级,之后根据设置的跳转地址跳转到完成升级的App区执行其功能。若无代码升级命令,即可直接跳转到App区执行原程序功能。利用该机制,程序即可实现在运行中根据指令完成升级的功能。

本研究中传感器使用的MCU(微控制器)拥有512 k B大小的FLASH存储区,其存储分配情况如图1所示。其中除配置Bootloader区和1个实现常规功能的App区外,还额外配置了1个程序存储区用于存储接收到的待升级代码。Bootloader区按升级阶段引导变量(第3.1节中的阶段码)引导整个升级过程。未接收到升级命令时,Bootloader区引导程序执行App区的正常功能代码;收到升级命令后,程序复位重新进入Bootloader区,引导App执行升级阶段功能代码。当升级过程中出现如异常断电或物理连接断开而引起的中断时,程序重新上电后Bootloader可根据阶段引导变量判断出本次升级不成功,不进行App区的程序代码升级覆写,继续执行原App代码。通过设计如上所述的程序代码分散加载机制,传感器可实现升级异常后仍能正常工作的功能。

图1 存储区分配   

2.2 CAN总线通信配置

CAN总线是由汽车控制行业发展出的一种数据总线,以其可挂载节点数多、通信距离远、可靠性高的特点而被煤矿安全监控系统广泛应用。本研究基于的KJ83X(A)型安全监控系统采用符合CAN2.0标准的扩展帧进行通信协议的构筑,其配套传感器的硬件通信接口也符合该标准要求。为了减少系统硬件大规模改造带来的成本上升,本研究也采用相同的标准构筑通信协议和硬件。

本研究采用专用的烧写器完成待升级传感器的升级操作,烧写器与传感器通过传感器现有的通信用航空插头连接。升级协议基于监控系统传感器与分站正常通信时的原协议(以下简称原协议)改进设计,其帧ID关键字段的配置如下所述。

数据帧ID关键字段配置如下:

阶段字段用于标识目前处于升级过程的哪个阶段,Bootloader可根据此字段进行阶段码的校验;方向字段用于标识该帧在总线上的收发方向;命令码字段与原监控系统协议兼容,当待升级传感器识别到该字段标识为准备变速时,即表示传感器收到了升级开始的命令,标识了整个升级过程的开始;计数字段由双字节组成,用以计数当前发送/接收的数据帧数量,通信时利用此计数校验是否存在丢包;CRC校验字段用以保存8字节数据区数据的CRC校验值并以此校验发送单包内的数据是否有错误;当计数校验和CRC校验存在错误时,传感器将驱动错误包重发,以保证程序升级的成功率。具体升级过程见第3章详述。


3、升级方案


3.1 升级阶段划分

为引导传感器完成程序升级,本研究将升级过程分为下述阶段码对照所示的阶段。每次阶段切换时更新阶段码并保存在掉电不易失的外部存储中,以便Bootloader在程序复位后进行阶段码校验,判断并引导程序至相应的功能模块执行,并在产生故障时恢复原有功能。

阶段码对照如下:

传感器未收到升级指令时处于未升级阶段,此时正常执行其App区原有功能代码;收到烧写器的升级指令,尚未完成程序复位与CAN变速时,传感器处于准备变速阶段;程序复位后,已完成CAN变速,并与烧写器二次成功握手后,传感器处于准备接收阶段;传感器从烧写器接收数据时处于接收中状态,接收完成后切换到准备覆写阶段;随后程序再次复位,Bootloader引导传感器使用接收到的代码覆写App区旧功能代码,称为覆写中阶段;覆写完毕后,传感器将向用户发出提示,此时处于覆写完毕阶段,随后阶段码置0,程序再次复位,Bootloader将引导传感器正常执行新覆写的App区功能代码。

3.2 升级过程

图2、图3所示分别为待升级传感器Bootloader区和App区程序流程。传感器未收到升级命令时运行主功能模块程序,与分站正常通信,此时CAN通信速率为5 kbit/s,与分站的数据包交换频率为1帧/s。当开始升级时,拔出待升级传感器与分站的连接航插并插入烧写器的对应接口,在烧写器上选择好对应的程序,发出准备变速命令。烧写器发送准备变速帧,传感器按下述命令码对照解析到准备变速命令后按协议回应变速命令一次,随后将阶段码置0x01保存,进入准备升级状态,擦除数据存储区的内容,并执行软件复位。

命令码对照如下:

复位后程序首先跳转到Bootloader中,

检测到阶段码值为0x01后,引导App程序跳转到升级接收模块中,将CAN模块通信速率重新设置为100 kbit/s,与烧写器的数据包交换频率为3.5 ms/帧。随后进入等待升级起始帧的状态。传感器进入此状态后将保持30 s,若30 s内还未收到升级起始帧,则判断烧写器工作或连接不正常,将阶段码置0保存后执行软件复位,Bootloader将引导程序回到App区执行原程序。

图2 Bootloader区程序流程   

图3 App区程序流程  

升级代码开始发送后,烧写器在每包数据的计数字段填入从1开始每包数据依次加1的帧计数值。传感器接收到数据后将对该帧进行计数校验和CRC校验以验证是否存在丢包和包内数据错误,若无错误则将数据依次保存在数据存储区,若存在错误,则回应存在错误的最小数据包计数值,以此驱动烧写器重发该帧。发送过程中,传感器将阶段码置0x03并保存,一旦升级过程中传感器与烧写器的连接断开,传感器重新上电重启后Bootloader读取到阶段码为0x03,将识别到上次的升级存在异常,可引导传感器程序正常执行App区原代码功能。通过计数校验、CRC校验及阶段码校验三重校验机制,传感器程序升级的稳定性、成功率和异常改出性能得以保证。

当升级代码发送完毕后,烧写器将发出结束帧,得到传感器回应后随即发出覆写命令。传感器接收到覆写命令回应1次,随后将阶段码置为0x04并保存,进行软件复位。若覆写命令接收超时(>30 s未收到),则认为烧写器故障,阶段码自动置0,执行软件复位并恢复原有App代码的执行。复位成功后Bootloader若检测到阶段码为0x04,则判断当前应开始执行新接收存储区的代码对App区代码的覆写,开始引导程序进入Bootloader中的覆写功能模块,执行App区的数据清除,并将存储区的数据读出后写入App区。

覆写完成后传感器将发出完成提示并保持一段时间,以提示用户升级已完成,之后将阶段码置0保存。用户拔除传感器与烧写器的连接航插并将其重新连接至分站。上电后,Bootloader检测到阶段码为0,即引导程序执行App区的新功能代码,至此,整个升级流程完成。

使用107 k B大小的Bin格式程序代码生成的报文进行测试,整个升级流程完成传送需45.8 s,约为基于CAN总线在线IAP方式完成同样大小程序传送用时的1/285,升级速度得以大幅提升。重复测试升级过程25次,其中23次测试走完全部升级流程,成功升级传感器程序,成功率达92%。2次未走完升级流程,原因为人为故意断开升级的物理连接。2次未升级成功的测试中,传感器重新上电后执行原功能代码均正常。


4、结语


本研究分析了现有主流技术路线实现传感器程序升级的优缺点,提出基于CAN总线和IAP的离线升级方法。通过利用传感器现有硬件接口搭配离线烧写器的方式降低了实现升级功能所需成本,通过离线方式,并配以两次握手变速的机制实现了升级速度的大幅缩减,通过设置计数校验、CRC校验、阶段码校验的三重机制,提升了升级的鲁棒性和成功率,同时保证了升级错误时传感器仍能正常实现原功能。


参考文献:

[1]汪丛笑.煤矿安全监控系统升级改造及关键技术研究[J].工矿自动化,2017,43(2):1-6.

[2]宋益东.基于CAN总线的矿用传感器远程在线升级功能设计[J].煤矿安全,2020,51(8):120-123.

[3]黄友胜.基于ISP的矿用传感器在线升级技术[J].煤矿安全,2019,50(1):140-143.

[4]马建,黄增波,李泽芳.煤矿安全监控系统传感器在线升级技术研究[J].煤矿安全,2022,53(4):135-139.

[5]孙继平. AQ 6201—2017《煤矿安全监控系统通用技术要求》(报批稿)[J].工矿自动化,2017,43(7):1-6.

[6]唐恒飞,王效金.基于ISO 15765协议的汽车控制器刷写系统的设计[J].农业装备与车辆工程,2021,59(8):133-136.

[7]吕春艳,靳占军,钟贻兵,等. 4G无线通信技术的单片机远程升级研究[J].单片机与嵌入式系统应用,2019,19(11):60-64.

[8]于亚运,宋建成,田慕琴,等.基于IAP的支架控制系统程序在线升级方案[J].工矿自动化,2016,42(2):12-15.

[9]杨永胜,陈成,胡洪义,等.一种基于CAN总线的仿生LED照明控制系统设计[J].照明工程学报,2023,34(1):45-50.

[10]任建刚,杜怀龙. KJ83X(A)安全监控系统在大柳塔煤矿的应用[J].煤炭工程,2019,51(2):58-62.

[11]刘梅华,黄增波,陈伟.在线升级矿用传感器设计[J].煤矿机械,2022,43(3):1-4.


基金资助:煤炭科学技术研究院有限公司技术创新基金Ⅱ类项目(2022CX-II-06);


文章来源:许伟健.基于CAN总线和IAP的煤矿用传感器程序离线升级技术研究[J].煤炭技术,2024,43(06):250-254.

分享:

91学术论文范文

相关论文

推荐期刊

网友评论

加载更多

我要评论

矿业工程

期刊名称:矿业工程

期刊人气:1944

期刊详情

主管单位:中冶北方工程技术有限公司

主办单位:中冶北方工程技术有限公司,中国冶金矿山企业协会

出版地方:辽宁

专业分类:科技

国际刊号:1671-8550

国内刊号:21-1478/TD

邮发代号:8-38

创刊时间:1963年

发行周期:双月刊

期刊开本:大16开

见刊时间:4-6个月

论文导航

查看更多

相关期刊

热门论文

【91学术】(www.91xueshu.com)属于综合性学术交流平台,信息来自源互联网共享,如有版权协议请告知删除,ICP备案:冀ICP备19018493号

微信咨询

返回顶部

发布论文

上传文件

发布论文

上传文件

发布论文

您的论文已提交,我们会尽快联系您,请耐心等待!

知 道 了

登录

点击换一张
点击换一张
已经有账号?立即登录
已经有账号?立即登录

找回密码

找回密码

你的密码已发送到您的邮箱,请查看!

确 定