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