<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

作者: 時(shí)間:2014-01-09 來(lái)源:網(wǎng)絡(luò ) 收藏
中使用的J1939 協(xié)議,兩者相輔相成,并且利用VECTOR CANoe軟件監視總線(xiàn),以保證程序開(kāi)發(fā)的順利進(jìn)行。

本文引用地址:http://dyxdggzs.com/article/227065.htm

2.2 軟件實(shí)現

利用多線(xiàn)程編程以及生產(chǎn)者消費者結構實(shí)現J1939協(xié)議。分別為未拆分的發(fā)送報文、已拆分發(fā)送報文、未重組的接收報文、已重組的接收報文建立隊列。創(chuàng )建已重組報文讀取線(xiàn)程,已重組報文出隊列用于應用層協(xié)議。創(chuàng )建接收報文處理線(xiàn)程,用于按多幀傳輸機制處理接收到的CAN 2.0數據幀,程序流程圖如圖3所示,經(jīng)過(guò)目的地址過(guò)濾報文后,利用條件結構按照報文參數組編號進(jìn)行分類(lèi)處理,在計算參數組編號時(shí)要注意PDU1與PDU2格式的區別,主要分為以下幾種情況:

數據小于7 B的正常數據報文:直接入已處理接收報文隊列供應用層使用;請求發(fā)送幀TP.CM_RTS:由于兩個(gè)節點(diǎn)之間同一時(shí)間最多只能有一個(gè)發(fā)送和一個(gè)接收的多幀傳輸鏈接,若這時(shí)已有一個(gè)接收鏈接,則需要發(fā)送放棄鏈接幀TP.ABORT告知發(fā)送者,若無(wú)接收鏈接,創(chuàng )建新的接收狀態(tài)機并插入接收狀態(tài)機數組。接收狀態(tài)機為一個(gè)數據簇,包含了參數組編號、下一個(gè)接收數據包編號、數據包總數、當前已接收字節數、字節總數、以及已接收字節數組。之后應發(fā)送準備發(fā)送幀TP.CM_CTS 通知發(fā)送者發(fā)送數據包,同時(shí)應開(kāi)始計時(shí),若發(fā)送者響應時(shí)間超過(guò)規定時(shí)間,應發(fā)送放棄幀TP.ABORT;準備發(fā)送幀TP.CM_CTS:此報文為接收者對發(fā)送報文的應答,此次發(fā)送狀態(tài)機已建立,搜索相應狀態(tài)機,根據準備發(fā)送幀要求拆分數據創(chuàng )建數據包TP.DT;數據包TP.DT:搜索相應的接收狀態(tài)機并核對是否與目前狀態(tài)機相符,如果相符則對數據進(jìn)行重組存入狀態(tài)機的接收字節數組,若不符則發(fā)送該參數組編號的放棄鏈接幀,最后判斷多幀傳輸是否結束,并根據是否為全局報文決定是否發(fā)送完成鏈接幀;完成鏈接幀TP.EndofMsgACK:表示相應的多幀發(fā)送鏈接已完成,刪除相應的發(fā)送狀態(tài)機。廣播公告消息TP.

CM_BAM:收到全局消息的請求鏈接幀,只需建立相應的接收狀態(tài)機,等待接收數據包,而不需要任何的應答。

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試發(fā)送報文均先入未拆分發(fā)送報文隊列;創(chuàng )建未拆分發(fā)送報文處理線(xiàn)程,用于按多幀傳輸機制處理發(fā)送報文,程序流程圖如圖4所示,若發(fā)送報文數據超過(guò)8 B則需要通過(guò)多幀傳輸機制拆分發(fā)送。

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

2.3 J1939平臺應用效果

定義BMS和的J1939協(xié)議地址分別為244和86.首先由BMS發(fā)送PGN為256的9 B報文給,CANoe監視到總線(xiàn)時(shí)序如圖5所示。

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

由第一幀ID可以看出源地址為0xF4(244),目的地址為0×56(86),PGN為0xEC00,因此該幀為鏈接管理幀TP.CM,并且Data 域控制字節(第1 字節)為0×10,綜上該幀為BMS 發(fā)送給LabVIEW 的請求發(fā)送幀,并由Data域可以看出此次報文共有0×09字節(第2,3字節),數據包共有0×02 包(第4 字節),PGN 為0×0100(第6,7,8 字節)。同理第二幀為L(cháng)abVIEW發(fā)送的準備發(fā)送幀,通知BMS 從第0×01 包(第3 字節)開(kāi)始發(fā)送0×02(第2 字節)包數據包。待接收到BMS發(fā)送的兩幀TP.DT,LabVIEW發(fā)送TP.EndofMsgACK 代表此次多幀傳輸完成。Lab-VIEW接收重組后的數據如圖6所示。

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

同理分析LabVIEW 作為發(fā)送節點(diǎn)的情況,總線(xiàn)時(shí)序圖如圖7所示,LabVIEW拆分前的發(fā)送數據如圖8所示。綜上分析,利用LabVIEW 開(kāi)發(fā)平臺很好地實(shí)現了J1939協(xié)議。

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

基于LabVIEW的電池管理系統與充電機通信協(xié)議測試

3 通信協(xié)議測試軟件的開(kāi)發(fā)

通信協(xié)議將整個(gè)通信分為多個(gè)階段:充電握手階段、充電參數配置階段、充電階段、充電結束階段。每個(gè)通信階段均涉及充電機與BMS 的信息交互,每次信息交互均有超時(shí)限制。為了實(shí)現對通信協(xié)議進(jìn)行測試,不僅要模擬充電機與BMS 進(jìn)行通信,還要實(shí)時(shí)監測通信的狀態(tài),判斷通信過(guò)程是否出錯并解析BMS 發(fā)送的信息。測試軟件主要測試通信階段出現的時(shí)序錯亂以及信息交互超時(shí)這兩種錯誤。

在已開(kāi)發(fā)J1939協(xié)議基礎上進(jìn)行測試軟件的開(kāi)發(fā),J1939協(xié)議提供了兩個(gè)接口:需要發(fā)送報文直接入未處理發(fā)送報文隊列、已處理接收報文出隊列供應用層使用。通信階段改變利用LabVIEW 狀態(tài)機結構來(lái)實(shí)現。

通信相關(guān)文章:通信原理




關(guān)鍵詞: LabVIEW 電池管理系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>