概要

J2534是一种针对与射频相关的ECU进行闪存编程的概念,而不用考虑ECU使用的通信协议。其目的是所有类型的ECU都应当只需一个工具(硬件设备),通常被称为通过式设备。J2534设备和ECU之间的连接是SAE J1962连接器。J2534硬件设备需要连接到一台装有来自车辆厂商的应用程序编程接口的标准电脑(图1)。电脑和J2534硬件设备之间的连接方式取决于接口工具制造商,但是USB可能是最常见的形式。J2534 API DLL由硬件工具开发人员提供,用来处理与电脑的通信。J2534文档对J2534工具的硬件和软件的需求描述有限。支持的通信协议包括:ISO9141、ISO14230 (KWP2000)、J1850、CAN (ISO11898)、ISO15765和SAE J2610。2005年开始支持J1939。

图1. J2534设置

背景

车辆变得越来越复杂,几乎每个功能都由电子控制单元(ECU)进行控制。ECU经常连接到通信总线,以便能够相互之间共享数据。最常见的协议是CAN,但是还存在其它协议。有多少家车辆厂商,几乎就有多少种不同的通信协议。每家车辆厂商都提供工具用于对其产品进行分析和二次编程,这种工具经常价格昂贵。这使得汽车、客车或卡车修理店很难分析和修理所有类型的车辆。

美国环境保护署(EPA)和加州空气资源管委会(ARB)一直在尝试让车辆厂商为配件市场支持共同的射频相关服务。美国汽车工程师协会(SAE)在2002年建立了J2534标准,以推动EPA和ARB的工作。

硬件需求

J2534硬件在车辆ECU和个人电脑之间充当网关的角色。这种通过式设备把电脑发送的报文转换为车辆ECU中所用协议的报文。J2534支持下列协议:

设备厂商可以自由选择电脑和J2534硬件之间的连接,例如RS-232、USB或者可能是无线接口。车辆厂商的应用编程不依赖于硬件连接。所以,可以使用任何设备对任何厂商的任何车辆进行编程。

J2534硬件和车辆之间的连接应当是SAE J1962连接器(图2),也称为OBDII连接器。J2534设备和车辆之间线缆的最大长度为5米。如果车辆厂商不使用J1962连接器,那么必须提供用于连接的必需信息。

图2. J1962公接头(左图)和J1962母接头(右图)

J2534硬件接口应当能够为J1962连接器提供5到20伏特之间的电压。电源应使用一款引脚为6、9、11、12、13或14的连接器,且应当可以在软件中进行选择。最大供电电流是200毫安,校正时间应在1毫秒内。

J2534硬件接口应当有足够内存来缓存4Kb的发送报文和4Kb的接收报文。处理器速度必须够快,以便处理所有报文,从而不会丢失任何报文。

软件需求

使用J2534为射频相关的ECU进行编程可以在装有Win32操作系统(Windows 95或更新的版本)的电脑上完成(笔记本电脑尤佳)。

每家车辆厂商都将有其自己的API软件用来对其车辆进行分析和编程。如果他们的车辆只使用一种协议(例如ISO 9141),那么应用程序无需支持任何其它协议。这个应用程序必须采用J2534 API中的函数,这一点非常重要。

这个应用程序将拥有应用程序所支持ECU的全部信息。这个应用程序还包含一个用户界面,在该界面中,可以根据ECU和要执行的操作进行选择。

想要对来自不同厂商车辆进行分析和重新编程的汽车维修店必须拥有每家厂商的API。这个API可以从因特网下载,或者从CD和DVD进行安装。这个API的提供方式取决于厂商,但是他们对购买API的客户(维修店)进行收费。每家厂商之间的价格相差很大,一年的订阅费用在75美元和2500美元之间。

每个制造商的J2534工具(硬件设备)都必须有一个DLL文件,其中包含与电脑进行通信的函数和例程。然后DLL文件被加载到车辆厂商的应用程序中。J2534工具中的函数被链接到应用程序中一个相应的函数。DLL文件还包含用于在J2534工具和电脑之间进行连接(RS-232和USB等)的例程。

