概要

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. 转: Linux题目

    源地址:http://blog.csdn.net/zcsylj/article/details/6799639 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导 ...

  2. 微信小程序 拼团商品倒计时(拼团列表、拼团商品详情)

    直接上图: 拼团列表.拼团详情-倒计时                                    //单个倒计时,适用用于单个商品的倒计时 js文件: //倒计时 function cou ...

  3. AppScan的基础使用

    AppScan是用于Web项目的安全测试工具,扫描网站所有url,自动测试是否存在各种类型的漏洞.AppScan安装在Windows环境上,版本越高,规则库越安全,扫描越全面.   1. 打开AppS ...

  4. Android笔记之让Debug和Release模式使用相同的签名

    方法如下图 完整的build.gradle如下 apply plugin: 'com.android.application' android { compileSdkVersion 29 build ...

  5. leetcode 996. Number of Squareful Arrays

    给定一个长度小于 12 的数组 要求排列方式的种数 使得相邻和为完全平方 不考虑数学结构 将问题转化为 一笔画问题 和为完全平方代表 之间存在通路 回溯法 N^N 记忆化搜索 NN 2^N 判断是否是 ...

  6. mybatis-输入输出映射-动态sql-关联查询-mybatis与spring-逆向工程

    1.1. 输入映射和输出映射 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 1.1.1. 环境准备 1. 复制昨天的工程 ...

  7. Activiti流程定义语言

    1.流程(process) bpmn文件一个流程的根元素.一个流程就代表一个工作流. 2.顺序流(sequenceFlow) 顺序流是连接两个流程节点的连线,代表一个节点的出口.流程执行完一个节点后, ...

  8. hbase master一直报启动不起来问题(region空洞和region卡在spilt)

    数据不重要或者一直卡着的情况下,可以切换hdfs用户到hbase的wal目录下对spilting的数据进行重命名.具体步骤如下 1.关闭hbase集群 2.切换hdfs用户 3.到hbasewal目录 ...

  9. jeecmsv8.1怎么修改项目后台访问地址

    将jeeadmin/jeecms/index.do 改为admin/index.do为例  1.修改WebContent\WEB-INF\web.xml  <servlet-mapping> ...

  10. mysql load date to Hbase

    一.mysql迁移数据进hbase需要配置好配置文件 用sqoop 命令进行迁移 二. 配置文件内容: import--connectjdbc:mysql://172.18.32.99:3306/te ...