基于LabVIEW的電池管理系統(tǒng)與充電機通信協(xié)議測試
隨著近年來電動汽車行業(yè)如火如荼的發(fā)展,電動汽車技術(shù)相關(guān)的各種標準也相繼推出,其中包括了《電動汽車非車載傳導(dǎo)式充電機與電池管理系統(tǒng)之間的通信協(xié)議》(GB/T 27930-2011)。該協(xié)議是基于CAN應(yīng)用層協(xié)議SAE J1939,J1939 是目前在國內(nèi)汽車行業(yè)中應(yīng)用廣泛的CAN總線應(yīng)用層協(xié)議。只有電池管理系統(tǒng)與充電機之間的正常數(shù)據(jù)交互才能保證電動汽車進行高效、安全的充電。因此,電池管理系統(tǒng)與充電機通信協(xié)議測試是電池管理系統(tǒng)測試的一個必不可少的項目。
本文引用地址:http://m.butianyuan.cn/article/227065.htm本課題來源于北方車輛研究所電池管理系統(tǒng)測試平臺項目。美國國家儀器NI PXI CAN采集卡以及LabVIEW為模擬充電機與BMS通信提供了良好的軟硬件環(huán)境。
LabVIEW是美國國家儀器推出的一種程序開發(fā)環(huán)境,圖形化語言使其與其他的代碼類型語言相比之下更為方便直觀。以計算機作為運行環(huán)境的LabVIEW,充分利用了計算機無可比擬的硬件優(yōu)勢,具有強大的數(shù)據(jù)處理能力。開發(fā)者可以很容易實現(xiàn)多線程編程,極大降低了軟件開發(fā)的難度。LabVIEW的前面板提供了豐富的類似傳統(tǒng)儀器的控件,開發(fā)者可以很方便的創(chuàng)建用戶界面。
本文重點在于如何用LabVIEW實現(xiàn)SAE J1939多幀傳輸機制,完成超過8 B 報文的接收重組、拆分發(fā)送。以及如何實時判斷通信過程出現(xiàn)的錯誤、指出錯誤類型、定位錯誤發(fā)生的階段。
1 SAE J1939 協(xié)議
J1939 協(xié)議是基于CAN 2.0B 制定的,協(xié)議對物理層、數(shù)據(jù)鏈路層、網(wǎng)路層以及應(yīng)用層都進行了相關(guān)的規(guī)定。本文針對數(shù)據(jù)鏈路層的規(guī)定進行簡單介紹。
1.1 協(xié)議數(shù)據(jù)單元(PDU)
J1939 將CAN 2.0B 的29 位標識符ID 劃分為六部分,每部分都代表不同的含義,包括優(yōu)先級(P)、保留位(R)、數(shù)據(jù)頁(DP)、PDU格式(PF)、特定PDU(PS)、源地址(SA),見表1.
根據(jù)CAN 2.0 總線的仲裁機制,標識符值越小,CAN幀優(yōu)先級越高,J1939把這一權(quán)利賦予了標識符最高三位(P)。R、DP通常為0.SA代表了該幀數(shù)據(jù)的發(fā)送節(jié)點的地址,CAN 網(wǎng)絡(luò)中每個設(shè)備都分配了惟一的SA.在介紹PF 與PS之前有必要先介紹下參數(shù)組編號(PGN)的概念。每個PGN代表著惟一的參數(shù)組(可以包含一個或多個參數(shù)),當參數(shù)組的數(shù)據(jù)域大于8 B時,需要遵循J1939的多幀傳輸機制。PGN 由R、DP、PF 以及PS 組成,見表2.從表2 中可以看出PDU2 格式報文沒有目標地址,此類報文只能發(fā)送給全局地址。由于PS作為PDU2 格式參數(shù)組編號的一部分,因此PDU2 比PDU1能定義更多的參數(shù)組編號。
1.2 多幀傳輸機制
CAN 2.0B 數(shù)據(jù)域最多有8 B,而在J1939協(xié)議中當一個參數(shù)組編號(PGN)所對應(yīng)的數(shù)據(jù)超過8 B時,規(guī)定了一種多幀傳輸機制,發(fā)送者按此機制拆分發(fā)送,接收者按此機制接收重組,因此一個參數(shù)組編號所對應(yīng)的數(shù)據(jù)最多可以為1 785 B.點對點未發(fā)生錯誤的多幀傳輸機制如圖1 所示,J1939 對傳輸過程出現(xiàn)錯誤的情況也規(guī)定了相應(yīng)的處理機制,在此不作介紹。
TP.CM_RTS、TP.CM_CTS、TP.DT、TP.EndofMsgACK均為J1939特定功能報文,其參數(shù)組編號也由J1939規(guī)定,因此這些參數(shù)組編號不能再被用戶定義。TP.CM_RTS為消息發(fā)送者發(fā)送的請求發(fā)送幀,由此開始建立多幀傳輸鏈接,其數(shù)據(jù)域包括了此次發(fā)送的消息全部字節(jié)數(shù)、全部數(shù)據(jù)包數(shù)(TP.DT 幀數(shù))以及該消息的參數(shù)組編號等信息。接收者根據(jù)自己的接收能力,發(fā)送準備發(fā)送幀TP.CM_CTS,通知發(fā)送者下次可發(fā)送的數(shù)據(jù)包數(shù)、下一個要發(fā)送的數(shù)據(jù)包編號以及消息的參數(shù)組編號。發(fā)送者根據(jù)接收者的要求開始發(fā)送數(shù)據(jù)包TP.DT,數(shù)據(jù)包的數(shù)據(jù)域第一字節(jié)代表了該包號,因此一個數(shù)據(jù)包最多包含消息的7 B.
這個過程循環(huán)進行,直至接收者接收到全部數(shù)據(jù)包后發(fā)送消息結(jié)束應(yīng)答幀TP.EndofMsgACK代表著這次多幀傳輸?shù)慕Y(jié)束。若發(fā)送的消息是全局消息,則所有接收者不應(yīng)有任何應(yīng)答,整個傳輸過程如圖2所示。
2 基于LabVIEW實現(xiàn)J1939 協(xié)議平臺
2.1 硬件接口
利用NI PXI-8513 CAN 接口板卡實現(xiàn)該系統(tǒng)的硬件接口。NI已為開發(fā)者提供了該板卡的底層驅(qū)動,可以很方便對CAN節(jié)點參數(shù)進行配置以及接收和發(fā)送符合CAN 2.0的消息幀,然而對于多幀傳輸機制還需開發(fā)者自行設(shè)計。由于J1939 協(xié)議涉及發(fā)送者與接收者的應(yīng)答,因此在基于LabVIEW開發(fā)J1939同時也利用C語言開發(fā)基于飛思卡爾單片機
通信相關(guān)文章:通信原理
評論