APP下载

Ymodem协议原理及其在变频器固件下载中的应用

2021-06-24叶身学江金鱼

湖北理工学院学报 2021年3期
关键词:文件名下位字节

李 亮,叶身学,江金鱼

(1.浙江海利普电子科技有限公司,浙江 海盐 314300;2.湖北理工学院 机电工程学院,湖北 黄石 435003)

变频器在工业领域有着极为广泛的应用。由异步电机转速n=60f/p(1-s)(n为电机转速;f为电源频率;p为极对数;s为转差率)可知,转速与频率成正比,可以通过调节电机变频器的输出频率来实现调速节能的目的[1-2]。变频器的供应链制造过程主要有PCB的生产制造和整机组装测试两大部分,而整机组装测试环节中又包含了组装、安规检测、预测试、老化测试、包装等诸多工艺。本文聚焦于变频器的预测试环节,在串行通信(RS485)硬件环境下,将Ymodem协议引入到变频器固件下载中[3],以缩短变频器固件程序的下载时间,提升变频器预测试段的生产效率。此外,主要从Ymodem的发展背景、协议实现的最低要求、数据帧结构及传输会话流程几个方面系统地阐述Ymodem在理论层次的细节实现,并以实际应用案例验证其软件实现及性能对比。

1 Ymodem协议的发展

Ymodem源于Xmodem。Xmodem协议以8位数据为传输对象,将文件数据先分割为若干个128字节的数据包,再封装为数据帧进行传输,数据报文的校验方式由8位CheckSum[4]发展到CRC16位的冗余校验[5]。在使用中发现,Xmodem协议只解决了数据传输的问题,其多文件传输受到局限。在此背景下,一种将文件名、文件大小信息一并发送的方式即Ymodem协议被提及。

Ymodem协议在将数据块字节长度扩展到1 024字节的基础上,增加了0编号的数据块,支持单数据块长度为128字节和1 024字节混合数据包。在数据块传输间的确认上,衍生出2种常用协议,即Ymodem-1K CRC协议和Ymodem-G协议[6]。前者每包数据发送都需要下位机回复收到确认ACK信息,通用性较强;后者有错误控制的调制解调器硬件配套,以及通信环境良好的上、下位机文件传送[7]。

1.1 Ymodem协议的最低系统要求

上、下位机如果需要支持Ymodem协议,需要满足以下要求。

1)文件名和文件长度等文件属性相关信息需放在数据块编号0中传送。

2)文件路径或文件名必须是空符(0x00)结尾的ACSII字符串。

3)在没有明确重写文件名的情况下,接收程序需使用发送方指定的路径名或文件名作为文件名。

4)发送程序需使用CRC16冗余校验响应下位机“C”应答请求,否则则为8位CheckSum方式。

5)接收程序需能兼容128字节和1 024字节混合发送模式。

6)发送过程中,在未收到ACK回复的情况下,发送程序不得变更数据区块的长度。

7)每个文件发送结束后,发送程序需发送至多10次“EOT”,直到接收到ACK为止。

8)传输正常终止需以空字符的文件名数据包结束。

1.2 Ymodem数据帧

Ymodem协议关键字段定义[8]见表1。

表1 Ymodem协议关键字段定义

1.2.1 Ymodem数据帧结构

Ymodem协议可支持128字节和1 024字节2种字节长度的数据帧[9]。Ymodem数据帧结构见表2。在表2中,数据区块的所占字节数是由数据帧中Byte[0]字节判定;表示接下来的数据区域长度为128字节;表示接下来的数据区域长度为1 024字节;帧数据Byte[1]为当前数据包编号,Ymodem协议是从0编号开始,当数据包编号大于255时,从0开始循环计数;Byte[2]为Byte[1]的反码,用于数据包纠错。

当待发送数据区块的有效数据长度大于等于1 024字节时,数据区块按1 024字节整除截取顺序发送;当有效数据长度大于128字节但小于1 024字节时, 数据区块不足部分以Null字符填充的方式,拼包1 024字节发送;当有效数据长度为128字节时,按照实际数据发送;当实际有效数据长度不足128字节时,则剩余部分用Null字符填充,以128字节发送。数据校验区域的实际取值为当前数据帧中数据区块的校验值。