目的是每种J2534工具都应能够与J2534标准支持的所有协议进行通信。车辆厂商提供的应用程序使用J2534标准中描述的命令来连接到硬件工具(任何品牌)。连接和初始化为硬件工具提供所用协议的信息。此后,硬件工具负责采用期望的协议来管理与车辆的连接。电脑应用程序将以早期确定的协议格式将报文发送到硬件工具,硬件工具缓存报文并按照接收到的次序发送报文。

J2534应用程序编程接口(API)

J2534 API包含许多用于通信的函数,硬件工具和车辆厂商应用程序都必须支持这些函数。对于电脑应用程序开发人员来讲,这意味着所有命令和报文都必须使用API中定义的函数构成。请参见下方表1。

函数 说明
PassThruConnect 建立与协议通道的连接
PassThruDisconnect 终止与协议通道的连接
PassThruReadMsgs 从协议通道读取报文
PassThruWriteMsgs 向协议通道写入报文
PassThruStartPeriodicMsg 在协议通道上以指定的时间间隔开始发送报文
PassThruStopPeriodicMsg 停止周期性报文
PassThruStartMsgFilter 开始过滤协议通道上传入的报文
PassThruStopMsgFilter 停止过滤协议通道上传入的报文
PassThruSetProgrammingVoltage 在特定的引脚上设置编程电压
PassThruReadVersion 读取DLL和API的版本信息
PassThruGetLastError 获取最后一个错误的文本描述
PassThruIoctl 通用的I/O控制函数,用于读写协议配置参数(例如初始化、波特率和编程电压等)。

表1. J2534函数说明

发送的第一个命令是PassThruConnect,它在电脑应用程序和J2534硬件工具之间建立连接。这个命令包含的信息有:使用的协议、标准或扩展CAN标识符或者是否使用ISO15765。命令还包含一个通道标识,将用于所有后续的通信。如果连接成功,将返回STATUS_NOERROR值,这个值指示函数已经成功执行。在发送任何报文之前,都必须进行初始化。函数PassThruIoctl用于初始化,需要设置各种参数,例如节点地址、波特率或协议特定的参数。

从电脑应用程序发送的所有报文都具有相同的结构,其中包含:协议类型(例如J1850、CAN和J9141)、接收报文状态、发送报文标志、接收到的报文的时间戳(微秒)、数据大小(以字节为单位)、额外数据索引(接收到的报文中额外数据的起始位置,即IFR、CRC和检验和)和最后但不是最小的数据字节数组(接收到的报文)。如果在连接时选择了这项特性,可以使用ISO15765命令发送超过8字节的CAN报文。

一些ECU发送报文间隔时间很短的大量报文。可以设置过滤函数PassThruStartMsgFilter来阻止或传递报文。这将减少硬件工具和电脑之间需要发送的报文数。报文首先与一个掩码进行逻辑与操作,这样可以只比较标识符的一些重要位。然后,经过逻辑与操作的报文将与一个特定的模式进行比较。

J2534 API DLL

J2534 API DLL为API函数和硬件工具之间提供链接。因此电脑应用程序不必关注电脑和硬件工具之间使用哪种通信协议。每家硬件工具厂商都有名称唯一的DLL文件。这样,电脑上的软件程序可以区分连接到哪个硬件工具。重要的是,硬件工具的固件开发人员需要遵循API并使用与J2534描述中完全同名的函数。否则,在进行链接时,电脑应用程序将不可能在DLL中找到函数。

原文链接:https://www.kvaser.cn/about-can/can-standards/j2534/

