P2Server_max:指的是ECU在收到请求和给出响应之间的这个时间间隔,他描述了ECU的反应速度。
P2*Server_max:在ECU给出NRC 78(等待)之后生效,所以会需要更长的反应时间。
在ECU的软件中,需要设置P2Server这个timer,而这个timer应该被赋P2Server_max或P2Server_max这两值。
定性地来说,P2Server_max指的是ECU在收到请求和给出响应之间的这个时间间隔,它描述了ECU的反应速度。定量地来说,它指的是T_Data.ind(ECU收到请求)和T_Data.req(ECU给出响应)这两个函数被调用之间的时间。
P2Server_max与P2Server_max的含义类似,区别在于,P2Server_max这个时间参数是在ECU给出NRC 0X78之后生效的,ECU返回NRC 0X78,说明ECU当前处理能量不足,所以需要更长的反应时间,即P2Server_max。所以P2Server_max通常比P2Server_max大很多。在讲0x10这个诊断命令的时候,我提过这个诊断命令的响应格式是类似50 01 xx xx yy yy这种, xx xx就表示P2Server_max,yy yy 就表示P2Server_max。诊断仪收到这两个参数之后,就对ECU的响应速度有了认知,可以据此来判断ECU的响应是否及时。
————————————————
版权声明:本文为CSDN博主「@3933549xx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45353815/article/details/105678942
三、诊断请求与响应
1、诊断请求
诊断请求发送格式:诊断请求ID:诊断数据长度 + 0X10 + 子服务
如:0x761 02 10 01
诊断请求ID(0x761):主机厂定义,一般为0X7** (CAN)
诊断数据长度(02):所需数长度(CAN报文数据8个字节:0x02代表有效字节长度为2,即10 01)
子服务(01):0x01(默认会话)、0x02(编程会话)、0x03(扩展会话) .....
2、诊断响应
诊断响应格式:
正响应:诊断响应ID: 响应数据长度 + 0X50 + 子服务 +P2server_max +P2*server_max
如:0X766 06 50 01 00 32 01 F4
诊断响应ID(0x766):一般也是0X7**大于请求ID
响应数据长度(06):同上
子服务 (01):同上
P2server_max(00 32):由主机厂定义,解析度为1毫秒,00 32既是50毫秒(ms)最大65535ms
P*2server_max(01 F4):由主机厂定义,解析度为10毫秒,01 F4既是5000毫秒(ms)最大655350ms
负响应:诊断响应ID: 响应数据长度 +7F+ 10 + NRC
如:0x766 03 7F 10 12
诊断响应ID(0x766):同上
响应数据长度(03):同上
0X7F:ISO14229规定否定响应均以0x7F 开头
NRC:否定响应码(下图为14229给出,根据主机厂需求可增加其他NRC)