• 汽车协议学习


    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

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

  • 相关阅读:
    跨境电商旺季来临,做好这8点爆单不用愁
    磁盘检查清理修复命令
    Python中的HTTP高手:如何玩转requests模块
    HTTPS/HTTP2
    【AI】推理引擎中的模型小型化问题
    qml 两个listview共用一个listmodel,显示排斥的数据
    VMware中LINUX系统配置NAT ssh远程访问
    QT——关于安卓系统的使用,文件权限,USB权限相关介绍总结(Android 11 ,QT5)
    无向图双连通分量(DCC)
    【教学类-36】八等分格子-A4竖版-4条(制作皇冠、戒指)
  • 原文地址:https://blog.csdn.net/weixin_70301532/article/details/136579683