基于CAN 协议汽车动力转向系统标定的软件设计

2021-01-18 13:31朱志峰
关键词:诊断仪字节标定

吴 樱,朱志峰*,姚 勇,汪 丹

(1. 安徽工业大学 电气与信息工程学院,安徽 马鞍山 243000;2. 安徽省爱夫卡电子科技有限公司,安徽 马鞍山 243000)

0 引言

动力转向系统标定功能主要是为了检测转向系统方向盘出现的角度偏差,并对出现的偏差通过一定的动作步骤进行标定调节,使驾驶员各种操作自如,提高行车安全。现代汽车上的控制器越来越多,为使控制器工作在最佳状态,需要根据被控系统的参数来对控制器进行标定。而标定是指根据汽车发动机性能、整车性能、经济性、安全性等多项指标对汽车电控系统软件的运行参数进行调整和优化。

传统的标定是指工程师不断改变控制器的控制参数,直至控制器能够达到最优的控制效果。由于在标定实验中存在大量的实验数据,标定软件需要具有强大的数据处理管理功能,标定工程师需要对被控系统非常熟悉并具备长期标定工作经验。针对上述问题,国外的汽车厂商已经开发出技术成熟的电控标定系统软件,其中CANape 和INCA 的标定功能最为强大,广泛应用于标定软件市场[1]。德国Vector 公司开发的CANape 软件,主要用于汽车电子控制单元(electronic control unit,ECU)的参数优化,在系统运行期间标定参数值和采集测量信号,具备全面测试和分析相关诊断通信的能力[2]。德国ETAS 公司开发的INCA 通用测量标定系统,包括标定的硬件及上位机软件,除了可对汽车ECU 数据进行测量标定外,还具有标定参数配置和数据刷写功能[3]。而国内对标定系统的研究一般建立在对国外标定软件应用的基础上,针对特殊的车型系统或应用场景而研究和开发,比如使用INCA 标定软件进行数据刷写,通过对安全校验算法的标定,实现在网络和单机模式下的INCA 数据刷写管理[4]。当应用场景或车型系统发生改变时,原有的标定系统将无法继续使用。针对此问题,本文设计了一种动力转向系统的方向盘角度标定诊断软件,使其可适用于大多数车型,标定过程操作方便,可提高诊断效率。

1 标定的基本原理

动力转向系统的方向盘角度标定属于动力转向系统中特殊功能部分。标定过程具体分为数据通信连接、诊断命令分析、标定功能实现3 大模块。数据通信连接模块是指根据协议类型确定初始化参数,使得诊断系统与汽车ECU 建立通信连接。诊断命令分析模块是对通信数据进行分析,从而提取关键命令信息,并建立诊断数据库。标定功能实现模块是指根据诊断数据库内容进行开发,利用C 语言编写标定功能函数,完成对标定步骤的设定,实现诊断仪的具体标定功能。在本文动力转向系统的方向盘角度标定中,选择以观致品牌车型为例,对其进行标定软件的设计。

1.1 通信协议基本原理

CAN 总线是一种用于实时应用的串行通信协议总线,可以使用双绞线传输信号,而且总线协议支持多组控制器,是世界上应用最广泛的现场总线之一。基于CAN 总线的汽车诊断系统以ISO15765 协议[5]为诊断通信标准。ISO15765 协议是汽车诊断网络在CAN 网络上的应用,诊断按照协议内容与体系结构进行设计。诊断协议体系结构划分为4 层,应用层、网络层、数据链路层和物理层[6]。任意一条来自汽车ECU 的诊断服务数据都需经过应用层转化处理并发送给网络层,并经过网络层的控制传输、数据链路层的打包,最终通过物理层与其他总线节点进行通信[7-9]。

1.2 诊断命令分析

将汽车ECU 中储存动力转向系统的数据信息以通信命令的形式记录发送和回复命令。采用一定的数据打包传送方式进行数据传输,其数据结构为:自定义帧头+ LEN 数据长度+ COM命令方式+ 地址信息+ 有效数据长度+ 有效数据+ CS 校验位[10]。在UltraEdit 文本编辑器中建立XML 文档[11],以XML 语言记录 汽 车ECU 与诊 断 仪 相互通信 的 命 令,并以UTF-8 编码[12]格式保存。以一组标准的CAN 协议通信命令数据为例:

其中rece 的命令表示诊断仪向ECU 发送的请求命令,send 是汽车ECU 回复诊断仪的命令。以rece 命令 为 例,“00 0d”表 示 总 长度;“30”表 示CAN 协 议;“00 00 06 29”表示 地 址 信 息;“03”表 示有效数据长度;“22 f1 90”表示该条命令的有效数据;由于有效数据长度不够,所以在后面补填“00”;“??”表示校验位。send 命令含义类似。

