技术领域
本发明属于工业通信应用技术领域,具体涉及一种基于EtherCAT实时以太网的伺服驱动固件升级方法。
背景技术
现有技术是使用串口进行固件升级或者无升级功能。
使用串口升级优点是开发难度低;使用串口升级的缺点,在设备现场无法操作或很难操作,需要携带额外的工具和接口,产品上需要预留空间,并为此付出成本,同时传输过程不可中断,无纠错机制。
基于上述问题,本发明提供一种基于EtherCAT实时以太网的伺服驱动固件升级方法。
发明内容
发明目的:本发明的目的是针对现有技术的不足,提供一种基于EtherCAT实时以太网的伺服驱动固件升级方法,可以在伺服驱动器现有的EtherCAT协议中实现固件升级,不增加额外的数据接口,不需要拆机进行,提高了产品固件升级的便捷性,同时能够减少系统的维护费用,能够产生较好的经济效益,具有较高地实际工程应用价值,适用范围广泛,易于推广。
技术方案:本发明提供的一种基于EtherCAT实时以太网的伺服驱动固件升级方法,包括以下步骤,步骤1、设计MCU中的地址分为IAP地址和用户APP地址,将IAP程序通过SWD烧录到MCU中的IAP地址上。步骤2、上位机软件需要将二进制固件拆分打包,分为帧单位和包单位,进行编码。步骤3、MCU在数据接收的起始,会把上位机下发的固件整体信息作为控制数据保存下来,包含文件大小,包数量,以及帧数量。步骤4、帧号发送的当前包的第几帧,从0开始,最大257,每次帧号增加,帧号从零开始,包号发送的当前固件的第几包,从1开始,最大512,每次包号增加,包号从1开始,其中,传输过程中如果发生了断开事件,MCU会保存当前状态,记录断开的帧序号和包序号,直至重新连接,然后从断开处开始接着传送数据,实现断点续传功能。
本技术方案的,所述步骤2中的每包信息包含归属于这一包的帧数量,1KByte数据和CRC校验信息,每帧信息包含4字节数据和帧序号,每帧数据为最小传输单位,通过建立的专用的EtherCAT-COE中的对象字典传输。
本技术方案的,所述步骤3中的数据接收过程中,每接收到一帧报文,首先校验帧序号是否正确,如正确,存入SRAM中,如不正确,丢弃报文并通知上位机重发数据,每接收完一包数据,会校验CRC信息,然后写入指定Flash区域,开始接收下一包数据,直至数据全部接收完毕。
本技术方案的,所述步骤4中传输过程利用EtherCAT总线中COE设备行规进行,EtherCAT从站设备在报文经过其节点时读取相应的编址数据,同样,输入数据也是在报文经过时插入至报文中,在协议中设计开辟专用对象,用来作为数据传输的容器,3001、30023003、3004、3005,这些对象中包含了错误码、数据、帧序号、包序号、控制指令,用来保证升级过程完整有序进行。
与现有技术相比,本发明的一种基于EtherCAT实时以太网的伺服驱动固件升级方法的有益效果在于:可以在伺服驱动器现有的EtherCAT协议中实现固件升级,不增加额外的数据接口,不需要拆机进行,提高了产品固件升级的便捷性,同时能够减少系统的维护费用,能够产生较好的经济效益,具有较高地实际工程应用价值,适用范围广泛,易于推广。
附图说明
图1、图2是本发明的一种基于EtherCAT实时以太网的伺服驱动固件升级方法的流程框图;
图3是本发明的一种基于EtherCAT实时以太网的伺服驱动固件升级方法的ECAT在线升级方案地址划分定义示意图。
具体实施方式
下面结合具体实施例,进一步阐明本发明。
如图1、图2和图3所示的一种基于EtherCAT实时以太网的伺服驱动固件升级方法,包括以下步骤,步骤1、设计MCU中的地址分为IAP地址和用户APP地址,将IAP程序通过SWD烧录到MCU中的IAP地址上。步骤2、上位机软件需要将二进制固件拆分打包,分为帧单位和包单位,进行编码。步骤3、MCU在数据接收的起始,会把上位机下发的固件整体信息作为控制数据保存下来,包含文件大小,包数量,以及帧数量。步骤4、帧号发送的当前包的第几帧,从0开始,最大257,每次帧号增加,帧号从零开始,包号发送的当前固件的第几包,从1开始,最大512,每次包号增加,包号从1开始,其中,传输过程中如果发生了断开事件,MCU会保存当前状态,记录断开的帧序号和包序号,直至重新连接,然后从断开处开始接着传送数据,实现断点续传功能。
进一步优选的,所述步骤2中的每包信息包含归属于这一包的帧数量,1KByte数据和CRC校验信息,每帧信息包含4字节数据和帧序号,每帧数据为最小传输单位,通过建立的专用的EtherCAT-COE中的对象字典传输;及所述步骤3中的数据接收过程中,每接收到一帧报文,首先校验帧序号是否正确,如正确,存入SRAM中,如不正确,丢弃报文并通知上位机重发数据,每接收完一包数据,会校验CRC信息,然后写入指定Flash区域,开始接收下一包数据,直至数据全部接收完毕;及所述步骤4中传输过程利用EtherCAT总线中COE设备行规进行,EtherCAT技术突破了其他以太网解决方案的系统限制,通过该项技术,无需接收以太网数据包,将其解码,之后再将过程数据复制到各个设备,EtherCAT从站设备在报文经过其节点时读取相应的编址数据,同样,输入数据也是在报文经过时插入至报文中,整个过程中,报文只有几纳秒的时间延迟,由于发送和接收的以太网帧压缩了大量的设备数据,所以有效数据率可达90%以上,100Mb/s TX的全双工特性完全得以利用,因此,有效数据率可大于100Mb/s(即大于2x 100Mb/s的90%)。在协议中设计开辟专用对象,用来作为数据传输的容器,3001 3002、3003、3004、3005。这些对象中,包含了错误码、数据、帧序号、包序号、控制指令,用来保证升级过程完整有序进行。
实施例
本发明的基于EtherCAT实时以太网的伺服驱动固件升级方法,主要采用32位ARM内核MCU和EtherCAT专用芯片,设计出具有IAP功能,可通过EtherCAT接口远程更新固件的方法,并对其设计原理和实现过程进行了详细的描述。
利用32位ARM内核MCU可以读写片内程序空间的特性,首先在片内Flash中写入IAP程序,然后通过IAP程序实现对MCU片内用户程序的擦写,而无需通过传统的仿真器和JTAG接口方式做烧写工作。
32位ARM内核MCU专为高性能、低成本、低功耗的嵌入式应用设计。片上集成1024KB的Flash存储器,可用于存储程序和数据、192KB的SRAM存储器,能从闪存空间执行代码等特点。MCU的内部闪存(FLASH)起始地址为0x08000000,程序文件一般从此地址开始写入。用户程序设置偏移量0x8000(32Kbyte)。
IAP程序是在MCU上电后,在main(void)函数中检测是否需要升级固件,如果固件版本不需要升级,就直接跳转至用户程序空间起始地址运行,如果需要升级固件版本,则开始进入固件接受状态,等待上位机下发的数据包;上位机软件需要将二进制固件按照包和帧的规则进行拆分打包,分别编码,帧号:发送的当前包的第几帧,从0开始,最大257,每次帧号增加,帧号从零开始,包号:发送的当前固件的第几包,从1开始,最大512,每次包号增加,包号从1开始,每包信息包含归属于这一包的帧数量,1KByte数据和CRC校验信息,每帧信息包含4字节数据和帧序号,每帧数据为最小传输单位,通过建立的专用的EtherCAT-COE中的对象字典传输。
MCU在进入数据接收状态后开始轮询上位机数据指令,MCU在数据接收的起始,会把上位机下发的固件整体信息作为控制数据保存下来,包含文件大小,包数量,以及帧数量,数据接收过程中,每接收到一帧报文,首先校验帧序号是否正确,正确的话,存入SRAM中,不正确的话,丢弃报文并通知上位机重发数据,每接收完一包数据,会校验CRC信息,然后写入指定Flash区域,开始接收下一包数据,直至数据全部接收完毕。
整个过程结束后,跳转至用户程序空间起始地址0x08008000,从用户程序主函数main(void)中开始执行。
ETHERCAT专用是具有标准串行外设接口(Serial Peripheral Interface,SPI)的以太网控制芯片,它提供一个内部DMA模块,使其具有快速数据吞吐能力,支持硬件的IP校验和计算。通过SPI协议接口与MCU控制器进行数据通信,其以太网物理层器件(PHY)及媒介接入控制器(MAC)可实现100Mbps的传输速率,还具有网络活动状态的LED指示功能。EtherCAT专用的SO、SI、SCK、分别与MCU的SPI串行总线MISO、MOSI、CLK、NSS连接。
MCU片内存储器程序主要分为两类:IAP程序和用户应用程序。其中IAP程序包含网络TCP/IP通讯、Flash编程、地址跳转等模块,该程序文件一般通过JTAG接口或仿真器从内部闪存(FLASH)起始地址0x08000000开始写入,完成后可以将IAP程序区域设置成写保护,以禁止对该区域进行编程或者擦除操作。用户应用程序只需要简单更改编译器的起始地址和设置中断向量表的偏移量,即可保证其写入MCU后正常中断和运行。
EtherCAT专用硬件芯片提供了物理层和MAC层,通过SPI协议进行数据通信,MCU通过SPI接口控制EtherCAT专用硬件收发数据包,然后通过协议栈实现网络层和传输层协议,将原始的以太网数据包进行数据解析。EtherCAT专用是专为嵌入式处理器建立TCP/IP协议提供的一种代码,其包含ARP、IP、ICMP、TCP、UDP等协议功能,实现了上层应用程序与底层硬件之间的通讯,EtherCAT协议栈是用标准的C语言实现,能使其移植在32位ARM内核MCU上运行。
用户程序在编译时应设置MDK-ARM等编译器IROM1的起始地址0x08008000,用户程序的主函数main(void)执行过程中,如果CPU得到一个中断请求,PC指针仍强制跳转到地址0X08000004中断向量表处,因此需要设置中断向量表偏移量0x8000,才会跳转至对应中断源用户程序的中断服务程序中。
用户程序主函数中需要添加中断向量表映射:
NVIC_VectTab_FLASH=0X08000004;
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x8000);
IAP程序跳转至用户地址空间的实现函数:
本发明的基于EtherCAT实时以太网的伺服驱动固件升级方法,其不需要拆设备,可以在现场升级,也不需要额外升级接口和工具,节省成本、时间、空间,同时错误重传、断点续传、抢占机制,可确保数据的正确性和安全性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
机译: 移动电话中基于事务的固件升级方法及其固件升级系统
机译: 在中间件机器环境中支持基于主机的输入/输出(I / O)设备的基于主机的带内/边带固件升级的系统和方法
机译: 在中间件机器环境中支持基于主机的输入/输出(I / O)设备的基于主机的带内/边带固件升级的系统和方法