UDS诊断中的物理寻址和功能寻址

1:基本概念

诊断物理寻址:物理地址是针对网络中具体的ECU。

功能寻址:是针对网络中多个或所有ECU。(准确来说是功能请求报文的ID对应多个ECU)

      如一个车身域网络中,存在3个ECU,(车身域控制器,娱乐系统域控制器,远程网络系统域控制器),我们需要分别为这三个控制器分配三个物理诊断寻址。

1:如0x618(请求报文ID)=车身 ,0x658服务器应答报文ID

2:0x628 (请求报文ID)=娱乐,  0x668服务器应答报文ID

3:0x638(请求报文ID) = 远程网络,  0x678服务器应答报文ID

对这三个ECU,我们还能设定一个,针对所有三个ECU报文的请求报文,如

0x 668(功能寻址ID), 在网络中用0x 668报文发出请求报文,三个ECU都要接受,并处理这个请求信息。(对于是否应答?这么应答?则要根据具体情况来定)。

2:为什么要设计功能寻址

本人都是在零部件供应商打工的,一开始接触到功能寻址时,觉得非常难以理解,这不是脱裤子放屁,有了物理寻址还搞出一个功能寻址,不是多此一举吗?

直到我接触了,主机厂的整车联调,后我才明白功能寻址的意义,假设有如下场景。整车上,我们

**场景1)需要对某个ECU进行刷写(bootload操作)

因为刷写(bootload操作),需要两个前提:

1;关闭网络上的所有通讯

2:刷写(bootload操作)具体ECU的过程中,会对被刷写(bootload操作)产生干扰,导致误报DTC

对应的解决方法,调用uds中的0x28(通讯控制),和0x85(DTC控制)服务。

如果依然采用物理寻址,一个个去设置,显得麻烦,实际车上,一个网络上会挂载10个以上的ECU,如果采用物理寻址的方法,一个个设置,就非常麻烦和低效。

如果采用功能寻址,就很方便了。

**场景2)整车读取某些数据0x22服务

需要说明:uds设计过程中,没有要求DID或参数的唯一性要求,如;F1 98 在ECU1中可以用来读取,软件版本。在ECU2中同样也可以。

于是主机厂的工程师们,只要采用功能寻址,发送一条DID为 F1 98的报文,就可以读取网络中所有ECU的软件版本。

注意:客户端client 采用功能寻址 时,不同的ECU采用物理回复的ID,进行回复

如:诊断客户端   0x 668 03 22 F1 98

          ECU1应答:0x658 07 62 F1 98 90 90 90 90(90就是对应ascil码的软件版本)

          ECU2应答:0x668 07 62 F1 98 91 91 91 91(91就是对应ascil码的软件版本)

          ECU3应答:0x678 07 62 F1 98 92 92 92 92(92就是对应ascil码的软件版本)

需要注意的是:ECU回复依然是采用的是,物理地址回复。

### UDS诊断协议中的寻址功能实现与配置方法 UDS(Unified Diagnostic Services)是一种广泛应用于汽车电子系统的诊断通信协议,其核心之一在于支持不同的寻址方式来满足多样化的应用场景需求。以下是关于UDS诊断协议中寻址功能的具体实现与配置方法。 #### 物理寻址功能寻址的定义 在UDS协议中,存在两种主要的寻址方式:物理寻址功能寻址。 - **物理寻址**是指针对特定ECU(Electronic Control Unit)发送消息的方式。这种方式通常用于需要精确控制某个具体设备的操作场景。例如,在车辆维修过程中,技术人员可能希望只与某一特定模块进行交互[^1]。 - **功能寻址**则是指向一组具有相同功能的ECUs广播消息的一种机制。这种模式适用于那些不需要指定目标节点的情况,比如发起全局查询或者通知多个相关组件执行某项任务时非常有用。 #### 寻址方式的应用实例 下面展示了一个基于C语言编写的简单示例程序片段,该代码演示了如何利用`udsDiagService()`函数分别通过物理地址读取数据以及借助功能性地址完成写入动作: ```c // 定义UDS诊断服务函数原型 void udsDiagService(uint8_t address, uint8_t service, uint8_t* data); int main(){ uint8_t diagData[8]={0}; // 使用物理地址调用READ_DATA服务获取信息 udsDiagService(PHYSICAL_ADDRESS, READ_DATA, diagData); // 利用功能地址设置WRITE_DATA参数至对应组成员上 udsDiagService(FUNCTIONAL_ADDRESS, WRITE_DATA, diagData); } ``` 上述例子清晰地体现了这两种不同类型的寻址手段的实际运用过程[^2]。 #### Service ID (SID) 的角色 每条UDS诊断命令都由一个字节长度的服务标识符(Service ID,SID)开头,它决定了当前指令所要履行的功能职责。就像CCP协议里的Command Code一样,SID用来表明此条诊断语句究竟打算做什么性质的工作[^3]。 #### 连接类型的影响因素 依据实际部署环境的不同,可以将UDS诊断分为两大类别的链接形式—在线诊断与远程诊断: - 当采用本地硬连线方式进行通讯即为所谓的“在线诊断”,此时一般经由车上的OBD端口接入专用检测仪器来进行维护保养作业; - 而如果跨越地理界限依靠无线网络技术达成跨区域协作,则属于“远程诊断”的范畴,这往往涉及到车载单元、云服务平台还有最终用户的多方协同配合才能顺利开展业务活动[^4]。 综上所述,无论是哪种具体的实施路径都需要合理规划好相应的寻址策略以便于准确无误地传达意图并获得预期反馈效果。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值