校验方式是由文件接收方(下位机)决定,当下位机收到Ymodem指令进入Ymodem传输模式后,应答回复的字符为“C”(0x43),则双方以CRC16校验方式通信,否则以CheckSum方式发送。

表2 Ymodem数据帧结构

1.2.2数据传输会话流程

以某款变频器为例,数据传输会话流程如图1所示。

图1 数据传输会话流程

在Pack[0]数据中,可以传送的信息有以下几种。

1)文件名信息(必须 ):文件名需满足MS-DOS系统文件名规则,需以ASCII的空字符结束。

2)文件大小(可选):文件大小字段需以十进制字符存放在文件名后,并以空字符结束。

3)文件修改日期(可选):用于给出发送文件的最近一次更改时间,单位为s,采用GMT计时方式。以数字字符的方式放在文件长度之后,以空字符Null结束。

4)CRC16检验Ymodem协议遵循的是CRC16_CCITT,即国际电报电话咨询委员会标准的CRC检验方式[10],生成的多项式公式为G(x)=x16+x12+x5+1。

2 应用案例分析

2.1 应用场景模型介绍

变频器的软件分为应用层和控制层。控制层程序用于处理与电机操作相关的应用,而应用层软件则用于处理与用户交互(如参数管理、数据监控以及IO卡等)操作相关的应用。应用层和控制层均对应有自己的测试模式程序,可作为Bootloader引导程序跳转到正常应用模式,也可以用于自我软件升级。在供应链制造环节,测试设备需要更新的通常是变频器的应用层和控制层。

在本应用案例中,变频器标配的基本通信口为RS485,支持变频器的总线控制及软件更新功能。软件更新机器需进入特定模式(测试模式),以下不做特殊说明,均视机器处在软件更新的特定模式下。在特定模式下,变频器的数据下载大致分为2种方式,即以字节方式直接写入和以数据块方式写入,两者的区别在于写入的字节数大小。

在字节直接写入模式下,数据是采用单字节、双字节或多字节直接写入。为提高传输效率,一般不附带数据检验信息,但在某些情况下可以附加上字节长度信息。这种方式的优点是指令直观、可读性强,上位机(测试软件侧)和下位机(变频器侧)程序开发都比较简单。缺点是当写入的数据长度较短时,虽然数据写入准确率高,但因数据传输次数多致使数据写入效率低;当数据长度较长时,数据传输次数随单次写入字节数的增加而相应减少,通信一旦被干扰,会导致数据下载失败。因此,为提高准确率,数据通常会来回确认,导致整个传输效率降低,不适合大数据或文件的传输。

在数据块写入模式下,所有被下载的数据被分割成大小规整的数据块。当发送剩余数据不满足分割要求时,数据会通过填充特定字符规整化。分割后的数据附加上传输协议报文特征数据,重新封装为一个数据帧,整包送出后,再到下位机侧重新拆包拼接还原原始数据。该方式下数据传输遵循特定规则,即文件传输协议。采用文件传输协议传输数据的优势是单次可以传输更多的数据,并且在数据被干扰的情况下可以采用数据校验等手段甄别错误包并重发,无需数据的整包确认,大大提高传输效率,在块写入模式下,上、下位机的程序较字节直接写入方式要稍复杂。

软件开发工具采用可视化编程工具LabVIEW 。其特点是采用图形化编程语言(G语言),通过拖动、连接函数面板与控件面板的功能框图,快速构建程序功能。在开发相关程序时,开发者只需要关注功能的实现,无需关注底层驱动细节,简单易学,特别适合工业测试现场使用[11]。

2.2 程序流程图

Ymodem协议在变频器固件下载中开发的上位机程序流程如图2所示。指令部分采用字节直接写入方式执行。考虑到程序的兼容性,本案例将3种下载校验方式均整合在1个程序中,上位机会自动根据下位机回复的握手方式进入相应的处理循环。

图2 Ymodem协议在变频器固件下载中开发的上位机程序流程

