以控制发动机进风门位置为例,以DID(9B00)控制该参数,转化关系为:Air Inlet Door Position [%] = decimal(Hex) × 1 [%]。
Tester请求控制该参数值达到0x3C,发送指令如下图4所示:
图4 2F服务诊断请求示例(单一参数)
其中,0x2F为诊断请求SID,0x9B00为受控参数的DID,0x03为表示开启对该参数的控制,0x3C表示控制该参数的值达到0x3C。
有时候,当不断使用22服务去检查是否达到请求设定的值时,会发现并没有立马达到,因为有时候受控过程本身就是一个逐渐变化的过程,所以只要经过一定的合理时间并最终达到设定的值,那么就没有问题。
2.多参数控制
当受控参数超过1个时,此时我们有必要引入controlEnableMask来实现对不同受控参数的自由控制。
其基本原理就是将对应参数与controlEnableMask的bit位进行一对一Mapping,若bit位为1,则表明对应的参数将受控,若为0,则表明对应的参数不受控。
如下图5所示,DID(0x0155)控制了5个参数:IAC,RPM,PPA,PPB,EGR。这5个参数在controlEnableMask中的对应关系展示如下:
图5 controlEnableMask 控制参数对应表
这里以仅控制IAC参数为例,由上可知,按照bitMap关系,可得出此时的controlEnableMask为0x80,即下图6所示:
图6 2F服务多参数请求实例
在执行2F服务多参数请求,有以下几点内容需要注意:
- 受控的第1个参数必须对应controlEnableMask的最高位,其余参数按照排列顺序逐位类推;
- 当仅需要控制某个参数或多个参数时,controlEnableMask中未置位的对应参数的值将不会受到控制;
服务响应
服务响应表示的是Server接收到来自Tester的诊断请求之后,按照UDS诊断规范回复的诊断响应。
响应格式
如下图7所示,Server的诊断响应格式(positive response)如下:
图7 2F服务诊断响应格式
诊断响应由以下
- Response SID: Positive Response SID = request SID + 0x40 (即0x2F + 0x40 = 0x6F);
- Data Identifier: 与诊断请求一致的DID;
- ControlOptionRecord:表示控制模式及控制的相关参数组成的数据集;
- IOCP: 与诊断请求相同;
- CS: 与诊断请求的控制参数相同,其顺序也应当一致;
相比诊断请求,我们会发现2F服务的诊断响应中不会包含controlEnableMask,无论诊断请求是否包含Mask。有时候测试的过程中容易犯这个错误,所以在此提个醒,防止翻车。
正响应实例
1.单参数控制
在上述诊断请求中,使用DID(0x9B00)来控制进气门参数,Server回复的正响应格式如下图8所示:
图8 2F服务诊断响应示例
可见,进气门的控制是一个渐变的过程,达到诊断请求设定的值需要一定的时间,所以此时给到的正响应并不是设定的值,而是当前的实时值,此时便可以通过22服务不断去读取该DID是否达到了诊断请求的值。
2.多参数控制
当控制参数为多个时,针对如上所述的2F服务多参数请求,相应的诊断响应如下图9所示:
图9 2F服务多参数诊断响应
针对2F服务的多参数请求,诊断响应的参数值无论是否被请求控制,都应该给出实时值,只不过受控参数IAC的值应最终与请求的值相同而已。
负响应NRC支持
有时候,由于诊断请求中的长度不对,准入条件不满足等原因,并不是每次诊断请求都会回复正响应。
因此为了识别到到底是哪类错误,UDS统一用NRC(Negative Response Code)来表征所有诊断服务使用的错误类型,以便于更好的定位并排查问题,且所有的诊断服务都会存在负响应,。
那么对于2F服务负响应的格式如下:
诊断服务负响应格式: 0x7F + Request SID + NRC。
以此类推,2F服务诊断服务负响应: 0x7F + 0x2F + NRC。
UDS定义NRC为导致当前诊断服务无法正常进行的原因。对于2F支持的NRC有哪些呢,请看如下表1所示:
表1 2F服务NRC支持
上述列出的NRC并不是需要全部支持,取决于具体的使用场景及客户需求。
比如以下场景:
- 若没有为2F服务设置使能条件,那么就不需要NRC22,反之若支持NRC22,必须列出相应的使能条件;
- 若请求的DID并不需要安全解锁,那么就不需要支持NRC33,反之若支持NRC33,则至少存在一个DID在执行2F服务时需要安全解锁,NRC34同理;
- NRC13, NRC31则必须支持;
- 当多种错误同时发生时,UDS协议规定了NRC的优先级,具体细节可查看IS014229-1标准文档。
- NRC优先级如下图10所示,可用于测试参考验证;
图10 2F服务NRC优先级