基于有限状态机的车身防盗报警的实现 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于有限状态机的车身防盗报警的实现

来源:中国一卡通网  作者:不详  发布时间:2012-08-14 09:21:49  字体:[ ]

关键字:报警  防盗  控制器  检测  

摘   要:防盗报警功能的设计是汽车技术的一个重要部分,设计了一款车身中央控制器BCM,在实现车身控制的同时实现了防盗报警功能,首先分析了防盗报警单元的工作原理,然后结合汽车的使用方式介绍了汽车防盗报警状态及其状态机管理,最后介绍了防盗报警状态及其转换的提示及警示动作设计,经过装车试验,该防盗报警单元可以有效检测暴力进入,同时防止误报、漏报现象,运行稳定可靠。


  下面给出喇叭警示相关的代码,其中喇叭控制DrivePort和时间计时部分的代码TimerStart和TimerStop等在此不再赘述。

  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;

  }

  }

  4.安全锁车

  安全锁车是ATA单元的一个重要组成部分,如图2所示,它也是进入防盗状态的关键触发条件。在四门两盖全闭、点火信号无效的条件下,按下遥控闭锁开关或转动前门钥匙孔可以触发安全锁车。为了避免误锁车,需要对前门钥匙闭锁开关和遥控闭锁开关进行一定的消抖和过滤,同样的情况也适用于解锁操作,误解锁对于汽车安全的影响不言而喻。

  对于ATA单元来说,前门钥匙闭锁开关是一个物理开关信号,遥控闭锁开关按下时每隔一定周期会发送相应的RF报文,在一定时间间隔内检测是否存在遥控闭锁开关按下的RF报文可以判断该开关是按下状态还是松开状态,把它们统一为开关信号,逻辑上对应以下三个变量:switch_state开关状态、swon_event无效到有效的变化、swoff_event有效到无效的变化,需要闭锁开关维持150ms的按下时间,才认为是有效的闭锁信号,该部分的消抖程序原理是统计开关按下的维持时间是否超过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函数如下所示:

  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;

  }

  当开关按下,启动150ms的定时器,定时器超时,CountOver=1,这时判断开关在此150ms期间的有效次数ValidTimes是否为1,便可以判断是否有效的闭锁信号。

  5.结语

  本文设计的ATA单元以人机操作和汽车状态两个方面交互推进车身防盗报警状态的流转,逻辑严密,功能设计合理,准确报警并有效避免了误报,是一个很好的防盗报警解决方案,有很好的实用价值和借鉴意义。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