汽车协议学习

ⅠOBD

1.OBD接口                   

 OBD有16个引脚,每个引脚的电压不同(可以对应不同的协议)

        车端: 16- 9      (短一点点的)

                       8-1       (长一点的)

2.基于OBDⅡ的通信协议

CAN (ISO-15765)对应的引脚是6-14

J1850 

        ①PWM 对应的引脚是2 -10

          ②VPW 对应引脚2

K-line 

        ①ISO 9141-2 对应引脚 7 -15 or 1 2

          ②14230-5(KWP2000)对应引脚7-15

CAN 

SO15765-2定义了诊断模型中TP网络传输层对于不同CAN报文格式单帧和多帧的处理方式。ISO15765目的是为了解决ISO 11898协议中定义的经典CAN数据链路层与ISO 14229协议中定义的应用层,彼此之间数据长度不统一的问题

ISO 标准化的 CAN 协议

CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种。 ISO11898 和 ISO11519-2 标准对于数据链路层的定义相同,但物理层不同
(1) 关于 ISO11898

ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。目前, ISO11898 追加新规约后,成为 ISO11898-1 新标准。
(2) 关于 ISO11519

ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。ISO11519-2 是 ISO11519-1 追加新规约后的版本。

物理层和数据链路层

CAN总线信号

ISO 11898-2,也称为高速度CAN。它在总线的两端均接有120Ω电阻。

高速CAN总线在传输显性(0)信号时,会将CAN_H端抬向5V高电平,将CAN_L拉向0V低电平。当传输隐性(1)信号时,并不会驱动 CAN_H或者CAN_L端。 显性信号CAN_H和CAN_L两端差分标称电压为2V。 终端电阻在没有驱动时,将差分标称电压降回0V。显性信号(0)的共模电压需要在1.5V到3.5V之间。隐性信号(1)的共模电压需要在+/-12V。

ISO 11519  低速/容错CAN信号在传输显性信号(0)时,驱动CANH端抬向5V,将CANL端降向0V。在传输隐性信号(1)时并不驱动CAN 总线的任何一端。在电源电压Vcc为5V时,显性信号差分电压需要大于2.3V,隐性信号的差分电压需要小于0.6V。CAN总线两端未被驱动时,终端电 阻使CANL端回归到RTH电压(当电源电压Vcc为5V时,RTH电压至少为Vcc-0.3V=4.7V),同时使CANH端回归至RTL电压(RTL 电压最大为0.3V)。两根线需要能够承受-27V至40V的电压而不被损坏。

帧格式

CAN总线的数据帧有标准帧和扩展帧两种格式,区别在于标准帧具有 11-bit 的帧ID,扩展帧具有 29-bit 的帧ID;

位填充

无论何时,发送器只要检测到位流中有5个连续相同逻辑的位,便会自动在位流中插入一个补码位。所以当有五个连续的相同逻辑位那么第六位的数据要舍弃

作用:

1.CAN网络同步需要足够多的上升沿,这是CAN协议规定位填充的目的之一。

2.确保数据帧不会被当作错误帧(由6个连续的显性或隐性位组成)、确保正确识别帧结束标志(7个连续隐性位)。

15765-2

根据ISO-TP中的描述,Can帧主要分四类:单帧(Singal frame, SF),首帧(First frame, FF), 连续帧(Consecutive frame, CF), 流控帧(Flow control frame, FC);

单帧:值为0,其长度可为8个字节(value值占1个字节 + 7个表示正常地址字节,一般我们遇到主要就是类型的)或7个字节(value值占1个字节 + 6个扩展地址字节);

 首帧:其值为1, 用于长的、已被分割的多帧消息包中。首帧包括整个包的数据长度,以及数据初始值;

 连续帧:其值为2,包含多帧消息包后续子序列的数据帧;

 流控帧:其值为3, 是由接收方在确认收到首帧(FF)后发起的响应。其约定了后续连接帧(CF)的传输参数;BS 块大小  ST时间

K-line

ISO 9141 
ISO 14230

这两个好像差不多  好像是关键字不同

KWP2000只有三个子层有定义说明,即:应用层、数据链路层、物理层。并且这三个层分别由ISO-14230-1、ISO-14230-2、ISO-14230-3定义标准,所以一直都这么说,ISO-14230就是基于K线的KWP2000。  K线KWP2000协议是异步半双工进行通讯的,通常采用10416BPS的波特率;空闲电平通常为12V。

                     |(1)   应用层             ISO-14230-1

KWP2000     |(2)   数据链路层      ISO-14230-2

                     |(3)   物理层             ISO-14230-3

1、系统进入初始化


有两种初始化方式,主要是用第一种初始化。由设备先发送25ms的拉低电平,然后是25ms的高电平(空闲电平),然后再发送系统进入数据,系统进入数据通常为5个字节,ECU响应7个字节,完成系统初始化交互。请参见下图:

第二种初始化方式为设备发送5BPS或者200BPS的地址码,ECU响应55H,KW1,KW2,设备对KW2取反发回给ECU,ECU对地址码取反发回给设备,完成系统初始化交互。其中55H这个字节用来规定后面的通信波特率。参见下图

2、帧结构


命令头(1个或多个字节)+命令体(1个或多个字节)+校验(通常为和校验)

在命令头中,包括以下几个部分的内容:格式+目标地址+源地址+长度字节。长度信息有时候在格式字节中体现,则不需要另外的长度字节,长度信息用以表示命令体的内容;目标地址和源地址有时候也会没有。
命令体的内容中:命令字+命令内容。命令内容可以没有。
举例如下:

81H 11H F1H 81H 04H

第一个字节81H为格式+长度信息(80+1)
第二个字节11H为目标地址
第三个字节F1H为源地址
第四个字节81H为命令字,表示系统进入
最后一个字节04H为前面4个字节的校验和
同样,也可能表现如下:(命令字)
80H 11H F1H 01H 3EH C1H
这种情况下,长度字节放在源地址之后
还可能表现为:
02H 1AH 9AH B6H
这种情况下,格式字节和目标地址源地址都已经没有了
还有一种特殊的情况,在上一种情况的基础上,在帧数据之前,加一个00,例如:
00H 02H 1AH 9AH B6H
但这种帧结构的情况极少

3、命令交互


命令交互通常情况下为1对1,但也存在1对多或者多对1的情况。下面是一组命令交互举例:
Tools: 81H 31H F1H 81H 24H
ECU: 83H F1H 31H C1H E9H 8FH DEH
在交互中,因为发送命令的对象不一样,所以目标地址和源地址是进行了互换;
同时,ECU响应设备的命令字在设备命令字的基础上 + 0x40(肯定回答)

还有否定回答,即回复 7F
Tools: 0x81, 0x11, 0xF1, 0x81, 0x04,
ECU: 0x83, 0xF1, 0x11, 0x7F, 0x81, 0x21, 0xA6,

4、交互时间参数


设备发送命令字节间的时间间隔P1,通常为5ms
ECU返回命令字节间的时间间隔P2,通常为0ms
设备发送完一帧命令后等待ECU响应的时间P3,通常为75ms~90ms
设备接收到ECU响应后到发送下一帧命令的时间P4,通常为20ms~26ms

5、常用命令字

系统进入:81H
系统退出:82H
链路保持:3EH
读故障码:18H
清除故障码:14H
读版本信息:1AH
读数据流:21H

6、数据格式

发送一字节的数据格式为(重点):
起始位 + 数据 + 停止位
1 + 8 + 1
如下:

————————————————
                        
原文链接:https://blog.csdn.net/haha1fan/article/details/78007839

报文格式

UART???
 

这个不知道和14230与9141有什么关系

J1850

PWM
VPW

这好像用的很少 等遇到了再看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-Flask 快学

flask是Python的一个轻型Web框架. 使用pycharm自动创建项目,也可以手动创建,以下是目录的结构: ├── app.py├── static└── templates 一、创建一个简单应用 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return "hello world &…

20240309-2-校招前端面试常见问题-NodeJS

校招前端面试常见问题【6】——NodeJS NodeJS Q:NodeJS 的 IO 模型特点是什么?与多线程同步 IO 有什么不同? NodeJS 的 IO 模型(更准确的说是 js 的执行环境,也就是 v8)的特点是“单线程异步非阻塞”。 …

Linux学习-共用体和枚举,位运算

目录 共用体 ​编辑枚举 位运算 共用体 定义和访问都和结构体类似;区别在于共用体所有的成员变量共享同一片空间,内存空间就是其最大数据类型所占内存的大小; 如果给成员变量2的值,那么成员变量1的值就会被覆盖;主…

实现鼠标移动el-select下拉框的label上面显示出table悬浮窗

首先是对vue代码 实现思路就是在el-option里面放一个span来包裹el-popover&#xff0c;里面在放tabe实现悬浮表格 <el-form-item label"原理图编号"><el-select v-model"data.number" placeholder"请选择" clearable multiple collaps…

外包干了30天,我后悔了。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 这次来聊一个大家可能也比较关心的问题&#xff0c;那就是就业城…

枚举赋值及强制转换问题

对枚举进行字符赋值&#xff0c;需要进行强制类型转换之后&#xff0c;才能得到想要的值&#xff0c;如下 typedef enum data {DIRECTION_X X,DIRECTION_Y Y,DIRECTION_Z Z,DIRECTION_T T }NumData;int main() {NumData numdata DIRECTION_Y;count <<"num is&…

第九篇 – 过程发现(Process Discovery)是如何赋能数字化市场营销全过程?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒体…

