曹 波,栾治伟,罗 丹,肖德勇,王贤辉
(北京智芯微电子科技有限公司,北京 昌平 100192)
伴随智能电网建设的快速推进,我国已逐步建立和完善了电网用电信息采集系统,电力物联网本地通信模块是支撑用电信息采集系统的关键设备[1],主要有中央协调器(central coordinator,CCO)、代理协调器(proxy coordinator,PCO)、终端站点(station,STA)等。通信模块生产过程工艺复杂,其中模块程序升级作为关键环节,完成升级后将会在使用现场安装调试。同时,由于模块需求、生产规模较大,对于如何提高升级效率及准确率,就成为亟需解决的问题。
对于通信模块升级,当前采用主要方式有3 种。第一,可通过在线升级的方法实现通信模块的升级。通过多个通信模块组成一个网络,通过广播升级的方式进行升级[2]。该方法虽然能够实现批量化升级,但存在以下一些缺点:升级前须要组网;升级过程中网络冲突、通信误码等均会导致丢包,由此存在一定概率的升级不能成功的情况;须要系统不断地进行查询和补包,升级效率低下;多个网络同时升级时,存在严重的相互干扰情况。第二,离线式升级方法。针对通信模块上存储固件的Flash 存储器进行直接擦写操作。该方法将对通信模块保存的序列号、通信参数等过程信息一并擦除,导致产品可追溯性丢失,而且离线升级工具一般最多为4~8 通道,无法支持通信模块的批量化升级工作,升级效率较低。第三,通过PC 和工装板直接对通信模块进行逐个升级,若须要批量化升级,则须要多台PC 和多个工装板同时操作,由于此方法的升级效率低,且须要的设备多,不利于规模化生产的使用。当前众多学者的研究多集中于嵌入式模块端升级策略[3-5],针对电力通信模块升级的实现主要针对通信模块在线升级,通过组网的方式进行升级,通过集中器将升级程序传输给终端模块[6-7]。
本文设计实现的电力物联网本地通信模块规模化升级系统包含升级软件、升级工装设备、模块端程序扩展,通过升级工装设备一拖多连接模块业务串口进行升级,具有自动化、批量化、效率高等特点,能够很好地满足生产中的需求。
通信模块批量升级系统架构如图1 所示,有线程调度、通信控制、文件解析、文件传输、波特率协商、版本验证、数据库交互以及外部系统接口等模块。在通信模块程序获取方面有2 种方式:一是通过外部系统接口模块与外部生产管理系统,如过程控制或制造执行系统进行对接交互,通过模块ID与版本匹配进行自动化升级,并返回升级结果;二是在没有外部系统情况下,可以人工手动进行选择保存版本,后续模块将升级到该版本。通信控制模块用来与升级工装设备下接模块建立连接,然后给各个模块分配不同的地址。线程调度模块确保升级工装设备下接多个模块同时升级并且互不影响。文件解析模块通过对外部系统获取模块或者人工选择模块程序的头文件进行解析,在保证升级文件合法同时,获取升级程序版本号,以便后续验证升级结果。波特率协商模块支持软件系统与模块程序进行波特率协商,以获取模块最大支持串口波特率,以最大波特率进行传输,提高文件传输效率。版本验证模块用来验证升级结果是否正确。
图1 升级系统架构图
升级工装包含主控装置和从控装置,升级软件与主控装置相连接,多个从控装置以一一对应的方式与所述多个通信模块相连接。升级软件启动后,通过与各个从控装置下的模块建立连接、查询版本、协商波特率等操作后,开始下发文件传输指令,进行升级。
升级软件的详细功能主要有升级文件获取及解析、与下接模块建立连接、波特率自适应协商、查询版本号、文件传输、串口-插槽匹配、升级结果验证等。
2.1.1 升级文件解析及分块
升级文件头中有该升级文件对应的版本号、厂家等信息标识。在升级软件中选择升级文件后,一是解析文件头中文件信息,获取相应版本信息,如果不能解析,则提示升级文件格式不正确,如果解析成功,将保存升级文件版本号,以备后期升级验证使用,判定模块是否升级成功;二是升级文件分块,升级系统采用扩展的DL/T-698.45 文件传输协议,支持报文长度较大,为提高文件传输速度,减少与模块端交互,将升级文件按报文最大容纳长度进行分块。
2.1.2 建立连接
与通信模块建立连接,升级软件启动后就开始对各个串口开启监听,收到STA 地址报文后,给STA 分配地址,按照串口编号将STA 分配地址,保证STA 地址不会重复,分配地址后建立连接。
2.1.3 波特率自适应
本地通信模块启动后业务串口是以一定的波特率(2 400、9 600、115 200 Baud)进行轮番发出搜表帧以获取地址,对于后期文件传输,该波特率传输文件较慢,升级软件给模块分配表地址后,开始启动波特率自适应协商功能,将模块业务口波特率以460 800、230 400、115 200 Baud,按照从高到低波特率进行协商,以探测模块端支持的最大波特率,以此波特率进行文件传输,提升文件传输速度。
2.1.4 查询版本号
与模块端通信建立之后,将查询模块端的版本号。对于升级而言,如果通信模块版本号和升级文件版本号一致,则不用升级,直接可以判断该模块程序符合需求,避免后续一系列无效操作,提高效率。
2.1.5 串口与插槽匹配
升级软件通过将识别到USB 扩展器端口与工装设备插槽进行匹配,方便操作人员能够对应升级软件与模块的升级进度。升级工装每个插槽升级是通过独立串口与USB 扩展器连接,然后连接到升级软件,插槽之间相互独立,互不影响,避免由于组网造成的干扰。
2.1.6 文件传输
升级软件文件传输功能,首先是将文件按照协议支持最大报文长度进行分块,将每一块内容进行编号,附加在报文里,然后按顺序依次将分块内容及分块编号传输给通信模块,通信模块成功收到报文后,将报文编号返回给升级软件,升级软件收到编号后开始发送下一块内容,升级软件如果没有收到模块端返回的信息,会启动重传机制,当重传达到上限后,则认为与模块端通信失败,判定升级失败;然后,升级软件该串口开始重新监听机制,等待新模块或者该模块再次重新升级。
2.1.7 升级结果判定
传输文件成功后,升级软件开始监听,等待模块端重新启动,以验证升级结果,保证升级的可靠性;模块启动后,升级软件会主动查询模块版本号,和升级文件版本号进行对比,如果一致,则判定升级成功,否则判断升级失败。
升级软件功能流程如图2 所示。
图2 升级流程
工具栏能够较好地实现软件功能,在升级面板中能实时显示每个串口升级进度、状态。升级面板中有10 个子窗体,显示每个串口连接设备的文件传输进度。子窗体中会显示对应的串口编号,系统会自动识别对应升级工装的串口,并按照顺序进行展示;如果不能识别,则须要进行手动匹配串口,可在下拉框内选择设备对应的串口。升级状态栏会显示该模块所处于的升级状态,升级状态如表1 所示,能够清晰展示该串口从模块插入建立连接到最后升级成功或失败的过程。
表1 升级状态明细
通信模块安装在升级工装插槽内,上电后开始以默认波特率发送搜表报文,与升级软件建立连接,接受升级软件修改波特率指令,切换到相同波特率。然后上位机将拆分好的升级文件通过扩展工装命令进行下发。升级软件和STA 所有交互都是一问一答方式。通信模块业务串口接收到升级文件后,从第一包数据中找到升级文件头信息,对厂商代码、版本号进行信息校验,若检验成功,则将文件块编号返回给升级软件,开始继续文件传输;否则结返回给升级软件的标志为失败,结束升级,以保证安全性。模块端在接收文件时,考虑模块的存储空间,使用4 KB 缓存,每接收满2 KB 写入一次flash。升级文件全部接收完成,重新从flash 中读取出来,进行CRC 校验,如果校验正确更新imageinfo 信息,立即重启,若校验不正确则直接重启。通信模块接收文件时超过1 min 无报文交互、或报文交互一直错误,执行结束升级流程。在升级过程中不可避免出现升级文件传输以及断电等故障,模块端具有良好的容错机制,如文件信息校验、版本校验、CRC校验等,有助于保障模块系统的可靠性、稳定性、可用性。
一拖十升级工装设备实物如图3 所示,升级板设备主要有电源开关、电源开关指示灯、电源插座、单相模块弱电插槽接口、三相模块弱电插槽接口、模块串口收发数据指示灯、USB 转TTL 排针座子等元器件。使用TTL 转USB 串口线,将模块插槽与USB 扩展器连接,将扩展器接入到电脑端,能够检测USB 扩展器上连接的串口设备,显示到升级软件指示面板中,并且升级面板与升级工装设备插槽一一对应。升级工装设计中预留单相和三相插槽,兼容单相和三相模块。工装设备添加模块串口收发数据指示灯,用户使用过程中能够清晰看到哪些模块正在进行文件传输,哪些模块已经完成。
图3 一拖十升级工装设备
升级工装设计有10 个插槽,每个插槽独立通过TTL 转串口线与USB 扩展器进行连接,每个接口独立,互不影响。在使用过程中可以单独对具体某个插槽进行升级,也可以对所有插槽进行升级,升级完成之后,可以插入新的模块进行连续升级,以提高模块升级效率。
升级系统测试:升级系统在实验室做了批量规模测试,测试环境如下:3 种升级方式进行对比,实验结果如表2 所示。批量升级系统在不同参数环境下对比,升级100 个模块,记录升级时间及结果如表3 所示。
表2 不同升级方式试验结果对比
表3 批量升级系统在不同参数下试验结果
测试结果分析:通过试验结果表2 可知,批量升级工具由于具有并行策略,同时可以批量升级多块工装,单块平均耗用时间较少,仅仅是工装板升级1/10;在线组网升级须要有大规模组网环境,升级前期准备时间较长,后续文件广播传输,受干扰较多,成功率相对较低。
通过试验结果表2 可知,该批量升级系统升级成功率较高,基本能保证100%升级成功率。得益于在该升级模式下,通信模块受到的干扰较少,以及软件端和模块端健全的容错机制;在一拖十和一拖一情况下,升级完成时间接近,基本能保证在85 s 内升级完成,升级效率较高;不同版本情况下时间差异较大,接近10 s 左右,主要是由于模块端采用差分模式进行读写操作,在版本差异较小情况下,模块升级重启耗费时间较少;在差异较大情况下耗时较多。
该通信模块批量升级系统的应用,减少了模块生产过程中所须升级时间,保证了升级准确度,对电力物联网通信模块批量化、规模化生产具有重要意义。
在深入分析研究现有电力物联网通信模块升级模式的基础上,为满足生产中所需的通信模块业务口批量升级要求,设计了一种包含软件和硬件的通信模块批量升级系统,包括升级软件、模块端嵌入式、升级工装设备。该升级系统具有自动化、高效率、高成功率的特点,在生产工厂实际使用过程中能够较好满足需求。