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