电路板故障的四大原因--芯片级维修

电路板是我们日常使用的技术的核心。 手机、电视、车辆、路灯和大量其他物品都依赖于电路板&#xff0c;这就是为什么故障可能具有高度破坏性。 电路板出现故障的原因有多种&#xff0c;与潮湿、高温和污垢等常见因素有关。 了解电路板故障的原因可以让您避免未来的故障&#x…

波奇学Linux: 信号捕捉

sigaction:修改信号对应的handler方法 act输入型参数&#xff0c;oldact输出型参数 void (*sa_handler) (int) //修改的自定义函数 sigset_t sa_mask // void handler(int signo) {cout<<"catch a signal, signal number: "<<signo<<endl; } int …

WindTerm的安装及远程连接Linux系统步骤

文章目录 WindTerm下载WindTerm远程连接Linux WindTerm下载 官网下载链接 WindTerm网盘下载链接 WindTerm不需要安装&#xff0c;将下载的压缩包解压后直接找到WindTerm.exe执行文件&#xff0c;双击即可运行 WindTerm远程连接Linux 1.先获取你的Linux的IP地址&#xff0c;…

【高效开发工具系列】Windows 系统下将 Windows 键盘的 ctrl 和 alt 互换

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Mysql深入学习 基础篇 Ss.06 事务

青青子衿&#xff0c;悠悠我心 纵我不往&#xff0c;子宁不嗣音 —— 24.3.9 事务&#xff1a; 事务简介 事务操作 事务四大特性 并发事务问题 事务隔离级别 一、事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整…

【蓝桥杯-单片机】LED和按键小练习:Led彩灯控制系统

文章目录 【蓝桥杯-单片机】LED和按键小练习&#xff1a;Led彩灯控制系统01 题目描述02 题目解答03 本题总结整体逻辑框架&#xff08;详细版&#xff09;整体逻辑框架&#xff08;缩略版&#xff09;按键读取模块按键消抖模块流水灯显示模式&#xff08;1&#xff09;从上向下…

基于SVM模型的网络入侵检测模型训练与评估(NSL-KDD数据集)

简介 针对网络安全领域的NSL-KDD数据集进行分类任务的预处理和模型训练、以及超参数调优。 数据预处理 读取并解析数据集&#xff1b;检查并删除指定列&#xff08;outcome&#xff09;的缺失值&#xff1b;对类别型特征&#xff08;protocol_type, service, flag&#xff0…

GPT-4 等大语言模型(LLM)如何彻底改变客户服务

GPT-4革命&#xff1a;如何用AI技术重新定义SEO策略 在当今快节奏的数字时代&#xff0c;客户服务不再局限于传统的电话线或电子邮件支持。 得益于人工智能 (AI) 和自然语言模型 (NLM)&#xff08;例如 GPT-4&#xff09;的进步&#xff0c;客户服务正在经历革命性的转变。 在这…

【Python】成功解决NameError: name ‘a‘ is not defined

【Python】成功解决NameError: name ‘a’ is not defined &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订…

gensim 实现 TF-IDF;textRank 关键词提取

目录 TF-IDF 提取关键词 介绍 代码 textRAnk 提取关键词 这里只写了两种简单的提取方法&#xff0c;不需要理解上下文&#xff0c;如果需要基于一些语义提取关键词用 LDA&#xff1a;TF-IDF&#xff0c;textRank&#xff0c;LSI_LDA 关键词提取-CSDN博客 TF-IDF 提取关键词…

MySQL中批量修改某个字段的一部分字符,可以使用UPDATE语句结合REPLACE函数

示例语句 UPDATE your_table_name SET your_column_name REPLACE(your_column_name, old_string, new_string) WHERE your_column_name LIKE %old_string%; 原因&#xff1a; 项目用了一个服务上传地址原来是http开头&#xff0c;数据库存的地址也是http&#xff0c;后来加了…

基于java EE医疗机械设备采购管理系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 系统开发相关技术 3 1.1 J2EE技术简介 3 1.2 SSH框架技术 3 1.3 JQuery技术 3 1.4 CSS技术 3 1.5 XML技术 3 1.6 Ajax技术 4 1.7 MySQL数据库 4 1.8 本章小结 4 2 系统分析 5 2.1 概要分析 5 2.2 功能需求分析 6 2.3 功能初步设计 6 2.4 …

COMSOL热应力仿真

热应力 热膨胀子节点 热膨胀输入类型 假如直接知道热膨胀大小&#xff0c;可以直接对热应变进行赋值。 约束与载荷 对于自由膨胀&#xff0c;可以添加抑制刚体运动。 案例分析 在参数部分&#xff0c;设定体积参考温度Tref&#xff0c;假定在25[degC]模型无热应变。 APP开发器-…