• 302查看
  • 0回复

[应用层软件] 车载控制器UDS诊断服务代码实现解析

[复制链接]


该用户从未签到

发表于 5-3-2024 15:56:24 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


诊断仪和车载控制器的数据流交互在代码层级的实现。通过简单的例子讲解诊断仪和车载控制器之间如何进行交互,以便让大家有个框架知识的认识,其他的服务交互可以参照例子进行思考。

例如发送10 02进入编程会话模式,调用CAN_conotrol_check_rx()函数,通过SID=10进入DiagnosticSessionControl模式

车载控制器UDS诊断服务代码实现解析w1.jpg

SUB=02,进入programming模式,并调用f_DSC_p()函数

车载控制器UDS诊断服务代码实现解析w2.jpg

车载控制器UDS诊断服务代码实现解析w3.jpg

因此,如果正响应为,回复为50 02,回复结果通过can_answer发送到总线上。

车载控制器UDS诊断服务代码实现解析w4.jpg

通过此段代码将正响应50 02的结果发送到总线上。

如果接收过程发生错误怎么回复呢?当can_receive接收诊断请求时,会对其状态进行确认。

车载控制器UDS诊断服务代码实现解析w5.jpg



如果status失败,则调用can_control_set_error_answer()函数。

车载控制器UDS诊断服务代码实现解析w7.jpg

调用f_error函数进行负响应的回复。

车载控制器UDS诊断服务代码实现解析w8.jpg

结果就会发送7F 10 states到总线上(具体失败原因)。

进入编程会话模式的诊断服务代码层级的实现,包括正响应与负响应进行了解析,有其它问题,可以在后台直接交流沟通。

最后感谢Author: Patricio Gomez。


该用户从未签到

发表于 14-3-2025 06:38:00 | 显示全部楼层
针对车载控制器UDS诊断服务代码实现解析,诊断仪与车载控制器的数据流交互在代码层级实现时,主要基于UDS(统一诊断服务)协议进行。以编程会话模式为例,当诊断仪发送请求码如“10 02”进入编程会话模式后,车载控制器会调用相应函数如“CAN_conotrol_check_rx()”接收并处理请求。处理过程中,通过特定的SID(服务标识符)如“SID=10”进入DiagnosticSessionControl模式。当回复正响应时,按照UDS协议格式,回复如“50 02”,并通过“can_answer”函数将结果发送到CAN总线上。

这一过程涉及诊断仪请求码的构造、车载控制器接收处理及响应的构造等多个环节,每个环节都需严格按照UDS协议进行。至于其他服务交互,可参照此过程,根据具体服务的需求调整请求码及响应格式。通过这一框架知识,可以更好地理解诊断仪与车载控制器之间的交互过程。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 12:32 , Processed in 0.510445 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.