国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

電動(dòng)汽車(chē)BMS測(cè)試系統(tǒng)的數(shù)據(jù)通信

2014-12-12 03:50:38楊劉倩詹昌輝
關(guān)鍵詞:通信協(xié)議報(bào)文總線

楊劉倩,詹昌輝

(合肥國(guó)軒高科動(dòng)力能源股份公司工程研究院,安徽 合肥 230011)

0 引言

電動(dòng)汽車(chē)行業(yè)的發(fā)展,對(duì)各電動(dòng)汽車(chē)組成部分性能要求不斷提升[1]。因此,開(kāi)發(fā)了BMS(Battery Management System,電池管理系統(tǒng))測(cè)試系統(tǒng),對(duì)BMS信息的采集精度、數(shù)據(jù)傳輸速率、準(zhǔn)確性進(jìn)行測(cè)試分析。

在BMS系統(tǒng)開(kāi)發(fā)過(guò)程中,BMS測(cè)試系統(tǒng)對(duì)BMS的流程控制及其故障響應(yīng)進(jìn)行驗(yàn)證;BMS生產(chǎn)過(guò)程中,BMS測(cè)試系統(tǒng)對(duì)BMS進(jìn)行進(jìn)一步測(cè)試[2],保障系統(tǒng)功能完善;BMS售后階段,BMS測(cè)試系統(tǒng)可對(duì)BMS進(jìn)行故障診斷和排查。

目前,電動(dòng)汽車(chē)領(lǐng)域多采用CAN總線實(shí)現(xiàn)各控制單元之間的通信[3]。BMS測(cè)試系統(tǒng)亦通過(guò) CAN通信實(shí)現(xiàn)與BMS的信息交互,即可實(shí)現(xiàn)對(duì)BMS系統(tǒng)的測(cè)試、狀態(tài)監(jiān)控及數(shù)據(jù)分析等功能。

1 CAN通信原理及通信協(xié)議

1.1 CAN通信介紹

CAN(Controller Area Network,控制局域網(wǎng)絡(luò))屬于現(xiàn)場(chǎng)總線的范疇,現(xiàn)場(chǎng)總線被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)[4]。CAN為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持,應(yīng)用于工業(yè)自動(dòng)化設(shè)備、船舶、醫(yī)療設(shè)備等領(lǐng)域。

CAN總線是德國(guó)Bosch公司從20世紀(jì)80年代初為解決現(xiàn)代汽車(chē)中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1 Mbps。當(dāng)信號(hào)傳輸距離達(dá)10 km時(shí),CAN仍可提供高達(dá)50 kbps的數(shù)據(jù)傳輸速率[5]。CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理。

在CAN總線中有4種不同的幀類(lèi)型[6]:

(1)數(shù)據(jù)幀(Data Frame):數(shù)據(jù)幀帶有應(yīng)用數(shù)據(jù)。

(2)遠(yuǎn)程幀(Remote Frame):通過(guò)發(fā)送遠(yuǎn)程幀可以向網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),啟動(dòng)其他資源節(jié)點(diǎn)傳送它們各自的數(shù)據(jù)。遠(yuǎn)程幀包含6個(gè)不同的位域:幀起始、仲裁域、控制域、CRC域、應(yīng)答域、幀結(jié)尾。仲裁域中的RTR位的隱極性表示為遠(yuǎn)程幀。

(3)錯(cuò)誤幀(Error Frame):能夠報(bào)告每個(gè)節(jié)點(diǎn)的出錯(cuò),由2個(gè)不同的域組成。第一個(gè)域是不同站提供的錯(cuò)誤標(biāo)志的疊加,第二個(gè)域是錯(cuò)誤界定符。

(4)過(guò)載幀(Overload Frame):如果節(jié)點(diǎn)的接收尚未準(zhǔn)備好就會(huì)傳送過(guò)載幀,由2個(gè)不同的域組成。第一個(gè)域是過(guò)載標(biāo)志,第二個(gè)域是過(guò)載界定符。

1.2 電池管理系統(tǒng)的CAN通信協(xié)議

CAN協(xié)議是建立在OSI的7層開(kāi)放互連參考模型基礎(chǔ)之上的。但CAN協(xié)議只定義了模型的最下面2層:數(shù)據(jù)鏈路層和物理層,僅保證了節(jié)點(diǎn)間無(wú)差錯(cuò)的數(shù)據(jù)傳輸。CAN的應(yīng)用層協(xié)議必須由CAN用戶自行定義,或采用一些國(guó)際組織制訂的標(biāo)準(zhǔn)協(xié)議。