在图2中,最左列为Ymodem-CheckSum校验方式的数据传输流程。CheckSum校验将每帧数据求和取最低字节放于帧尾。中间列为Ymodem-CRC校验方式的数据传输流程。CRC校验将每帧数据做CRC16检验运算后,计算结果按高位在前低位在尾放于帧尾。最右列为Ymodem-G协议下的数据传输流程。从图2可以看出,Ymodem-CheckSum与Ymodem-CRC采用相同的应答模式实现数据传输,两者的差异在数据包(帧)的校验方式。整体来看, Ymodem-CRC具有更高的侦错率。而Ymodem-G传输模式则是直接跳过对每包数据的校验应答与确认,上位机直接一次将数据发送完毕,整个文件数据可以连续发送,直至文件传输结束。因此,在无干扰工况下或有硬件校验工况下具备传输速度快、效率高的特点。由于Ymodem-CheckSum与Ymodem-CRC每包数据均需要下位机的确认,所以在有一定干扰情况下,传输速度略慢于Ymodem-G,但文件传输准确率高,特别是Ymodem-CRC校验方式更适合通信工况复杂的工业产品数据传输。

2.3 程序的实现及监控

本案例中基于变频器产品的固件下载应用场景开发的LabVIEW程序主要由以下几个关键子vi组成:①Ymodem Initial Send.vi 用于判断下位机回复的握手方式;②Ymodem Send Packet.vi 用于封装数据帧;③Ymodem Get ACK NAK Patch.vi 用于检测每帧数据包发送后的下位机响应;④Ymodem Cancel Transfer.vi 用于发送空文件名数据包,告知下位机文件传输已完成。

主程序的实现过程包括:首先,LabVIEW上位机在写入字节指令后,通过Ymodem Initial Send.vi子程序和下位机握手确认就绪与否以及校验方式;之后,通过Ymodem Send Packet.vi子程序将文件名、文件大小等属性信息按照协议重新封包为Ymodem数据帧,传输到下位机;Ymodem Get ACK NAK Patch.vi子程序确认每个数据帧的传输状态,即是否准确接收、是否需要重发数据帧或者是否需要结束数据传输;Ymodem Wait ACK Cancel.vi子程序检测是否传输完毕;Ymodem Cancel Transfer.vi 子程序向下位机发送空数据帧,结束文件传输。在本应用场景中,由于不同的应用数据需要存放在指定起始地址的Flash中,故采用的是单文件传输方式(Ymodem协议本身是支持多文件分批传输的)。

为了方便程序的实际调试及监控,案例借助一款串口监控软件做实时报文监控分析诊断。在整个传输过程中,上位机程序能够完全覆盖到Ymodem协议下数据接收方(下位机)的各种数据请求,准确给出响应,保证文件传输的完整性。

本案例采用115 200 bps的波特率,RS485异步串行通信半双工模式下利用Ymodem进行数据传输。

每包数据的理论下载时间计算公式为:

(1)

由式(1)可以得出,每包数据的理论下载时间为89.323 ms,而实测下载时间为90 ms。这是由于下位机在接收到数据帧后存储及响应会占用一定时间,每包数据相对于Xmodem模式下载方式可以提升30~100 ms左右,并且实际验证下载过程中在通信被干扰的情况下(回复15’)可以自动重发,准确完成下载任务。另外,在同样的传输环境里,Xmodem协议每包数据的有效载荷率为128÷133≈96.2%,Ymodem协议每包数据的有效载荷率为1024÷1029≈99.5%,在传输大文件数据时,Ymodem由于数据切割包数更少,有效载荷率也更高,因此传输效率提升明显,符合预期。

3 结束语

Ymodem协议相较于Xmodem协议具有更高的传输效率,较之于同类型的其他协议具有结构更简单、容易实现的优点[12]。因此,随着嵌入式系统的发展渗透,基于嵌入式平台产品的大量涌现,Ymodem协议以低廉的实现成本及高效的数据传输特性优势被更多的嵌入式平台采纳,应用到更多的工业消费类产品中去,在工业生产领域具有广阔的应用前景和持久的生命力。

猜你喜欢

文件名下位字节
No.8 字节跳动将推出独立出口电商APP
基于UDS协议的CAN BootLoader的开发与验证
右键调用多重更名更方便
Excel轻松提取文件名
No.10 “字节跳动手机”要来了?
发射机房监控系统之下位机
把我的秘密藏起来
轻量级分组密码Midori64的积分攻击
围观党“下位”,吐槽帝“登基”
CAN总线并发通信时下位机应用软件设计