UDS中的SI:Service Identifier:服务ID:服务标识符的定义

本文详细介绍了服务标识符SI的概念及其在ISO14229-1标准中的定义与使用规则。SI作为服务请求和响应的基础,对于理解车载诊断系统的通信至关重要。文中明确了SI的类型、范围,并解释了其与服务类型之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SI: Service Identifier (服务ID)
类型:1个字节的无符号整数值
范围:0x00~0xFF


Service identifier (SI)Service type (bit 6)Where defined
0x10 – 0x3EISO 14229-1 service requestsISO 14229-1
0x3FNot applicableReserved by document
0x50 – 0x7EISO 14229-1 positive service responsesISO 14229-1
0x7FNegative response service identifierISO 14229-1
0x80 – 0x82Not applicableReserved by ISO 14229-1
0x83 – 0x88ISO 14229-1 service requestsISO 14229-1
0x89 – 0xB9Not applicableReserved by ISO 14229-1
0xBA – 0xBEService requestsDefined by system supplier
0xBF – 0xC2Not applicableReserved by ISO 14229-1
0xC3 – 0xC8ISO 14229-1 positive service responsesISO 14229-1
0xC9 – 0xF9Not applicableReserved by ISO 14229-1
0xFA – 0xFEPositive service responsesDefined by system supplier
0xFFNot applicableReserved by document

注意:
  1. 请求消息的服务标识符和正响应消息的服务标识符之间存在一一对应关系,其中SI字节值的第6位(bit6)表示服务类型(service type)。
  2. 所有请求消息的服务类型的第六位等于0。
  3. 除了周期数据响应消息(ReadDataByPeriodicIdentifier (0x2A, see 10.5) ),所有积极响应(positive response)消息的服务类型的第六位等于1。
  4. 消极响应服务ID,NR_SI, Negative response service identifier是一个固定值0x7F,注意:为了应用层数据编码和解码更方便,这个ID(0x7F)并没有用作一个SI值(怎么理解?)。
  5. SI应被用于对服务原语中已被调用的特定服务进行编码。 每个请求服务应分配一个唯一的SI值。 每个积极响应服务应分配一个相应的唯一SI值。
  6. SI用于代表从应用层传输到更底层中的应用数据字符串中的服务。

详见ISO14229-1_2013中 7.3.2
### OBD服务UDS服务的共用实现方式及集成方案 #### 背景概述 OBD(On-Board Diagnostics)是一种车载诊断系统,主要用于监测车辆排放和性能参数。而UDS(Unified Diagnostic Services)则是一套标准化的服务集合,定义于ISO 15765中,广泛应用于现代汽车的诊断功能开发[^1]。 #### 技术基础 为了理解两者的共用机制,需先明确其技术背景。UDS构建在一个分层的通信体系之上,遵循OSI七层模型的设计原则,这使得不同类型的诊断请求能够通过统一接口处理[^2]。与此同时,OBD作为特定应用领域内的子集,其实现依赖于更广泛的UDS框架支持。 #### 集成方法分析 以下是关于OBD服务UDS服务之间可能存在的几种主要集成路径: 1. **共享底层协议栈** UDS服务通常运行在CAN总线或其他网络介质上,并采用ISO TP(Transport Protocol)来分割大数据包传输过程。由于OBD同样基于相同的物理媒介操作模式,因此两者可以无缝地利用同一组硬件资源完成数据交换任务。 2. **映射至共同的服务ID空间** 在逻辑层面,每项具体的诊断动作都被赋予了一个唯一的SID (Service Identifier),例如读取故障码对应的是`$03`指令。对于那些既属于传统意义下的OBD范畴又兼容新版UDS规范的功能点,则可通过预设转换表的方式将其纳入到更大的服务体系之中[^3]。 3. **借助高层软件抽象层管理差异性** AUTOSAR平台提供了一种灵活的方法论指导开发者设计跨平台解决方案,在此环境下创建专门负责协调两类独立但关联紧密的标准间交互行为的核心组件——即所谓的“桥接器”。这种做法不仅简化了实际编码工作量还增强了系统的可维护性和扩展能力。 ```python def obd_to_uds_converter(obd_service_id): uds_mapping_table = { '01': '$10', # Example mapping from OBD to UDS service ID '03': '$19', ... } try: return uds_mapping_table[obd_service_id] except KeyError as e: raise ValueError(f"No corresponding UDS service found for given OBD id {e}") ``` 上述代码片段展示了如何建立简单的映射关系以便快速查找对应的UDS服务标识符。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值