BMS所采用的CAN通信協(xié)議中數(shù)據(jù)鏈路層的規(guī)定主要參考 CAN2.0B和 SAE J1939的相關(guān)規(guī)定。CAN擴(kuò)展幀有29位標(biāo)識(shí)符,可自行規(guī)定其含義,定義29位ID,如圖1所示。

圖1 擴(kuò)展幀ID定義

(1)優(yōu)先級(jí)Priority為3位,可以有8個(gè)優(yōu)先級(jí);保留位(Reserved)值一般固定為0;數(shù)據(jù)頁(yè)(Data Page)值現(xiàn)固定為0;8位的PDU Format為報(bào)文的代碼;8位的PDU Specific為目標(biāo)地址或組擴(kuò)展;8位的Source Address為發(fā)送此報(bào)文的源地址。

(2)接入網(wǎng)絡(luò)的每一個(gè)節(jié)點(diǎn)都有名稱(chēng)和地址,名稱(chēng)用于識(shí)別節(jié)點(diǎn)的功能和進(jìn)行地址仲裁,地址用于節(jié)點(diǎn)的數(shù)據(jù)通信;每個(gè)節(jié)點(diǎn)至少有一種功能,可能會(huì)有多個(gè)節(jié)點(diǎn)具有相同的功能,也可能一個(gè)節(jié)點(diǎn)具有多個(gè)功能。

2 BMS測(cè)試系統(tǒng)的CAN通信結(jié)構(gòu)及原理

2.1 測(cè)試系統(tǒng)與BMS的連接結(jié)構(gòu)

BMS測(cè)試系統(tǒng)上位機(jī)與BMS的CAN通信硬件連接示意圖如圖2所示:BMS測(cè)試系統(tǒng)上位機(jī)應(yīng)用軟件以PC機(jī)為載體,在Windows XP操作系統(tǒng)下開(kāi)發(fā)的應(yīng)用軟件生成的EXE文件運(yùn)行在PC上[7],形成一個(gè)上位機(jī)結(jié)構(gòu),該上位機(jī)可進(jìn)行CAN通信,上位機(jī)通過(guò)USB接口與CAN通信傳輸模塊連接,CAN通信傳輸模塊通過(guò)CAN_H、CAN_L連接電池管理系統(tǒng)的CAN通信接口。

圖2 BMS測(cè)試系統(tǒng)與BMS的CAN通信連接示意圖

2.2 測(cè)試系統(tǒng)與BMS的CAN通信實(shí)現(xiàn)原理

測(cè)試系統(tǒng)應(yīng)用程序在電腦上運(yùn)行,電腦USB接口連接CAN通信數(shù)據(jù)傳輸模塊,調(diào)用CAN通信的接口函數(shù)實(shí)現(xiàn)與下位機(jī)BMS的CAN通信連接,連接通信成功后,該應(yīng)用程序可實(shí)現(xiàn)CAN報(bào)文的發(fā)送及接收功能。CAN通信通過(guò)電平變化體現(xiàn)傳輸內(nèi)容,CAN通信傳輸模塊將模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào)傳遞給BMS測(cè)試系統(tǒng)應(yīng)用軟件,軟件接收信息后根據(jù)CAN通信協(xié)議解讀、處理,用曲線圖、圖像、數(shù)字的形式將數(shù)據(jù)信息體現(xiàn)出來(lái)。

3 BMS測(cè)試系統(tǒng)的軟件流程及CAN通信實(shí)現(xiàn)

采用Borland公司開(kāi)發(fā)的Delphi7作為BMS測(cè)試系統(tǒng)應(yīng)用軟件開(kāi)發(fā)工具,完成軟件界面設(shè)計(jì)與底層驅(qū)動(dòng)的設(shè)計(jì)[8],添加兼容CAN通信傳輸模塊的CAN接口函數(shù)庫(kù),設(shè)計(jì)并開(kāi)發(fā)具有CAN通信報(bào)文收發(fā)功能、解讀CAN通信協(xié)議并對(duì)通信數(shù)據(jù)進(jìn)行處理分析功能的應(yīng)用軟件[9]。一方面,該應(yīng)用軟件將CAN報(bào)文信息轉(zhuǎn)化成直觀信息數(shù)據(jù)或圖表在軟件界面上顯示,為單片機(jī)系統(tǒng)調(diào)試、測(cè)試工作提供便捷的途徑。另一方面,BMS測(cè)試系統(tǒng)的上位機(jī)應(yīng)用軟件可發(fā)送請(qǐng)求幀報(bào)文,BMS接收到請(qǐng)求報(bào)文后回復(fù)所請(qǐng)求的數(shù)據(jù)或狀態(tài)信息,實(shí)現(xiàn)信息交互。

