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