基于LabVIEW的電池管理系統與充電機通信協(xié)議測試
隨著(zhù)近年來(lái)電動(dòng)汽車(chē)行業(yè)如火如荼的發(fā)展,電動(dòng)汽車(chē)技術(shù)相關(guān)的各種標準也相繼推出,其中包括了《電動(dòng)汽車(chē)非車(chē)載傳導式充電機與電池管理系統之間的通信協(xié)議》(GB/T 27930-2011)。該協(xié)議是基于CAN應用層協(xié)議SAE J1939,J1939 是目前在國內汽車(chē)行業(yè)中應用廣泛的CAN總線(xiàn)應用層協(xié)議。只有電池管理系統與充電機之間的正常數據交互才能保證電動(dòng)汽車(chē)進(jìn)行高效、安全的充電。因此,電池管理系統與充電機通信協(xié)議測試是電池管理系統測試的一個(gè)必不可少的項目。
本文引用地址:http://dyxdggzs.com/article/227065.htm本課題來(lái)源于北方車(chē)輛研究所電池管理系統測試平臺項目。美國國家儀器NI PXI CAN采集卡以及LabVIEW為模擬充電機與BMS通信提供了良好的軟硬件環(huán)境。
LabVIEW是美國國家儀器推出的一種程序開(kāi)發(fā)環(huán)境,圖形化語(yǔ)言使其與其他的代碼類(lèi)型語(yǔ)言相比之下更為方便直觀(guān)。以計算機作為運行環(huán)境的LabVIEW,充分利用了計算機無(wú)可比擬的硬件優(yōu)勢,具有強大的數據處理能力。開(kāi)發(fā)者可以很容易實(shí)現多線(xiàn)程編程,極大降低了軟件開(kāi)發(fā)的難度。LabVIEW的前面板提供了豐富的類(lèi)似傳統儀器的控件,開(kāi)發(fā)者可以很方便的創(chuàng )建用戶(hù)界面。
本文重點(diǎn)在于如何用LabVIEW實(shí)現SAE J1939多幀傳輸機制,完成超過(guò)8 B 報文的接收重組、拆分發(fā)送。以及如何實(shí)時(shí)判斷通信過(guò)程出現的錯誤、指出錯誤類(lèi)型、定位錯誤發(fā)生的階段。
1 SAE J1939 協(xié)議
J1939 協(xié)議是基于CAN 2.0B 制定的,協(xié)議對物理層、數據鏈路層、網(wǎng)路層以及應用層都進(jìn)行了相關(guān)的規定。本文針對數據鏈路層的規定進(jìn)行簡(jiǎn)單介紹。
1.1 協(xié)議數據單元(PDU)
J1939 將CAN 2.0B 的29 位標識符ID 劃分為六部分,每部分都代表不同的含義,包括優(yōu)先級(P)、保留位(R)、數據頁(yè)(DP)、PDU格式(PF)、特定PDU(PS)、源地址(SA),見(jiàn)表1.

根據CAN 2.0 總線(xiàn)的仲裁機制,標識符值越小,CAN幀優(yōu)先級越高,J1939把這一權利賦予了標識符最高三位(P)。R、DP通常為0.SA代表了該幀數據的發(fā)送節點(diǎn)的地址,CAN 網(wǎng)絡(luò )中每個(gè)設備都分配了惟一的SA.在介紹PF 與PS之前有必要先介紹下參數組編號(PGN)的概念。每個(gè)PGN代表著(zhù)惟一的參數組(可以包含一個(gè)或多個(gè)參數),當參數組的數據域大于8 B時(shí),需要遵循J1939的多幀傳輸機制。PGN 由R、DP、PF 以及PS 組成,見(jiàn)表2.從表2 中可以看出PDU2 格式報文沒(méi)有目標地址,此類(lèi)報文只能發(fā)送給全局地址。由于PS作為PDU2 格式參數組編號的一部分,因此PDU2 比PDU1能定義更多的參數組編號。

1.2 多幀傳輸機制
CAN 2.0B 數據域最多有8 B,而在J1939協(xié)議中當一個(gè)參數組編號(PGN)所對應的數據超過(guò)8 B時(shí),規定了一種多幀傳輸機制,發(fā)送者按此機制拆分發(fā)送,接收者按此機制接收重組,因此一個(gè)參數組編號所對應的數據最多可以為1 785 B.點(diǎn)對點(diǎn)未發(fā)生錯誤的多幀傳輸機制如圖1 所示,J1939 對傳輸過(guò)程出現錯誤的情況也規定了相應的處理機制,在此不作介紹。
TP.CM_RTS、TP.CM_CTS、TP.DT、TP.EndofMsgACK均為J1939特定功能報文,其參數組編號也由J1939規定,因此這些參數組編號不能再被用戶(hù)定義。TP.CM_RTS為消息發(fā)送者發(fā)送的請求發(fā)送幀,由此開(kāi)始建立多幀傳輸鏈接,其數據域包括了此次發(fā)送的消息全部字節數、全部數據包數(TP.DT 幀數)以及該消息的參數組編號等信息。接收者根據自己的接收能力,發(fā)送準備發(fā)送幀TP.CM_CTS,通知發(fā)送者下次可發(fā)送的數據包數、下一個(gè)要發(fā)送的數據包編號以及消息的參數組編號。發(fā)送者根據接收者的要求開(kāi)始發(fā)送數據包TP.DT,數據包的數據域第一字節代表了該包號,因此一個(gè)數據包最多包含消息的7 B.

這個(gè)過(guò)程循環(huán)進(jìn)行,直至接收者接收到全部數據包后發(fā)送消息結束應答幀TP.EndofMsgACK代表著(zhù)這次多幀傳輸的結束。若發(fā)送的消息是全局消息,則所有接收者不應有任何應答,整個(gè)傳輸過(guò)程如圖2所示。

2 基于LabVIEW實(shí)現J1939 協(xié)議平臺
2.1 硬件接口
利用NI PXI-8513 CAN 接口板卡實(shí)現該系統的硬件接口。NI已為開(kāi)發(fā)者提供了該板卡的底層驅動(dòng),可以很方便對CAN節點(diǎn)參數進(jìn)行配置以及接收和發(fā)送符合CAN 2.0的消息幀,然而對于多幀傳輸機制還需開(kāi)發(fā)者自行設計。由于J1939 協(xié)議涉及發(fā)送者與接收者的應答,因此在基于LabVIEW開(kāi)發(fā)J1939同時(shí)也利用C語(yǔ)言開(kāi)發(fā)基于飛思卡爾單片機
通信相關(guān)文章:通信原理
評論