车载以太网诊断协议,Diagnostics over Internet Protocol简称为DoIP,可以通过以太网协议进行汽车诊断。DoIP是一种用于在车辆之间或车辆与诊断设备之间进行通信和诊断的标准协议。通过DoIP,诊断工程师可以通过以太网或远程访问和诊断车辆的电子系统,并可以进行以太网控制器的诊断访问和刷写。
DoIP是TSMaster支持的重要功能之一,本文主要介绍TSMaster的DoIP模块中诊断服务功能操作,以及相应的传输层配置,并结合诊断功能常见的使用操作进行展开。
本文关键字:DoIP,车载以太网诊断,基础诊断,自动诊断流程,以太网
本文目录
1、TSMaster DoIP的同星以太网硬件准备
❖ TE1051
❖ TE1021
2、TSMaster DoIP模块如何开始使用
TSMaster的DoIP模块的创建与基本使用流程如下:
▲ Step1:DoIP位于主菜单【应用】->【DoIP】,如图2-1。
▲ Step3:根据ECU的配置设置车载以太网传输层参数,比如诊断仪类型、通道、被测件IP地址等以太网参数和安全访问算法。具体操作流程在下文第3章节展开。
▲ Step4:当配置好传输层相关参数与安全算法,启动工程后,点击【Connect DUT】连接车载控制器。当连接成功后,基础诊断窗口和系统消息窗口会提示:连接以太网被测件成功,如图2-3。以及在ISO15765-2的地方可以看到连接的服务消息,如图2-4。
3、TSMaster诊断仪IP网络接口配置
TSMaster的网络接口配置流程如下:
▲ Step1:找到主菜单【硬件】->【TCP/IP Stack】,如图3-1。
4、TSMaster DoIP诊断传输层配置
❖ 4.1 诊断传输层
诊断传输层的配置根据诊断仪类型分为两种:TE系列设备和系统TCP/IP。
4.1.1 TE系列设备
TE系列设备类型以TE1051为例,TE1051是一个1路以太网转USB接口的工具,通过USB接口传输到PC上,并通过TSMaster软件实现以太网数据的DoIP功能。
对于DoIP诊断传输层ISO TP,包含被测件和测试仪的以太网参数和诊断ID参数,如图4-1所示。
DoIP诊断传输层ISO TP的具体参数如下分类介绍:
▲ 总线类型:诊断传输层类型。
使用同星DoIP功能选择总线类型为【Ethernet】,如图4-2所示。
▲ 诊断仪类型:诊断设备类型。
通过USB连接PC,选择的诊断仪类型为【TE系列设备】,若是传统的网线连接PC则选择系统TCP/IP,如图4-3所示。
▲ 通道:诊断模块用到的逻辑通道。
TSMaster 支持多个诊断模块同时在线工作,这里用于选择当前诊断模块的应用逻辑通道,通过下拉列表进行选择,如图4-4所示。
▲ 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所示。
DoIP诊断传输层ISO TP的具体参数如下分类介绍:
▲ 总线类型:诊断传输层类型。
使用同星DoIP功能选择总线类型为【Ethernet】,如图4-6所示。
▲ 诊断仪类型:诊断设备类型。
诊断仪通过PC系统的网口连接PC,则选择的诊断仪类型为【系统TCP/IP】,如图4-7所示。
▲ 通道:诊断模块用到的逻辑通道。
用于选择当前诊断模块的应用逻辑通道,这里默认是【System Ethernet Interface】,如图4-8所示。
▲ 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所示。
▲ 测试仪端口:测试仪或PC的端口
注意:对于诊断工具的端口号设置并没有固定的规定,用户可以根据需求自己设置或者使用软件自动分配的端口号。
▲ 请求ID / 应答ID / 功能ID:设置诊断模块PC工具端的诊断请求/应答/功能帧的 ID。
❖ 4.2 诊断服务层
4.2.1 路由激活
【连接DUT之后自动执行路由激活命令】:勾选后,当测试仪或PC与被测件建立网络连接后,软件自动执行路由激活命令。
【TCP初始化激活超时时间】:这个参数描述了从TCP_Data连接建立过后到失效的最大超时时间。如果在设定时间范围内都不执行激活路由的指令,DoIP模块会主动关闭TCP_Data套接字。规范定义时间为2000ms。
【激活类型】,共有5种类型:
- 【Default】:默认激活模式(Default Activation Mode),这是最基本的路由激活类型,通常用于建立标准的DoIP通信会话。在默认激活模式下,设备之间会进行基本的身份验证和参数交换,以建立通信连接。
- 【WWH-OBD】:全球调和车载诊断系统要求的诊断通信激活,在这种模式下,设备之间可能需要进行额外的身份验证和安全验证,以确保通信的合规性和安全性。
- 【ISO/SAE Reserved】:为未来的标准或特定应用保留的路由激活模式。
- 【Central Security】:Central Security(中央安全)路由激活模式,它涉及到车辆网络安全的核心管理和认证机制。这种模式通常用于确保只有经过授权和验证的设备才能与车辆的网络系统进行通信。
- 【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.2.3 诊断仪在线
诊断仪在线包括S3服务器时间和S3客户端时间参数。
【S3服务器时间】:表示该ECU从Default会话被切换到其他会话过后,经过多长时间会自动切换回默认会话的超时时间。
【S3客户端时间】:表示作为诊断Tester端,发送TesterPresent帧的时间间隔。
上述两个参数的示意图,可以点开【详情】按钮,查看图示说明,如图4-12所示。
当使能【诊断仪在线】,在诊断模块上方会出现启动【诊断仪在线】的开关。设置诊断仪在线为【打开】状态,则按照设定的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所示。
图标从左往右依次为:
【1】 加载DLL
【2】 删除DLL
【3】 打开DLL校验器,通过DLL校验器,用户可以判断加载的 DLL 接口是否正确,算法是否符合设计要求。比如,用户选择Seed的Level过后,输入Seed值,点击GenKey 进行判断。如果该DLL接口跟模板定义接口统一,则会输出提示信息:Generate Key Success,然后用户根据Key值跟目标值对比,进一步确认DLL中的算法是否符合设计要求。如图4-15。
【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。
▲第一步:查看当前的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的函数接口。基本思路是:
- 采用 Loadlibrary 动态用户现有的 DLL。
- 根据传入的Level参数,采用GetProcAddress函数动态获取实际的用于计算Key的函数指针。
- 如果获取函数指针成功,则使用该函数指针传输Seed值,并计算对应的Key值。GenerateKeyEx工程二次封装示例,如图4-17。
▲ 第三步:该GenerateKeyEx工程开发结束后,TSMaster 直接加载GenerateKeyEx所在的DLL。需要注意的是,用户需要把现有的UserSeedKey.DLL拷贝到TSMaster根目录或者GenerateKeyEx.DLL所在的目录。如果不拷贝过去,GenerateKeyEx.DLL执行的时候会出现找不到对应依赖DLL的情况,解锁失败。
—4.2.4.2 编写SeedKey代码
在TSMaster的内置算法编辑器里的操作流程,示意如图4-18所示。
【1】选择SeedKey算法的函数;
【2】打开算法校验器,可以于检查算法结果是否正确;
【3】打开编写代码的窗口;
【4】可用于导出所编写代码的为DLL文件;
【5】选择一个需要的SeedKey函数接口,并支持扩展自定义函数接口;
【6】SeedKey源代码编辑工作区,用于解密算法代码的输入与编辑。
值得注意的是,TSMaster 目前提供了最常用的算法函数的接口形式,如果使用自己特殊的函数接口形式,可以联系上海同星支持,可将相应接口增加到选项中。
另外,所有的接口函数都定义了返回值类型为s32。增加此约束,主要是增加函数的严谨性。其中,返回值为0表示成功,返回值为其他值则有对应的错误码。因此,在编辑代码的时候,最后一行需要加上return返回值,如图4-19所示,否则系统执行函数过后会认为算法执行失败,不予往后面执行。
5、TSMaster 基础诊断配置
❖ 5.1 添加删除服务命令
❖ 5.2 配置基本诊断参数
【1】 配置服务名称:用户可以配置一个易于理解和管理的服务名称。
【2】 是否功能标识符:本诊断服务是否采用功能标识符发送诊断请求。
【3】 是否有回复:用户可配置是否检查此服务的回复内容。
【4】 选择子服务类型:比如 Session Control 中的 DiagnosticSessionType 就包含如上图所示的 Session 类型。
【5】 参数列表的字节序:支持Motorola 和 Intel 字节序。
【6】 参数列表:诊断服务除了诊断 ID 和子服务类型 ID,还可以带着参数发送给被测 ECU。参数列表包含请求和应答帧的参数列表,可以选择增加/删除多种类型的参数。如图5-4。
❖ 5.3 诊断服务参数
【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。
【1】服务名称:配置该服务的名称
【2】文件名称:加载可执行文件,支持hex\bin\s19\mot\srec\vdf…
【3】hex viewer:TSMaster 内置了可执行文件查看编辑器 TSHexViewer,用户可以用该工具,查看载入Hex 文件的详细信息,如图5-8所示。
【4】地址和长度标识符。可修改起始地址和数据长度的字节。
【5】校验和相关配置。校验和字节序支持英特尔和摩托罗拉。在程序下载过程中,为了保证数据的完整性,需要引入 Checksum 算法对数据的完整性和有效性进行校验。TSMaster 诊断模块的符合服务中,引入了主流的CRC 算法进行校验。其选择框如下图所示,同时可实现自定义CRC校验算法导入和修改,此处自定义算法只能是DLL文件的形式,如图到5-9。
5.4.2 擦除Flash配置
擦除Flash配置,可以配置无自动擦除、擦除Hex地址范围、下载每一个数据块之前擦除对应块。期望回复值以实际ECU的响应进行填写输入。如图5-13。
5.4.3 请求和传输数据配置
请求传输数据命令的数据格式可以修改,比如从00修改为AA。可以自定义最大传输数据块的长度,默认为0x202,实际传输层数据包为514字节。如图5-14。
5.4.4 传输退出配置
传输退出配置,可以设置如下配置,如图5-15:
- 无校验
- 在ECU端校验($37+块校验和)
- 用户自定义
- 在PC端校验($37+块校验和)
校验和类型选择无校验或校验每一个数据块
5.4.5 扩展
扩展配置可以添加签名文件、特殊的CRC算法,与通用配置-校验和相关配置里的自定义CRC算法导入相比,此处更灵活可支持任意格式的文件,如图5-16。
5.4.6 辅助
辅助中可对下载文件按连续地址的大小分割,比如将数据块按0x1000进行分割。如图5-17。
6、诊断控制台
❖ 6.1 服务命令选择区
❖ 6.2 手动命令输入区
❖ 6.3 诊断命令发送/应答区
❖ 6.4 诊断信息区
7、TSMaster自动诊断流程与注册系统变量
❖ 7.1 诊断流程创建与管理
TSMaster的自动化诊断流程不仅仅是针对某一个具体的应用,而是针对整个项目的诊断流程进行管理。用户可以根据完整项目的需求,配置测试诊断流程组,每个组里面可以包含多个不同的诊断流程,在一个诊断流程中包含具体的诊断步骤。
在UDS流程管理栏右键鼠标,展开流程用例管理的操作菜单,如图7-1。
操作菜单从上到下分别包含如下操作:
【1】切换UDS流程:切换到当前UDS流程节点。双击该节点,也可以达到切换到该流程节点的效果。切换到该节点过后,节点图标和背景色为蓝色,同时右边的节点流程中展开显示该UDS流程包含的详细诊断步骤,如图7-2。
【2】启动UDS流程:启动该节点的诊断流程。点击该选项后,诊断模块按照右边的配置,从上往下自动执行诊断步骤。
【3】中断UDS流程:点击该节点后,中断正在执行的诊断流程步骤。
【4】添加流程组:新增诊断流程组。比如新增Test Group1。诊断组下面可以再增加诊断流程用例,其本身不包含诊断步骤。
【5】添加新的测试流程:新增一个诊断流程用例,在诊断流程用例下面可以增加详细的诊断步骤。
【6】编程名称:选中一个流程组或者流程用例,右键选中Edit name编辑该节点的名称。
【7】注册系统变量:选择一个诊断流程用例,注册为系统变量。
【8】反注册系统变量:选中已注册为系统变量的诊断流程用例,取消注册系统变量。
【9】删除所选:删除选中的节点。
【10】删除所有:清楚所有的节点。
❖ 7.2 配置自动诊断流程
TSMaster自动诊断流程,可以快速配置多组诊断流程并可以设置循环运行和注册系统变量用于外部调用等,如下进行详细介绍。
7.2.1 自动诊断工具栏介绍
诊断流程配置工具栏如图7-3所示。
图标依次从左往右为:
【1】新增诊断流程组。
【2】新增诊断流程用例。
【3】删除选中的诊断流程组/用例。
【4】启动配置好的诊断流程。
【5】终端正在运行的诊断流程。
【6】锁定/解锁流程配置区域。如果锁定该区域,在诊断流程区域变得不可编辑。
【7】全选/全不选诊断流程。
【8】使能设置的循环运行次数。
【9】实际运行次数显示。
7.2.2 自动化诊断流程配置步骤
在UDS测试流程区里,右键创建新创建一个UDS流程,双击该流程进入后,解锁逻辑器,并可以设置本流程可以循环运行的次数,默认不使能循环运行。如图7-4。
【1】在左边的管理栏中选中一个诊断流程节点。
【2】在右边的编辑区域,添加、删除、编辑诊断步骤。
【3】添加步骤后,选择该步骤类型。
【4】编辑步骤名称。
【5】选择该步骤地址类型,物理地址还是功能地址。
【6】配置详细的诊断请求数据包。
【7】配置详细的诊断应答数据包。
【8】配置本步骤结束后步骤之间的等待时间。
【9】配置本步骤发生错误的错误处理方法。
7.2.3 诊断步骤类型
测试步骤中,为了增加诊断配置的灵活性,设计了4种类型可供选择,主要包含:普通步骤,选择已有配置,种子和密钥,测试仪在线。通过这4种类型,基本上涵盖了市面上所有主流的诊断流程需求,下面详细介绍每种类型的特点。如图7-6。
对此,无论是在诊断控制台模块中,还是自动诊断流程模块,都是需要先配置好传输层的参数配置。
【4】测试仪在线:为了支持更加灵活的测试需求,在自动化流程步骤中,提供了打开和关闭测试仪在线的命令选择,以及配置该命令数据以及周期间隔:
▲ 是否启动(start)/停止(stop)该命令,如图7-10:
7.2.4 步骤间隔时间
诊断流程模块步骤跟步骤之间的延时是可以设置的,单位为ms,如图7-12:
7.2.5 属性
在属性中,可以设置响应出错后的以及本指令是停止还是继续运行,如图7-13所示:
在TSMaster后续产品规划中,响应出错后允许跳转到指定的流程中(比如跳转到擦除流程中),进一步增加自动运行流程模块的灵活性。
7.2.6 使能步骤/位置调整
对于已经完成配置的诊断流程步骤,用户根据左边的选择框来勾选想要执行的诊断步骤。如图7-14。
关于执行顺序调整:无论是测试用例组,测试用例还是测试用例中的具体步骤,用户想调整相互之间执行顺序的时候,直接拖拽对应的测试用例到相应位置即可。
❖ 7.3诊断模块的内生系统变量
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.3.3 自动诊断流程的注册系统变量
在诊断控制台中可以根据需要灵活配置诊断服务,这些诊断服务配置好后,用户需要在诊断控制台中双击启动该诊断服务。
如果用户希望在Panel界面中或者程序中启动诊断流程命令,步骤如下:
【1】首先在诊断Basic Diagnostic Config窗体中,选中目标服务,然后右键菜单把该诊断服务注册为系统变量,如图7-17所示。
其中_Start的数值赋值为:
- 0是空闲状态。
- 1是正在执行状态。
- 2是执行成功。
- 3是执行失败。
_Result的数值结果为:
- >0表示启动诊断流程
- =0表示中断停止诊断流程
- <0为非法参数。
【3】在面板Panel中添加按钮button控件,并关联生成好的系统变量流程名_Start,将将按钮按下事件设置为1,如图7-20。
8、DoIP诊断典型应用
❖ 8.1 配置刷写例程
【4】基于读取ID:F080位置处的数据。
方式1:使用普通步骤配置形式,如图8-5。