• 166查看
  • 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。

快速发帖

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

本版积分规则

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

GMT+8, 1-2-2025 10:06 , Processed in 0.316216 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.