车身中央控制器的设计与实现
扫描二维码
随时随地手机看文章
摘要:采用单片机MC9S12XS128实现了一款车身中央控制器,实现了对中央集控门锁、外部灯光、内部灯光、雨刷的控制,同时通过RF技术实现了防盗报警功能和遥控门锁控制,通过LIN总线实现了对四个车窗的控制。
关键字:LIN;集控门锁;防盗报警引言
汽车电子已经进入大规模应用阶段,总线技术、智能传感、近距无线、射频通信等技术大大提升了汽车的智能水平,拓展了汽车的使用空间。根据其使用领域的不同,一般把汽车电子划分为车身控制系统、动力系统、行驶控制系统、信息娱乐系统四大部分,其中对于车身控制系统,一般采取集中式控制、分布式控制两种方案进行设计。
对于成本敏感的低端汽车而言,集中式控制能更好地控制成本,而对于有一定功能升级要求的中高端汽车,采用分布式系统便于功能的扩展和升级。现在汽车厂商一般会针对汽车配置级别的不同采用不同的方案,对某一车系的低配,其车身中央控制器的集中度更高一些,而对于高配,则把车身中央控制器的部分功能以单节点的形式实现,并添加部分智能化的功能,节点和车身中央控制器之间采用CAN总线或LIN总线进行通信[1],比如可以把中央控制器中的车窗升降功能分离出来,以单节点形式实现并实现智能化的车窗防夹手功能。
图1是某车型采用LIN总线设计实现的分布式车身控制系统,包括车身中央控制器(以下简称BCM)、四个车窗节点和两个传感器节点,其中BCM作为LIN主节点,接收来自车窗节点和传感器节点的状态信号并实现对车窗节点的控制,它是车身控制系统最主要的单元。以下结合为该车型开发的BCM的经验,详细介绍BCM的系统结构及其软硬件实现。
BCM系统结构
BCM是个典型的控制系统,其输入接口包括一系列开关信号和脉冲信号,控制对象包括门锁、灯光、雨刷、车窗、报警器,通过RF信号和遥控车钥匙通信,通过LIN总线和传感器节点及车窗节点进行通信,其系统结构如图2所示。
从图2可以看出,输出控制是BCM的核心模块,输入信号检测、通讯、防盗报警状态管理都是为输出控制服务的。以下就输入信号检测、输出控制、LIN通讯三方面描述其硬件设计及软件开发。
输入信号检测
根据输入信号的性质及其检测方式,BCM输入信号包括开关信号和脉冲信号。在电气特性上,这些信号都表现为高低电平形式的单根物理连线,其中车速信号和碰撞信号为有周期特性的脉冲信号,开关信号则时间离散,由外部输入(一般是人的操作)决定。
输入检测在硬件设计上比较简单,进行简单的限流和滤波[2],分压后直接接在单片机的IO引脚上即可,如图3所示。
在以组合逻辑形式出现的输出控制逻辑中,在条件A满足的情况下,激励B会触发控制C。开关信号的状态及其变化经常作为某个控制逻辑的条件和激励,所以对于这种在物理上表示为单根连线的开关量信号,在逻辑上则对应三个变量,分别表示该开关信号的当前状态及变化。如左转向灯开关对应于外部连接端口D3这个物理信号,在程序内部逻辑上对应的三个变量为:
Bool LeTurnSwitch;
Bool LeTurnSw_close_event;
Bool LeTurnSw_open_event;
LeTurnSwitch表示左转向灯开关的“当前状态”,LeftTurnSw_close_event表示该开关“从开启到关闭”的变化,LeftTurnSw_open_event则表示该开关“从闭合到开启”的变化。
设计一10ms的周期定时器,周期性读取IO状态,如果三次取值相同,则认为该状态稳定。如果发生沿跳变,同样也是三次取值相同才认为是有效的沿跳变,否则认为是一次抖动。这样既实现了软件消抖,又确定了开关信号所对应的三个变量的值。
输出控制
BCM的控制负载包括门锁电机、车灯、雨刷电机、报警喇叭和LED,输出控制不仅要实现对负载的功率驱动,还要提供一定的保护和故障诊断功能。对于车灯和电机负载,输出功率比较大,通过综合比较各种方案,选用英飞凌的智能功率芯片实现对车灯和电机的控制。下面以左右转向灯的输出控制为例,阐述智能功率芯片的特点和输出控制的实现。
BCM需要同时驱动前转向、后转向和侧转向灯,前后转向灯功率均为24W/12V,侧转向灯为6W/12V。经过比较,选择智能高端功率开关BTS5246实现对转向灯的控制。该芯片内部集成了功率驱动、电流检测、温度传感器等电路,提供双路高端输出,输出功率高达480W,完全可以满足转向灯功率要求,同时提供了完善的故障检测及保护功能。相比分立元件的方式,电路更为简单,工作频率更高,大大减小了电路板空间,并提高了模块的EMC性能。基于BTS5246的转向灯控制电路如图4所示。
在BCM的负载控制功能中,不仅要实现对负载的功率驱动,还要满足一定的时间特性。在转向灯控制中,需要实现对功率芯片BTS5246的开关控制,而且由于转向灯依工作模式的不同有两种闪烁频率80次/min和160次/min,需要实现定时和计时功能。
在BCM的负载控制中,无论是周期闪烁的转向灯、报警警示灯,PWM启动和熄灭的钥匙孔灯和室内顶灯,还是门锁电机和车窗电机等,其功率开关都是采取IO控制的方式,而且很多都具有时间特性。这样每个负载的控制信号对应两个变量,分别表示其IO控制和时间特性。以左转向灯控制为例:
#dene FASTFLASH 1
#dene SLOWFLASH 2
#dene SHUTDOWN 3
extern uchar LnLgt_Cyout;
extern Bool LnLgt_Port;
其中LftnLgt_Cyout表示左转向灯的输出及其时间特性,LftnLgt_Cyout=FASTFLASH 表示左转向灯以160次/min频率闪烁;LftnLgt_Cyout=SLOWFLASH表示左转向灯以80次/min频率闪烁;LftnLgt_Cyout=SHUTDOWN表示处于关断状态。LftnLgt_Port是CPU上控制左转向灯的IO端口,它直接控制BTS5246的功率开关,其接口函数为DrivePort(Driverport Drport,Bool Oper);其中Drport为输出控制端口宏定义,Oper有DRIVEON、DRIVEOFF两个取值,控制智能功率开关的开启与关闭。
作为分布式车身控制系统的主节点,BCM与其它节点通过LIN总线进行通讯,采用LIN物理层收发器TJA1021和MCU片上外设UART完成LIN接口电路的设计,如图5所示。TJA1021是Philips(编者注:现在是NXP公司)的LIN物理层芯片,波特率高达20kbit/s,实现总线波形整形和电平转换功能[3],具有很高的抗电磁干扰性和极低的电磁发射,可以满足汽车环境的苛刻要求。它内部集成从机端电阻,在从机节点应用中无须再外接电阻便可以实现LIN总线的阻抗匹配,BCM是LIN主节点,如图5所示,需要外接1k主机端电阻到VEE。
LIN总线数据采取SCI格式,将TJA1021的TXD和RXD连接到MCU的UART发送和接收引脚上,便可以在UART上以软件的形式实现LIN的数据链路层。由于LIN在物理上为单线形式,发送和接收都是在LIN线上进行的,所以发送也会触发接收,这样便可以将其数据链路层的实现统一到UART的接收处理函数中来。该部分可以根据LIN帧的格式以状态机的形式实现[4]。
BCM做为车身控制系统的LIN主节点,以时间片轮转的方式调度着LIN报文的传输,当时间片到达时,BCM发送包括间隔场、同步场和PID在内的帧头[5],然后由各个节点根据该PID决定接收数据场还是发送数据场。时间片的轮转是基于调度表实现的,定义如下形式的结构体实现对调度表条目的管理。
typedef struct
{
uchar handle;
uchar pid;
uchar mode;
uchar *data;
uchar datalen;
uchar ticks;
}l_sch_table_item;
其中handle为调度表条目索引,每次时间片轮转时加一,轮转到调度表表尾时切换到调度表表头继续轮转,pid为LIN报文的Protected ID,mode表示该帧数据场是由BCM发送还是由其他节点发送,data为数据场,datalen为数据场长度,ticks定义时间片长度即该帧和下一帧的时间间隔。
LIN帧调度表为l_sch_table_item结构体数组,根据当前调度表条目的ticks决定时间片计时时间,超时发生时,切换当前时间片,同时切换调度表条目,这样便实现了LIN报文的轮转调度。
结语
本文针对某车型分析了其车身控制系统结构,从输入信号检测、输出控制和LIN通讯三个方面,描述了其车身中央控制器的设计实现,该控制器经装车试验,运行良好,功能稳定,有很高的实用价值。