李 輝,樊梁輝,卞壽超
(上海市質(zhì)量監(jiān)督檢驗技術(shù)研究院,上海 201114)
J1939 通信協(xié)議是由美國汽車工程協(xié)會制定發(fā)布,主要應(yīng)用在CAN 接口為基礎(chǔ)的硬件儀表和產(chǎn)品。CAN 作為一種先進可靠,功能完善,成本低廉的網(wǎng)絡(luò)控制方式,CAN 總線廣泛地應(yīng)用在汽車工業(yè)、工業(yè)控制、安防監(jiān)控、工程機械、電梯樓宇和醫(yī)療自動化等領(lǐng)域。標(biāo)準(zhǔn)的J1939 協(xié)議可達(dá)到250kbps 的通信速度[1]。J1939 協(xié)議是目前在商用車輛、艦船、軌道機車、農(nóng)業(yè)機械,大型發(fā)動機和BMS 系統(tǒng)中應(yīng)用最廣泛的應(yīng)用層設(shè)備通信協(xié)議。在工程機械及汽車應(yīng)用中需要對大量的壓力儀表進行計量和校準(zhǔn),不同于傳統(tǒng)本地顯示壓力儀表和工業(yè)變送器,壓力儀表本身并不具備本地顯示和環(huán)路電流輸出的功能,并且壓力儀表與溫度儀表、流速儀表、液位儀表及其它工況儀表緊密的安裝在設(shè)備內(nèi)部,只能通過ECU 專用設(shè)備(J1939 協(xié)議)進行診斷和讀取數(shù)據(jù)[2]。
J1939 報文中詳細(xì)定義了報文傳輸管理參數(shù)組中編號的定義,協(xié)議的通信層次結(jié)構(gòu)為:協(xié)議基于CAN 總線物理介質(zhì),CAN 底層協(xié)議屬于數(shù)據(jù)鏈路層和物理層,J1939 協(xié)議屬于應(yīng)用層協(xié)議。J1939 協(xié)議規(guī)程中對參數(shù)組、參數(shù)組編號、報文、協(xié)議數(shù)據(jù)單元、數(shù)據(jù)頁、協(xié)議數(shù)據(jù)單元格式和特定協(xié)議數(shù)據(jù)單元都做了詳細(xì)的定義和介紹[3,4]。J1939 的報文地址包括源地址和目標(biāo)地址,其中目標(biāo)地址包括特定目標(biāo)地址和全局目標(biāo)地址,在整個系統(tǒng)中可分配的地址數(shù)目最大不能超過256 個。在CAN 總線上,CAN 幀信息,由一個節(jié)點發(fā)送,其他節(jié)點同時接收。每當(dāng)總線上有幀信息時,節(jié)點都會把濾波器的設(shè)置和接收到的幀信息的標(biāo)識碼進行比較,節(jié)點只接收符合一定條件的信息,對不符合條件的CAN 幀不予接收而只給出應(yīng)答信號。CAN 控制器的工作原理包括:接口管理邏輯、CAN 核心模塊、發(fā)送緩沖器、驗收濾波器、接收FIFO 和工作模式幾個部分。J1939 協(xié)議在應(yīng)用的過程中,CAN 硬件接口電路的保護器件也起到至關(guān)重要的作用,一般包括:工模扼流圈,ESD 保護元件和CAN 總線網(wǎng)絡(luò)保護器。以保證在J1939 協(xié)議應(yīng)用的過程中不受到干擾的同時,也不干擾其它的電子元件[5]。
在工程機械及汽車壓力儀表數(shù)據(jù)采集的過程中,需要將前端儀表J1939 協(xié)議的數(shù)據(jù)解析為串口數(shù)據(jù),通過modbus RTU 協(xié)議由單片機、PLC、組態(tài)屏等主控讀取,了解具體 SPN 解析方法,就可以方便地完成項目開發(fā)。模塊、儀表參數(shù)使用保持寄存器區(qū),并細(xì)分為4 個功能區(qū),包括:常用參數(shù)區(qū)、當(dāng)前故障碼區(qū)、歷史故障碼區(qū)和參數(shù)配置及操作區(qū)。常用參數(shù)區(qū)包括如下內(nèi)容:modbus 寄存器地址、SPN 碼、數(shù)據(jù)長度、精度bit、偏移、范圍、默認(rèn)數(shù)據(jù)和標(biāo)簽備注信息[6]。由于需要計量的參數(shù)主要包括壓力和溫度,讀取數(shù)據(jù)具體信息為:
modbus 地址-SPN 碼-標(biāo)簽備注
40015 110 發(fā)動機冷卻液溫度
40016 174 燃油溫度
40017 175 發(fā)動機油溫
40018 52 發(fā)動機中間冷卻器溫度
40019 94 燃料輸送壓力
40020 98 機油油位
40021 100 機油壓力
40022 109 冷卻液壓力
40023 111 冷卻液液位
40028 108 大氣壓力
40029 172 進氣口溫度
圖1 一體化OCS控制器界面Fig.1 Integrated OCS controller interface
40030 81 柴油微粒過濾器進氣壓力
40031 105 進氣歧管1 號溫度
40032 107 空氣過濾器1 壓差
40033 173 排氣溫度
40037 127 變速器油壓力
40038 177 變速器油溫度
40039 157 噴油器計量導(dǎo)軌1 壓力
40040 1349 噴油器計量導(dǎo)軌2 壓力
40042 441 輔助溫度
40043 1387 輔助壓力
除了上述只讀信息之外,還需要對設(shè)備進行參數(shù)配置和保存,具體的數(shù)據(jù)信息為:
modbus 地址-說明-范圍-默認(rèn)-標(biāo)簽
43001 地址 1-254 1 用戶設(shè)置的地址
43002 波特率4800bps ~57600bps 9600
43003 油壓、水溫、發(fā)動機總時間顯示方式 動態(tài)
43004 動態(tài)顯示間隔 100-500
43011 請求歷史故障代碼 寫入1 則請求
對于上述modbus 轉(zhuǎn)J1939 協(xié)議擴展模塊可以有效地接入工程機械及汽車設(shè)備,但是如果需要收發(fā)的數(shù)據(jù)字節(jié)數(shù)大于256 個字節(jié),模塊自身性能的限制,無法實現(xiàn)快捷的數(shù)據(jù)采集,并且在運行過程中無法修改J1939 的PGN 參數(shù)組對象,并且擴展模塊不支持J1939 的多包傳輸協(xié)議。對于常規(guī)PLC 而言,PLC 外圍只具有串口、網(wǎng)口和USB 接口并沒有支持J1939 的CAN 接口。此外,擴展模塊與PLC 是通過modbus RTU 協(xié)議進行連接,此時開發(fā)人員還需要對modbus 寄存器地址進行二次對接,又增加了壓力儀表數(shù)據(jù)采集的集成難度,系統(tǒng)的復(fù)雜程度也隨之增加,也加大了系統(tǒng)的整體故障率。在此種應(yīng)用場合下,本身集成多種總線接口(CAN J1939)的OCS 一體化控制器在這種情形下就非常適合使用[7,8]。
圖2 J1939的通信參數(shù)配置Fig.2 J1939 communication parameter configuration
圖3 J1939的設(shè)備增加配置Fig.3 J1939 equipment increase configuration
以上述J1939 轉(zhuǎn)modbus 的協(xié)議擴展模塊為例,介紹一下在OCS 控制器上如何實現(xiàn)J1939 協(xié)議的參數(shù)配置。如需要采集40021 SPN 為100 的機油壓力值,在OCS 控制器上啟用CAN 接口的J1939 功能,然后打開上位機CSCAPE 編程軟件進入Program 菜單的Network Configuration 選項中,可以對控制器的J1939 通信進行配置。配置J1399 總線控制的起始控制器地址為%R1000,其會占用連續(xù)的一系列寄存器用于J1939 協(xié)議的控制,具體設(shè)置如圖2、圖3 所示。
壓力儀表參數(shù)組的定義如下:該參數(shù)組為發(fā)動機控制器1 參數(shù)組。J1939 協(xié)議對該參數(shù)組的定義為數(shù)據(jù)長度為8 字節(jié),數(shù)據(jù)頁碼為0,PDU 格式為240,J1939 協(xié)議默認(rèn)優(yōu)先級為3,參數(shù)組編號為61444。根據(jù)上述資料,在編程軟件中新建的PGN 中配置如下:PGN 參數(shù)組編號:61444,Priority 優(yōu)先級為默認(rèn)的3,Source Address 源地址為10,Destination Address 目的地址為0,Number of Data 為8(接收8 個字節(jié)長度的數(shù)據(jù)),Mapping Resister 為1,即將接收到的數(shù)據(jù)放置在OCS 控制器從%R1 開始的連續(xù)寄存器中,再點擊“OK”完成配置[9-11]。
圖4 壓力儀表數(shù)據(jù)的格式轉(zhuǎn)換Fig.4 Format conversion of pressure meter data
通過上述的操作,已經(jīng)把前端壓力儀表的數(shù)據(jù)放置在%R1 開始的連續(xù)8 個字節(jié)的寄存器中,首次上電時把1賦值給%R1000,啟動J1939 協(xié)議,把第4 ~5 個字節(jié)的數(shù)據(jù)傳送到%R11 寄存器中,然后再進行int 轉(zhuǎn)real 的整數(shù)轉(zhuǎn)浮點數(shù)操作,并將結(jié)果放置在%R15 寄存器中。
本文闡述了應(yīng)用modbus 轉(zhuǎn)J1939 協(xié)議轉(zhuǎn)換擴展模塊和OCS 控制器實現(xiàn)機械設(shè)備及汽車設(shè)備的壓力儀表計量研發(fā)過程。應(yīng)用一體化OSC 控制器的CAN 擴展功能,實現(xiàn)靈活高效的采集設(shè)備的壓力儀表參數(shù)。經(jīng)測試比較,此計量應(yīng)用方式成本低廉,功能穩(wěn)定高效,可以穩(wěn)定實現(xiàn)機械汽車設(shè)備的壓力儀表計量,達(dá)到了預(yù)期的設(shè)計效果。