技术博客

17/11/2021 作者 Elsa Carlsson

SAE J2534 (第一部分): 介绍

本技术博客是介绍SAE J2534的三部分系列博客的第一部分。本系列介绍SAE J2534(包括其多个版本),描述如何使用2004 API,然后说明如何开始使用KvaserJ2534

最新!关于J2534的系列开发博客
由三部分组成的此博客系列介绍了SAE J2534(包括它的多个版本),描述了如何使用2004 API,以及说明如何开始使用Kvaser和J2534。
SAE J2534(第一部分):介绍|了解更多…
SAE J2534(第二部分):使用2004 API |了解更多…
SAE J2534(第三部分):使用Kvaser和SAE J2534|了解更多…

1 发展历史和概念

1.1 J2534的来龙去脉

 

先是地球变冷了,之后恐龙来了。然后在2002年,美国汽车工程师学会(SAE)注意到,有必要标准化维修技术人员重新给车辆编程的操作。与其让维修技术人员购买各种各样的设备,接入车辆检测,而汽车制造商不得不支持所有这些设备,不如让这些维修人员购买一个标准化的设备 – 仍然是从他们自己选择的供应商那里 – 所有设备都使用一个统一的标准API。这将有助于汽车制造商和维修技术人员在这个快速变化的领域优化他们的技术投资。

在2002年,SAE为此发布了一个名为SAE J2534-1的标准,标准化了他们所称的“Pass-Thru Device(通过式设备)”以及控制它的API。而且此Pass-Thru设备可使用维修人员常用的任何一种协议与汽车进行通信,同时仅由一个具备多个函数的接口控制 – 这些函数都被称为PassThruXxx()——以免你忘记你在使用“Pass-Thru Device”。

After that, the earliest 2002 version of the standard appeared to be outdated and was included in the “replacement” clause and compliance catalog. In 2004, a new version was released. Since this upgraded version still has a common theme, I will call this standard J2534-1 2004.

The J2534-1:2004 and J2534-1:2002 standards stipulate the basis of J2534 (or pass-through) API; operation sequence and support for CAN 2.0, ISO-TP, ISO 9141 and 14230, etc. In 2006, J2534-2:2006 expanded its functions, adding more optional features, such as more protocols, and the use of multiple channels to connect multiple devices. Later J2534-2:2010 added additional secondary optional functions, easily replacing J2534-2:2006.

Please note that all functions of the J2534-2 standard are clearly optional; devices compatible with J2534 do not necessarily need to support these functions.

It still supports those protocols supported by J2534-1:2004, but has two new goals: no optional features and no (or less) ambiguities.

The cancellation of optional features is also because the optional features in the J2534-2 standard depend on the 2004 API-and J2534-1:2015 is not compatible with it.

我们的J2534传奇中的最近一个事件是J2534-2:2019的发布,它带来升级后的可选功能。由于J2534-1:2015的要点是删除可选性,它仍然基于J2534-1:2004。因此,尽管J2534-2:2019是在J2534-1:2015之后发布,它仍然是基于2004年的J2534-1版本。

而J2534-2:2019之所以引人注目,是因为该标准新增了对CAN FD的支持,包括ISO-TP FD。它还引入了一种“查询机制”,让用户应用程序能向DLL询问:它支持哪些协议,以及该设备有多少个通道等。

因此,现在有一个基于J2534-1:2004的旧版本的J2534/Pass-Thru,它具有可选功能,是在J2534-1:2015之后推出的更新的标准,比基于Pass-Thru/J2534的J2534-1:2015更新,但是J2534-1:2015不支持CAN FD。

