介绍
J2534是一个概念,它使排放相关的ECU能够进行闪存编程,而与ECU使用的通信协议无关。目的是所有类型的ECU只需要一个工具(硬件设备),通常称为“通过”设备。 J2534设备与ECU之间的连接是SAE J1962连接器。 J2534硬件设备将连接到标准PC,该PC拥有车辆制造商的应用程序接口(API)(图1)。 PC和J2534硬件设备之间的连接取决于工具的制造商,但是USB可能是最常见的。硬件工具开发人员提供了一个J2534 API DLL,用于处理与PC的通信。 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与PC之间的网关。该直通设备将PC发送的消息转换为车辆ECU中正在使用的协议的消息。 J2534支持以下协议:
设备制造商可以自由选择PC和J2534硬件之间的连接,即RS-232,USB或无线接口。车辆制造商的编程应用程序不依赖于硬件连接。因此,与制造商无关,任何设备均可用于对任何车辆进行编程。
J2534硬件与车辆之间的连接应为SAE J1962连接器,也称为OBDII连接器。 J2534设备与车辆之间的电缆的最大长度为5米。如果车辆制造商不使用J1962连接器,则必须提供必要的连接信息。
J2534硬件接口应能够为J1962连接器提供5到20伏之间的电源电压。电源应使用连接器的引脚6、9、11、12、13或14之一,并且该选择应在软件中可选。最大源电流为200mA,建立时间应在1ms之内。
J2534硬件接口应具有足够的内存来缓冲4Kb的发送消息和4Kb的接收消息。而且,处理器自然必须足够快地处理所有消息,以使消息不会丢失。
软件需求
使用J2534对与排放有关的ECU的编程是通过PC(最好是笔记本电脑)和Win32操作系统(Windows 95或更高版本)完成的。
每个车辆制造商将拥有自己的API软件,用于对其车辆进行分析和编程。如果他们的车辆仅使用ISO 9141,则该应用程序无需支持其他协议。此应用程序必须符合J2534 API中的功能,这一点很重要。
该应用程序将具有该应用程序支持的ECU的完整信息。该应用程序还包括一个用户界面,可在其中根据ECU和执行的操作进行选择。
想要对来自不同制造商的车辆进行分析和重新编程的汽车维修车间,每个工厂都必须具有API。可以从Internet下载该API,也可以从CD或DVD安装该API。如何提供此API取决于制造商,但是他们确实向客户(维修车间)订购该API。制造商之间的价格差异很大,一年的订阅费用在75美元到2500美元之间。
每个J2534工具(硬件设备)制造商都必须有一个DLL文件,其中包含与PC进行通信的功能和例程。然后将DLL文件加载到车辆制造商的应用程序中。 J2534工具中的功能链接到应用程序中的相应功能。 DLL文件还包括J2534工具与PC之间的连接例程(RS-232,USB等)。
目的是使每个J2534工具都能够与J2534标准支持的所有协议进行通信。车辆制造商提供的应用程序使用J2534标准中描述的命令连接到(任何品牌的)硬件工具。连接和初始化为硬件工具提供了所使用协议的信息。之后,由硬件工具来管理具有所需协议的与车辆的连接。 PC应用程序将以较早确定的协议格式将消息发送到硬件工具,该工具将缓冲消息并按接收顺序发送消息。
J2534应用程序编程接口(API)
J2534 API由许多通讯功能组成,这些功能必须同时由硬件工具和车辆制造商应用程序支持。对于PC应用程序开发人员,这意味着所有命令和消息都必须使用API中定义的功能进行。请参阅下面的表1。
功能
描述
直通连接
与协议通道建立连接。
直通断开
终止与协议通道的连接。
PassThruReadMsgs
从协议通道读取消息。
PassThruWriteMsgs
将消息写入协议通道。
PassThruStartPeriodicMsg
在协议通道上以指定的时间间隔开始发送消息。
PassThruStopPeriodicMsg
停止定期发送消息。
PassThruStartMsgFilter
开始过滤协议通道上的传入消息。
PassThruStopMsgFilter
停止过滤协议通道上的传入消息。
PassThruSetProgrammingVoltage
在特定引脚上设置编程电压。
PassThruReadVersion
读取DLL和API的版本信息。
PassThruGetLastError
获取上一个错误的文本描述。
直通八路
通用I / O控制功能,用于读取和写入协议配置参数(例如,初始化,波特率,编程电压等)。
J2534功能描述。
发送的第一个命令是PassThruConnect,它建立PC应用程序与J2534硬件工具之间的连接。该命令包括有关使用哪种协议,标准或扩展CAN标识符或是否使用ISO15765的信息。该命令还包括一个通道标识,该标识将用于所有后续通信。如果连接成功,则返回STATUS_NOERROR值,表明该功能已成功执行。在发送任何消息之前,必须先进行初始化,PassThruIoctl,其中设置了诸如节点地址,波特率或协议特定参数之类的参数。
从PC应用程序发送的所有消息都遵循相同的结构,该结构包括:协议类型(即J1850,CAN,J9141),接收消息状态,发送消息标志,接收消息时间戳(微秒),以字节为单位的数据大小,额外的数据索引(接收到的消息中多余数据的起始位置,例如IFR,CRC,校验和,最后但并非最不重要的是数据字节数组(接收到的消息)。如果在连接时选择了此功能,则可以使用ISO15765命令发送超过8个字节的CAN消息。
一些ECU发送大量消息,每条消息之间的时间间隔很短。筛选器功能PassThruStartMsgFilter可以设置为阻止或传递消息。这将减少需要在硬件工具和PC之间发送的消息。该消息首先使用掩码进行“与”操作,该掩码使您有机会仅比较标识符的一些重要位。此后,将“与”消息与特定模式进行比较。
J2534 API DLL
J2534 API DLL提供了API函数和硬件工具之间的链接。由于PC应用程序不必关心PC与硬件工具之间使用的通信协议。每个硬件工具制造商都有一个具有唯一名称的DLL文件。这样,PC上的软件应用程序就有可能区分要连接的硬件工具。重要的是,硬件工具中的固件开发人员必须遵循API并准确命名功能,如J2534说明中所述。否则,执行链接时,PC应用程序将无法在DLL中找到功能。
资源: //www.kvaser.com/about-can/can-standards/j2534/