倪文龙,钱宏文,付 强,杨文豪,饶 飞
(中国电子科技集团公司第五十八研究所,江苏 无锡 214035)
随着以太网应用的普及和技术的发展成熟,其他类型网络技术也在逐步发展,在某些领域发挥着自己的优势[1]。在工业控制领域中,工业以太网是性能优于现场总线,且处于快速蓬勃发展中的以太网改进技术。由于系统兼容性好、互联操作通用性能好,用工业以太网组成的网络系统不仅可以即插即用,还可兼容许多厂家的设备;数据互通能力好,能更好实现系统管理层与现场控制信息的资源互通,传输距离长且传输速率高,因此受到广泛的关注。因此,研究基于工业以太网的工业设备具有很大的市场前景[2-3]。
工业以太网设备安装运行后,当需要修补漏洞、进行更新程序版本时,要对设备程序进行维护和升级。如果对工业以太网设备群进行大规模统一的现场程序升级,不仅会增加厂家程序维护人员的工作强度,还会对用户造成极大不便,从而阻碍工业以太网技术的推广和发展[4]。所以,设计能为工业控制系统程序完成自动升级维护方案的需求很迫切。
传统的网络通信方式是利用源—目的的方式,网络数据发送源节点唯一对应一个目的节点[5]。当源发送节点要将相同信息发送给多个目的节点时,需要多次更换报文中的目的地址,同一条信息得发送多次才能发送完。因此,产生了生产者—消费者网络通信概念[6-7],并在Netlinx网络中大量应用。该模式使用组播的方式进行数据传输,一个源生产节点可对应多个目的消费者节点。在网络上,源节点数据可以在同一时刻传送给多个目的节点。源节点对数据按报文进行标志,再运用组播方式发送到互联网络中。然后,网络上的目的节点通过标志符按照需求接收与自身匹配的数据。此模式下,源节点要将同一数据发送给多个目的节点的时候,只需一次发送即可结束。与传统方式相比,该方式优点突出。
以太网协议、传输层TCP/IP协议和应用层CIP协议组成了Ethernet/IP网络主要架构[8]。Ethernet/IP网络模型如图1所示。
图1 Ethernet/IP网络模型
常用的升级编程实现方法分为在系统编程(in system programming,ISP)与在应用编程(in application programming,IAP)[9-10]。ISP方法通过微控制器专用的编程仿真器对微控制器的FLASH进行编程。IAP则是将FLASH从结构上划分为多个存储区,可对除升级代码执行区域以外的存储区重新烧写后跳转到最新烧写区域执行更新后的代码。ISP一般需要手动的外部电路boot实现。IAP则更加灵活,可使用微控制器的RS-232口或者SD卡作为媒介,并运用引导加载区升级来完成内部存储区升级。
该技术主要是在产品出厂以后利用预留接口完成对产品的升级[11]。通常情况下,产品在出厂时就已经完成功能代码烧写。当设备需要升级时,将设备返厂烧录。此方式会对用户造成极大困扰。如果将主控芯片的FLASH分区使用,主要分为应用程序区(application)和引导加载区(bootloader)。设备出厂时,需要将引导加载程序一次性烧好,一般不轻易修改;主要对用户应用程序进行更新和升级。IAP技术原理如图2所示。
图2 IAP技术原理图
此设备的升级系统主要是通过 STM32主系统、SD卡与上位机联合使用系统实现的。设备IAP升级如图3所示。
图3 设备IAP升级示意图
该系统实现了通过按键触发,利用SD卡完成通信系统的IAP升级后,再通过连接两块板子的RS-485总线完成另外一块控制系统的IAP升级,从而完成整套系统的软件升级。
每一个系统存储都划分为引导加载区(APP1)和应用程序区(APP2)。APP1中的程序可通过与工业设备连接的SD卡通信,并从SD卡中读取工业以太网通信程序(预先存入SD卡里)后对APP2中的程序进行擦除和改写;完成通信板程序升级以后,读取SD卡中的控制系统程序;通过RS-485接口完成对变频器控制系统的升级工作,待第二个系统升级结束以后,结束系统的引导加载程序,跳转到APP2中执行程序。
工业以太网的设备包含工业以太网通信系统(通信系统)、变频器控制系统(控制系统)2套系统。工业以太网模块选用Anybus公司的B40集成模块。通信系统为了实现IAP系统升级,需要完整的最小硬件配置,除了触发条件与升级载体外围相关电路,还要包含STM32运行最小系统。本文设计中的2套系统均采用STM32F429作为主控器件、按键作为触发机制,决定是否升级;SD卡作为升级程序载体,完成升级程序源的更新。设备内部硬件连接如图4所示。
图4 设备内部硬件连接图
常用存储设备有SD卡、FLASH和U盘。综合比较后,本文设计采用SD卡作为2套嵌入式应用程序更新参数数据的存储介质。STM32只需几个I/O接口就可外扩32 GB的外设存储[12-14]。STM32自带SD卡I/O接口(SDIO),操作编程简单方便,且SD卡自带文件系统,可插拔,灵活性强。
所以工业以太网设备也选用STM32连接SD卡,将SD卡作为升级系统文件的载体,很大程度上便于直接与计算机对接,导入/导出升级程序以及导出存储的参数数据。STM32F249 SDIO接口数据流如图5所示。
图5 SDIO接口数据流示意图
系统整体升级流程如图6所示。
图6 系统整体升级流程图
系统复位后,首先进行串口、RS-485、SD卡、SDRAM及数据缓冲区初始化,然后判断外部按键中断状态,得到升级程序请求标志。如果没有外部按键中断,则直接跳转到最新一次标志位区域的APP程序区执行主程序。如果有外部按键按下,通信系统与控制系统分别跳转到各自的IAP升级程序部分,通信板先开始执行IAP升级程序,并给控制系统发送升级需求等待数据报文,使其进入等候状态。当通信系统升级结束以后,判断升级数据校验是否合格,如通过直接跳转更新后的APP1/APP2,开始运行程序;如果升级状态数据异常,则直接跳转到重新读取SD卡中的数据,重新开始IAP升级步骤。
控制系统升级与前者升级方法类似,工业以太网通信系统通过SD卡读取变频器控制系统升级程序,并通过RS-485发送给变频器控制系统。当控制系统接收到数据并校验通过以后,调用IAP升级程序,完成对其的在线升级功能。
2套系统在执行设备用户程序的过程中,都会不停检查各自的升级请求触发条件。如果收到请求,就会保存当前现场与相关参数,指针运行到引导代码执行。
升级设备连接如图7所示。连接好设备之后,给设备供电,等待设备运转正常。当系统需要升级时,按下工业以太网设备升级键,等待1 s,系统就开始进入自动升级阶段。
图7 升级设备连接图
待系统软件完成升级后,系统会重新进入更新后的程序。为验证系统设计程序是否更新成功,最直接的办法是利用Anybus工业以太网模块内嵌的Web服务器通过计算机访问。此Web返回信息为系统设备的相关信息与参数。通过对Web服务器的访问,初步验证升级是否完成,最终需要将设备接入工业现场环境中,完成对升级程序新需求的功能验证和应用。
本文提出了基于IAP和SD卡的工业以太网设备嵌入式应用程序的在线升级法。预先通过读卡器将需要升级的工业以太网设备存入SD卡中,并安装到工业以太网设备。当升级按键被触发,应用程序代码捕捉到按键升级请求后,将当前相关参数保存到SD卡。系统复位后,计算机指针跳转到引导加载区。通信系统与控制系统分别读取SD卡中需要更新的设备升级程序到微控制器的RAM中,并使用引导加载区IAP功能将用户程序烧录到主控器片内划分的指定FLASH中,完成各自设备升级工作,从而实现工业以太网的设备应用程序整体在线升级过程。该方法免去了拆卸设备到现场和带专用烧写编程器的复杂流程。SD卡便于拆卸和携带,升级程序与相关参数的读取和保存也十分方便,成本低廉。该方法在工业以太网的设备程序在线升级中已经得到使用。