有些困惑?为了简洁明了,我们在下面列出了所有的J2534标准,以及对每一个标准的概括:

  1. J2534-1 2002
  2. J2534-1 2004 (×2)
    • CAN 2.0和基于K-line的规范
  1. J2534-2 2006 (基于J2534-1 2004)
  • 多个设备和多通道
  • 在同一通道上混合CAN 2.0和ISO-TP报文
  1. (J2534-2 2010 (基于J2534-1 2004))
  • 没有太大意义
  1. J2534-1 2015
  • 新的API
  • CAN 2.0和基于K-line的协议
  • 更明确地解释操作,更详细的接口
  • 无可选功能
  1. J2534-2 2019 (仍然基于J2534-1 2004)
  • CAN FD
  • 查询机制

1.2关于 “Pass-Thru概念”

那么,支持J2534及其Pass-Thru设备和API的概念是什么?好的,J2534-1:2004对所谓的“Pass-Thru概念”有这样的说法:

[J2534-1]为SAE J2534 Pass-Thru设备定义了下面两个接口:

1.在电脑上运行的编程应用程序和pass-thru设备的软件设备驱动程序之间的应用程序接口(API)

2.pass-thru设备与车辆之间的硬件接口

此标准假定一个特定的设置。你的车辆有一个J1962连接器,并且你可将一个Pass-Thru设备插入其中。然后,你将该设备插入一台装有32位Windows操作系统的计算机,用户应用程序使用一个具有标准化接口的DLL来控制该Pass-Thru设备。

雪中的车辆: CC-0 via pxhere.com; Pass-Thru设备: © Elsa Carlsson & Kvaser AB; IBM 300PL: Automaton399 @ wikimedia commonsCC-0

不过,Kvaser并不销售Pass-Thru设备,但仍提供J2534 DLL。这样用户可以通过与Pass-Thru设备相同的标准化API来使用任何Kvaser接口。这是通过包装Kvaser的CANlib库,添加和扩展功能来实现J2534标准的适用部分。

然而,要使其发挥作用,必须重新解释标准的某些部分,或者不应用某些部分。最明显的是PassThruSetProgrammingVoltage()函数 – 这是现有Kvaser设备不支持的。因此,在Kvaser的J2534 DLL中调用此函数的任何尝试都只会收到“不支持”。

另一个不匹配之处是J2534特别要求使用32位DLL,而Kvaser编译32位和64位版本的DLL。然而,大多数不匹配之处更为细微,可能会随着时间的推移而改变,所以了解它们的最好方法是通过阅读你所使用的DLL版本的官方使用说明。

因此,从技术上说,Kvaser的J2534 DLL为CANlib库提供了一个J2534 API,它基于J2534-1:2004的API并与之兼容,并且支持J2534-2:2019中适用的可选功能。就协议而言,这意味着它支持CAN 2.0、CAN FD、ISO-TP和ISO-TP FD。

在下一部分中,我们将了解这四个协议,以及如何通过其中任何一个协议使用Pass-Thru API通信。

1.3简述这两个API

下面是2004年和2015年版本的J2534 API中的所有函数,以及相关标准提供的简短说明。


定义

  • ISO-TP
    15765-2:2011定义的传输协议, 不支持15765-2:2016引入的CAN FD,有时被简单地称为ISO 15765-2或ISO 15765。
  • ISO-TP FD
    15765-2:2016 (支持CAN FD)定义的传输协议。
  • CAN
    ISO 11898限定的控制器局域网, 是对CAN 2.0和CAN FD的总称。
  • CAN 2.0
    “classic” CAN支持最大8个字节的数据,不支持比特率切换。
  • CAN FD
    CAN FD(可变速率)协议,支持比CAN 2.0更长的数据帧和比特率切换。
  • J2534
    一系列标准 – 用于指定Pass-Thru设备,以及用于通过J2534 DLL与这些设备通讯的Pass-Thru API。
  • J2534 DLL
    适配器制造商提供的DLL, 兼容Pass-Thru API。
  • Pass-Thru API
    适合所有J2534 DLL的API, 无论在选用哪个公司的DLL, 车辆制造商均可以使用。
  • Pass-Thru设备

由J2534标准化的一种特定类型的设备, 并且附带一个J2534 DLL。

Author Image

Elsa Carlsson