SAE J2534介绍的更多相关文章

  1. SAE J2534 Pass-Thru API

    Connects to the OBDII J1962 DLC and supports the following protocols. 1 CAN2 Single Wire2 J1850PWM+ ...

  2. J2534 Pass-Thru Vehicle Programming ( SAE J1962 connector and Protocol )

    SAE J1962—Diagnostic Connector SAE J1850—Class B Data Communications Network Interface SAE J1939—Tru ...

  3. 关于Vector CANoe的讨论

    默认排序​ 踩猫尾巴 汽车电子攻城狮 27 人赞同了该回答 好像是很久以前的问题啊,为什么会现在收到邀请. 我觉得 @lijuqqkiko 介绍的足够啦. 我再额外发散一点吧. 目前在CAN总线测试和 ...

  4. CarDAQ-Plus

    Overview CarDAQ-Plus is the most validated and accepted J2534 device in the world. It has been on th ...

  5. How to do if the GM MDI cant connect with the software

    When you use GM MDI on your laptop , you may meet some troubles . Such as it cant communicate with t ...

  6. [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现

    ① 新浪SAE快速上手教程:http://jingyan.baidu.com/season/43090 上面一个链接是针对PHP的相关介绍,如果用java还有点不一样,具体请看新浪SAE官网:http ...

  7. 新手在sae部署程序容易忽略的一个细节

    从来没用过这类云空间服务,尝了下鲜试用一下sae,但是部署的时候发现问题了,各种404..各种无奈啊..虽然百度无数篇介绍,但是都千篇一律没什么启发.. 但是巧在我部署的应用有个欢迎页面,点击链接的时 ...

  8. 从Python爬虫到SAE云和微信公众号:二、新浪SAE上搭建微信服务

    目的:用PHP在SAE上搭建一个微信公众号的服务器. 1.申请一个SAE云账号 SAE申请地址:http://sae.sina.com.cn/  可以使用微博账号登陆,SAE是新浪的云服务,时间也比较 ...

  9. 极速地将git项目部署到SAE的svn服务器上

    本文最初发布于我的个人博客:http://jerryzou.com/posts/gitForSAE/ 我花了一些时间自己写了一个能够极速地将一个git项目部署到SAE的svn服务器上的脚本.代码不是复 ...

随机推荐

  1. HOOK NtCreateSection

    本程序使用了hde32反汇编引擎,所以性能更加稳定! #pragma once #include <ntddk.h> NTSYSAPI NTSTATUS NTAPI NtCreateSec ...

  2. iOS的Runtime机制下给类别(category)添加属性、替换原有类的方法执行

    一.Runtime的理解 OC是面向对象的语言这是常识,其实就是通过Runtime机制动态创建类和对象,这里只是简单的运用runtime的使用! 二.类别(category)添加属性_使用前记得导入头 ...

  3. SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式

    SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式 世界前三统计软件,SPSS最容易学习,但SPSS默认输出的统计表与统计图美观度与专业度不够好,离发表水平尚有距离,本期咱们就谈谈SPSS图表 ...

  4. PHP-property_exists()函数

    直接看代码 <?php header('content-type:text/html;charset=utf-8'); //property_exists说明 class A{ public $ ...

  5. sip会话流程以及sip介绍(2)

    下面我们通过一个简单的场景例子来简单介绍一下 SIP 会话流程. Tom 和 Jerry 是非常好的伙伴,Tom 在他的 PC 上使用一个 SIP 的应用程序呼叫 Internet 上另一个 SIP ...

  6. elasticsearch 中文API 获得(三)

    获取API 获取API允许你通过id从索引中获取类型化的JSON文档,如下例: GetResponse response = client.prepareGet("twitter" ...

  7. Luogu P1401 城市(二分+网络流)

    P1401 城市 题意 题目描述 N(2<=n<=200)个城市,M(1<=m<=40000)条无向边,你要找T(1<=T<=200)条从城市1到城市N的路,使得最 ...

  8. Windows API 第20篇 SetVolumeMountPoint 设置卷挂载点参数错误

    函数原型:BOOL SetVolumeMountPoint(                                                   IN   LPCTSTR lpszVo ...

  9. 图解nginx配置负载均衡

    1. 在Linux上准备两份tomcat 2. 修改两份tomcat的端口号 修改的端口如图所示: 3. 启动两个tomcat服务器 4. 修改两个服务器上的主页方便测试区分 5. 在nginx配置文 ...

  10. ajax发送验证码

    $.ajax({     url:url,     type:"POST",     data:data,     dataType:"JSON",     s ...