UDS_ControlDTCSetting(0x85)服务

本文介绍了汽车诊断中的DTC控制服务,包括服务功能、控制基本原理、应用场景,如诊断刷写中DTC的暂停与恢复,以及服务请求和响应格式。强调了85和14服务的区别,以及在不同场景下的注意事项。

一、服务功能:

        该服务主要用于开启或停止DTC状态位的更新功能,而具体的实际功能和作用在主机厂规定的诊断服务规范当中都有提到。

        DTC控制基本原理

                一般来说要满足两个条件:

                        ①使能条件满足

                        ②DTC控制有无关闭(85服务);

                        只有当使能条件满足且抑制DTC上报的开关为FALSE的情况下,上报的故障事件才能够进一步得到处理;

二、应用场景:

        ①在诊断刷写过程中,对某个ECU节点单独进行刷写,总线上其他的ECU节点还处于正常工作状态,一般会让各ECU节点停止记录DTC,刷写完成之后再重新开启DTC记录功能,此过程一般结合28服务一起使用。

        ②某些不需要进行记录DTC的场景。

        在某些场景下的注意事项:

                1、当通过85服务控制DTC不报出时,也就意味着当前DTC的状态将不会更新,DTC状态将保持现状。

                2、一旦85服务控制DTC报出或者session超时回到默认会话或者软件复位等操作时,那么此时DTC状态将会继续保持更新;

                3、当85服务控制DTC不报出时,此时执行14清除DTC服务时,DTC的状态将会正常被14服务处理,不会收到85服务的影响;

                4、如果某event并没有Mapping DTC,那么85服务将不会对这个event做任何处理,因为85服务处理的基本对象是DTC;

                5、如果某故障event发生会触发安全行为,此时如果执行85服务抑制DTC,同时触发14服务那么DTC状态将会被清除,相应的安全行为可能失效,因为对于安全关键系统,一般建议出现这种情况时,已触发的安全行为不应该被同步抑制

三、服务请求:

请求格式:

DTCSettingControlOptionRecord参数几乎不使用

ControlDTCSetting Request SID:固定为0x85

SubFunction

Subfunction说明
00ISO保留
01ON:表明DTC状态位正常更新
02

OFF:表明DTC状态位将被抑制

03-3FISO保留
40-5F主机厂使用
60-7E供应商使用
7FISO保留

四、服务响应:

正响应格式:

ControlDTCSetting Response SID:固定为0xC5

DTCSettingType:与请求保持一致

五、支持的NRC:

NRCDescriptionMNemonic
12子功能不支持SFNS
13发送报文长度或者格式不对IMLOIF
22当前请求条件不足CNC
31请求超出范围
如果检测到通信类型或节点识别号参数中有错误,则服务端应使用此响应码。
ROOR

### 0x85服务功能详解 0x85服务,即ControlDTCSetting服务,是UDS(统一诊断服务)协议中用于控制诊断故障代码(DTC)设置的重要服务。该服务的主要功能是启用或禁用DTC存储功能,从而在测试或开发过程中避免不必要的故障记录。通过发送特定的请求报文,客户端可以控制服务器端的DTC状态位更新。具体来说,当子函数值DTCSettingType设置为off时,服务器将暂停对DTC状态位的任何更新,直到该更新状态位的功能再次启用。相反,当子函数值DTCSettingType设置为on时,服务器将重新开始DTC状态位的更新[^3]。 ### 使用场景 在实际应用中,0x85服务主要用于以下几个场景: 1. **测试和开发**:在车辆系统的测试和开发阶段,工程师可能需要临时禁用DTC存储功能,以避免因测试过程中产生的非预期故障而影响系统的正常运行。例如,在进行软件更新或功能测试时,可以使用0x85服务来暂停DTC状态位的更新,从而保持DTC状态不变。 2. **权限管理**:0x85服务支持对单个DTC或DTC组进行设置,通过将DcmSupportDTCSettingControlOptionRecord配置为TRUE,可以在诊断请求中加入三个字节的DTC或DTC组信息。这使得系统管理员可以根据具体需求选择性地控制某些DTC的状态更新,从而实现更精细的权限管理[^2]。 3. **会话切换**:当通过0x85服务控制DTC不报出时,即使当前出现故障,DTC状态也不会更新。此外,0x85服务可以配置支持多个会话,这意味着在支持的会话之间切换时,不会改变之前对DTC的控制。然而,当会话切换到不支持0x85服务的会话时,系统将恢复到默认状态,即使用Dem_EnableDTCSetting来使能DTC状态更新。 4. **与其他服务的交互**:值得注意的是,0x14服务(清除诊断信息)不受0x85服务的影响。即使在0x85服务禁用DTC状态位更新的情况下,0x14服务仍然可以清除DTC状态位信息[^3]。 ### 示例代码 以下是一个简单的示例,展示如何使用Python发送0x85服务的请求报文: ```python def send_control_dtc_setting_request(dtc_setting_type, dtc=None): # 构建请求报文 request = [0x85, dtc_setting_type] # 如果指定了DTC,则添加DTC信息 if dtc is not None: request.extend([dtc >> 16 & 0xFF, dtc >> 8 & 0xFF, dtc & 0xFF]) # 发送请求报文 # 这里假设有一个发送函数send_request send_request(request) # 示例:启用DTC状态位更新 send_control_dtc_setting_request(0x01) # 示例:禁用DTC状态位更新 send_control_dtc_setting_request(0x02) # 示例:对特定DTC禁用状态位更新 send_control_dtc_setting_request(0x02, 0x123456) ``` ### 注意事项 - **NRC支持**:0x85服务支持多种NRC(否定响应码),如12(子功能不支持)、13(发送报文长度或格式不对)、22(当前请求条件不足)和31(请求超出范围)。这些NRC码可以帮助客户端更好地理解和处理服务请求失败的原因[^4]。 - **权限管理**:在实际应用中,需注意权限管理和DTC设置的恢复,以确保车辆系统的正常运行。特别是在多用户环境中,应确保只有授权用户才能修改DTC设置。 通过上述功能和应用场景,可以看出0x85服务UDS协议中的重要性和实用性。它不仅提供了灵活的DTC控制机制,还确保了车辆系统的稳定性和安全性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值