孙晓杨伊侨朱浩
电动叉车远程升级系统的研究
孙晓1,杨伊侨1,2,朱浩2
(1.湖南工业大学 机械工程学院,湖南 株洲 412007;2.湖南宏迅亿安新能源科技有限公司,湖南 株洲 412007)
针对目前电动叉车系统远程升级困难的问题,设计了一个基于飞思卡尔16位微控制器MC9S12XEP100的远程升级系统。该系统由传统的BootLoader升级程序改进而来,利用GPRS模块进行远程数据传输,解决了系统升级的距离问题。深入研究了数据传输可靠性的问题,设计出基于BCH编码的数据可靠性传输机制与代码分区机制,制定了数据传输协议,解决了系统升级的安全与可靠性问题。将远程升级系统实施至电动叉车上运行,实验证明,该远程升级系统具有稳定性、安全性、可靠性等优点,能很好地完成远程升级任务。
电动叉车;远程升级;数据通讯;升级流程
近年来,新能源工程机械以其节能环保、智慧互联等特性得到了迅速的发展,新型电动叉车的应用也越来越广[1]。如何实现数量庞大叉车的维护运营,满足系统升级需求成为了一个难题。
一种比较传统的方法是将CAN总线作为通信介质,利用BootLoader下载应用程序。但当产品分布于全国各地时,如果继续使用BootLoader,每次进行应用程序升级时都需厂家派遣技术人员去到现场,维护成本大大提高,因此使用基于GPRS传输的远程升级系统就变得十分有意义。
本文设计了一个基于GPRS传输的远程升级系统,实现了在不用去到现场的情况下完成软件自更新和引导用户程序运行的功能,有效解决了这个行业难题。
BootLoader程序是固化在微控制器里,复位后最先运行的一段程序。它的主要功能是初始化嵌入式系统的软、硬件,引导应用程序的运行[2]。嵌入式设备复位后首先进入BootLoader程序,通过判断关键字标志位,选择进行程序升级或跳转进入应用程序,这个关键字标志位存放在Flash中的一个特定位置。如果进入程序升级模式,则通过CAN总线从主机端将应用程序的S19文件下载到Flash中;否则就将储存在Flash中的应用程序加载到RAM里面运行。
远程升级系统由改进后的BootLoader程序、上位机软件和Web端组成,上位机程序运行在服务器上,主要负责接收和发送数据,并实时保存信息到数据库。Web端实现监控数据的显示,嵌入式设备的BootLoader程序负责启动升级程序,接收上位机发来的数据,并对程序区域进行擦除与写入操作。
针对现在国内外远程升级系统升级故障率高、传输数据不稳定的现象,本系统设计了一个数据可靠性传输机制。
上位机包括数据库模块、TCP/Socket通信模块。数据库支持Access及SQlServer连接,通信模块支持多线程监听,Web端支持HTML5的页面显示。
下位机设计可以分为硬件层和软件层。硬件层主要完成一些接口函数的定义,设置硬件参数和读取寄存器状态。软件层主要实现硬件层函数封装与任务调度等一些系统功能。
为了保证升级程序能够顺利执行,防止程序升级中途因数据链路中断、线路板突然停止供电等意外情况导致原程序也无法使用,需要将单片机的Flash内存区域进行划分,主要分为BootLoader区域、应用程序1区域、应用程序2区域和控制参数区域。应用程序存储区域分为2个区域,分别为1区和2区。引导程序储存在Bootloader区域,其作用是选择执行1区或2区的应用程序。为了避免核心数据的丢失,控制参数区域不会在升级过程中被擦除[3],所以用来存储例如跳转标志、应用程序配置参数等内容[4]。
代码分区控制流程如下:①烧写程序时,将应用程序1区域代码与BootLoader合并共同烧写到单片机中。②程序需要升级时,1区域与2区域交替升级。在1区域代码执行期间,收到远程升级指令,在代码2区域进行升级。同样在2区域代码执行期间,收到远程升级指令,在代码1区域进行升级。③当上位机发送启动命令后,复位系统。系统复位后,进入引导程序,然后通过引导程序中的关键字判断进入1区应用程序还是2区应用程序。确认进入相应的应用程序区域后,再擦除另一个区域内的代码。
每当系统上电时,会通过标志位选择执行BootLoader程序或应用程序。如果不需要升级,则不进入BootLoader程序,再检查地址区间标志位,如果是0x0A,则进入应用程序1区间;如果是0x0B,进入应用程序2区间。当进入应用程序后,系统给远程升级分配一个任务,之后系统会周期性地去查询该任务,当检查收到升级命令,确认无误后擦除指定FALSH区域并回应上位机。之后等待接收代码,当在接收代码过程中检测到错误时,会回应NG来请求重新开始升级,否则每接收一行代码回应OK,直至接收所有代码。代码接收完毕,不会立即启动,会轮询启动命令,当检测到启动命令,系统会立即复位,进入新的应用程序。升级流程如图1所示。
图1 升级流程图
加强数据传输机制的纠错能力可有效提高数据传输的可靠性和远程升级的效率。之前版本的远程升级系统在数据传输过程中使用CRC校验码,在升级过程中下位机对传输数据进行CRC校验,如果出错则重传,无法纠错,导致升级过程偶发性中断。因此本文进行了算法改进,采用了改良的BCH纠错码来代替CRC校验码,有效提高了传输效率。其设计内容包括数据协议制订、BCH编码和无线传输后校验等。
数据协议制订。数据协议包括起始ID(用“*”作为帧头起始符)、总包数、包序号、S19文件、结束ID(用“#”作为帧头起始符)等。其中,除了S19文件是64位外,其他都是16位。
BCH编码。BCH码是一种有限域中的线性分组码,纠错能力强、易实现,通常用于通信和存储领域中[5]。由于本系统所需要传输的数据长度不大,所以设定二进制BCH(15,7)编译纠错码,码长= 15,0~6位为有效数据位,7~14位为BCH校验码,纠错能力= 2。BCH生成多项式为()=LCM[1(),2(),…,(2t-1)()],其中,LCM为最小公倍式,为纠错个数,i()为最小多项式。 BCH编码方法如下:①查不可约多项式表可得()=1()·3()=8+7+6+4+1,系数转换成二进制代码为111010001,且由()可得出生成矩阵;②将7~14位的BCH校验码位补8位0,与生成多项式的二进制码进行逻辑与,得到的结果逻辑异或,即得到BCH(15,7)的校验码。
无线传输后校验。本系统利用GPRS模块进行无线传输,下位机与上位机之间的传输模式为主从模式,下位机利用中断来控制GPRS模块的接收与发送。因一般叉车工作环境恶劣,所以通讯干扰大,采用接收端检验纠错后,通讯效率有明显提高。
为了测试新版远程升级系统的稳定性,使用10台下位机进行新老版本的对比实验:分别使新老程序轮流下载到下位机内,记录在升级过程中的升级成功台数、代码重传次数、升级时间,对升级结果进行对比,结果如表1所示。
表 1 对比测试结果
升级种类成功数代码重传次数 升级时长/min 新版程序100.5 10.2 老版程序81.7 11.1
从成功数来看,新版远程升级系统在成功率上优于老版远程升级系统,新版远程升级系统的代码重传次数也要低于老版,说明在可靠性上,新版程序要高于老版程序,新版升级时长会相较于老版会略短。原因是虽然新版远程升级系统在代码重传次数上要低于老版系统,但新版远程升级系统中加入了具有纠错功能的BCH码,相较于老版的CRC校验码,在数据传输的稳定性上提升不少,但BCH码编码与译码过程复杂,耗时会有所增加。综合来说,新版程序的升级速度还是要略快于老版程序。
本文实现了电动叉车的远程升级系统的开发,通过制订自定义传输协议、设计数据可靠性传输机制与代码分区机制,能够有效、稳定地实现S19文件的传输、Flash模块的擦写、远距离地进行应用程序的升级。测试结果表明,本系统有很高的稳定性、安全性、可靠性,极大地提高了远程升级的成功率。此外,不同信号芯片只需要经过微小更改就能直接使用本系统,可移植性强。
[1]孙慧,王春利,高耀南.铅酸蓄电池电动叉车电池改造技术的研究[J].科技通报,2017,33(12):96-98.
[2]张艳,鲍可进.整车控制器BootLoader的设计与实现[J].计算机工程,2011,37(12):233-235.
[3]朱伟斌,张涛,顾海涛,等.基于CDMA网络的嵌入式设备远程升级系统[J].电子技术应用,2014(2):135-138.
[4]MENG H,PAN L.Realization of remote update technology for embedded equipment based on μC/OS-II[J].Journal of Measurement Science and Instrumentation,2014(3):69-72.
[5]李璐,周海燕.一种含BCH编解码器的SLC/MLC NAND FLASH控制器的VLSI设计[J].现代电子技术,2009,32(7):167-170.
TP273
A
10.15913/j.cnki.kjycx.2019.15.034
2095-6835(2019)15-0087-02
孙晓,男,教授。杨伊侨(1995—),男,湖南岳阳人,硕士研究生,主要从事电动汽车电池管理系的研究。
〔编辑:王霞〕