新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設(shè)計(jì)應(yīng)用 > 基于有限狀態(tài)機(jī)的車(chē)身防盜報(bào)警的實(shí)現(xiàn)

基于有限狀態(tài)機(jī)的車(chē)身防盜報(bào)警的實(shí)現(xiàn)

作者: 時(shí)間:2012-04-11 來(lái)源:網(wǎng)絡(luò) 收藏

引言:

本文引用地址:http://butianyuan.cn/article/196974.htm

隨著汽車(chē)保有量的增長(zhǎng),汽車(chē)安全防盜問(wèn)題愈加重要?,F(xiàn)在大部分車(chē)都實(shí)現(xiàn)了(anti thief alarm,縮寫(xiě)ATA)功能,主要是通過(guò)超聲波檢測(cè)的方式判斷是否存在非法進(jìn)入【1】,然后啟動(dòng)聲光報(bào)警。這種方式可以有效檢測(cè)出非法進(jìn)入,但也存在誤報(bào)的可能,給周邊環(huán)境帶來(lái)很大的困擾。在筆者為某車(chē)型設(shè)計(jì)的集成式控制器中,通過(guò)檢測(cè)解鎖閉鎖動(dòng)作、點(diǎn)火狀態(tài)、狀態(tài)和防盜狀態(tài)綜合判斷是否安全鎖車(chē)、是否暴力進(jìn)入以及是否非法點(diǎn)火,從而實(shí)現(xiàn)安全鎖車(chē)和功能,本文首先介紹單元(以下簡(jiǎn)稱ATA)的工作原理及其狀態(tài)機(jī)的設(shè)計(jì),然后介紹了聲光警示、安全鎖車(chē)的機(jī)制及其軟件實(shí)現(xiàn)。

ATA工作原理:

一個(gè)有效的ATA單元需要正確觸發(fā)報(bào)警警示動(dòng)作,同時(shí)避免誤觸發(fā)報(bào)警給用戶帶來(lái)的不便,這是通過(guò)判斷是否正常進(jìn)入車(chē)內(nèi)和正常點(diǎn)火實(shí)現(xiàn)的。

首先在進(jìn)行鎖車(chē)時(shí),通過(guò)喇叭和轉(zhuǎn)向燈提示用戶安全鎖車(chē),只有當(dāng)四門(mén)兩蓋狀態(tài)(四個(gè)車(chē)門(mén)開(kāi)關(guān)、發(fā)動(dòng)機(jī)蓋開(kāi)關(guān)、行李箱開(kāi)關(guān))全部為關(guān)閉狀態(tài)且點(diǎn)火信號(hào)無(wú)效時(shí)才能安全鎖車(chē)。安全鎖車(chē)后進(jìn)入防盜狀態(tài),對(duì)四門(mén)兩蓋狀態(tài)及點(diǎn)火信號(hào)進(jìn)行監(jiān)測(cè)【2】,如果未經(jīng)解鎖動(dòng)作而檢測(cè)到車(chē)門(mén)或行李箱或發(fā)動(dòng)機(jī)蓋被打開(kāi),則認(rèn)為是非法進(jìn)入,如果檢測(cè)到點(diǎn)火信號(hào)有效,則認(rèn)為是非法點(diǎn)火,這時(shí)通過(guò)喇叭和轉(zhuǎn)向燈啟動(dòng)聲光報(bào)警,進(jìn)行解鎖動(dòng)作或者在5秒中內(nèi)檢測(cè)到點(diǎn)火鑰匙ON/OFF切換兩次,停止報(bào)警回到正常狀態(tài)。ATA結(jié)構(gòu)如圖1所示:

11.jpg

圖1:ATA結(jié)構(gòu)示意圖

Figure 1:ATA Structure Schematic

ATA單元在鑰匙鎖車(chē)和解鎖動(dòng)作下進(jìn)行門(mén)鎖控制的同時(shí),以狀態(tài)機(jī)的形式實(shí)現(xiàn)防盜報(bào)警狀態(tài)的跳轉(zhuǎn),同時(shí)伴隨著一些警示動(dòng)作向用戶提示當(dāng)前的狀態(tài),下面首先對(duì)防盜報(bào)警狀態(tài)及其跳轉(zhuǎn)進(jìn)行分析,描述狀態(tài)跳轉(zhuǎn)的過(guò)程,然后描述車(chē)身狀態(tài)警示動(dòng)作的設(shè)計(jì)。

ATA狀態(tài)機(jī)設(shè)計(jì):

