服务定义和编辑只能够在CDDT里面进行,思路分为三步:
1、Protocol Services里面添加服务,定义服务的格式、请求和正负响应。
2、根据服务的功能归类到Diagnostic Class Tenplates
3、Variant里面的Supported Diagnostic Classes勾选
然后我们开始新建个服务
点击new填入想定义的信息
![](https://img-blog.csdnimg.cn/direct/baa7babd1e4049ea9e48fa97a4b7471f.png)
点击确定
![](https://img-blog.csdnimg.cn/direct/1a7682520309487b9211932e860278dc.png)
起个名字
![](https://img-blog.csdnimg.cn/direct/4d1ca86713fb4059bb0a1f77087e1ce6.png)
我们选择为子服务
![](https://img-blog.csdnimg.cn/direct/725bb19a05024a21944278459e3b6679.png)
这里要注意的是,子服务需要在text table里面的范围之内,不然会导致一致性检查不通过。如果你一定要把这个子服务加进来,那就需要切换成专家视图,把对应子服务添加到text table里面.
![](https://img-blog.csdnimg.cn/direct/76ed2764540d4e0aba8654ab6dfbc3c9.png)
正负响应也是类似的
服务里面的default是给diva和CANoe的默认值,const一般给肯定响应来用,下图这里P2的话再肯定响应当中就是25。
![](https://img-blog.csdnimg.cn/direct/f53765785cea4348b8d540f6e2ec6767.png)
新建好服务之后我们可以发现,used是no的,说明这个服务没有添加到Diagnostic Class Tenplates里面,require不用太在意,只要保持10和3E服务是yes就行,大多数情况下都是no的。
![](https://img-blog.csdnimg.cn/direct/3ee594d920304181b741363a009c6c6e.png)
自己新建个Diagnostic Class,把刚才新建的服务加进去。
![](https://img-blog.csdnimg.cn/direct/b41583f2ec89465391eeac3caa9de34b.png)
这时候我们新建出来的服务的used已经变成yes了
![](https://img-blog.csdnimg.cn/direct/daf618c4c23a448595071faafdebf275.png)
在Variant里面的Supported Diagnostic Classes勾选上就行
![](https://img-blog.csdnimg.cn/direct/9420977a08604b11b0f5cab1479e8d84.png)
最后需要注意的是,在诊断类当中,服务为on才是开启的,off是不启用的。
![](https://img-blog.csdnimg.cn/direct/301b7535963b402597872e501fea15da.png)