3.1 通信流程的實(shí)現(xiàn)

首先設(shè)置好通信參數(shù),根據(jù)下位機(jī)控制器CAN總線實(shí)際通信需要,將CAN總線通信速率設(shè)定為250 kbps。將通信連接請(qǐng)求通過(guò)CAN數(shù)據(jù)傳輸模塊傳輸至BMS,通信連接成功后,向BMS發(fā)送相關(guān)測(cè)試信息請(qǐng)求報(bào)文或者直接接收來(lái)自BMS的廣播信息報(bào)文,然后BMS測(cè)試系統(tǒng)應(yīng)用程序?qū)AN報(bào)文接收緩存中的報(bào)文進(jìn)行分析處理,將數(shù)據(jù)或狀態(tài)信息顯示或存儲(chǔ);對(duì)BMS系統(tǒng)信息進(jìn)行實(shí)時(shí)監(jiān)測(cè)時(shí),CAN通信是個(gè)循環(huán)過(guò)程,將循環(huán)發(fā)送請(qǐng)求或接收廣播報(bào)文,當(dāng)監(jiān)測(cè)結(jié)束條件達(dá)到,退出該循環(huán)。最后完成BMS系統(tǒng)測(cè)試操作后關(guān)閉CAN通信連接[10]。詳細(xì)流程如圖3所示。

圖3 CAN通信實(shí)現(xiàn)流程

3.2 CAN通信主要流程及示例程序

3.2.1 設(shè)定CAN通信傳輸參數(shù),建立CAN通信連接

CAN通信硬件連接如圖2所示,采用CAN通信數(shù)據(jù)傳輸模塊連接BMS測(cè)試系統(tǒng)和BMS,CAN通信協(xié)議采用SAE J1939,建立BMS測(cè)試系統(tǒng)工程,首先設(shè)計(jì)圖4所示窗體及底層驅(qū)動(dòng)[11-12],用來(lái)輸入?yún)?shù),建立通信連接。定義CAN通信時(shí)所需用到的結(jié)構(gòu)體及函數(shù)體,在Delphi7建立的應(yīng)用軟件工程中調(diào)用該相關(guān)函數(shù)來(lái)實(shí)現(xiàn)串口通信。

圖4 BMS測(cè)試系統(tǒng)中CAN通信連接窗體

CAN通信數(shù)據(jù)模塊通信連接結(jié)構(gòu)體定義如下:

本文的CAN通信連接實(shí)現(xiàn)調(diào)用了CAN數(shù)據(jù)傳輸模塊的接口函數(shù)庫(kù)中函數(shù)FD_StartCAN,如:

function FD_StartCAN(DevType:dword;DevIndex:dword;CANindex:dword):dword;stdcall;

3.2.2 發(fā)送遠(yuǎn)程幀請(qǐng)求信息報(bào)文

(1)在Delphi工程中定義一個(gè)幀結(jié)構(gòu)體,用來(lái)傳輸CAN信息幀,如:

(2)定義一個(gè)過(guò)程arrary,用來(lái)初始化即將要發(fā)送的幀結(jié)構(gòu)體,它的形參只有報(bào)文的ID,其他信息都賦給默認(rèn)值。這樣,在需要通過(guò)讀取某一個(gè)報(bào)文信息時(shí),只需傳遞相應(yīng)的ID,發(fā)送一個(gè)遠(yuǎn)程幀,請(qǐng)求相應(yīng)的報(bào)文信息,如:

(3)調(diào)用函數(shù)FD_Transmit:

Function FD_Transmit(DevType:dword;DevIndex:dword;CANindex:dword;psend:pVCI_CAN_OBJ;len:integer):integer;stdcall;

DevType是設(shè)備類(lèi)型,DevIndex是設(shè)備索引號(hào),CANindex表示第幾路CAN,psend是要發(fā)送數(shù)據(jù)幀數(shù)組的首指針,len是要發(fā)送的數(shù)據(jù)幀數(shù)組的長(zhǎng)度。