根據(jù)汽車(chē)使用方式和安全防盜的需要,設(shè)計(jì)以下幾個(gè)狀態(tài):正常狀態(tài)NORMAL、防盜狀態(tài)SECURITY、等待退出防盜狀態(tài)QUIT_SECURITY、報(bào)警狀態(tài)ALARM,正常狀態(tài)對(duì)應(yīng)汽車(chē)被正常使用的狀態(tài),防盜狀態(tài)對(duì)應(yīng)安全鎖車(chē)后的狀態(tài),等待退出防盜狀態(tài)是個(gè)中間暫態(tài),對(duì)應(yīng)在防盜狀態(tài)中,用戶解鎖車(chē)門(mén)而不打開(kāi)的情況,報(bào)警狀態(tài)對(duì)應(yīng)非法進(jìn)入或非法點(diǎn)火的狀態(tài)。下面以狀態(tài)機(jī)的方式介紹下這四種ATA狀態(tài)的跳轉(zhuǎn)。狀態(tài)圖如圖2所示:

22.jpg

圖2 ATA狀態(tài)圖

Figure 2:ATA State diagram

在四門(mén)兩蓋全閉、點(diǎn)火信號(hào)無(wú)效的條件下,鑰匙遙控閉鎖或前門(mén)閉鎖,ATA進(jìn)入SECURITY狀態(tài),此時(shí)啟動(dòng)對(duì)車(chē)身狀態(tài)和解鎖動(dòng)作的監(jiān)測(cè);在SECURITY狀態(tài)下檢測(cè)到四門(mén)兩蓋打開(kāi)或點(diǎn)火信號(hào)有效,進(jìn)入ALARM狀態(tài),這時(shí)啟動(dòng)聲光報(bào)警,在SECURITY狀態(tài)下解鎖,進(jìn)入QUIT_SECURITY狀態(tài);QUIT_SECURITY是一個(gè)中間暫態(tài),它至多維持20s時(shí)間,超時(shí)則自動(dòng)閉鎖并再次進(jìn)入SECURITY狀態(tài),這樣可以防止用戶誤按遙控解鎖鍵帶來(lái)的安全性問(wèn)題,如果在此期間車(chē)門(mén)打開(kāi),則進(jìn)入NORMAL狀態(tài);在ALARM狀態(tài)下,報(bào)警一個(gè)循環(huán)后檢測(cè)到四門(mén)兩蓋全閉且點(diǎn)火信號(hào)無(wú)效,返回SECURITY狀態(tài),也可以通過(guò)解鎖或者在5S內(nèi)點(diǎn)火信號(hào)ON/OFF切換兩次而進(jìn)入正常狀態(tài)。具體代碼設(shè)計(jì)在此不再贅述。

ATA警示動(dòng)作:

由ATA狀態(tài)機(jī)可以看出,狀態(tài)跳轉(zhuǎn)的條件為解鎖閉鎖動(dòng)作、四門(mén)兩蓋狀態(tài)和點(diǎn)火信號(hào),ATA需要在狀態(tài)跳轉(zhuǎn)的過(guò)程中根據(jù)這些條件進(jìn)行相應(yīng)的提示和警示【3】。

在鎖車(chē)時(shí),根據(jù)四門(mén)兩蓋狀態(tài)以及點(diǎn)火信號(hào),判斷是否可以安全鎖車(chē),如果可以,則執(zhí)行閉鎖動(dòng)作,同時(shí)轉(zhuǎn)向燈閃爍一次、喇叭鳴響一次;如果四門(mén)兩蓋存在打開(kāi)或微開(kāi)的狀況,不執(zhí)行閉鎖動(dòng)作,同時(shí)轉(zhuǎn)向燈閃爍三次、喇叭鳴響三次,提示車(chē)主檢查某個(gè)未關(guān)上的車(chē)門(mén)或行李箱或發(fā)動(dòng)機(jī)蓋。解鎖則比較簡(jiǎn)單,轉(zhuǎn)向燈閃爍兩次以示區(qū)別即可。

在安全鎖車(chē)進(jìn)入防盜狀態(tài)后,BCM進(jìn)入低功耗模式,同時(shí)使能四門(mén)兩蓋及點(diǎn)火信號(hào)的開(kāi)關(guān)中斷喚醒功能,當(dāng)存在非法進(jìn)入或非法點(diǎn)火的情況,會(huì)通過(guò)四門(mén)兩蓋或點(diǎn)火信號(hào)的開(kāi)關(guān)狀態(tài)體現(xiàn)出來(lái),這時(shí)喚醒CPU,同時(shí)啟動(dòng)聲光報(bào)警-轉(zhuǎn)向燈閃爍、喇叭鳴叫40s,循環(huán)四次,退出報(bào)警狀態(tài)則停止聲光報(bào)警。

對(duì)于四種ATA狀態(tài),則通過(guò)一個(gè)功率非常小的報(bào)警LED燈的閃爍方式進(jìn)行區(qū)分,NORMAL狀態(tài)下LED熄滅,SECURITY狀態(tài)和ALARM狀態(tài)采取周期為4s、占空比為10%的PWM方式閃爍,在暫態(tài)QUIT_SECURITY狀態(tài)下,LED以200ms為周期快速閃爍。

下面給出喇叭警示相關(guān)的代碼,其中喇叭控制DrivePort和時(shí)間計(jì)時(shí)部分的代碼TimerStart和TimerStop【4】等在此不再贅述。

void HornTweet(HornOper mode)

