当前位置:首页 > 通信技术 > 通信技术
[导读]针对特种纤维检测控制系统各节点软件升级困难的问题,设计了基于CAN总线应用层协议的一种远程在线升级系统,实现了单节点、多节点同时在线升级。通过实际运行分析,该系统具有可靠性高、升级操作简便、系统稳定的特点,对一般工业网络中的节点升级具有参考意义。

 引言

特种纤维检测控制系统是对生产线上产出的纤维产品各种参数进行实时检测和设备的控制装置。系统由多个数据采集节点组成,通过CAN总线网络将数据汇总到主节点,主节点对数据进行处理、分析后输出相应的控制信号,实现对生产线设备的实时调整和控制。传统情况下,如果需要针对节点进行软件升级更新,就需要专业技术人员到生产现场,通过专用的下载设备进行程序烧录更新,使系统维护成本大幅提高,降低了生产效率。因此,结合特种纤维检测控制系统现有的CAN总线网络,并利用节点微控制器的IAP功能,设计一个节点远程在线升级系统十分有必要。

本文在实现CAN总线报文数据收发的基础上,参考TCP/IP协议中的TFTP协议规范,设计了一个简单实用的系统在线升级应用层协议,并结合微控制器的IAP功能,实现待升级节点软件升级的目的。

1 IAP技术及升级系统总体结构

1.1 IAP技术及其编程实现

IAP(In Application Programming,在应用中编程)是指用户在运行应用程序过程中通过程序控制实现对片上Flash存储器的擦除和读/写等操作。IAP技术是实现系统在线升级的必要前提,本系统中待升级节点采用NXP公司的基于Cortex—M4内核的微控制器LPC4357。该芯片集成了功能强大的IAP技术,可以单次最多向目标Flash中写入4 KB数据。

IAP的功能函数被固化在ROM的Boot中。以LPC4357为例,ROM的地址0x 1040 0100作为指针指向IAP功能函数入口地址IAP_entry,因此当使用C语言编写调用函数时,首先定义IAP入口地址。在进行IAP函数调用时,通过寄存器R0 作为指针来传递命令代码和参数。IAP命令的返回结果通过寄存器R1作为指针来传递。

实现节点软件升级的关键一步就是将CAN总线接收的代码数据通过IAP编程到指定的片上Flash的扇区。IAP通过以下几个步骤实现编程操作:IAP初始化、准备扇区、擦除扇区、准备扇区、编程扇区和数据校验。

1.2 在线升级系统总体结构

系统由检测节点、CAN总线网络和升级服务器组成。其中检测节点和CAN总线网络是特种纤维检测控制系统的组成部分,因此,只要将升级服务器接入CAN总线网络,就可以搭建在线升级系统的硬件平台。升级系统总体框图如图1所示。


升级系统的软件由节点端软件和服务器端软件组成,节点端和服务器端通过CAN总线进行数据交互,在此基础上,设计CAN应用层协议。本文通过分析TCP/IP协议中的TFTP协议规范,设计了一款简单实用而且适用于CAN总线网络的系统升级协议。升级系统协议分层结构如图2所示。


2 系统升级协议设计

2.1 TFTP协议及文件传输基本流程

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的应用层协议,基于UDP传输协议。最初用来引导无盘系统,主要用于传输小文件。TFTP协议报文分为:读/写请求报文、数据包报文、确认信息报文以及差错报文。TFTP报文格式如图3所示。


TFTP客户端首先向服务器的端口69发送文件下载/上传请求,请求的相应报文格式如图3(a)所示。服务器接收请求后打开一个新的端口与客户端进行通信,服务器端口69则继续等待其他客户端的请求,从而实现同时响应多个客户端的文件传输请求。当客户端发送的文件下载请求得到服务器ACK确认后,开始发送编号为1的数据包,数据包的报文格式如图3(b)所示。每个数据包的大小为固定的512字节,服务器每次发送数据包之前都必须得到客户端的ACK确认。当客户端接收到小于固定字节的数据包时,则认为文件传输结束。

TFTP协议也提供了相应的错误处理机制。服务器端和客户端都可实现超时重传,只要有一端出现超时,就将重传丢失的报文,从而有效的提高文件传输的正确率。在传输过程中出现错误时,服务器端向客户端发送差错报文。

2.2 系统升级协议的报文格式

CAN总线协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧。其中,数据帧用于发送单元向接收单元传送数据。数据帧格式分为标准格式和扩展格式,两者区别在于标识符分别占11位和29位,这里仅使用标准格式的数据帧作为节点和升级服务器通信的基本单位。