3.2.3 接收數(shù)據(jù)幀報(bào)文

調(diào)用函數(shù)FD_Receive接收單片機(jī)控制器發(fā)過(guò)來(lái)的信息報(bào)文:

function FD_Receive(DevType:dword;DevIndex:dword;CANindex:dword;preceive:pVCI_CAN_OBJ;len:integer;wait-time:integer):integer;stdcall;

DevType是設(shè)備類(lèi)型,DevIndex是設(shè)備索引號(hào),CANindex表示第幾路CAN,preceive是要接收的數(shù)據(jù)幀數(shù)組的首指針,len是要發(fā)送的數(shù)據(jù)幀數(shù)組的長(zhǎng)度,waittime是等待時(shí)間。

另外,需定義一個(gè)動(dòng)態(tài)數(shù)組list,將接收到的數(shù)據(jù)放到動(dòng)態(tài)數(shù)組里。

3.2.4 對(duì)接收到報(bào)文信息分析處理

在實(shí)際工程中,上位機(jī)應(yīng)用軟件通過(guò)CAN數(shù)據(jù)模塊對(duì)接收的報(bào)文信息分析處理后顯示在界面上,或?qū)⑿畔⒋鏅n。

(1)接收的一條數(shù)據(jù)幀報(bào)文信息存入數(shù)組list中,每個(gè)數(shù)據(jù)幀可傳輸8字節(jié)數(shù)據(jù),list[0]用來(lái)存放報(bào)文的 ID,list[1]至 list[8]存放數(shù)據(jù)內(nèi)容。通過(guò)判斷l(xiāng)ist[0]的內(nèi)容,對(duì)應(yīng)通信協(xié)議分辨出該報(bào)文用來(lái)傳輸?shù)臄?shù)據(jù)代表信息內(nèi)容。

(2)對(duì)數(shù)組中數(shù)據(jù)進(jìn)行轉(zhuǎn)換,得到具體參數(shù)值或系統(tǒng)狀態(tài)。

(3)通過(guò)顯示控件在軟件界面上顯示出BMS的信息參數(shù)或狀態(tài)。

3.3 CAN通信數(shù)據(jù)實(shí)時(shí)數(shù)據(jù)處理

(1)通信數(shù)據(jù)存儲(chǔ)和讀出。

利用控件OpenDialog和SaveDialog實(shí)現(xiàn)文件打開(kāi)、保存功能,對(duì)應(yīng)用軟件底層驅(qū)動(dòng)代碼編寫(xiě)實(shí)現(xiàn)BMS測(cè)試系統(tǒng)讀取的通信信息的存儲(chǔ)和讀出[13]。保存信息操作代碼如下:

(2)實(shí)時(shí)繪制參數(shù)動(dòng)態(tài)曲線圖[14]。

在窗體中加入控件chart及Timer,通過(guò)Timer控件設(shè)定定時(shí)間隔觸發(fā),每間隔500 ms更新數(shù)據(jù)繪制到chart。以時(shí)間為橫軸,參數(shù)值為縱坐標(biāo)。其中,坐標(biāo)點(diǎn)繪制采用函數(shù)Addxy(X,Y)。

通過(guò)CAN通信,上位機(jī)與下位機(jī)單片機(jī)控制系統(tǒng)進(jìn)行信息交互,得到下位機(jī)中系統(tǒng)參數(shù)后,立即對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行直觀顯示,并體現(xiàn)出數(shù)據(jù)變化趨勢(shì),因此選用chart控件繪圖。

4 實(shí)驗(yàn)結(jié)果與分析

BMS測(cè)試系統(tǒng)可監(jiān)控BMS各種數(shù)據(jù)信息,觀測(cè)BMS是否正常運(yùn)行,如監(jiān)控電池組總電壓及電池組總電流數(shù)據(jù)信息。BMS測(cè)試系統(tǒng)以讀取的總電壓或總電流數(shù)值為縱坐標(biāo),間隔500 ms繪制一個(gè)坐標(biāo)點(diǎn)。隨著監(jiān)控時(shí)間、電壓值及電流值的變化,曲線動(dòng)態(tài)地變化,如圖5所示。

圖5 CAN通信實(shí)時(shí)數(shù)據(jù)曲線圖

