统一诊断服务(UDS)中的肯定响应抑制

UDS协议中,子功能参数的最高位是肯定响应抑制位SPRMIB,当为1时,ECU不会给出肯定响应。然而,在执行时间长的服务中,如编程回话控制,即使SPRMIB为1,ECU最终仍需给出肯定响应,以表明请求已被处理并完成。

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

统一诊断服务UDS中的肯定响应抑制

子功能参数定义

UDS协议中,有些诊断服务是带有子功能的。子功能参数的取值范围为0x00 - 0x7F。细心的同学应该发现了,子功能参数占用了一个字节,可用的数值范围为0~0xFF。但子功能的最大取值只到0x7F,那么最高位去哪了呢。这个子功能参数的最高位就是我们今天要聊的诊断服务肯定响应抑制位SuppressPosRspMsgIndicationBit,简写为SPRMIB。

如下是诊断服务子功能参数的格式定义。其中的最高位Bit7就决定了ECU是否需要给出肯定响应。
子功能参数格式定义

肯定响应抑制位的作用

ECU收到SPRMIB为1的服务时,不需要给出肯定响应。相反,当ECU收到SPRMIB为0的服务时,需要给出肯定响应。
例如,ECU收到诊断仪发来的Tester Present服务为$02 3E 00时,需要给出$02 7E 00的肯定响应。同样是Test Present服务,如果ECU收到的是$02 3E 80,则无需给出肯定响应。

例外情况

ECU在响应某些诊断服务时,由于执行时间较长,无法立即给出肯定响应。此时ECU会先给出NRC为0x78的否定响应。然后等到所请求的服务执行完后,给出最终的肯定响应或否定响应。这种情况下,即使ECU收到的诊断服务请求中子功能参数肯定响应抑制位为1,最终的肯定响应也不会被抑制。

例如在如下的诊断通信中, 即使ECU收到了子功能为0x82的诊断会话控制(DiagnosticSessionControl)服务,

### 如何忽略Sass `@import`规则已弃用的警告 在Dart Sass版本更新过程中,确实存在一些功能逐渐被标记为过时并最终移除的情况。对于`@import`规则,在较新的Dart Sass版本中已被视为不推荐使用的特性[^1]。 为了抑制有关`@import`规则即将废弃的具体警告信息而不影响其他正常的编译过程,可以采取如下措施: #### 方法一:通过命令行参数控制 如果是在命令行环境中运行Dart Sass,可以通过传递特定选项来关闭这些警告消息。具体来说就是使用`--quiet-deps`标志位启动程序: ```bash sass --quiet-deps input.scss output.css ``` 此方法适用于希望临时静默处理依赖项中的警告而不需要修改源码的情形。 #### 方法二:配置文件设置 当项目规模较大或者需要长期稳定地消除此类警告时,则可以在项目的根目录下创建名为`.sassrc.json`或`.sassrc.yml`这样的配置文件,并加入相应的字段以禁用警告输出。例如JSON格式下的实现方式如下所示: ```json { "quietDeps": true } ``` 这种方法的好处在于它能够作用于整个工作区内的所有Sass文件,无需每次执行都手动指定额外参数。 需要注意的是,虽然上述两种手段都可以有效地阻止`@import`相关的弃用通知显示出来,但从长远来看还是建议逐步迁移到官方推荐的新模块化导入机制上去,即采用`@use`和`@forward`语句替代旧版语法。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值