目录
关键词
嵌入式、C语言、autosar、OS、BSW、UDS、diagnostic
平台说明
| 项目 | Value |
|---|---|
| OS | autosar OS |
| autosar厂商 | vector , EB |
| 芯片厂商 | TI 英飞凌 |
| 编程语言 | C,C++ |
| 编译器 | HighTec (GCC) |
| autosar版本 | 4.3.1 |
| 参考文档 | TechnicalReference_Dcm.pdf AUTOSAR_SRS_DiagnosticLogAndTrace.pdf AUTOSAR_SWS_DiagnosticCommunicationManager.pdf AUTOSAR_SWS_DiagnosticEventManager.pdf AUTOSAR_SWS_FunctionInhibitionManager.pdf- 【14229-1.2.3】,【15765-1.2.3.4】. 【11898】 |

>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
| 缩写 | 描述 |
|---|---|
| DEM | Diagnostic Event Manager |
| DET | Development Error Tracer |
| DDM | Diagnostic Data Modifier |
| DCM | Diagnostic Communication Manager |
| DID | Data Identifier |
| SID | Server Identifier |
| DDID | Dynamic DID |
| RID | Routine Identifier |
| PID | Parameter Identifier |
| NRC | Negative Response Code |
| OSI | open systems interconnection |
| DSD | Diagostic Service Dispatcher (submodule of the DCM module) |
| DSL | Diagnostic Session Layer (submodule of the DCM module) |
| DSP | Diagnostic Service Processing (submodule of the DCM module) |
| DTC | Diagnostic Trouble Codes |
一、背景
当ECU 封装好甚至说是车造好了后,要是车出现故障了,我们不可能首先一来就把车拆开找问题出在哪吧,这样费力不讨好。为了避免上诉情况,开发了一套诊断协议,诊断仪或者远程只需要通过这套协议就能获取到故障码和故障数据,方便定位是哪个位置出了问题,对症下药。除了故障诊断,通过这套协议还能实现标定,程序升级等功能。
但是,如果各个供应商或者主机厂自己开发自己的协议,会导致成本和排查的复杂性。于是,基于ISO 14229 的协议便应运而生了,所以UDS 全称为Unified Diagnostic Services。其中,UDS ISO 14229-1:2013 和 ISO 15765-3:2004(后面被14229-3 代替) 为互补标准,是基于CAN总线应用层的。

如下图所示,14229-1和14229-3适用于应用层,14229-2适用于会话层,15765-2适用于传输层也就是CANTP[AutoSar]BSW_Com012 CAN TP 模块介绍。11898是CAN总线相关协议,其中敌营了CAN 报文结构和can传输的相关要求。

二、Autosar Diagnostic 总览
Autosar 诊断规范包括Diagnostics Communication Manager(DCM),Diagnostic Event Manager(DEM)和Function Inhibition Manager(FIM),这三个模块结合使用以实现完整的整车诊断功能。

三、常用的UDS 服务




四、否定响应代码(NRC - negative response codes)

五、什么是SID
SID(Server Identifier)就是如上述第三节所述,分为了六个大类的UDS服务。其中有的SID支持子服务(sub-function),以0x27服务为例,支持的sub-function 如下:

例如:使用0x01 subfunction

六、什么是DID RID
6.1 DID
DID(Data Identifier),在逻辑上表示一个对象(例如,进风口门位置,电压或者相关温度等)或对象集合,一般都是与产品系统相关的信息和一些配置信息。一般用于0x22 (readDataByIdentifier), 0x2E (writeDataByIdentifier), and 0x2F
(inputOutputControlByIdentifier)。
DID由两个byte组成,代表的意思请参考ISO_14229_1 Table C.1 — DID data-parameter definitions

发送请求格式:minimum length is 3 byte (SI + DID)
举个栗子:0XF190(VIN number) 读取VIN

6.2 RID
RID(Routine Identifier),例程控制的ID,一般都是些与标定、烧录相关的耗时耗资源操作,一般用于 0x31 SID。
DID由两个byte组成,代表的意思请参考ISO_14229_1 F.1 RoutineIdentifier (RID) definition

发送请求格式:at least 4 (SI+SubFunction+RID Parameter)
举个栗子:请求执行0x0201 routine 读取车辆指定信息。

七、功能寻址和物理寻址
一辆车上有多个ECU,诊断仪和这些ECU的UDS有两种寻址方式:
物理寻址: 一对一,诊断仪对其中一个ECU进行通信,发送的UDS报文ID为ECU的物理ID。
**功能寻址:**一对多,一个诊断仪对多个通功能ID的ECU进行通信,发送的UDS报文为ECU的功能ID。

八、UDS请求和响应规则
8.1 请求格式
SID + (sub_function)+ parameter
8.2 响应格式
肯定响应: ( SID + 0x40) + (sub_function)+ parameter
否定响应:0X7F + SID +NRC
8.3 正响应抑制
在sub_function中,bit7 为 抑制位。如果置为1,则代表该请求如果是正响应则不回复,以节约通信资源减小负载。

>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<