由于一个数据帧最多只能携带8字节数据,而在一般文件传输应用中数据以数据块的形式进行传输,因此在文件传输时需要进行数据拆分、重组的操作。在应用层的数据报文中对这一操作进行屏蔽,具体操作通过底层协议实现,因此这里仅需关心数据帧的数据段。升级协议的报文分为:升级命令、数据包、确认信息、错误信息,相应的报文格式如图4所示。

升级命令由升级服务器发出,ID号用于确认待升级节点,升级模式分为单节点升级模式和多节点同时升级模式。数据包用于服务器向节点传输升级所需的二进制文件,每个数据包携带固定的1024字节数据,这是因为节点利用IAP技术进行软件升级时,每次对片上Flash编程的字节数是固定的,可选512字节、1024字节、4096字节3个选项,这里选用1024字节。确认信息和错误信息参考TFTP协议的相应报文格式。

2.3 系统升级协议及文件传输流程

系统升级命令由升级服务器发出,节点在接收到升级命令后通过校验ID号判断升级模式,进入相应的升级状态,并向服务器发送确认信息ACK。升级服务器接收到ACK确认后,开始发送编号为1的数据包,节点接收到数据包就立即将1024字节数据编程到片内Flash中,编程成功后返回ACK 1,以此类推。如果最后一个数据包N的数据长度小于1024字节,则自动向数据包添加0,使数据包长度正好为1024字节。

升级服务器接收到节点确认信息ACK N,表明节点升级完成。这里,节点端采用边接收边升级的方案。如果将升级文件全部接收后再进行升级,则需要大量的RAM空间,一旦升级文件过大,节点升级就会失败。系统升级流程如图5所示。

2. 4 系统升级中的错误处理

在系统升级过程中,可能会出现发送数据包丢失、连接中断的情况。当服务器端发送的数据包丢失或节点端接收该数据包失败时,节点端向服务器端发送错误信息。服务器端接收错误信息,根据错误内容判断是否需要重新发送数据包。如果服务器端在一定时间内没有接收到节点端的确认信息或错误信息,则认为系统升级失败,服务器端会向节点端发送升级失败的错误信息ERROR,节点端接收该信息后进入升级失败状态。

3 节点端软件升级协议的实现

检测节点采用NXP公司的基于Cortex-M4内核的微控制器LPC4357作为数据采集和控制核心,片上集成了1MB的Flash,分为BankA和BankB两个存储体,每个存储体各占512KB。

节点程序分为两部分:Bootloader升级程序和APP应用程序。APP应用程序分为两个区:默认应用程序区和升级应用程序区。片上Flash功能分区如图6所示。


Bootloader升级程序烧录在片上Flash的BankA扇区0处,占用8KB空间。系统启动时,最先执行该处程序,首先进行系统初始化操作,包括CAN总线接口初始化、IAP初始化、读器件ID号等。初始化完成后,进入等待升级状态。在该状态下,如果接收到升级服务器发送的升级命令,则进入升级状态。系统升级成功后进入待跳转状态,最后系统跳转到升级后的应用程序区。节点升级状态转换图如图7所示。


当Bootloader初始化完成且等待升级命令超时后,系统跳转到APP应用程序的默认应用程序区,开始执行节点应用程序。应用程序除了完成数据采集和CAN总线数据传输功能,还能在接收到升级服务器的升级命令时,中止系统运行并跳至Bootloader区,进入系统升级状态。

由于系统启动时不是直接开始执行APP应用程序,而是从Bootloader程序跳转进入该处程序,因此,在APP应用程序初始化之前必须将中断向量表重映射,防止APP应用程序发生中断时进入Bootloader程序的中断函数。

当升级失败时跳转到默认应用程序区,使系统在升级出错时依然能够正常运行。系统升级时,对升级应用程序区进行擦除、编程操作,升级成功后进入该程序区执行升级后的应用程序。Bootloader程序的待跳转状态根据等待超时、升级状态分别进入默认应用程序区或升级应用程序区。

4 升级服务器端软件设计

升级服务器是普通PC机,通过USB-CAN接口卡实现与CAN总线的连接。因此,升级服务器首先初始化并配置USB—CAN接口卡,通过以下步骤实现:

①打开USB—CAN接口卡对应的COM口。

②配置相应COM口波特率、校验位等参数。

③通过向COM口发送配置信息,对USB—CAN接口卡进行参数配置。

