功能描述
根据ISO14229-1标准中所述,诊断服务28服务主要用于网络中的报文发送与接收,例如控制应用报文的发送与接收,又或是控制网络管理报文的发送与接收。
应用场景
对于28诊断服务,主要应用场景为以下场合:
1、存在某些特殊测测试场景,例如希望接收或者发送对应的网络管理与应用报文
2、大多数情况下应用在刷写ECU的过程中,即在预编程条件下执行28服务功能寻址便可以抑制总线应用报文与网络管理报文的发送与接收,以便减少网络总线负载,提高ECU下载效率,同时刷写结束后也要执行28服务使能对应控制报文的发送与接收,在此过程中一般会配合85服务一起使用。
请求格式
根据IS014229-1标准所述,如下图所示为28服务诊断请求格式:
各参数解释如下:
Request SID(0x28):28为Server ID,表示通信控制请求ID。
SubFunction(00--FF):通信控制类型,具体含义如下表1所示。
communicationType(00--FF):控制通信报文种类,如下表2所示。
nodeIdentificationNumber high byte(00--FF):表示寻址的节点ID的高字节,仅在SubFunction等于4或5才有用。
nodeIdentificationNumber low byte(00--FF):表示寻址的节点ID的低字节,仅在SubFunction等于4或5才有用。
下表2为SubFunction(control Type)中的各项取值具体含义:
表2
如下表3为communication Type的各项取值具体含义:
请求实例
以抑制网络管理报文发送为例,28服务诊断请求实例如下图所示:
若以控制远程特定地址节点进入诊断会话模式为例,节点地址为0x00 0A,28服务诊断请求示例如下:
正响应实例
抑制网络管理报文发送正响应:
控制远程特定地址节点进入仅诊断模式正响应:
28诊断服务的正响应由以下三个部分组成:
Response ID:该参数固定为SID+0x40 = 0x68;
SubFunction:该参数为上述诊断请求格式中controlType;
负响应NRC支持
根据ISO14229-1协议,对于28服务支持的NRC如下表:
诊断负响应格式:7F + SID + NRC
诊断负响应格式:7F + SID + NRC
当诊断请求的SubFunction不在Server支持的范围时,则Server回复"7F 28 12";
当发送报文长度或者格式不对时,则Server会回复"7F 28 13";
当Server回复"7F 28 22"来告诉请求当前进入编程会话的条件不满足,请再次检查进入编程会话的条件;
当communicationType与nodeIdentificationNumber均超出规定的范围时,则Server会回复"78 28 31";
28服务通信控制基本原理
针对28服务的通信控制过程会经过如下几个AUTOSAR BSW模型进行处理,然后完成最终的通信控制,具体步骤如下:
- Tester发送28通信控制服务请求给到Server,Server会将该诊断报文请求传递至DCM模块;
- DCM模块调用28服务对应的上层应用函数首先进行输入参数的基本校验,校验无误之后然后传递相关控制模式请求至BswM模块;
- BswM模块根据静态配置的规则来实现对应请求中的通道通信状态控制;
配置实例:
1、DCM模块下的DcmDsdServiceTabbles配置,如下图:
2、DCM模块下DcmDsp配置:
3、BSW模块下配置