1.3 标定的功能设计

表1 是采用Excel 文件格式记录的观致汽车转向系统方向盘角度标定功能的界面设计。在对汽车方向盘角度进行标定之前,首先提示用户该项服务用于标定汽车电子动力转向(electric power steering,EPS)系统的转向角度;设定方向盘角度标定的检查条件;在确定满足检查条件后,发送标定命令执行标定功能,通过对ECU 标定回复命令的POS[X04]位进行真假判断,得到最终标定结果;最后根据标定结果设定提示信息。

表1 观致汽车转向系统方向盘角度标定系统的界面设计Tab.1 The interface design of the steering wheel angle calibration system of Guanzhi automobile steering system

2 标定功能程序设计

标定功能程序设计是标定软件设计的核心部分,按照标定功能模块流程,设计相关函数调用数据库实现标定的具体功能。根据表1 的标定具体步骤,标定功能的程序设计可以分为3 大模块:进入标定功能、标定执行检查条件、标定结果的获取。首先是对标定的确认过程,用户点击确定按钮才正式进入标定。进入标定系统后,设定标定检查条件,并判断汽车实时状态是否满足标定条件,条件满足则发送标定命令,并判断标定命令是否发送成功,若成功则执行具体标定操作步骤,否则标定失败;检查条件不满足则直接跳出程序,结束运行。标定功能模块的具体流程如图1 所示。

图1 标定功能模块的程序框图Fig.1 Program block diagram of the calibration function module

2.1 进入标定功能

标定步骤设定第一步是让用户确定进入标定功能,首先进入特殊功能SPE_FUNC 标签,运行MENU_DISPLAY 函数显示诊断仪界面,并进入系统标定功能,其主要数据库内容如下:

在此步骤中运行Spefunc_General 特殊功能函数,借助此函数TYPE = 0c 属性向ECU 发送标定指令22 F1 9E,并对ECU 返回的回复指令首位进行判断,若其回复指令首位有效数据非7f,则代表ECU 对指令进行肯定回复,程序往下执行;再借助TYPE = 07 属性跳转下一节点正式进入标定;若其回复指令首位有效数据为7f,则返回主界面。其程序执行如下:

TYPE = 0c 的功能是对ECU 回复指令进行判断,判断其为肯定或否定回复。程序首先进入pro_SendRecv 发送接收数据子函数,发送数据获得数据总长度。将下位机板解包的数据存放到数组recvbuf 中,并将recvbuf 的数据内容拷贝到comparebuf 中。对收到数组的第一字节进行判断,若第一字节数据为7f,移除对话框后弹出消息对话框,设置中断对话按钮功能和线程ID 后返回标定主界面。对收到的数组字节进行判断,若收到数组字节为0 则错误,提示返回标定主界面。

2.2 标定执行检查条件

对标定执行检查条件的设定通过运行Spefunc_General 特殊功能函数完成。标定执行检查条件共有3 条,每一条检查条件都按数据库中特定的步骤实行,其数据库内容如下:

以设定电池电压检查条件为例,运行Spefunc_General 特殊功能函数,借助此函数TYPE =0c 属性向ECU 发送标定指令22 10 82,并对ECU 的回复指令首位进行判断,若其回复指令首位有效数据为7f,则返回主界面;若其回复指令首位有效数据非7f,则代表ECU 对指令进行肯定回复,再借助该函数中TYPE = 13 属性,提取ECU 返回的数据中固定位置X03X04 的字节信息,并与CMP 中字节信息比较,结果为真则进行数据计算,否则显示结果为0。在此X03X04 字节为十六进制数据,若X03X04 字节数据小于十六进制数0801(即十进制数值2049),则按照数据流计算公式CMP0002([X03X04])/64.00,将原字节十六进制数转换为十进制并除以64.00,得出十进制电池电压值,计算结果保留2 位小数。最后进行显示UNIT =“V”。其他两个条件类似,计算程序执行如下:

TYPE = 13 的功能是根据发送命令所得到的回复命令,按照算法计算处理。当把CMP 属性值赋值到strexpress 后,进入getCMPstrResult 子函数:首先获取十六进制strcmp 属性值,跳转到子函数下属性为公式计算的case 中,并进入formatexpress 子函数,替换原公式中[]符号并返回正确数据公式;再对strexpress 中数据是否为空进行判断,结果为真则跳出程序,结果为假则将strexpress 值赋于claculateExpress,并进入claculateExpress 子函数计算最终数据结果。将带有数据结果的文本信息拷贝到strinfo 数组中,并将此数组与计算结果相连接。判断指针是否有UNIT属性,并将连接UNIT 属性值与strinfo 数组相连接,最终插入菜单项目到窗口。

