一、項目概述
J1939協議在世界范圍內已經在廣泛的使用,各種大型發動機、大型汽車、客車、輪船都有使用,是一款優秀的基于CAN總線的高層協議。本項目是油田中上千個卡特柴油機與康明斯發動機的控制與監測。將J1939協議轉換為MODBUS TCP和MODBUS RTU協議,方便與其它控制系統對接,充分的體現了TG900的靈活與可靠。
二、實現原理
抓取的J1939報文
2011年10月26日10時00分38秒
29 0C F0 03 00 FF 00 00 FF FF FF FF FF
PGN61443-電子的發動機控制器#2 EEC2
傳輸循環率: 50ms
數據長度: 8 字節
數據頁面: 0
PDU 格式: 240
PDU 特定: 3
默認優先值: 3
參數組數編號: 61443(00F00316)
29 0C F0 04 00 FF BD 7D 00 00 FF FF FF
PGN61444-電子的發動機控制器#1 EEC1
傳輸循環率: 依賴發動機轉速
數據長度: 8 字節
數據頁面: 0
PDU 格式: 240
PDU 特定: 4
默認優先值: 3
參數組數編號: 61444(00F00416)
具體SPN含義請參考相關協議說明,在此就不一一列舉
三、編程實現
以標準的J1930協議250KB速率打開CAN通迅口,新建兩個CAN_READ功能塊分別讀取PGN61443與PGN61444。
當接收到PGN61443報文時,梯形圖中PGN61443(8字節數組)中的數據分別為:
FF 00 00 FF FF FF FF FF
Spn558—加速踏板低怠速開關 1.1位置 第二個字節的0與1位 當前值為00
Spn559—加速踏板換低檔開關 1.3位置 第二個字節的2與3位 當前值為00
根據SPN參數定義我們就很容易知道發動機中的各種參數與狀態及實時測量值了。
四、SPN參數介紹
Spn558—加速踏板低怠速開關
表示加速踏板低怠速開關是否打開的開關信號。低怠速開關的定義在 SAE J1843。
00-加速踏板不在低速怠速位置
01-加速踏板在低速怠速位置
位長:2 位
類型:測量值
可疑參數號碼:558
參數組編號:[61443]
Spn559—加速踏板換低檔開關
表示加速踏板換低檔開關是否打開的開關信號。換低檔開關的定義在 SAE J1843。
00-被動式換低檔
01-主動式換低檔
位長:2 位
類型:測量值
可疑參數號碼:559
參數組編號:[61443]
五、J1939協議介紹
SAE J1939協議是由汽車工程協會(SAE)定義的,主要用于商用車輛,但也用于艦船、軌道機車、農業機械和大型發動機。另外,SAE J1939用作國際標準NMEA 2000(海事) 和 ISO 11783(農業機械)的基礎,因而此協議棧也能用于這些應用。
在商用車輛方面,由SAE制定的標準化串行協議長期以來一直用于單個電子控制單元和傳動裝置上元件之間的通信。基于通常可從單片機串行端獲得的J1708/ J1587協議可以被視作前驅。
由于需要與J1708/1587協議兼容,對于J1939來說,必須要求CAN報文標識符從11-bits擴展到29-bits(擴展格式),并且CAN模塊的開發或協議實現應支持這種報文格式。
因為有擴展的CAN標識符,這就能夠象用于J1708那樣,將通信關系的定義規則映射到CAN。部分標識符被用于指定一個8-bit源和一個8-bit目標地址(節點數)。
所以通過SAE J1939能夠傳輸測量值和控制數據并配置元件。另外,還能夠讀或刪除單個元件診斷數據,并對單個控制進行校準。
為了使這些成為可能,對于商用車方面的所有相關變量都要在SAE J1939中定義值域、分辨率、識別數等等。這些對基于J1587技術規格的大都實現。
因此,在J1939協議中,不僅僅指定了傳輸類型、報文結構及其分段、流量檢查等,而且報文內容本身也做了精確的定義。SAE J1939在ISO/OSI層模型中的分布根據OSI層模型,SAE J1939被分成幾個層,每一層都分別有相應的文檔說明。類似于所有實際上的現場總線協議,在SAE J1939上第5和6層是不需要的,因此沒有定義。
SAE J1939的功能被分為如下幾層:
第一層(物理層)描述在其它事物中與物理媒介的電子接口;
第二層(數據鏈路層)描述通過基于CAN 2.0B技術規格的CAN的數據通信;
第三層(網絡層)主要描述兩個網絡部分間針對報文傳輸的網橋的功能,并且只與 J1939網橋實現相關;
第四層(傳輸層)基本上描述的是針對報文申請模式、確認傳輸和大數據塊的分段傳輸的各種網絡服務;
第七層(應用層)描述實際的數據(參數或帶有值域的網絡變量、分辨率、物理單元和傳輸類型)。每個報文無歧義地對應一個數(參數組數);
由于網絡管理可以被當作一個分離的單元,能直達硬件(第一層),因此在這個層模型中,該模塊是作為右手邊的一個獨立的功能塊。網絡管理基本上包括自動分配或決定節點地址(即插即用原則)。在SAE J1939中沒有定義節點監視,因而必須在應用時通過循環報文實現。