其中,应设置USB-CAN接口卡波特率与外部CAN总线网络的波特率相匹配;接着,升级服务器将对升级程序的二进制文件进行操作,该二进制文件在编译器对节点升级程序进行编译时生成,也可通过对生成的HEX文件进行转换得到。首先,升级服务器获取文件大小N KB,将该数值N传递给升级命令,节点端接收升级命令的同时可获取文件大小,从而确定IAP编程次数;然后,升级服务器将该二进制文件读入内存中,在升级开始后,根据升级协议的相关格式将数据进行封装并发送到相应节点端。

升级服务器也可根据需要选择不同的升级模式。可供选择的升级模式有:单节点升级模式和多节点同时升级模式。单节点和多节点同时升级的区别在于,多节点升级利用了CAN总线节点可接收广播数据的特性,通过配置USB—CAN接口卡的ID过滤器,升级服务器可接收相应节点发送的确认信息,实现多个节点同时升级的操作。升级服务器的软件界面如图8所示。


结语

本文结合特种纤维检测控制系统现有的CAN总线网络和节点的IAP功能,设计了节点在线升级系统。参考TFTP协议,设计了一种适用于CAN总线网络的系统升级协议。通过将节点端的片上Flash进行功能分区,实现了在升级出现错误时维持节点稳定运行。根据实际应用需要,服务器端选择相应升级模式,提高了升级效率。系统的实际运行结果表明,升级操作简单高效,节点在升级后运行稳定,系统性能良好。CAN总线网络和智能节点广泛应用在工业控制等领域,该系统为节点升级的实际需求提供了一种可行的解决方案。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

CAN总线是一种串行通信协议,是ISO国际标准化的。它最初设计用于汽车内的多路电气布线以节省铜线,但也可以用于许多其他环境。在CAN总线中,所有的单元都可以发送和接收信息,且所有与总线相连的单元都可以开始发送新消息,但如...

关键字: CAN总线 CAN总线故障分析

CAN通信是一种控制器局域网络(Controller Area Network)通信协议,是由德国BOSCH公司开发,并最终成为国际标准(ISO 11898)。它是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率...

关键字: can通信 CAN总线

CAN总线通信是一种用于解决汽车众多控制部件之间的数据交换而开发的一种串行数据通信总线。它的英文全称是Controller Area Network,即控制器局域网。CAN总线通信的特点包括多主控制、通信速度快、通信距离...

关键字: CAN总线 CAN故障维修

太阳能供电应用系统的设计需要考虑多个方面,包括太阳能电池板、储能装置、控制模块等。本文将介绍一种基于太阳能供电的应用系统设计方法,并从这几个方面进行详细阐述。

关键字: 太阳能 系统设计

北京2023年9月19日 /美通社/ -- 随着科技的快速发展,我们正处在一个数据爆炸的时代。超大规模数据中心作为数据的重要存储和处理场所,其数量在不断增长,与之而来的数据量也在呈指数级增长。这不仅包括原始数据,还包括分...

关键字: 分布式 节点 软件 数据中心

(全球TMT2023年9月5日讯)在2023年华为云沙特峰会上,华为宣布,华为云利雅得节点正式开服。本次开服后,利雅得节点将成为华为云服务中东、中亚和非洲的核心节点。华为云利雅得节点通过3AZ(可用区)架构,提供了高可...

关键字: 节点 华为云 云服务 GO

沙特阿拉伯利雅得2023年9月4日 /美通社/ -- 在2023年华为云沙特峰会上,华为宣布,华为云利雅得节点正式开服,推动该国数字经济增长。 本次开服后,利雅得节点将成为华为云服务中东、中亚和非洲的核心节点,可提供创...

关键字: 华为云 节点 AI 数字化

全闪存存储的历史性时刻到来! 北京2023年8月30日 /美通社/ -- Gartner最新数据显示,2023年第一季度全球外部存储市场同比增长0.5%;其中,全闪存阵列同比增长3.6%,市场规模超过非全闪存阵列,占整...

关键字: 数据中心 数据存储 节点 机械硬盘

杭州2023年8月25日 /美通社/ -- 8月17日,以"绿色永续制造"为主题,正泰新能常务副总裁、可持续发展官黄海燕在在近期的一次公开演讲中,公布了以2028年、2035年和2050年为主要时间节...

关键字: 可持续发展 光伏组件 ROM 节点

北京2023年8月15日 /美通社/ -- 日前,在第五届OCP China Day 2023(开放计算中国技术峰会)上,浪潮信息正式推出融合架构3.0原型系统,以开创性的系统架构设计实现了计算资源、存储资源、...

关键字: 系统设计 内存 软件定义 数据中心
关闭
关闭