OBD_II协议,CAN总线数据协议,诊断私有协议(个人理解,不对的的地方,请指出)【二】

2024-01-07 22:20

本文主要是介绍OBD_II协议,CAN总线数据协议,诊断私有协议(个人理解,不对的的地方,请指出)【二】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、CAN总线介绍

      CAN总线介绍(转)

 

这里说的汽车CAN总线协议,如上图CAN_H(6)和CAN_L(14)在小轿车上一般是500k bps 高速CAN来通讯,也有从CAN_H(3)和CAN_L(11)的250K BPS中速CAN来通讯,还有就是33.3K BPS单线CAN(1)来通讯[注:这里通常是通用系车辆有单线CAN]

2、汽车CAN总线数据应用

在丰田2013款AT版本CROWN,能够破解到如下数据

数据流名称:    
左前轮轮速、右后轮轮速、左后轮轮速、右前轮轮速、车速、转速、 刹车状态(脚刹)油门踏板相对位空调开关、故障信号(SRS) 、故障信号(ABS)、水温、 档位、里程(总)、 灯状态(危险灯)、灯状态(右转向)、灯状态(左转向)、门状态(后备箱)、手刹状态、门状态(左后门)、安全带(驾驶员)、ACC信号、门状态(右后门)、门状态(左前门)、门状态(右前门)、遥控信号、 门锁、(左前门)  门锁(右前门)  门锁(全车锁)  门锁(左后门)  门锁(右后门)  灯状态(近光灯)、灯状态(远光灯)、灯状态(雾灯)、灯状态(示宽灯)

例子:

CAN类型波特率CanID间隔(ms)长度原始数据数据流名称单位输出值Start Bit长度
高速CAN500000AAH12800 00 00 00 00 00 00 00左前轮轮速km/h016
高速CAN5000003BCH1024800 00 00 00 00 00 00 00档位P/R/N/D88switch(x&0xff) 0x20: P;0x10: R;0x08: N;default: D;

 如上图所示,

(1)左前轮轮速在高速CAN上,CANID=0xAA,数据更新的频率12ms,数据长度为8;计算起始位置从0开始,计算长度16位,则是计算原始数据前2个字节,套用算法则能计算出左前轮速度

(2)高速CAN上的CANID=0x3BC,数据更新频率1024ms(约1S),数据长度为8;计算起始位置从8开始,计算长度8位,则是计算原始数据1个字节,根据switch(x&0xff) 0x20: P;0x10: R;0x08: N;default: D;算法来处理则可以知道车当前的挡位

(未完待续)

这篇关于OBD_II协议,CAN总线数据协议,诊断私有协议(个人理解,不对的的地方,请指出)【二】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581409

相关文章

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口