基于CAN總線(xiàn)的分布式電池管理系統(tǒng)
2.3 電量估算
電量估算采用實(shí)時(shí)電流積分的安時(shí)法進(jìn)行基本估算,然后通過(guò)對(duì)影響電池電量的溫度、自放電及老化等各種參數(shù)進(jìn)行修正,并考慮單塊電池間的不一致性,從而得到精確的電池組電量。
圖3 電 池 電 量 估 算 框 圖
3 CAN總線(xiàn)系統(tǒng)
3.1 CAN簡(jiǎn)介
CAN總線(xiàn)是現(xiàn)場(chǎng)總線(xiàn)的一種,是德國(guó)Bosch公司在1986年為解決現(xiàn)代汽車(chē)中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行高速數(shù)據(jù)通信總線(xiàn)。它采用了ISO/OSI模型的七層結(jié)構(gòu)中的物理層和數(shù)據(jù)鏈路層,具有較高的可靠性、實(shí)時(shí)性和靈活性。
CAN總線(xiàn)具有以下獨(dú)特的優(yōu)點(diǎn):
1)CAN能以多主方式工作,網(wǎng)絡(luò)上任意一個(gè)節(jié)點(diǎn)均可以在任意時(shí)刻向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,而不分主從,通信方式靈活;
2)CAN可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播等方式傳送和接受數(shù)據(jù),通信介質(zhì)采用雙絞線(xiàn)、同軸電纜或光纖,選擇靈活,通信距離最遠(yuǎn)可達(dá)10km/5kb/s,通信速率最高可達(dá)1Mb/s/40m。CAN上節(jié)點(diǎn)數(shù)取決于總線(xiàn)驅(qū)動(dòng)電路,實(shí)際可達(dá)110個(gè);
3)CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)關(guān)閉輸出的功能,切斷它與總線(xiàn)的聯(lián)系,以使總線(xiàn)上其它操作不受影響。采用NRZ編碼/解碼方式,并采用位填充技術(shù)。用戶(hù)接口簡(jiǎn)單,編程方便,很容易構(gòu)成用戶(hù)系統(tǒng);
4)CAN采用非破壞性仲裁技術(shù),當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù),有效避免了總線(xiàn)沖突。
5)CAN采用短幀結(jié)構(gòu),每一幀為8bite,傳輸時(shí)間短,受干擾的概率低,每幀信息都有CRC校驗(yàn)及其它檢錯(cuò)措施,保證了數(shù)據(jù)的出錯(cuò)率極低。
3.2 CAN總線(xiàn)設(shè)計(jì)
CAN總線(xiàn)總體結(jié)構(gòu)如圖4所示,在總線(xiàn)的兩端配置了兩個(gè)120Ω的電阻,其作用是總線(xiàn)匹配阻抗,可以增加總線(xiàn)傳輸?shù)姆€(wěn)定性和抗干擾能力,減少數(shù)據(jù)傳輸中的出錯(cuò)率。CAN總線(xiàn)節(jié)點(diǎn)結(jié)構(gòu)一般分為兩類(lèi):一類(lèi)采用CAN適配卡與PC機(jī)相連,實(shí)現(xiàn)上位機(jī)與CAN總線(xiàn)的通訊;另一類(lèi)則是由單片機(jī)、CAN控制器及CAN驅(qū)動(dòng)器構(gòu)成,作為一類(lèi)節(jié)點(diǎn)與CAN總線(xiàn)進(jìn)行數(shù)據(jù)傳輸。在本系統(tǒng)中,CAN控制器采用Philips公司生產(chǎn)的SJA1000和82C200,它作為一個(gè)發(fā)送、接受緩沖器,實(shí)現(xiàn)主控制器和總線(xiàn)之間的數(shù)據(jù)傳輸;CAN收發(fā)器采用PCA82C250芯片,它是CAN控制器和物理總線(xiàn)的接口,主要可以提供對(duì)總線(xiàn)的差動(dòng)發(fā)送能力和對(duì)CAN控制器的差動(dòng)接受能力。
圖4 CAN總 線(xiàn) 系 統(tǒng) 結(jié) 構(gòu) 圖
4 CAN總線(xiàn)的軟件設(shè)計(jì)
CAN總線(xiàn)的三層結(jié)構(gòu)模型為:物理層、數(shù)據(jù)鏈路層和應(yīng)用層。其中物理層和數(shù)據(jù)鏈路層的功能由SJA1000完成,系統(tǒng)的開(kāi)發(fā)主要在應(yīng)用層軟件的設(shè)計(jì)上,它主要由三個(gè)子程序:初始化子程序、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)程序。同時(shí),還包括一些數(shù)據(jù)溢出中斷以及幀出錯(cuò)的處理。
SJA1000在上電硬件復(fù)位之后,必須對(duì)其進(jìn)行軟件初始化之后才可以進(jìn)行數(shù)據(jù)通訊,初始化過(guò)程主要包括對(duì)其復(fù)位模式下配置時(shí)鐘分頻寄存器CDR、總線(xiàn)定時(shí)寄存器BTR0和BTR1、驗(yàn)收代碼寄存器ACR、驗(yàn)收屏蔽寄存器AMR及輸出控制寄存器OCR等,實(shí)現(xiàn)對(duì)總線(xiàn)的速率、驗(yàn)收屏蔽碼、輸出引腳驅(qū)動(dòng)方式、總線(xiàn)模式及時(shí)鐘分頻進(jìn)行定義。具體的流程如圖5所示。下面為SJA1000發(fā)送和接收數(shù)據(jù)的流程,基本過(guò)程為主控制器將數(shù)據(jù)保存到SJA1000發(fā)送緩沖器,然后對(duì)命令寄存器的發(fā)送請(qǐng)求TR標(biāo)志位進(jìn)行置位開(kāi)始發(fā)送;接收過(guò)程為SJA1000將從總線(xiàn)上接收到的數(shù)據(jù)存入接收緩沖器,通過(guò)其中斷標(biāo)志位通知主控制器來(lái)處理接收到的信息,接收完畢之后清空緩沖器,等待下次接收,具體的流程如圖6和圖7所示。
圖 5 CAN總 線(xiàn) 初 始 化
圖 6 CAN的 發(fā) 送 數(shù) 據(jù) 流 程
評(píng)論