基于CAN總線的并聯(lián)液壓混合動力車控制系統(tǒng)
節(jié)點報文接收器的接收濾波器由兩部分組成:接收碼寄存器(ACR)和接收屏蔽寄存器(AMR)。此兩個寄存器均為8位:驗收碼位(AC.7~AC.0),驗收屏蔽位(AM.7~AM.0)。當信息幀的報文標識符最高8位(ID.10~ID.3)滿足下列等式:
〔(ID.10~ID.3)=(AC.7~AC.0)〕或(AM.7~AM.0)=11111111B
則該信息幀將被報文接收器接收。
對于本系統(tǒng)的5個網(wǎng)絡節(jié)點,定義各節(jié)點的驗收碼和驗收屏蔽碼如下:
1#:ACR=81H,AMR=BEH;
2#:ACR=82H,AMR=BDH;
3#:ACR=84H,AMR=BBH;
4#:ACR=88H,AMR=B7H;
主機:ACR=A0H,AMR=9FH;
根據(jù)上述節(jié)點地址分配,各節(jié)點均可實現(xiàn)對其它任意節(jié)點組合的信息發(fā)送。如主機對1#、2#、3#節(jié)點同時發(fā)送信息,則主機發(fā)送信息幀的標識符高8位可寫為:87H或07H。
可見對報文接收器而言,ID.10=0或1沒有區(qū)別。但根據(jù)CAN總線協(xié)議,顯性位“0”將比隱性位“1”具有更高的總線優(yōu)先權(quán)。定義ID.10=0的信息幀為“快速幀”,ID.10=1的信息幀為“普通幀”。
因此,上述地址分配方法具有以下優(yōu)點:
(1)容易實現(xiàn)單點對其他點任意組合的信息發(fā)送;
(2)各節(jié)點具有不同的優(yōu)先級,從1#到5#到主機優(yōu)先級依次降低,保證發(fā)往關鍵節(jié)點的信號不被阻塞;
(3)每個節(jié)點都有兩種地址編碼,且優(yōu)先級不同,保證關鍵指令首先被接收。
3.2通訊方式及信息幀分類
由于分布式控制通訊量較大,對信息進行分類和規(guī)定相應的協(xié)議將有利于軟件的標準化,提高編程效率和程序的可靠性。首先,依據(jù)CAN總線協(xié)議標準,定義以C語言描述的CAN信息幀格式:
struct CAN_MSG
{
unsignedcharCAN_FLAG;
unsigned char CAN_DLC;
unsigned char CAN_DATA[8];
};
其中CAN_FLAG是信息目標標識符,CAN_DLC含遠程幀信號位、幀定義描述和數(shù)據(jù)幀長度信息,CAN_DATA為8字節(jié)數(shù)據(jù)。
依據(jù)信息的流向、總線優(yōu)先級和作用的不同,將通訊信息分為5類,其具體定義如下(按優(yōu)先級從低到高排列):
(1)遠程幀:由主機以一定節(jié)拍發(fā)往各控制器,擊活相應控制器的狀態(tài)幀發(fā)送。目的是使主機能在規(guī)定的時間內(nèi)獲得電動車的狀態(tài)信息,同時減少因各控制器自動發(fā)送狀態(tài)幀而引起總線阻塞。
格式:CAN_FLAG采用“普通幀”點對點編碼;CAN_DLC=0xF0;CAN_DATA為空。
(2)狀態(tài)幀:由控制器發(fā)往主機或其他控制器。狀態(tài)幀返回當前命令執(zhí)行狀態(tài)和采集量信息,作為上層控制器執(zhí)行下一步規(guī)劃的標志。
格式:CAN_FLAG采用“普通幀”點對點、點對多編碼;CAN_DLC=0xE8;CAN_DATA[0]為狀態(tài)或信息數(shù)據(jù)標識,確定后續(xù)數(shù)據(jù)的含義;CAN_DATA[1]~ CAN_DATA[7]為數(shù)據(jù)。
(3)間接命令幀:由主機發(fā)往控制器,或由某運行復合動作元的控制器發(fā)往其他控制器。間接命令幀含有復合動作元或動作元指令,接收方必須對命令進行分解才能產(chǎn)生驅(qū)動外設動作的控制元指令。
格式:CAN_FLAG采用“普通幀”點對點、點對多編碼;CAN_DLC=0x60+DLC,DLC等于有效數(shù)據(jù)的字節(jié)數(shù);CAN_DATA[0]為狀態(tài)或信息數(shù)據(jù)標識,確定后續(xù)數(shù)據(jù)的含義;CAN_DATA含有具體指令信息。
(4)直接命令幀:發(fā)送方向同間接命令幀。但該命令幀所含命令將被接收方直接執(zhí)行,驅(qū)動控制元動作,因此,應具有比間接命令幀更高的優(yōu)先級。
格式:CAN_FLAG采用“快速幀”點對點、點對多編碼;CAN_DLC=0x20+DLC,DLC等于有效數(shù)據(jù)的字節(jié)數(shù);CAN_DATA含有具體指令信息。
(5)緊急命令幀:從檢測到緊急狀態(tài)的控制發(fā)往其他相關控制器。此命令具有最高優(yōu)先級,用以在檢測到緊急狀態(tài)時,快速執(zhí)行相應動作、避免事故發(fā)生。該命令將被接收方直接運行。
格式:CAN_FLAG采用“快速幀”點對點、點對多編碼;CAN_DLC=0x00+DLC,DLC等于有效數(shù)據(jù)的字節(jié)數(shù);CAN_DATA含有具體指令信息。
3.3 軟件設計
CAN總線為分布式控制提供了良好的硬件基礎,使各節(jié)點的通訊不再是制約分布式控制實現(xiàn)的主要因素。整個系統(tǒng)從本質(zhì)上說已經(jīng)不存在主、從節(jié)點之分,整個系統(tǒng)的控制的控制已經(jīng)從傳統(tǒng)網(wǎng)絡中主節(jié)點的單一控制(這種體系結(jié)構(gòu)要求上位機具有大容量的程序存儲器和高運算速度,必然造成上位機的大型化),轉(zhuǎn)化為各節(jié)點的協(xié)調(diào)控制,整加了系統(tǒng)控制的靈活性,也同時降低了對主節(jié)點的要求。
圖3 控制器1#,3#輸入輸出參數(shù)
如上圖3所示,車輛信息采集模塊采集車速、發(fā)動機轉(zhuǎn)速、檔位信號(前進、空檔、倒車)、油門踏板及剎車踏板的狀態(tài)及幅度。液壓系統(tǒng)測控模塊采集蓄能器的壓力,控制離合器的吸合與斷開,通過油路控制(4個開關量)實現(xiàn)油路分配控制,最后通過液壓泵/馬達控制實現(xiàn)液壓系統(tǒng)回收/釋放功能及強度。
各節(jié)點控制器均能獨立完成部分命令分解和調(diào)用底層指令的功能。這樣,對于某一動作元而言,節(jié)點控制器將充當“命令主機”。下面以“液壓系統(tǒng)運行調(diào)節(jié)”這一復合動作元執(zhí)行時,1#,3#控制器流程圖(如圖4,圖5所示)為例,說明各控制器在分布式控制系統(tǒng)中的作用??梢钥闯?,在該指令執(zhí)行過程中,3#控制器充當了1#控制器的“命令主機”。
評論