監(jiān)控信息用來(lái)分析BMS運(yùn)行狀態(tài),為系統(tǒng)反饋提供依據(jù)。圖5(b)中電池組電流值為負(fù),相應(yīng)圖5(a)中電池組電壓值處于增大趨勢(shì),表示BMS處于充電控制狀態(tài),BMS測(cè)試系統(tǒng)給出電池組充電狀態(tài)的指示。

5 結(jié)束語(yǔ)

本文描述用Delphi7開(kāi)發(fā)設(shè)計(jì)BMS測(cè)試系統(tǒng)上位機(jī)應(yīng)用軟件,實(shí)現(xiàn)與電動(dòng)汽車(chē)的BMS系統(tǒng)的CAN通信的功能,通過(guò)CAN通信完成對(duì)BMS的測(cè)試、監(jiān)控,并對(duì)參數(shù)及狀態(tài)做出分析、信息存儲(chǔ)等。這一功能的實(shí)現(xiàn),為工控生產(chǎn)、售后服務(wù)提供一個(gè)跳過(guò)通信協(xié)議分析過(guò)程的智能測(cè)試、監(jiān)控的工具。另外,本BMS測(cè)試系統(tǒng)上位機(jī)應(yīng)用軟件界面友好,易操作,可移植,具有很好的實(shí)用性。

[1] 袁方偉,陳思忠.電動(dòng)汽車(chē)電池管理系統(tǒng)的研究[J].汽車(chē)研究與開(kāi)發(fā),2003(3):41-44.

[2] 張美云,潘玲.國(guó)內(nèi)外電動(dòng)汽車(chē)的發(fā)展概況和趨勢(shì)[J].廣西機(jī)械,1997(3):19-22,13.

[3] 曾光群.基于無(wú)線通信技術(shù)的鋰電池監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與仿真研究[D].重慶:重慶大學(xué),2007.

[4] 吳慧英.基于CAN總線的工業(yè)測(cè)控系統(tǒng)的應(yīng)用研究[D].北京:北京航空航天大學(xué),1996.

[5] 羅峰,孫澤昌.汽車(chē)CAN總線系統(tǒng)原理、設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2010:31-35.

[6] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996:20-23.

[7] 黃芳.Delphi7存取配置文件實(shí)現(xiàn)與SQL Sever數(shù)據(jù)庫(kù)連接[J].電腦編程技巧與維護(hù),2012(10):44-45,77.

[8] 趙晨,吳錘紅.Delphi高級(jí)通信調(diào)試助手軟件的設(shè)計(jì)[J].福建農(nóng)機(jī),2007(3):33-39.

[9] 孔令彬,葉敦范,付闖.微機(jī)控制蓄電池監(jiān)測(cè)系統(tǒng)[J].微電子技術(shù),2001,29(6):35-38.

[10]張敬華.Delphi5開(kāi)發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2000.

[11]徐謖,張雷,徐立,等.Delphi應(yīng)用與開(kāi)發(fā)案例教程[M].北京:清華大學(xué)出版社,2005:57-67.

[12]明日科技,梁水,李方超,等.Delphi開(kāi)發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007:539-545.

[13][美]Marco Cantu,等.Delphi7從入門(mén)到精通[M].羅征,等譯.北京:電子工業(yè)出版社,2003:39-63.

[14]高德欣,尚繼良,王景景,等.Delphi編程中的串口通訊技術(shù)[J].青島科技大學(xué)學(xué)報(bào):自然科學(xué)版,2003,24(z1):125-127.

猜你喜歡
通信協(xié)議報(bào)文總線
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
淺析反駁類(lèi)報(bào)文要點(diǎn)
基于PCI Express總線的xHC與FPGA的直接通信
機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
ATS與列車(chē)通信報(bào)文分析
基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
多通道ARINC429總線檢查儀
陆丰市| 阿拉善右旗| 阿克苏市| 河曲县| 木兰县| 田林县| 辽宁省| 封丘县| 南溪县| 项城市| 大宁县| 青阳县| 铜鼓县| 新密市| 天柱县| 三亚市| 阆中市| 宜阳县| 龙泉市| 临汾市| 左贡县| 海南省| 林甸县| 富川| 阳谷县| 兰西县| 永宁县| 庄河市| 雅江县| 高淳县| 石渠县| 珲春市| 儋州市| 云南省| 隆德县| 文安县| 本溪市| 肥西县| 基隆市| 呼图壁县| 和顺县|