概要
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中找到函數。