{

if(SILENCE==mode){

if(SILENCE!=Alarm_spkr_cyout){

DrivePort(ALARM_SPKR_OUT,DRIVEOFF);

TimerStop(SPKR_FLASH_MS);

TimerStop(SPKR_PERIOD_3S);

TimerStop(SPKR_SHOUT_30MS);

Alarm_spkr_cyout=SILENCE;

}

}else if((TWEETONCE==mode)||(TWEETTWICE==mode)||(TWEET3TIMES==mode)){

if(mode!=Alarm_spkr_cyout){

DrivePort(ALARM_SPKR_OUT,DRIVEON);

if(TWEETONCE==mode){

TimerStart(SPKR_FLASH_MS,360,0,1);

}else if(TWEETTWICE==mode){

TimerStart(SPKR_FLASH_MS,360,0,3);

}else if(TWEET3TIMES==mode){

TimerStart(SPKR_FLASH_MS,360,0,5);

}

Alarm_spkr_cyout=mode;

}

}

}

安全鎖車(chē)

安全鎖車(chē)是ATA單元的一個(gè)重要組成部分,如圖2所示,它也是進(jìn)入防盜狀態(tài)的關(guān)鍵觸發(fā)條件。在四門(mén)兩蓋全閉、點(diǎn)火信號(hào)無(wú)效的條件下,按下遙控閉鎖開(kāi)關(guān)或轉(zhuǎn)動(dòng)前門(mén)鑰匙孔可以觸發(fā)安全鎖車(chē)。為了避免誤鎖車(chē),需要對(duì)前門(mén)鑰匙閉鎖開(kāi)關(guān)和遙控閉鎖開(kāi)關(guān)進(jìn)行一定的消抖和過(guò)濾,同樣的情況也適用于解鎖操作,誤解鎖對(duì)于汽車(chē)安全的影響不言而喻【5】。

對(duì)于ATA單元來(lái)說(shuō),前門(mén)鑰匙閉鎖開(kāi)關(guān)是一個(gè)物理開(kāi)關(guān)信號(hào),遙控閉鎖開(kāi)關(guān)按下時(shí)每隔一定周期會(huì)發(fā)送相應(yīng)的RF報(bào)文,在一定時(shí)間間隔內(nèi)檢測(cè)是否存在遙控閉鎖開(kāi)關(guān)按下的RF報(bào)文可以判斷該開(kāi)關(guān)是按下?tīng)顟B(tài)還是松開(kāi)狀態(tài),把它們統(tǒng)一為開(kāi)關(guān)信號(hào),邏輯上對(duì)應(yīng)以下三個(gè)變量:switch_state開(kāi)關(guān)狀態(tài)、swon_event無(wú)效到有效的變化、swoff_event有效到無(wú)效的變化【6】,需要閉鎖開(kāi)關(guān)維持150ms的按下時(shí)間,才認(rèn)為是有效的閉鎖信號(hào),該部分的消抖程序原理是統(tǒng)計(jì)開(kāi)關(guān)按下的維持時(shí)間是否超過(guò)150ms,程序如下所示:

CountOver=CountTimes(FRONTDOORKEY_LOCK_SWITCH,FRONTDRKEY_LOCK_150MS,Fdkey_lock150ms_validtimes);

if(1==CountOver){

CountOver=0;

if(1==Fdkey_lock150ms_validtimes){

Fdkeydrivdr_lk_signal=1;

}

Fdkey_lock150ms_validtimes=0;

}else{

;

}

CountTimes函數(shù)如下所示:

uchar CountTimes(SwId SwitchId,TimerId TmId,uchar* ValidTimes)

{

uchar CountOver;

CountOver=0;

if(1==Sw[SwitchId].swon_event){

TimerStart(TmId,150,0,1);

}else if(1==Sw[SwitchId].swoff_event){

TimerStop(TmId);

}else{

;

}

if(1==TM[TmId].overflow_flag){

TM[TmId].overflow_flag=0;

CountOver=1;

if(ON==Sw[SwitchId].switch_state){

(*ValidTimes)++;

}else{

;

}

}else{

;

}

return CountOver;

}

當(dāng)開(kāi)關(guān)按下,啟動(dòng)150ms的定時(shí)器,定時(shí)器超時(shí),CountOver=1,這時(shí)判斷開(kāi)關(guān)在此150ms期間的有效次數(shù)ValidTimes是否為1,便可以判斷是否有效的閉鎖信號(hào)。

結(jié)語(yǔ)

本文設(shè)計(jì)的ATA單元以人機(jī)操作和汽車(chē)狀態(tài)兩個(gè)方面交互推進(jìn)車(chē)身防盜報(bào)警狀態(tài)的流轉(zhuǎn),邏輯嚴(yán)密,功能設(shè)計(jì)合理,準(zhǔn)確報(bào)警并有效避免了誤報(bào),是一個(gè)很好的防盜報(bào)警解決方案,有很好的實(shí)用價(jià)值和借鑒意義。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