本文介绍:
车载以太网诊断协议,Diagnostics over Internet Protocol简称为DoIP,可以通过以太网协议进行汽车诊断。DoIP是一种用于在车辆之间或车辆与诊断设备之间进行通信和诊断的标准协议。通过DoIP,诊断工程师可以通过以太网或远程访问和诊断车辆的电子系统,并可以进行以太网控制器的诊断访问和刷写。
DoIP是TSMaster支持的重要功能之一,本文主要介绍TSMaster的DoIP模块中诊断服务功能操作,以及相应的传输层配置,并结合诊断功能常见的使用操作进行展开,本文要点如下:
1. TSMaster DoIP的同星以太网硬件准备
2. TSMaster DoIP模块如何开始使用
3. TSMaster被测仪IP网络接口配置
4. TSMaster DoIP诊断传输层配置
5. TSMaster基础诊断配置
6. TSMaster诊断控制台
7. TSMaster自动诊断流程与注册系统变量
8.诊断典型应用
本文关键词:DoIP,车载以太网诊断,基础诊断,自动诊断流程,以太网
1、TSMaster DoIP的同星以太网硬件准备
TSMaster的DoIP软件功能的实现,是以同星的以太网硬件作为基础。其中应用于DoIP的同星以太网硬件有TE1051、TE1054(规划中)、TE1021。
TE1051是一路以太网转USB接口的设备,可以将标准以太网100Base-Tx 1000Base-T或车载以太网100/1000Base-T1的数据通过USB接口传输到PC上,并通过TSMaster软件实现以太网数据的仿真、分析、测试,也可以实现DoIP和SOMEIP等功能。同时,TE1051设备小巧且外壳坚固,无需外部供电,适用于各种环境工况下的DoIP诊断刷写。
图1-1 TE1051硬件
TE1021是一路车载以太网转普通以太网接口(100/1000Base-T1 to 100Base-Tx/1000Base-T)的介质转换工具。用户可以将100Base-T1转换为100Base-Tx或将1000Base-T1转换为1000Base-T。可适用于不同以太网接口的DoIP应用场景,同时TE1021小巧且外壳坚固,携带方便。
图1-2 TE1021硬件
2、TSMaster DoIP模块如何开始使用
TSMaster的DoIP模块的创建与基本使用流程如下:
▲ Step1:DoIP位于主菜单【应用】->【DoIP】,如图2-1。
图2-1 DOIP
▲ Step2:【添加DoIP】模块,可以添加多个DoIP模块,如图2-2。
图2-2 添加DoIP模块
▲ Step3:根据ECU的配置设置车载以太网传输层参数,比如诊断仪类型、通道、被测件IP地址等以太网参数和安全访问算法。具体操作流程在下文第3章节展开。
▲ Step4:当配置好传输层相关参数与安全算法,启动工程后,点击【Connect DUT】连接车载控制器。当连接成功后,基础诊断窗口和系统消息窗口会提示:连接以太网被测件成功,如图2-3。以及在ISO15765-2的地方可以看到连接的服务消息,如图2-4。
图2-3 连接以太网被测件
图2-4 ISO5765-2消息
▲ Step5: 服务以及流程都配置好之后,在【自动诊断流程】处直接打开启动按钮,执行诊断流程。如图2-5所示。
图2-5 执行自动诊断流程
3、TSMaster诊断仪IP网络接口配置
TSMaster的网络接口配置流程如下:
▲ Step1:找到主菜单【硬件】->【TCP/IP Stack】,如图3-1。
图3-1 TCP/IP Stack
▲Step2:【Eth CH1】右键选择【Add Network Card】,如图3-2。
图3-2 添加网络接口
▲ Step3:在【General Setting】中选择【用户自定义Mac】,输入自定义Mac地址。如图3-3。
图3-3 自定义Mac地址
▲ Step4:【使能IPV4】,然后打开【添加】按钮,输入诊断测试仪的IP地址和IP掩码,如图3-4。
图3-4 添加IP地址
4、TSMaster DoIP诊断传输层配置
TSMaster 提供了DoIP的诊断传输层的配置功能,用户可以根据需求配置相应的传输层配置比如诊断仪类型、通道、IP地址、端口和请求和应答ID、以及安全算法等一系列配置。
4.1 诊断传输层
诊断传输层的配置根据诊断仪类型分为两种:TE系列设备和系统TCP/IP。
4.1.1 TE系列设备
TE系列设备类型以TE1051为例,TE1051是一个1路以太网转USB接口的工具,通过USB接口传输到PC上,并通过TSMaster软件实现以太网数据的DoIP功能。
对于DoIP诊断传输层ISO TP,包含被测件和测试仪的以太网参数和诊断ID参数,如图4-1所示。
图4-1 DoIP诊断传输层ISO TP配置
DoIP诊断传输层ISO TP的具体参数如下分类介绍:
▲ 总线类型:诊断传输层类型。
使用同星DoIP功能选择总线类型为【Ethernet】,如图4-2所示。
图4-2 DoIP诊断总线类型
▲ 诊断仪类型:诊断设备类型。
通过USB连接PC,选择的诊断仪类型为【TE系列设备】,若是传统的网线连接PC则选择系统TCP/IP,如图4-3所示。
图4-3 Ethernet 诊断仪类型选择
▲ 通道:诊断模块用到的逻辑通道。
TSMaster 支持多个诊断模块同时在线工作,这里用于选择当前诊断模块的应用逻辑通道,通过下拉列表进行选择,如图4-4所示。
图4-4 Ethernet 通道选择
▲ IP地址掩码:以太网通信使用的IP地址掩码。
▲ 被测件IP:被测件的IP地址。
在DoIP通信中,IP地址掩码和被测件IP地址需要根据具体的网络拓扑结构和通信需求进行设置。
▲ 被测件端口:被测件端口号。
在ISO 13400标准中端口13400被指定为DoIP通信的默认端口号。
▲ 测试仪IP:测试仪的IP地址。
测试仪IP为连接PC的测试设备(如同星的TE051)的IP地址。根据IP地址掩码和被测件IP,将PC的IP地址和被测件IP配置在同一网段内,以此两者可以正常连接和通信。测试仪IP地址的配置在前面的第3章已详细说明。
▲ 测试仪端口:测试仪或PC的端口
注意:对于诊断工具的端口号设置并没有固定的规定,用户可以根据需求自己设置或者使用软件自动分配的端口号。
▲ 请求ID / 应答ID / 功能ID:设置诊断模块PC工具端的诊断请求/应答/功能帧的 ID。
4.1.2 系统TCP/IP
系统TCP/IP类型以TE1021为例,TE1021是直接通过系统的网口连接PC。
DoIP诊断传输层ISO TP,包含被测件和测试仪的以太网参数和诊断ID参数,如图4-5所示。
图4-5 DoIP诊断传输层ISO TP配置
DoIP诊断传输层ISO TP的具体参数如下分类介绍:
▲ 总线类型:诊断传输层类型。
使用同星DoIP功能选择总线类型为【Ethernet】,如图4-6所示。
图4-6 DoIP诊断总线类型▲ 诊断仪类型:诊断设备类型。
诊断仪通过PC系统的网口连接PC,则选择的诊断仪类型为【系统TCP/IP】,如图4-7所示。
图4-7 Ethernet 诊断仪类型选择
▲ 通道:诊断模块用到的逻辑通道。
用于选择当前诊断模块的应用逻辑通道,这里默认是【System Ethernet Interface】,如图4-8所示。
图4-8 Ethernet 通道选择
▲ IP地址掩码:以太网通信使用的IP地址掩码。
▲ 被测件IP:被测件的IP地址。
在DoIP通信中,IP地址掩码和被测件IP地址需要根据具体的网络拓扑结构和通信需求进行设置。
▲ 被测件端口:被测件端口号。
在ISO 13400标准中端口13400被指定为DoIP通信的默认端口号。
▲ 测试仪IP:PC的系统的网口的IP地址。
根据IP地址掩码和被测件IP,将PC的IP地址和被测件IP配置在同一网段内,使得两者可以正常连接和通信。找到电脑的【设置】->【网络和Internet】,找到网口所连接的以太网,选择【属性】,在【IP分配】选择【编辑】按钮。选择手动,打开IPv4,填写IP地址以及子网掩码。如图4-9所示。
图4-9 PC端以太网IP地址设置
▲ 测试仪端口:测试仪或PC的端口
注意:对于诊断工具的端口号设置并没有固定的规定,用户可以根据需求自己设置或者使用软件自动分配的端口号。
▲ 请求ID / 应答ID / 功能ID:设置诊断模块PC工具端的诊断请求/应答/功能帧的 ID。
4.2 诊断服务层
诊断服务层参数主要包含路由激活,S3,P2 时间参数,以及加载 SeedKey 的 安全访问。如图4-10所示。
图4-10 诊断服务层参数
4.2.1 路由激活
【连接DUT之后自动执行路由激活命令】:勾选后,当测试仪或PC与被测件建立网络连接后,软件自动执行路由激活命令。
【TCP初始化激活超时时间】:这个参数描述了从TCP_Data连接建立过后到失效的最大超时时间。如果在设定时间范围内都不执行激活路由的指令,DoIP模块会主动关闭TCP_Data套接字。规范定义时间为2000ms。
【激活类型】,共有5种类型:
1. 【Default】:默认激活模式(Default Activation Mode),这是最基本的路由激活类型,通常用于建立标准的DoIP通信会话。在默认激活模式下,设备之间会进行基本的身份验证和参数交换,以建立通信连接。
2. 【WWH-OBD】:全球调和车载诊断系统要求的诊断通信激活,在这种模式下,设备之间可能需要进行额外的身份验证和安全验证,以确保通信的合规性和安全性。
3. 【ISO/SAE Reserved】:为未来的标准或特定应用保留的路由激活模式。
4. 【Central Security】:Central Security(中央安全)路由激活模式,它涉及到车辆网络安全的核心管理和认证机制。这种模式通常用于确保只有经过授权和验证的设备才能与车辆的网络系统进行通信。
5. 【Additional OEM-Specific Use】:为原始设备制造商(OEM)提供的特定用途而保留的额外路由激活模式。不同的OEM可以根据自己的需求和车辆网络架构,定义和使用特定的路由激活模式,以满足其独特的诊断、通信或安全要求。
4.2.2 P2时间参数
【P2超时时间】:表示 ECU 收到诊断请求帧过后,最短回复的时间间隔。对于诊断工具端,该参数可以作为发送请求过后,等待回复的超时判断参数。比如诊断工具发送了一个诊断报文,P2超时时间段内都没有收到回复,则认为请求失败,超时退出。
【P2扩展时间】:当诊断工具发出诊断报文过后,被测 ECU 来不及在 P2 超时时间段内做出应答,则回复一帧 7F XX 78 报文,告诉诊断工具端自己来不及响应,需要延长等待时间再回复。ECU 发送了延迟等待报文后,则把等待时间参数切换为 P2扩展时间。诊断工具端的超时判断参数在收到延迟等待报文后,需要切换到 P2扩展时间。
上述两个参数可以点开【详情】按钮,查看图示说明,如图4-11所示。
图4-11 P2时间参数设置
4.2.3 诊断仪在线
诊断仪在线包括S3服务器时间和S3客户端时间参数。
【S3服务器时间】:表示该ECU从Default会话被切换到其他会话过后,经过多长时间会自动切换回默认会话的超时时间。
【S3客户端时间】:表示作为诊断Tester端,发送TesterPresent帧的时间间隔。
上述两个参数的示意图,可以点开【详情】按钮,查看图示说明,如图4-12所示。
图4-12 S3时间参数设置
【诊断仪在线】:TSMaster 断模块中,可以选择配置并使能诊断仪在线命令,如图4-13所示。
图4-13 诊断仪在线设置
当使能【诊断仪在线】,在诊断模块上方会出现启动【诊断仪在线】的开关。设置诊断仪在线为【打开】状态,则按照设定的S3客户端时间间隔发送该报文。
诊断仪在线的发送字节是可选的。支持三种类型:
【默认诊断仪在线服务】:为最常用的0x3E 0x80。
【从基础配置中选择】:从基本诊断配置中选择配置好的3E命令。
【用户自定义】:用于自定义的字节。
4.2.4 种子密钥
TSMaster 中提供了两种SeedKey种子密钥的处理方法。第一种就是常用的加载主流的种子密匙的DLL动态链接库;第二种是提供了内置的种子密钥的解释器,可以直接编写SeedKey源代码,并可以保存生成DLL动态链接库。
—4.2.4.1载入动态链接库
TSMaster不仅支持了C/C++,Delphi等语言封装的DLL文件,也新增支持基于DotNet平台如C#,VB.Net等语言编写的DLL动态链接库,可以高效兼容不同平台生成的安全访问DLL,为工程师带来更便捷的使用体验。
载入动态链接库加载界面,如图4-14所示。
图4-14 载入动态链接库
图标从左往右依次为:
【1】 加载DLL
【2】 删除DLL
【3】 打开DLL校验器,通过DLL校验器,用户可以判断加载的 DLL 接口是否正确,算法是否符合设计要求。比如,用户选择Seed的Level过后,输入Seed值,点击GenKey 进行判断。如果该DLL接口跟模板定义接口统一,则会输出提示信息:Generate Key Success,然后用户根据Key值跟目标值对比,进一步确认DLL中的算法是否符合设计要求。如图4-15。
图4-15 SeedKey校验器
【4】 可打开TSMaster安装目录下Seed&Key接口工程所在的文件路径。
在TSMaster安装目录中,提供了封装Seed&Key 算法的模板工程。如GenerateKeyEx,GenerateKeyExOpt, ASAP1A_CCP_ComputeKeyFromSeed,基于此模板工程开发即可得到能够直接加载的DLL函数。TSMaster默认支持SeedKey函数接口具体为如下:
函数接口1:
unsigned int GenerateKeyEx(
const unsigned char* ipSeedArray, /* Array for the seed [in] */
unsigned int iSeedArraySize, /* Length of the array for the seed [in] */
const unsigned int iSecurityLevel,/* Security level [in] */
const char* ipVariant, /* Name of the active variant [in] */
unsigned char* iopKeyArray, /* Array for the key [in, out] */
unsigned int iMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsigned int& oActualKeyArraySize); /* Length of the key [out] */
函数接口2:
unsigned int GenerateKeyExOpt(
const unsigned char* ipSeedArray, /* Array for the seed [in] */
unsigned int iSeedArraySize, /* Length of the array for the seed [in] */
const unsigned int iSecurityLevel, /* Security level [in] */
const char* ipVariant, /* Name of the active variant [in] */
const char* iPara, /* */
unsigned char* iopKeyArray, /* Array for the key [in, out] */
unsigned int iMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsigned int& oActualKeyArraySize) /* Length of the key [out] */
函数接口3:
bool ASAP1A_CCP_ComputeKeyFromSeed(
const unsigned char* ipSeedArray, /* Array for the seed [in] */
unsigned short iSeedArraySize, /* Length of the array for the seed [in] */
unsigned char* iopKeyArray, /* Array for the key [in, out] */
unsigned short iMaxKeyArraySize, /* Maximum length of the array for the key [in] */
unsigned short* opSizeKey) /* Length of the key [out] */
如何兼容其他函数接口
在日常使用中经常出现用户已经开发好了SeedKey DLL,同时该 DLL 的接口不是上述三种中的任何一种,则无法直接加载到TSMaster的诊断模块中。对此,可以通过二次封装的形式将存在的SeedKey算法库进行包装,生成可以直接加载到TSMaster诊断模块中的 DLL 。
以一个实际的实例来讲解如何兼容其他接口函数的DLL文件,二次封装流程的示意图,如图4-16。
图4-16 二次封装流程
▲第一步:查看当前的DLL,名称为UserSeedKey.DLL。该函数内部的API函数有:
●Seed 等级为1的时候,调用函数void GetKeyFromSeed01(byte* ASeed, byte* AKey);
●Seed等级为3的时候,调用函数void GetKeyFromSeed03(byte* ASeed, byte* AKey);
●Seed等级为11的时候,调用函数 void GetKeyFromSeed11(byte* ASeed, byte* AKey);
进而得知当前DLL不支持上述三种函数接口,需要进行二次封装。
▲第二步:选择 TSMaster 安装目录中提供的 GenerateKeyEx 的模板工程,在该工程中用上述DLL的函数接口。基本思路是:
1. 采用 Loadlibrary 动态用户现有的 DLL。
2. 根据传入的Level参数,采用GetProcAddress函数动态获取实际的用于计算Key的函数指针。
3. 如果获取函数指针成功,则使用该函数指针传输Seed值,并计算对应的Key值。GenerateKeyEx工程二次封装示例,如图4-17。
图4-17 GenerateKeyEx工程二次封装示例
▲ 第三步:该GenerateKeyEx工程开发结束后,TSMaster 直接加载GenerateKeyEx所在的DLL。需要注意的是,用户需要把现有的UserSeedKey.DLL拷贝到TSMaster根目录或者GenerateKeyEx.DLL所在的目录。如果不拷贝过去,GenerateKeyEx.DLL执行的时候会出现找不到对应依赖DLL的情况,解锁失败。
—4.2.4.2 编写SeedKey代码
在TSMaster的内置算法编辑器里的操作流程,示意如图4-18所示。
图4-18 内置算法编辑器
【1】选择SeedKey算法的函数;
【2】打开算法校验器,可以于检查算法结果是否正确;
【3】打开编写代码的窗口;
【4】可用于导出所编写代码的为DLL文件;
【5】选择一个需要的SeedKey函数接口,并支持扩展自定义函数接口;
【6】SeedKey源代码编辑工作区,用于解密算法代码的输入与编辑。
值得注意的是,TSMaster 目前提供了最常用的算法函数的接口形式,如果使用自己特殊的函数接口形式,可以联系上海同星支持,可将相应接口增加到选项中。
另外,所有的接口函数都定义了返回值类型为s32。增加此约束,主要是增加函数的严谨性。其中,返回值为0表示成功,返回值为其他值则有对应的错误码。因此,在编辑代码的时候,最后一行需要加上return返回值,如图4-19所示,否则系统执行函数过后会认为算法执行失败,不予往后面执行。
图4-19 函数return返回值
5、TSMaster 基础诊断配置
基础诊断模块包含基本诊断服务和组合服务。对于诊断过程中独立执行的命令,在基本诊断服务中;用于文件下载的$34、$36和$37放入组合服务中。如图5-1所示。
图5-1 基础诊断配置
5.1 添加删除服务命令
把鼠标放到需要添加和删除的服务命令上方,右键展开,选择是否需要添加和删除该服务,如图5-2所示。
图5-2 添加和删除的服务命令
5.2 配置基本诊断参数
以诊断会话控制为例,主要包含如下参数的配置,如图5-3所示。
图5-3 配置基本诊断参数
【1】 配置服务名称:用户可以配置一个易于理解和管理的服务名称。
【2】 是否功能标识符:本诊断服务是否采用功能标识符发送诊断请求。
【3】 是否有回复:用户可配置是否检查此服务的回复内容。
【4】 选择子服务类型:比如 Session Control 中的 DiagnosticSessionType 就包含如上图所示的 Session 类型。
【5】 参数列表的字节序:支持Motorola 和 Intel 字节序。
【6】 参数列表:诊断服务除了诊断 ID 和子服务类型 ID,还可以带着参数发送给被测 ECU。参数列表包含请求和应答帧的参数列表,可以选择增加/删除多种类型的参数。如图5-4。
图5-4 新增与删除参数
其中,根据不同服务指令,可以设置不同的ID参数。比如诊断请求会话里的诊断会话类型参数是必选设置,而参数列表是可选的。在修改配置后,界面上方会实时显示实际诊断报文的示例报文,如请求协议数据包是:【10 01 xx xx】:xx 表示该参数是可变的,根据用户实际填入的数据确定;诊断仪将要收到的应答协议数据包为【50 01 xx】。
图5-5 请求与应答参数设置
5.3 诊断服务参数
诊断模块参数支持 7 种数据类型。包括:UInt,Int,Single,Double,HexArray,Ascii和 SystemVar。如图5-6。
图5-6 诊断模块参数类型
【1】 UInt:无符号整型,其数据长度必须小于32bits,并且为8的倍数,可以为8,16,24,32bits。
【2】 Int:有符号整形,其数据长度必须小于32bits,并且为8的倍数,可以为8,16,24,32bits
【3】 Single:单精度浮点数,数据长度为固定的32bits。用户直接输入输出浮点数据。
【4】 Double:单精度浮点数,数据长度为固定的64bits。用户直接输入输出浮点数据。
【5】 Hex Array:十六进制数组,数据长度为8的倍数。输入数据满足16禁止数据类型。
【6】 ASCII:ASCII字符串,数据长度为8的倍数。输入数据为ASCII字符数组,转化为16进制后进行发送。
【7】 SystemVar:系统变量,数据长度为8的倍数。TSMaster 系统变量可支持 Uint,Int,Single,Double,UintArray,DoubleArray,HexArray,String 等各种数据类型。其具体的数据类型由系统变量自身定义所决定。
5.4 配置组合服务
诊断组合服务($343637下载文件)共包含通用配置、擦除Flash配置、请求和传输数据配置、传输退出配置、扩展和辅助的配置。如下详细介绍每个配置。
5.4.1 通用配置
通用配置中支持加载下载文件格式为hex/bin/s19/mot/srec/vdf等等。可以对起始地址和数据长度的字节数修改,调调整校验和字节序和自定义CRC校验算法导入和修改,并可通过下载文件查看器下载文件内容。如图5-7。
图5-7 通用配置
【1】服务名称:配置该服务的名称
【2】文件名称:加载可执行文件,支持hex\bin\s19\mot\srec\vdf...
【3】hex viewer:TSMaster 内置了可执行文件查看编辑器 TSHexViewer,用户可以用该工具,查看载入Hex 文件的详细信息,如图5-8所示。
图5-8 查看载入的下载文件
【4】地址和长度标识符。可修改起始地址和数据长度的字节。
【5】校验和相关配置。校验和字节序支持英特尔和摩托罗拉。在程序下载过程中,为了保证数据的完整性,需要引入 Checksum 算法对数据的完整性和有效性进行校验。TSMaster 诊断模块的符合服务中,引入了主流的CRC 算法进行校验。其选择框如下图所示,同时可实现自定义CRC校验算法导入和修改,此处自定义算法只能是DLL文件的形式,如图到5-9。
图5-9 支持自定义CRC算法导入与修改
当加载好下载文件后,选择指定的算法过,诊断模块会对可执行文件计算其检验和值,包括该可执行文件每一个数据块的检验和值以及文件整体的检验和值,如图5-10所示。
图5-10 文件与数据块检验和值
TSMaster的诊断模块能够直接把系统变量作为参数,在计算好每一个数据块与文件的检验和值过后,会进一步自动转化成系统变量,如图5-11。
图5-11 检验和系统变量
生成好的检验和系统变量,可以通过系统变量的类型添加到服务参数中。以常用的校验可执行文件的有效性为例,配置如下的 $31例程控制服务命令,就可以实现对文件有效性的检查,如图5-12。
图5-12 检验和系统变量添加到服务参数
5.4.2 擦除Flash配置
擦除Flash配置,可以配置无自动擦除、擦除Hex地址范围、下载每一个数据块之前擦除对应块。期望回复值以实际ECU的响应进行填写输入。如图5-13。
图5-13 擦除Flash配置
5.4.3 请求和传输数据配置
请求传输数据命令的数据格式可以修改,比如从00修改为AA。可以自定义最大传输数据块的长度,默认为0x202,实际传输层数据包为514字节。如图5-14。
图5-14 请求和传输数据配置
5.4.4 传输退出配置
传输退出配置,可以设置如下配置,如图5-15:
● 无校验
● 在ECU端校验($37+块校验和)
● 用户自定义
● 在PC端校验($37+块校验和)
校验和类型选择无校验或校验每一个数据块
图5-15 传输退出配置
5.4.5 扩展
扩展配置可以添加签名文件、特殊的CRC算法,与通用配置-校验和相关配置里的自定义CRC算法导入相比,此处更灵活可支持任意格式的文件,如图5-16。
图5-16 扩展配置
5.4.6 辅助
辅助中可对下载文件按连续地址的大小分割,比如将数据块按0x1000进行分割。如图5-17。
图5-17 下载文件分割设置
6、诊断控制台
诊断控制台作为诊断命令调试器,可以让用户选择每一条单独的服务命令,编辑发送服务报文和接收服务报文,进行测试验证。主要包含四块工作区域,分别为服务命令选择区,手动命令输入区,诊断命令发送/应答区和诊断信息区,如图6-1所示。
图6-1 控制台工作分区
6.1 服务命令选择区
服务命令选择区中是根据基础配或者加载ODX/PDX诊断数库生成的可执行服务列表。用户可以双击执行选中的服务或者右键选择执行该服务,如图6-2所示。
图6-2 服务命令选择区
6.2 手动命令输入区
测试过程中,如果用户想发送任意的诊断命令,则可以在手动命令输入区中输入自己想要发送的任意报文。在输入诊断报文过后,点击右边的Execute 按钮,就可以完成诊断报文的发送。为了增加测试灵活性,还可以通过选择框选择采用物理地址发送还是功能 ID 发送诊断请求报文。如图6-3。
图6-3 手动命令输入区
6.3 诊断命令发送/应答区
在本区域中,用户可以编辑发送数据段以及期望接收数据段,启动执行来验证被测ECU 的诊断响应是否符合实际要求,以及是否同步诊断系统变量,如图6-4。
图6-4 诊断命令发送/应答区
6.4 诊断信息区
该区域分为服务层信息和ISO15765-2数据流区,其中服务层信息显示当前在诊断模块中的操作步骤流程与响应信息。如图6-5。
图6-5 服务层信息
当诊断服务没有得到肯定响应或者无响应时,报错提示信息等。如图6-6。
图6-6 服务层信息负响应提示
ISO15765-2数据流区,用于显示诊断模块详细的服务层报文信息。结合前面配置的诊断数据库,还可以把原始的报文数据解析成物理信号等呈现。以22服务为例,可以查看到诊断服务层解析后的参数数据,如图6-7。
图6-7 ISO15765-2数据流区
7、TSMaster自动诊断流程与注册系统变量
7.1 诊断流程创建与管理
TSMaster的自动化诊断流程不仅仅是针对某一个具体的应用,而是针对整个项目的诊断流程进行管理。用户可以根据完整项目的需求,配置测试诊断流程组,每个组里面可以包含多个不同的诊断流程,在一个诊断流程中包含具体的诊断步骤。
在UDS流程管理栏右键鼠标,展开流程用例管理的操作菜单,如图7-1。
图7-1 流程用例管理的操作菜单
操作菜单从上到下分别包含如下操作:
【1】切换UDS流程:切换到当前UDS流程节点。双击该节点,也可以达到切换到该流程节点的效果。切换到该节点过后,节点图标和背景色为蓝色,同时右边的节点流程中展开显示该UDS流程包含的详细诊断步骤,如图7-2。
图7-2 切换UDS流程
【2】启动UDS流程:启动该节点的诊断流程。点击该选项后,诊断模块按照右边的配置,从上往下自动执行诊断步骤。
【3】中断UDS流程:点击该节点后,中断正在执行的诊断流程步骤。
【4】添加流程组:新增诊断流程组。比如新增Test Group1。诊断组下面可以再增加诊断流程用例,其本身不包含诊断步骤。
【5】添加新的测试流程:新增一个诊断流程用例,在诊断流程用例下面可以增加详细的诊断步骤。
【6】编程名称:选中一个流程组或者流程用例,右键选中Edit name编辑该节点的名称。
【7】注册系统变量:选择一个诊断流程用例,注册为系统变量。
【8】反注册系统变量:选中已注册为系统变量的诊断流程用例,取消注册系统变量。
【9】删除所选:删除选中的节点。
【10】删除所有:清楚所有的节点。
7.2 配置自动诊断流程
TSMaster自动诊断流程,可以快速配置多组诊断流程并可以设置循环运行和注册系统变量用于外部调用等,如下进行详细介绍。
7.2.1 自动诊断工具栏介绍
诊断流程配置工具栏如图7-3所示。
图7-3 诊断流程配置工具栏
图标依次从左往右为:
【1】新增诊断流程组。
【2】新增诊断流程用例。
【3】删除选中的诊断流程组/用例。
【4】启动配置好的诊断流程。
【5】终端正在运行的诊断流程。
【6】锁定/解锁流程配置区域。如果锁定该区域,在诊断流程区域变得不可编辑。
【7】全选/全不选诊断流程。
【8】使能设置的循环运行次数。
【9】实际运行次数显示。
7.2.2 自动化诊断流程配置步骤
在UDS测试流程区里,右键创建新创建一个UDS流程,双击该流程进入后,解锁逻辑器,并可以设置本流程可以循环运行的次数,默认不使能循环运行。如图7-4。
图7-4 创建新的UDS流程
然后在逻辑区右键添加步骤或者删除步骤,并进一步解析管理栏中功能。如图7-5。
图7-5 诊断步骤添加与管理
【1】在左边的管理栏中选中一个诊断流程节点。
【2】在右边的编辑区域,添加、删除、编辑诊断步骤。
【3】添加步骤后,选择该步骤类型。
【4】编辑步骤名称。
【5】选择该步骤地址类型,物理地址还是功能地址。
【6】配置详细的诊断请求数据包。
【7】配置详细的诊断应答数据包。
【8】配置本步骤结束后步骤之间的等待时间。
【9】配置本步骤发生错误的错误处理方法。
7.2.3 诊断步骤类型
测试步骤中,为了增加诊断配置的灵活性,设计了4种类型可供选择,主要包含:普通步骤,选择已有配置,种子和密钥,测试仪在线。通过这4种类型,基本上涵盖了市面上所有主流的诊断流程需求,下面详细介绍每种类型的特点。如图7-6。
图7-6 诊断步骤类型
【1】普通步骤:主要用于一些简单的请求数据和应答数据都很直接的场合。直接在请求服务中填入想要发送的请求数据,在应答服务中填入期望的应答报文,比如服务请求数据为【10 01】,服务应答数据为【50 01 12 34】。如图7-7。如果有些服务不需要响应,则可以不设置有回复。
图7-7 普通步骤类型
【2】选择已有配置:该配置设计的目的,就是让用户选择在基础诊断设置中已经配置好的诊断服务,这种方式是TSMaster最推荐的配置方式。选择已有配置过程,如图7-8所示。
图7-8 选择已有配置
【3】种子和密钥:种子和密钥只需要选择种子等级和密钥等级参数即可,解密的DLL直接关联到传输层参数配置载入的种子和密钥DLL中,如图7-9所示:
图7-9 种子和密钥
对此,无论是在诊断控制台模块中,还是自动诊断流程模块,都是需要先配置好传输层的参数配置。
【4】测试仪在线:为了支持更加灵活的测试需求,在自动化流程步骤中,提供了打开和关闭测试仪在线的命令选择,以及配置该命令数据以及周期间隔:
▲ 是否启动(start)/停止(stop)该命令,如图7-10:
图7-10 启动/停止测试仪在线命令
▲ 配置测试仪在线的命令的数据以及周期间隔,如7-10:
图7-11 配置测试仪在线的命令
7.2.4 步骤间隔时间
诊断流程模块步骤跟步骤之间的延时是可以设置的,单位为ms,如图7-12:
图7-12 配置测试仪在线的命令
7.2.5 属性
在属性中,可以设置响应出错后的以及本指令是停止还是继续运行,如图7-13所示:
图7-13 属性
在TSMaster后续产品规划中,响应出错后允许跳转到指定的流程中(比如跳转到擦除流程中),进一步增加自动运行流程模块的灵活性。
7.2.6 使能步骤/位置调整
对于已经完成配置的诊断流程步骤,用户根据左边的选择框来勾选想要执行的诊断步骤。如图7-14。
关于执行顺序调整:无论是测试用例组,测试用例还是测试用例中的具体步骤,用户想调整相互之间执行顺序的时候,直接拖拽对应的测试用例到相应位置即可。
图7-14 诊断流程步骤使能
7.3诊断模块的内生系统变量
在TSMaster新添加基础诊断模块后,系统变量管理器会自动生成所有者为诊断模块Diagnostic的系统变量,通过修改系统变量可以配置对应的参数。如图7-15。
图7-15 诊断模块系统变量
7.3.1 诊断服务通用系统变量
诊断内生的通用系统变量包含:
● 导出工程ExportProject:用于导出诊断工程。
● 导入工程ImportProject:用于导入已有的诊断工程。
● 诊断仪在线TesterIsPresent:是否启动诊断仪在线命令。
● DLC:FD帧的最大DLC值,该参数只有在FD模式下才有效。
● 接收连续帧最小帧间隔STMin(R):用户自定义接收端STMin参数,单位ms。如设置为0,表示支持以最短的事件间隔接收,。
● 发送连续帧最小帧间隔STMin(T):用户定义发送端STMin参数,单位ms。
● 用户自定义连续帧最小帧间隔User Define STMin:是否手动定义连续帧最小帧间隔,单位ms。
● 填充字节FiledByte:发送诊断帧填充字节。
● 功能ID类型FunctionalIDType:传输层功能ID的类型,0是标准帧,1是扩展帧。
● 功能ID (FunctionalID):传输层功能ID。
● 应答ID类型ResIDType:传输层应答ID的类型,0是标准帧,1是扩展帧。
● 应答ID (ResID):传输层应答ID。
● 请求ID类型ReqIDType:传输层请求ID的类型,0是标准帧,1是扩展帧。
● 请求ID (ReqID):传输层请求ID。
● 总线类型BusType:设置总线类型:0代表CAN总线;1代表CANFD总线;2代表LIN总线;3代表DOIP(基于以太网的诊断)。
● 通道Chn:设置诊断模块的通道参数,比如0代表通道1,1代表通道2。
● 自动化流程进度UDSProgress:自动诊断流程的实时进度,该变量用来获取自动诊断流程的运行状态。
● 安全访问种子和密钥SeedAndKeyDLL:设置种子&密钥DLL的绝对路径,使用时注意转义字符。
● P2扩展时间P2Extended:设置P2扩展时间。
● P2扩展时间P2TimeOut:设置P2超时时间。
● S3服务端时间S3ServerTime:设置S3服务端时间。
● S3服务端时间S3ClientTime:设置S3客户端时间。
7.3.2 诊断服务特定系统变量
在基础诊断配置的复合诊断服务添加新的服务后,系统变量管理器同样会生成对应的系统变量:服务名_DataFile,此变量为下载文件的绝对路径,修改此变量可控制下载文件的载入与切换。如图7-16。
图7-16 下载文件路径系统变量
此外,当载入下载文件后,系统变量控制器会根据选择的校验和算法生成每块校验和,及总校验和,下载文件的首地址和长度,如果已经添加了符合诊断服务,载入了下载文件,并且在基本诊断服务中关联了下载文件相关变量,那么在替换下载文件的同时,这些关联的变量也会随之改变,最小的工程修改实现文件的灵活切换。
7.3.3 自动诊断流程的注册系统变量
在诊断控制台中可以根据需要灵活配置诊断服务,这些诊断服务配置好后,用户需要在诊断控制台中双击启动该诊断服务。
如果用户希望在Panel界面中或者程序中启动诊断流程命令,步骤如下:
【1】首先在诊断Basic Diagnostic Config窗体中,选中目标服务,然后右键菜单把该诊断服务注册为系统变量,如图7-17所示。
图7-17 诊断服务注册为系统变量
注册完成后,该流程的图标多出3个小彩圆,表示成为一个注册系统变量的服务,未注册的流程为蓝色圆,如图7-18所示:
图7-18 注册为系统变量的图标变化
【2】注册完成后,在系统变量管理器中,就可以看到生成系统变量_Start和_Result如图7-19。
图7-19 注册为系统变量的变量
其中_Start的数值赋值为:
● 0是空闲状态。
● 1是正在执行状态。
● 2是执行成功。
● 3是执行失败。
_Result的数值结果为:
● >0表示启动诊断流程
● =0表示中断停止诊断流程
● <0为非法参数。
【3】在面板Panel中添加按钮button控件,并关联生成好的系统变量流程名_Start,将将按钮按下事件设置为1,如图7-20。
图7-20 面板按钮控件关联系统变量
【4】运行程序,点击Panel的测试按钮,将值1赋给流程名_Start,诊断模块执行相应的诊断流程,实现自动运行诊断流程。
8、DoIP诊断典型应用
本文设计了一个简单的 BootLoader 流程来说明如何基于 TSMaster DoIP模块配置一个Flash BootLoader 流程。
8.1 配置刷写例程
【1】首先创建UDS流程:注意切换编辑器为解锁状态,否则无法添加新的流程步骤。如图8-1。
图8-1 解锁编辑器
【2】切换默认会话,切换扩展会话,然后切换整车制造商自定义会话,在基础诊断配置先提前配置好,如图8-2。然后在自动诊断流程中使用选择已有配置进行添加,如图8-3。
图8-2 基础诊断配置会话服务
图8-3 切换默认会话、扩展会话、整车制造商自定义会话
【3】添加种子和密钥步骤,解锁ECU,如图8-4。
图8-4 种子和密钥步骤
【4】基于读取ID:F080位置处的数据。
方式1:使用普通步骤配置形式,如图8-5。
图8-5 普通步骤读取DID F188零件号
方式2:在基础诊断配置中配置好,然后在流程中使用选择已有配置,如图8-6。
图8-6 选择已有配置读取DID F080
【5】接着在IDF086处写入数据20 11 20 00 00 00 00 00 00,如图8-7。
图8-7 IDF186处写入字符串
【6】检查刷写前提条件,如图8-8。
图8-8 检查刷写前提条件
【7】添加FlashDriver/应用程序文件流程。首先在基础诊断配置添加FlashDriver和应用程序文件,如图8-9。
图8-9 基础诊断配置添加刷写文件
然后在自动诊断流程中选择相应的已有配置,选择创建好的组合下载服务。如图8-10。
图8-10 选择已有的组合下载服务
【8】采用例程控制擦除Flash。通过诊断基础设置配置好后擦除指令,将起始地址和数据长度的系统变量,通过系统变量的方式添加请求参数,如图8-11。
图8-11 诊断基础配置擦除指令
然后通过选择已有配置加入到流程中。如图8-12。
图8-12 例程控制擦除Flash
8.2 DoIP诊断流程一键运行
在完成配置后,总的配置流程如图8-13所示。
图8-13 完成Flash BootLoader配置流程
连接以太网被测件之后,通过按钮一键执行自动诊断流程,当每个步骤都是正响应时,会显示为绿色,如图8-14。
图8-14 一键执行自动诊断流程
在Ethernet报文消息中可以查看完整的DoIP BootLoader刷写流程,也可以使用总线记录将过程报文记录成blf文件保存。
图8-15 Ethernet诊断流程报文
以上,基于TSMaster的DoIP模块,实现零代码方式,可以非常简单快速地开发基于以太网的DoIP诊断流程应用。
*版权声明:本文为企业供稿,供稿企业对文章观点及内容合规性负责。如有疑义或转载需求,请联系供稿企业。
本文地址:https://auto.gasgoo.com/news/202404/16I70389013C601.shtml
 
联系邮箱:info@gasgoo.com
客服QQ:531068497
求职应聘:021-39197800-8035
新闻热线:021-39586122
商务合作:021-39586681
市场合作:021-39197800-8032
研究院项目咨询:021-39197921
版权所有2011|未经授权禁止复制或建立镜像,否则将追究法律责任。
增值电信业务经营许可证 沪B2-2007118 沪ICP备07023350号