2.3 获取标定结果

获取标定结果是在标定执行条件满足的情况下,发送标定命令执行标定功能,得到对标定过程成功与否的判断,其数据库内容如下:

在此步骤运行Spefunc_General 特殊功能函数,借助此函数TYPE = 0c 属性对ECU 标定指令31,01,10,80 的回复指令首位是否是7f 进行判断,若其回复指令第一位有效数据非7f,则代表ECU 对指令进行肯定回复,程序往下执行;再借助TYPE = 15 属性,提取ECU 返回的数据中固定位置X04 的字节信息,并与CMP 中字节01 进行比较,若结果为假,程序跳转到M007 节点;若结果为真,借助TYPE = 07 属性跳转到M008 节点。其相关程序如下:

TYPE = 15 功能是对CMP 计算结果进行真假判断。当把CMP 属性值赋值到strexpress 后,进入getCMPstrResult 子函数,同上面TYPE = 13 中getCMPstrResult 子函数程序步骤得到最终strexpress 数据值。再借助atoi 函数,将字符串型转换为整数型,将CMP 属性值的计算结果转换为整数,并与1 进行真假比较,结果为真则设置线程ID,并且进入到下一个节点,否则跳出程序。

3 测试

上述开发的过程依据观致汽车的原厂诊断仪设计出数据库以及诊断程序。而在测试阶段,则利用所设计的软件对观致汽车进行标定,记录分析数据并与原厂实车测试结果进行比较,判断标定软件是否存在缺陷,这些缺陷包括编码错误、数据库相关结构及数据错误。

在进行模拟验证前,需要将标定功能数据库和标定程序应用于诊断仪器设备中。将由C 语言编写的标定软件在安卓平台下转换成so.文件,使其适用于诊断仪的安卓系统。在本次模拟测试中,诊断仪设备选用的是爱夫卡公司F7S-Z 综合版智能诊断仪。

模拟测试需要下位机板、USB 线、F7S-Z 诊断仪以及具有汽车ECU 模拟软件的笔记本电脑。诊断仪通过蓝牙与下位机板连接,再借助USB 线与笔记本电脑连接。在下位机板的作用下,建立起诊断仪设备与笔记本电脑中汽车ECU 模拟软件的数据通讯。其模拟测试结构图如图2 所示。

图2 模拟测试结构图Fig.2 Simulation test structure

模拟测试开始,进入诊断仪观致汽车界面,选择方向盘标定诊断功能。首先进入诊断功能界面,点击进入系统方向盘角度标定功能,诊断仪提示信息,其界面如图3(a)所示;接着界面提示汽车方向盘角度标定检查条件,其界面如图3(b)所示;若标定执行条件满足,则发送标定命令;若标定执行条件不满足,则直接退出系统。

对标定命令发送成功与否进行判断,若标定命令发送失败,诊断仪界面提示标定失败信息,其界面如图3(c)所示;若标定命令发送成功,诊断仪界面提示标定操作信息,其界面如图3(d)所示;按照诊断仪提示完成操作,诊断仪界面提示最终标定结果,其界面如图3(e)所示。

图3 汽车转向系统标定功能界面图Fig.3 Calibration interface diagram of the automobile steering system

模拟测试结果表明该标定软件可以顺利进入观致车型动力转向系统中,并对汽车方向盘角度进行标定,实现标定功能。将标定成功的参数数据流与原厂设备的采样数据相比较,通信数据相同,见图4,标定结果与原厂实车测试结果相同,标定符合要求。

图4 数据结果对比图Fig.4 Comparison of data results

4 结语

本文基于CAN 协议对汽车动力转向系统标定功能进行软件设计,可通过进一步连接实车ECU 进行测试,完成该车型动力转向系统的标定功能。在制作其他车型的标定功能时,以本文中数据库和程序为模板,可扩展到其他车型的标定功能,通用性强,节省开发时间,降低开发难度。

猜你喜欢
诊断仪字节标定
医用超声诊断仪超声源计量检定问题分析
No.8 字节跳动将推出独立出口电商APP
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
日立EUB 8500E彩色超声诊断仪的维修与升级
使用朗仁H6 Pro标定北汽绅宝转向角传感器
某车型售后诊断仪失效故障问题排查
No.10 “字节跳动手机”要来了?
CT系统参数标定及成像—2
CT系统参数标定及成像—2