【UDS统一诊断服务】四、诊断典型服务(6)— 输入输出控制单元(0x2F)

27 篇文章 36 订阅

四、诊断典型服务(6)— 输入输出控制单元(0x2F)

我自己汇总了一张表格,免积分下载,对应学习,效果更好!
链接:https://download.csdn.net/download/sinat_40003796/85031818

各功能单元诊断服务:

  • 诊断和通信管理功能单元
  • 数据传输功能单元
  • 读故障信息功能单元(存储数据传输功能单元)
  • 在线编程功能单元(上传下载功能单元)
  • 功能/元件测试功能单元(例行程序功能单元)
  • 输入输出控制单元(0x2F)

本文主要讲解“输入输出控制单元(0x2F)”,其余的见其它文章。

————————————————————

InputOutputControlByIdentifier (0x2F) 和RoutineControl (0x31) 这两个诊断服务的用途和用法有点类似,都是调用ECU内部一些预定义的操作序列,相当于是我们从外部利用诊断手段控制ECU的接口

InputOutputControlByIdentifier (0x2F)服务

ECU简单来说就是一个对输入(sensor)进行计算再产生输出(actuator)的系统。2F这个服务就是对ECU的输入和输出进行控制。这个服务在生产线上会需要使用,比如,在总装阶段,工人需要验证车上的各种功能是否正常,例如四个车窗的升降是否正常,如果挨个开关去按,那效率很低,如果通过一个诊断命令就能够观察到车窗升降的情况,效率则高得多。

在这里插入图片描述
比如,ECU接收一个输入信号A,我们就可以利用2F给这个A赋个我们需要的值;ECU对某个执行器B进行控制,我们就可以利用2F服务再配上某些特定的参数来实现对B的控制,例如门控对车窗升降、后视镜折叠等的控制。

在这里插入图片描述

2F服务的request由4部分组成:
  • SID, 服务ID
  • dataIdentifier,用于标识被控制的IO对象
  • controlOptionRecord,用于标识控制方式,比如是启动、停止控制,还可以有一些自定义的参数来进行更精准的控制,比如让某个执行器的动作持续多长时间。
    controlOptionRecord又分为两部分,分别是1个byte的inputOutputControlParameter,以及若干byte由厂家自定义使用的controlState。
  • controlEnableMaskRecord,这是一个可选参数,用于标识controlOptionRecord中的哪些parameter被使用。
UDS明确定义了四种inputOutputControlParameter:
  • 0x00 returnControlToECU (将控制权还给ECU,即结束控制)
  • 0x01 resetToDefault (将dataIdentifier所引用的输入信号、内部参数、输出信号等设为默认值)
  • 0x02 freezeCurrentState(将dataIdentifier所引用的输入信号、内部参数、输出信号等冻结住)
  • 0x03 shortTermAdjustment (将dataIdentifier所引用的输入信号、内部参数、输出信号进行设置,其实就相当于开始了对ECU的控制)

另外,UDS定义可以用22服务读取2F服务中使用的dataIdentifier,返回值是状态信息,具体的状态信息是什么,则由使用者自定义了。

14229中举的一个例子来感受一下2F服务:

这个例子是使用2F控制Air Inlet Door Position (进气口门位置),用标识符0x9B00来标识进气口门的位置。Air Inlet Door Position [%] = decimal(Hex) * 1 [%] ,即用一个百分比来表示这个位置。

step1:
tester 发送22 9B 00读取当前进气口门的位置ECU返回62 9B 00 0A , 0x0A = 10(dec),表示当前位置是10%

step2:
tester 发送2F 9B 00 03 3C ,表示要将进气口门的位置调整到60%,0x3C = 60(dec)ECU返回6F 9B 00 03 0C,表示接受控制,当前进气口门的位置为12%。因为ECU收到请求后是立刻响应的,而门的位置调节需要时间,所以还没有达到60%。

step3:
过一段时间后tester 发送22 9B 00读取当前进气口门的位置ECU返回62 9B 00 3C , 0x3C = 60(dec),表示当前位置已经到了60%

step4:
tester 发送2F 9B 00 00,将控制权交还给ECUECU返回6F 9B 00 00 3A,表示接受请求,当前位置为58%

step5:
tester 发送2F 9B 00 02,冻结9B 00这个ID所代表的进气口门位置这个状态ECU返回6F 9B 00 02 32,表示接受请求,当前位置保持在50%

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值