《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于有限狀態(tài)機的車身防盜報警的設(shè)計與實現(xiàn)
基于有限狀態(tài)機的車身防盜報警的設(shè)計與實現(xiàn)
摘要: 隨著汽車保有量的增長,汽車安全防盜問題愈加重要?,F(xiàn)在大部分車都實現(xiàn)了防盜報警(antithiefalarm,,縮寫ATA)功能,主要是通過超聲波檢測的方式判斷是否存在非法進入,,然后啟動聲光報警。這種方式可以有效檢測出非法進入,,但也存在誤報的可能,,給周邊環(huán)境帶來很大的困擾。
Abstract:
Key words :

  引言:

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

  ATA工作原理:

  一個有效的ATA單元需要正確觸發(fā)報警警示動作,,同時避免誤觸發(fā)報警給用戶帶來的不便,,這是通過判斷是否正常進入車內(nèi)和正常點火實現(xiàn)的。

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

 

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

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

 

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

 

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

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

 

  ATA狀態(tài)圖

  圖2 ATA狀態(tài)圖

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

 

  ATA警示動作:

 

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

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

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

  對于四種ATA狀態(tài),則通過一個功率非常小的報警LED燈的閃爍方式進行區(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和時間計時部分的代碼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單元的一個重要組成部分,如圖2所示,,它也是進入防盜狀態(tài)的關(guān)鍵觸發(fā)條件,。在四門兩蓋全閉、點火信號無效的條件下,,按下遙控閉鎖開關(guān)或轉(zhuǎn)動前門鑰匙孔可以觸發(fā)安全鎖車,。為了避免誤鎖車,需要對前門鑰匙閉鎖開關(guān)和遙控閉鎖開關(guān)進行一定的消抖和過濾,,同樣的情況也適用于解鎖操作,,誤解鎖對于汽車安全的影響不言而喻【5】。

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

  CountOver=CountTimes(FRONTDOORKEY_LOCK_SWITCH,,F(xiàn)RONTDRKEY_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;

  }

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

 

  結(jié)語

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。