漫话UDS之Service10

UDS是定义车载诊断的通用协议,包含不同的子类文件。不同的子类文件应用于车载不同总线通信介质:


从最低端物理层到最上端应用层对应不同的总线协议(其中占有主导地位的车载总线CAN、由于ADAS的兴起,车载以太网的引入到车载网络最为火热),从如上截图可以看出UDS协议也给新的车载总线做了预留,这样充分保证了该协议的灵活性。

本文重点是分享UDS协议中Service10,试着以如下内容,在车载诊断范畴对Service10有一个整体的了解:

1、 UDS协议对服务的定义(定义时间参数P2/P2*)

2、用图形说明Service10

3、CDD数据库编辑

4、手动测试

5、CAPL(WithCDD and without CDD)


一、UDS协议对服务的定义(定义时间参数P2/P2*)


UDS协议对Service10开篇有语:

The DiagnosticSessionControl service is used to enabledifferent diagnostic sessions in the server(s).

该服务是在服务器端使能不同的会话模式,而诊断会话模式在服务器中用于启用一组特定的服务或者功能(e.g.刷写)。可以通过会话模式赋予不同诊断服务的执行权限。

关于Service10有以下特性:

1、 通过Service10可以报告诊断会话有效的数据链路层特定的参数值(e.g.时间参数值P2/P2*)(至于目的,这里暂留一个悬念,同行们也可以先思考,本文后续会解释);


2、 通过Service10可以启用一组特定的诊断功能,以如下实例辅助说明:


(1)、比如进入Service10 02(ProgrammingSession编程会话模式),表明ECU进入了Softwareupdate功能模式;

(2)、比如OEM自定义一个会话模式Service10 50(OEM SpecificSession),在该会话模式下,所有诊断服务对诊断仪操作者不需要进行解锁等一系列操作,可以在车辆下线过程中提高下线效率。


3、 对于ECU Server端,在诊断范畴内,ECU始终会处于一个诊断会话模式下(并且是唯一)。ECU上电后,一定处于默认会话模式;

4、在进行某些会话模式切换过程中,Server端可以设置必须满足某些条件,这些条件都是用户自定义,可以通过如下例子辅助理解:

A:Server端可以只允许特定客户端标识符(CANID)的Client端启动特定的新诊断会话模式(e.g.服务器要求具有Client端标识符CANID为 F4 XX才能启动ExtendedDiagnostic Session);

B:Server可以定义某些安全条件(e.g.车辆不得行驶或者发动机不得运行),因为过渡到例如ProgrammingSession编程会话模式可能会导致正常功能丧失,因此某些车辆可能要求车辆处于安全状态。

不同服务的执行权限不同,在UDS协议中对该内容做了推荐,详细可参考下图:


如上只是建议,没有强制性。具体需求规范定义需要参照具体项具体定义。

关于Service在UDS协议中定义的格式,可参看如下链接文章:


二、用图形说明Service10

对于通过会话模式区分服务执行权限,可参考下图:


通过会话模式来区分UDS服务的执行权限。比如:

1、在默认会话模式只支持Service22对ECU进行数据读取;

2、上述一些服务除了需要进入非默认会话模式外,还需要ECU进入解锁状态(Service27);

3、上述描述了一个特殊的诊断会话会话默认,进入该会话模式后,不需要解锁旧可以对ECU进行Service 2E/2F/31等服务,主要应用场景是OEM下线配置使用,提高工作效率(这个是自定义会话模式,按需使用,此处举例仅为说明由此功能

而对于不同会话模式切换,可参考下图:


需要注意的点如下:

1、若ECU当前处于默认会话模式,Client发送10 01,ECU会重置所有激活/启动/更改的

在激活会话期间的设置/控制;

2、不同会话模式可以任意切换;

3、ECU为了自身安全,不允许长期处于非默认会话模式。在一定时间内(S3),若ECU没有收到任何诊断请求,会强制要求ECU从非默认会话模式,跳转到默认会话模式;

4、在S3时间内,若无需求发送诊断请求,但是还想要求ECU处于非默认会话模式,可以周期性发送Service3E(TesterPresent),让ECU保持当前非默认会话模式。


三、CDD数据库编辑

在使用CANdelaStudio编辑数据库CDD过程中,本文以编辑Service10 50(OEM specificsession)为例,编写步骤如下:

1、鼠标右击,选择新建一个Newsession:


(2)、编辑SessionID和名称:


先默认选择诊断服务都支持该会话模式:


(3)、接上面描述,该会话模式下2E服务不需要解锁就可以执行,对应在数据库中设置:


注意横坐标和纵坐标代表的含义,这块就不会编辑错误。

举一个例子:

ECU当前处于扩展会话模式,Tester发送Service 11 01,这个时候不应该编辑简单的这个服务支持与否,而是将执行Service 11 01后ECU的状态编辑(重启后为默认会话模式咯)


4、手动测试

使用CANoe加载诊断数据库,可以实现手动测试会话模式切换内:

(1)、新建CANOoe工程,加载诊断数据库CDD文件:


(2)、若直接使用CDD数据库中参数,不需要改动;若需要改动参数,选择如下:


按需改动即可。

(3)在诊断控制台发送Service10相应子服务,并在Trace显示:


这个时候回答前面留下的问题:

在UDS协议定义Service时,定义了时间参数P2/P2*


如前面Trace中参数值(转换为十进制):

P2=150 ms

P2*=2000 ms

作用是对于外部Tester只是通过加载诊断数据库或者需求规范获知该时间参数,但是与ECU内部时间参数是否一致不确定,通过该服务可以读取时间参数。


五、使用CAPL进行半自动测试

首先解释下半自动的意思,就是手动编辑测试脚本,自动化运行这些测试脚本,所以叫半自动化测试。

本文分享使用CDD数据库发送Service10 01和不使用数据库发送Service10 01两种情况:

A:使用数据库CDD文件

新建工程,并加载数据库CDD文件


编辑脚本如下:

voidMainTest()

{

 Testrequest();

}


Testrequest()

{

 diagRequestABS_ESP.DefaultSession_Start step1;


 diagSetTarget ("ABS_ESP");


  diagSendRequest (step1);


}

运行后Trace截图如下:


B:不使用CDD数据库进行诊断测试:

新建工程以及测试节点,加载OSEK.DLL文件


编写CAPL脚本:

源码如下:

voidMainTest ()

{

 longhandle;

 byteDefaultSession[2]={0x10,01};


 handle =CanTpCreateConnection(0);

 CanTpSetTxIdentifier(handle,0x610);

 CanTpSetRxIdentifier(handle,0x612);

 CanTpSendData(handle,DefaultSession,2);

 testWaitForTimeout(2000);

}

Trace如下:


因为没有仿真ECU,所以只有请求没有响应。


如上是关于Service 10服务从UDS格式定义到数据库编辑,再到手动以及半自动化测试内容。

希望对你有所帮助!



-----------------------------------

作者简介|穿拖鞋的汉子

汽车电子工程师

公众号:车载诊断技术

chuantuoxiedehanzi@163.com

来,每天进步一点点

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容