專利名稱:基于can總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
一種基于CAN總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng),涉及工業(yè)現(xiàn)場監(jiān)控技術(shù)領(lǐng)域,尤其適用于用移動(dòng)終端如筆記本電腦對(duì)燃料電池汽車整車控制器高數(shù)據(jù)傳輸速率的現(xiàn)場進(jìn)行實(shí)時(shí)監(jiān)控及管理。
背景技術(shù):
燃料電池汽車采用分布式控制系統(tǒng)結(jié)構(gòu),各部件都具有獨(dú)立的控制器,整車控制器對(duì)整個(gè)系統(tǒng)進(jìn)行能量管理及各部件的協(xié)調(diào)控制。為滿足系統(tǒng)數(shù)據(jù)交換量大,實(shí)時(shí)性、可靠性要求高的特點(diǎn),整個(gè)分布式控制系統(tǒng)各控制器之間采用CAN總線進(jìn)行通訊。
在整車控制器控制算法的調(diào)試、匹配標(biāo)定過程中,需要對(duì)燃料電池汽車的工作狀態(tài)、工作參數(shù)進(jìn)行監(jiān)控,以了解各部件的運(yùn)行狀況,有時(shí)還需要在試驗(yàn)現(xiàn)場直接對(duì)控制參數(shù)進(jìn)行修改,程序結(jié)構(gòu)上的變化還需重新將控制程序?qū)懭肟刂破?,這就要求整車控制器有一個(gè)功能強(qiáng)大的監(jiān)控系統(tǒng)配合工作。
整車控制器監(jiān)控系統(tǒng)傳統(tǒng)上都是基于RS-232串口通信協(xié)議開發(fā)的,串口通信在實(shí)車試驗(yàn)環(huán)境中存在著數(shù)據(jù)傳輸可靠性差、傳輸速率低等缺點(diǎn),由于傳輸速率低造成控制器與上位機(jī)的SCI通訊任務(wù)重,限制了參數(shù)傳輸?shù)臄?shù)量。
監(jiān)控系統(tǒng)的上位機(jī)部分一般采用VC、LabView等軟件開發(fā),支持筆記本電腦PCMCIA插槽的CAN通訊卡一般也帶有相應(yīng)的底層驅(qū)動(dòng)程序?;贛atlab軟件的上位機(jī)監(jiān)控,可以利用其強(qiáng)大的數(shù)據(jù)處理、計(jì)算功能,對(duì)系統(tǒng)動(dòng)態(tài)頻率特性等進(jìn)行分析,加快控制參數(shù)匹配標(biāo)定過程,并與基于Matlab/Simulink環(huán)境的控制器控制算法的開發(fā)及其離線、實(shí)時(shí)仿真測試融為一體,加快整車控制器開發(fā)周期。但目前市場上各種PCMCIA CAN通訊卡底層驅(qū)動(dòng)程序均不直接支持Matlab環(huán)境,需對(duì)底層驅(qū)動(dòng)程序進(jìn)行重開發(fā)。
發(fā)明內(nèi)容
本實(shí)用新型的目的在于針對(duì)目前整車控制器監(jiān)控系統(tǒng)存在的上述問題,提供一種新的基于CAN總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng),以滿足燃料電池整車控制器開發(fā)的需要。
本實(shí)用新型所提出的基于CAN總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng)包括三個(gè)部分上位機(jī)、CAN卡及CAN總線和下位機(jī),上位機(jī)所帶的PCMCIA接口通過CAN卡,CAN總線與下位機(jī)的CAN接口相連。
所述上位機(jī)通過對(duì)PCMCIA CAN卡底層驅(qū)動(dòng)程序的重開發(fā),實(shí)現(xiàn)了基于Matlab軟件平臺(tái)對(duì)CAN總線通訊的控制,從而能夠?qū)θ剂想姵仄囌嘋AN網(wǎng)絡(luò)和整車控制器控制參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測和數(shù)據(jù)存儲(chǔ);上位機(jī)通過發(fā)送請(qǐng)求字和控制參數(shù)地址的方式實(shí)現(xiàn)了對(duì)控制器控制參數(shù)的在線匹配標(biāo)定,整車控制器通過所述的映射執(zhí)行代碼方式實(shí)現(xiàn)了基于CAN總線通訊的在線編程功能。
所述CAN卡對(duì)其底層驅(qū)動(dòng)程序進(jìn)行重開發(fā),利用Matlab的C語言S-function函數(shù)功能在S-function函數(shù)中對(duì)原CAN卡動(dòng)態(tài)連接庫進(jìn)行動(dòng)態(tài)調(diào)用,并對(duì)底層驅(qū)動(dòng)函數(shù)輸入輸出變量進(jìn)行重新封裝,使其符合Matlab的變量類型,生成新的動(dòng)態(tài)鏈接庫,從而實(shí)現(xiàn)了上位機(jī)Matlab監(jiān)控程序?qū)AN卡底層驅(qū)動(dòng)函數(shù)的間接調(diào)用。
所述的下位機(jī)是一個(gè)整車控制器,主要由控制器主芯片,F(xiàn)lash存儲(chǔ)器和RAM存儲(chǔ)器及相關(guān)電路組成,控制器主芯片的輸出與Flash存儲(chǔ)器和RAM存儲(chǔ)器的輸入相連。下位機(jī)整車控制器分配兩個(gè)CAN數(shù)據(jù)緩沖區(qū)用于監(jiān)控系統(tǒng),每一個(gè)均可以獨(dú)立生成中斷,分別接收和發(fā)送上位機(jī)數(shù)據(jù)。
所述的整車控制器在線匹配標(biāo)定和在線編程,上下位機(jī)均通過握手確認(rèn)過程以防止誤操作,并發(fā)送相應(yīng)的請(qǐng)求字給下位機(jī);在線匹配過程中,下位機(jī)根據(jù)接收到的控制參數(shù)絕對(duì)地址及數(shù)據(jù)長度,進(jìn)行控制參數(shù)修改;在線編程過程中,下位機(jī)采用子函數(shù)映射的方法,先將實(shí)現(xiàn)編程功能的各子函數(shù)拷貝到RAM存儲(chǔ)器中,通過計(jì)算相對(duì)地址得到各子函數(shù)的入口地址,再跳轉(zhuǎn)至映射后的地址執(zhí)行相應(yīng)的指令,對(duì)Flash存儲(chǔ)器先進(jìn)行擦除,然后通過與上位機(jī)的CAN通訊將目標(biāo)程序代碼寫入Flash中,程序?qū)懲晡帐执_認(rèn)后再跳轉(zhuǎn)到Flash程序入口地址,控制器復(fù)位重新從Flash引導(dǎo)。
本實(shí)用新型運(yùn)用CAN總線技術(shù),結(jié)合Matlab軟件平臺(tái)實(shí)現(xiàn)了一種燃料電池汽車整車控制器監(jiān)控系統(tǒng),其上位機(jī)尤其可以使用但不限于移動(dòng)終端(如筆記本電腦),可以實(shí)現(xiàn)高數(shù)據(jù)傳輸速率現(xiàn)場實(shí)時(shí)監(jiān)控和管理,其主要效果有a)CAN總線傳輸速率高,容錯(cuò)性能好,燃料電池整車控制器監(jiān)控系統(tǒng)抗干擾能力加強(qiáng)。
b)利用筆記本電腦進(jìn)行監(jiān)控時(shí),應(yīng)用場所靈活,便于上車試驗(yàn)調(diào)試。
c)利用了燃料電池汽車控制系統(tǒng)CAN網(wǎng)絡(luò)通訊結(jié)構(gòu),對(duì)部件的參數(shù)直接從CAN網(wǎng)絡(luò)接收,大大減輕了整車控制器的監(jiān)控通訊負(fù)擔(dān)。
d)基于CAN總線的在線匹配標(biāo)定及在線編程,實(shí)現(xiàn)了整車控制算法試驗(yàn)現(xiàn)場的靈活調(diào)試。
圖1是燃料電池整車控制器監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖。
圖2是上位機(jī)Matlab監(jiān)控程序的開發(fā)流程。
圖3是在線編程原理示意圖。
圖4是Flash編程函數(shù)映射方式示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本實(shí)用新型具體實(shí)施做進(jìn)一步說明。
圖1所示為燃料電池整車控制器監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖。上位機(jī)是一臺(tái)具有PCMCIA口的筆記本電腦,通過PCMCIA CAN卡與整車控制器及整車CAN網(wǎng)絡(luò)相連,所述CAN卡型號(hào)可為ICPCM-CO??刂破髦餍酒瑑?yōu)選為MC68376單片機(jī),它具有一路CAN,直接與CAN總線相連,其CAN模塊有16個(gè)接收發(fā)送數(shù)據(jù)緩沖區(qū),每一個(gè)均可以獨(dú)立生成中斷,其中分配兩個(gè)CAN數(shù)據(jù)緩沖區(qū)用于監(jiān)控系統(tǒng),分別接收和發(fā)送上位機(jī)數(shù)據(jù),接收數(shù)據(jù)由中斷服務(wù)子函數(shù)完成,發(fā)送緩沖區(qū)每個(gè)控制周期均向CAN總線發(fā)送控制參數(shù),兩個(gè)CAN數(shù)據(jù)幀ID的優(yōu)先級(jí)別設(shè)置應(yīng)比燃料電池汽車控制系統(tǒng)中其它所有部件節(jié)點(diǎn)的優(yōu)先級(jí)別低,以保證監(jiān)控系統(tǒng)不與整車實(shí)時(shí)控制沖突。擴(kuò)展的Flash只讀存儲(chǔ)器芯片可為兩片AM29F040。
上位機(jī)Matlab軟件雖然支持通過API函數(shù)對(duì)C語言動(dòng)態(tài)鏈接庫的調(diào)用,但只能對(duì)具有簡單輸入、輸出參數(shù)的函數(shù)進(jìn)行調(diào)用,而不支持對(duì)具有復(fù)雜結(jié)構(gòu)體函數(shù)的調(diào)用,利用Matlab的S-function函數(shù)功能進(jìn)行底層驅(qū)動(dòng)函數(shù)的重開發(fā),可實(shí)現(xiàn)CAN卡緩沖區(qū)數(shù)據(jù)的間接調(diào)用,S-function實(shí)現(xiàn)步驟如下a)調(diào)用CAN卡底層驅(qū)動(dòng)動(dòng)態(tài)鏈接庫,將底層驅(qū)動(dòng)函數(shù)載入,得到動(dòng)態(tài)鏈接庫中各子函數(shù)的句柄,通過句柄實(shí)現(xiàn)對(duì)子函數(shù)的調(diào)用。
下面例子獲得CAN接收數(shù)據(jù)子函數(shù)的句柄typedef int(*_ICPCM_SendCANMessage)(CANBUFFER *buffer);hDLL=LoadLibrary(″icpcm_wdm.dll″);ICPCM_GetCANMessages=(_ICPCM_GetCANMessages)GetProcAddress(hDLL,″ICPCM_GetCANMessages″);b)對(duì)CAN初始化、接收、發(fā)送CAN數(shù)據(jù)等子函數(shù)進(jìn)行重開發(fā),進(jìn)行輸入輸出變量的重新封裝,使其符合Matlab環(huán)境下的變量類型。
下面例子對(duì)CAN接收數(shù)據(jù)子函數(shù)進(jìn)行重開發(fā)_declspec(dllexport)mxArray*ReadMsg(int len)//返回?cái)?shù)據(jù)為Matlab數(shù)組類型{ CANBUFFER canmsg[MAX_READ_MESSAGES];//CANBUFFER為結(jié)構(gòu)體數(shù)據(jù)類型int result,i,j,dims[]={1,0};unsigned char*temp1;mxArray*temp;result=ICPCM_GetCANMessages(canmsg,MAX_READ_MESSAGES);dims[1]=26*result;temp=mxCreateNumericArray(2,dims,mxUINT8_CLASS,mxREAL);//建立可變長度數(shù)組temp1=&canmsg;
memcpy(mxGetPr(temp),temp1,result*26*sizeof(unsigned char));//將原始CAN數(shù)據(jù)拷貝到Matlab數(shù)組中return temp;}c)用S-function編譯重新封裝之后的底層驅(qū)動(dòng)程序,生成Matlab環(huán)境下可直接調(diào)用的動(dòng)態(tài)鏈接庫。
mex canmonitor.c;上位機(jī)Matlab監(jiān)控程序的開發(fā)流程如圖2所示,上位機(jī)在Matlab中利用loadlibrary函數(shù)載入動(dòng)態(tài)鏈接庫,利用calllib函數(shù)即可對(duì)所有動(dòng)態(tài)庫子函數(shù)進(jìn)行調(diào)用,對(duì)CAN進(jìn)行初始化設(shè)置,如格式、波特率等,如果是實(shí)時(shí)監(jiān)控模式,上位機(jī)通過查詢方式接收CAN卡數(shù)據(jù)緩沖區(qū)中數(shù)據(jù),并利用Matlab的GUI圖形編程功能,對(duì)控制參數(shù)及整車CAN網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)監(jiān)測顯示,如果是在線編程和在線匹配標(biāo)定模式,將與下位機(jī)配合工作。監(jiān)控結(jié)束時(shí),利用unloadlibrary函數(shù)卸載動(dòng)態(tài)鏈接庫。
圖3所示為在線編程原理示意圖,整車控制器檢查整車鑰匙位置,如果處于關(guān)狀態(tài),表明整車處于停止?fàn)顟B(tài),可以進(jìn)行控制程序的修改,下位機(jī)CAN監(jiān)控接收數(shù)據(jù)緩沖區(qū)打開中斷,以響應(yīng)上位機(jī)在線編程的請(qǐng)求。編程開鎖有一個(gè)上下位機(jī)握手過程,以防止誤操作,保證下位機(jī)在線編程的代碼不被意外的激活。通常下位機(jī)的應(yīng)用程序都是在Flash ROM里執(zhí)行的,在編程過程中采用子函數(shù)映射的方法,如圖4所示,將在線編程所需的功能函數(shù)代碼拷貝到RAM中,通過計(jì)算相對(duì)地址得到各子函數(shù)在RAM中的入口地址,再跳轉(zhuǎn)至映射后的地址執(zhí)行相應(yīng)的指令,進(jìn)行Flash編程。Flash編程過程中,上位機(jī)每個(gè)編程循環(huán)里讀取一行目標(biāo)代碼,獲取代碼地址并且完成解碼后,通過CAN總線發(fā)送給下位機(jī)。下位機(jī)控制器接收到編程結(jié)束數(shù)據(jù)幀后,跳轉(zhuǎn)到Flash程序入口地址,控制器復(fù)位重新從Flash引導(dǎo)。
在線匹配標(biāo)定過程中,上下位機(jī)通過與以上相似的握手確認(rèn)過程后,上位機(jī)開始發(fā)送信息,其CAN數(shù)據(jù)幀的定義為前兩個(gè)字節(jié)為Flash絕對(duì)地址、第三個(gè)字節(jié)為數(shù)據(jù)長度,剩下為數(shù)據(jù)。下位機(jī)根據(jù)接收到的數(shù)據(jù)對(duì)控制參數(shù)相應(yīng)存儲(chǔ)器地址進(jìn)行在線數(shù)據(jù)修改。
權(quán)利要求1.一種基于CAN總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng),其特征在于所述的整車控制器監(jiān)控系統(tǒng)包括三個(gè)部分上位機(jī)、CAN卡及CAN總線和下位機(jī),上位機(jī)所帶的PCMCIA接口通過CAN卡、CAN總線與下位機(jī)的CAN接口相連。
2.根據(jù)權(quán)利要求1所述的燃料電池汽車整車控制器監(jiān)控系統(tǒng),所述的下位機(jī)是一個(gè)整車控制器,主要由控制器主芯片,F(xiàn)lash存儲(chǔ)器和RAM存儲(chǔ)器及相關(guān)電路組成,控制器主芯片的輸出與Flash存儲(chǔ)器和RAM存儲(chǔ)器的輸入相連。
3.根據(jù)權(quán)利要求2所述的燃料電池汽車整車控制器監(jiān)控系統(tǒng),其特征在于其控制器主芯片采用MC68376單片機(jī),F(xiàn)lash存儲(chǔ)器和RAM存儲(chǔ)器采用AM29F040。
專利摘要一種基于CAN總線的燃料電池汽車整車控制器監(jiān)控系統(tǒng),尤其適用于用移動(dòng)終端如筆記本電腦對(duì)燃料電池汽車整車控制器高數(shù)據(jù)傳輸速率現(xiàn)場進(jìn)行實(shí)時(shí)監(jiān)控及管理。系統(tǒng)包括三個(gè)部分上位機(jī)、CAN卡及CAN總線和下位機(jī),上位機(jī)的PCMCIA接口通過CAN卡,CAN總線與下位機(jī)的CAN接口相連,上位機(jī)發(fā)送請(qǐng)求字和控制參數(shù)地址對(duì)控制器控制參數(shù)在線匹配標(biāo)定;下位機(jī)整車控制器通過映射執(zhí)行代碼實(shí)現(xiàn)CAN總線通訊的在線編程。本實(shí)用新型運(yùn)用CAN總線技術(shù),結(jié)合Matlab軟件平臺(tái)可以實(shí)現(xiàn)高數(shù)據(jù)傳輸速率現(xiàn)場實(shí)時(shí)監(jiān)控和管理,系統(tǒng)減輕了整車控制器的監(jiān)控通訊負(fù)擔(dān),抗干擾能力加強(qiáng),應(yīng)用場所靈活,實(shí)現(xiàn)了整車控制算法試驗(yàn)現(xiàn)場的靈活調(diào)試。
文檔編號(hào)G06F9/00GK2743897SQ20042009275
公開日2005年11月30日 申請(qǐng)日期2004年9月17日 優(yōu)先權(quán)日2004年9月17日
發(fā)明者何彬, 李建秋, 賈要勤, 歐陽明高 申請(qǐng)人:清華大學(xué)