zoukankan      html  css  js  c++  java
  • Kwp2000协议的应用(硬件原理使用篇)

    作者:良知犹存

    转载授权以及围观:欢迎添加微信:becom_me

        发现K线没有过多的文章描述,作为一个开发过K线的人,不写些文章帮助后来的人岂不是太浪费开发经验了呢。

    总述

        KWP2000是一套协议,它符合OSI七层协议模型,即即ISO14230-1,ISO14230-2,ISO14230-3,ISO14230-4这4个协议文件。

    ISO14230-1协议规定了物理层标准,要求使用K线

    ISO14230-2 规定了链路层,即帧格式、计时器等、错误处理机制以及交换关系。

    ISO14230-3 规定了应用层,及链路层中的数据域是如何解析的,怎么样为用户提供服务(请求数据、接受数据、解析数据),这部分参考了ISO14229-1协议。

    ISO14230-4 则是对一种特殊应用(排放相关系统要求),他分别对ISO14230-1,ISO14230-2,ISO14230-3作出了特例化要求和一些补充,又形成了一个体系协议(这个不太相关)

        目前欧洲汽车领域广泛采用了基于CAN总线的KWP2000,即ISO 15765等协议,而基于K线的KWP2000物理层和数据链路层协议基本淘汰,国内也只有一些底端车型有用,但是在摩托车领域,电喷普及进程中,ECU广泛使用BOSH和德尔福等厂家设备的时候,都在同步使用KWP2000协议,开发相关设备的时候,还是需要懂k线协议的。

    一、物理接口

    K线的特点:

    最大通讯速率达10.4 kbit/s(和现在动辄几十、几百M的通讯速度来比,确实很小)

    诊断报文最大长度255Byte,k线是单总线,属于关键字协议,通过不同ID实现主从的应答。

    总线电平:0~12V

    一般电喷的摩托车的ECU不是BOSH就是德尔福或者日本产的,它负责控制整车的运动相关的逻辑,就是整车的CPU。

    设备开发K线电路的选择

    一般我们开发时候会选择相应的通讯的芯片,如图为K线芯片的电路,使用的是SI9241的k线芯片,一端连接到MCU的串口TX RX引脚,另一端接入K线

        

        K线通讯现在基本上属于被逐渐淘汰的使用,只不过在摩托车电喷的领域还在使用。所以K线芯片也大都停产了,现有的芯片也基本都是以库存料为主,量不大但是很贵,所以设计有一套其他方式做的K线电路,一边连接到K线,一边连接到MCU的串口引脚,通讯很稳定,可以给大家做参考。

    其次,大家也可以在某宝购买一些K线测试的开发板,用作测试,用来加快开发的进度。

    如图为K线完整的一次初始化应答的信息抓取:

    二、通信关键字

       搭建好了硬件,这个时候我们需要进行软件的攻关了。首先准备好相关ECU的协议介绍手册。查看相应的协议规则,以及相应的关键词识别位置。

    如图K线通讯几种常见的数据格式:

    大家看到上面的一些数据格式刚开始可能有些头疼,但是实际上我们用的时候只会有一种使用,我以我使用过的举例解释(如上第二种数据格式)。

    StartCommunication:

    TEST->ECU  (设备端发往ECU请求应答的数据)hex:C1 33 F1 81 66

    ECU ->TEST (ECU 应答设备的回复)hex :83 F1 11 C1 E9 8F BE

    其中:0xF1代表 设备端的默认地址,0x11代表 ECU的地址

    C1(FMT格式字节,0xC1转化为2进制为,11000001,bit7~6 为11,代表请求信息,bit5~0 为1,数据字节长度为1,如下只有一个数据byte SDIRQ) 

    33(Target字节) 

    F1(Source字节)

    81(SDIRQ,关键字,属于数据段) 

    66(0xC1+0x33+0xF1+0x81 = 0x266,取一个byte的大小,所以去掉高位变成0x66)

    此时候关键字就是81

    由上可以知道,K线通讯的注意点:

    1.信息里面包括该信息的数据段的长度;

    2.协议数据在最后一个byte进行累加和的校验,用来判断数据;

    3.协议信息中进行读取关键ID即可判断出当前应答服务的机制;

    通过这些信息,我们大致对协议就有一个判断,我们可以通过一些关键词的填写,进行与ECU通信,获得我们需要的信息。例如读取ECU的故障码。

    如下是不同的服务ID对应的不同ECU应答信息

     这就是我分享的开发Kwp2000的协议,由于太晚了,所以也准备休息了,明天继续分享我的开发经验。如果大家有什么更好的思路,欢迎分享交流哈。

  • 相关阅读:
    维克里拍卖 Vickrey auction
    弱占优策略--Weakly Dominant Strategy
    乱码电路(Garbled circuits)
    P和NP问题
    揭秘Facebook首个数据中心:全球15亿用户的账户信息都在这里
    数学符号“s.t.”的意义
    PKI系统深入介绍
    [转]公钥,私钥和数字签名这样最好理解
    Exif
    任我行 CRM 9.4
  • 原文地址:https://www.cnblogs.com/conscience-remain/p/13070456.html
Copyright © 2011-2022 走看看