由ATA狀態(tài)機(jī)可以看出,狀態(tài)跳轉(zhuǎn)的條件為解鎖閉鎖動(dòng)作、四門兩蓋狀態(tài)和點(diǎn)火信號(hào),ATA需要在狀態(tài)跳轉(zhuǎn)的過程中根據(jù)這些條件進(jìn)行相應(yīng)的提示和警示【3】。
在鎖車時(shí),根據(jù)四門兩蓋狀態(tài)以及點(diǎn)火信號(hào),判斷是否可以安全鎖車,如果可以,則執(zhí)行閉鎖動(dòng)作,同時(shí)轉(zhuǎn)向燈閃爍一次、喇叭鳴響一次;如果四門兩蓋存在打開或微開的狀況,不執(zhí)行閉鎖動(dòng)作,同時(shí)轉(zhuǎn)向燈閃爍三次、喇叭鳴響三次,提示車主檢查某個(gè)未關(guān)上的車門或行李箱或發(fā)動(dòng)機(jī)蓋。解鎖則比較簡單,轉(zhuǎn)向燈閃爍兩次以示區(qū)別即可。
在安全鎖車進(jìn)入防盜狀態(tài)后,BCM進(jìn)入低功耗模式,同時(shí)使能四門兩蓋及點(diǎn)火信號(hào)的開關(guān)中斷喚醒功能,當(dāng)存在非法進(jìn)入或非法點(diǎn)火的情況,會(huì)通過四門兩蓋或點(diǎn)火信號(hào)的開關(guān)狀態(tài)體現(xiàn)出來,這時(shí)喚醒CPU,同時(shí)啟動(dòng)聲光報(bào)警-轉(zhuǎn)向燈閃爍、喇叭鳴叫40s,循環(huán)四次,退出報(bào)警狀態(tài)則停止聲光報(bào)警。
對(duì)于四種ATA狀態(tài),則通過一個(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;
}
}
}
安全鎖車
安全鎖車是ATA單元的一個(gè)重要組成部分,如圖2所示,它也是進(jìn)入防盜狀態(tài)的關(guān)鍵觸發(fā)條件。在四門兩蓋全閉、點(diǎn)火信號(hào)無效的條件下,按下遙控閉鎖開關(guān)或轉(zhuǎn)動(dòng)前門鑰匙孔可以觸發(fā)安全鎖車。為了避免誤鎖車,需要對(duì)前門鑰匙閉鎖開關(guān)和遙控閉鎖開關(guān)進(jìn)行一定的消抖和過濾,同樣的情況也適用于解鎖操作,誤解鎖對(duì)于汽車安全的影響不言而喻【5】。
對(duì)于ATA單元來說,前門鑰匙閉鎖開關(guān)是一個(gè)物理開關(guān)信號(hào),遙控閉鎖開關(guān)按下時(shí)每隔一定周期會(huì)發(fā)送相應(yīng)的RF報(bào)文,在一定時(shí)間間隔內(nèi)檢測是否存在遙控閉鎖開關(guān)按下的RF報(bào)文可以判斷該開關(guān)是按下狀態(tài)還是松開狀態(tài),把它們統(tǒng)一為開關(guān)信號(hào),邏輯上對(duì)應(yīng)以下三個(gè)變量:switch_state開關(guān)狀態(tài)、swon_event無效到有效的變化、swoff_event有效到無效的變化【6】,需要閉鎖開關(guān)維持150ms的按下時(shí)間,才認(rèn)為是有效的閉鎖信號(hào),該部分的消抖程序原理是統(tǒng)計(jì)開關(guān)按下的維持時(shí)間是否超過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)開關(guān)按下,啟動(dòng)150ms的定時(shí)器,定時(shí)器超時(shí),CountOver=1,這時(shí)判斷開關(guān)在此150ms期間的有效次數(shù)ValidTimes是否為1,便可以判斷是否有效的閉鎖信號(hào)。
結(jié)語
本文設(shè)計(jì)的ATA單元以人機(jī)操作和汽車狀態(tài)兩個(gè)方面交互推進(jìn)車身防盜報(bào)警狀態(tài)的流轉(zhuǎn),邏輯嚴(yán)密,功能設(shè)計(jì)合理,準(zhǔn)確報(bào)警并有效避免了誤報(bào),是一個(gè)很好的防盜報(bào)警解決方案,有很好的實(shí)用價(jià)值和借鑒意義。
評(píng)論
查看更多