首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找OBD-II完整数据帧的示例

寻找OBD-II完整数据帧的示例
EN

Stack Overflow用户
提问于 2021-11-23 10:23:42
回答 1查看 341关注 0票数 0

我正在开发一个OBD-II读取器,在这里我想查询使用stm32处理器读取PID参数的请求。我已经理解了数据字段应该做什么,但是ID让我头疼。正如我所读过的,一个人必须发送0x7DF来广播一个请求,每个ECU都会用他自己的ID来响应。然而,我被要求在SAE J1939协议中这样做,它使用了29位扩展标识符,我不知道我需要在这个ID中添加什么。

正如我在标题中所说的,有人能用这种方法向我展示一些总线上的实际数据吗?我一直在网上搜索真正的帧,但到目前为止没有任何运气。

我也会感激,如果有人可以粉碎一些光,如果OBD-II通信需要一些确认才能正常工作。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 14:07:38

我建议您查看一下SAE J1939文档,更具体地看一下J 1939/21J 1939-71J 1939/73

通常,可以按以下方式处理J1939传输协议响应序列:

  • 标识BAM帧,指示正在启动的新序列(通过PGN 60416 - 0xEC00可由0x1CECFF00到达)
  • 从BAM有效负载的字节6-8中提取J1939 PGN作为新帧的标识符。
  • 通过连接数据传输帧的2-8字节(即不包括)来构造新的数据有效负载。(第一个字节)

ID为1CEBFF00的J1939数据传输消息(PGN 60160或EB00)。

上面,BAM的最后3个字节等于E3FE00。当重新排序时,这些都等于PGN FEE3 aka引擎配置1 (EC1)。此外,通过将前39个字节组合到6个数据传输数据包/fram中,可以找到有效负载。

在使用车辆使用状态PID生成未经授权的使用警报之前,管理控制设备或发出车辆使用状态PID的任何设备都应该对运行开关状态(SPN 3046 - 0xFDC0 )和任何其他本地定义的授权使用标准(即驾驶员登录)敏感。

此外,您也不能忘记使用读取/发送来扩展ID消息,因为这是一个24位的消息。

事实上,我建议您使用罐用使您的分析更加容易。一个简单的罐头转储或罐嗅探器,你可以看到什么是你的广播。

一些汽车的dbc https://github.com/commaai/opendbc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70079143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档