目录
关键词
嵌入式、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)
注意:否定响应代码有优先级,具体优先级请查看具体服务对应的NRC。
五、什么是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,则代表该请求如果是正响应则不回复,以节约通信资源减小负载。
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<