汽车电子化是现代汽车发展的重要标志。汽车电子的广泛使用,使现代汽车比以往汽车变得更节能、更安全、更舒适。但当汽车内部电子设备采用传统的点对点方式连接时,电子设备的不断增加会导致连线大幅度增加,致使车辆重量随之增加,并削弱了车辆性能。为适应汽车电子设备迅速增加的需求,汽车电子网络应运而生。汽车内部已经基本形成了从低速到高速、从电缆到光纤、从有线到无线、从离散ECU的数据通信到中央智能控制的复杂网络系统。其中,在车身低速电子设备连接方面,低速CAN总线和LIN总线构成的混合网络正受到越来越广泛的关注和使用。汽车门锁作为汽车车身的重要部件之一,实现基于CAN/LIN网络的汽车门锁单元,有助于提高汽车车身的总体电子化水平。
汽车门锁是汽车车身的重要部件之一,从汽车发明至今,经历了机械式、电气化至电子化的发展过程。汽车电子门锁是采用电子电路控制的以电磁铁、微型电动机和锁体作为执行机构的机电一体化的安全装置。采用汽车电子门锁,驾驶员可以不用金属钥匙就能方便地开关汽车车门,而且能有效增强汽车门锁的安全性能。相对于执行机构,汽车电子门锁的电子线路部分具有极大的灵活性,由此可以将汽车电子门锁分为按键式、拨盘式、电子钥匙式、触摸式、生物特征式等多种类型。其中,采用电子钥匙的无线遥控锁具有安全、可靠、方案成熟等优点,因此经常被用作汽车电子门锁。传统的汽车电子门锁采用点对点的方式与汽车车身的其它电子设备互联,伴随着汽车电子网络化的趋势,汽车电子门锁开始逐渐采用网络化的结构。
1 汽车门锁模块的系统结构
在本系统中,汽车车身控制网络采用CAN/LIN混合结构,按功能划分可分为各个模块:除门锁模块外,车身系统还包括座椅模块、控制面板模块以及灯组模块。模块之间通过CAN总线互联,各个模块内部使用LIN总线互联。
门锁模块是车身电子设备中重要的一部分。通过主节点管理的无线遥控门锁,可以很便捷地对各个车门的智能电控单元进行控制,同时及时反馈节点运行状态信息,极大地方便了操作和维护。自动门锁单元中包括一个主节点和从节点(四个门锁单元),其结构如图1所示。
主节点作为车身网络中门锁模块的网关,将各种控制命令、车身状态数据在LIN总线与CAN总线之间转发,使LIN总线与CAN总线无缝结合为一个整体。
门锁模块主节点的另一项主要功能是管理门锁。门锁采用无线电遥控并结合按键控制的控制方式。按键安装在车身内部,当驾驶员处于车身内部时,可以通过按键控制车门的开/关锁,此时控制单元不需要进行开锁密码检查。另外,车锁也可以以无线遥控方式进行控制。该锁由微型发射机、接收天线和微控制器等组成。微型发射机安装在钥匙手柄里, 使用锂电池供电并具有晶体振荡电路, 能发出稳定的约40MHz的载波。密码信号发生器提供一个调频代码,天线接收装置接收信号后,送入信号接收器进行放大、调频、检波和信号波形修正, 最后再输入到比较电路, 与主门锁单元中存储的密码进行比较, 如果一致就执行开/关锁。
主节点通过LIN总线给各个子门锁控制单元发送命令来控制开/关锁,子节点接收到命令后,触发电动机传动机构, 操纵车门开锁或关锁。若在10分钟内有15个或更多的密码输入错误,则系统就认为有人企图窃车,于是停止接收任何信号,包括正确的密码信号。系统处于锁死状态后,驾驶员必须用车门的机械钥匙插入车锁孔,才能开启车门。系统从锁死状态恢复到正常工作状态,可以通过复位门锁控制模块实现。另外,如果开锁后,30秒后未打开车门,则车门将自动关锁。
子节点通过LIN总线与主节点互联,接收主节点发送的命令或返回反馈信息。实际使用的门锁是电机式的自动车门锁,该锁由可逆式电动机、传动装置及锁体总成构成。其工作原理是:由电动机带动齿轮齿条,进而驱动锁体总成,实现锁紧或开启车门。因此,门锁模块子节点的功能主要是通过驱动电路控制可逆式电动机的正转或反转,实现开/关锁。
2 汽车门锁模块的硬件设计
汽车门锁模块由主节点和若干子节点构成,如图2所示。主节点与子节点之间的通信采用LIN总线,LIN总线通信基于标准的SCI(UART)硬件接口、单主多从且不需要稳定时基,仅需要三根线连接(电源线、地线、数据线),有效地降低了硬件成本。微控制器一般都具有SCI(UART)接口,因此只需在微控制器外围加上LIN总线收发芯片,就能构成一个LIN总线上的通信节点。LIN总线收发器采用Motorola公司的MC33399。MC33399符合LIN规范,能与中速网络中的多个节点进行数字通信,波形修正可减少EMI干扰。另外,MC33399具有低电流睡眠模式和专门的叫醒输入管脚,使LIN控制节点可以处于低功耗运行状态[3]。
门锁单元的主节点的微控制器采用Motorola公司的16位微控制器单元MC9S12DP256。该芯片内部模块包括16位CPU(HCS12 CPU)、256K字节的Flash EEPROM、12.0K字节的RAM、4.0K字节的EEPROM、两个串行通信接口(SCI)、二十九个数字I/O通道、五个CAN2.0 A/B软件兼容模型(MSCAN12)等。因此,控制节点无需再外扩存储单元,I/O资源也完全满足车身控制的需求,CAN通信接口可以直接使用片上自带的CAN模块。
遥控门锁采用NORDIC公司的nRF401无线收发芯片。nRF401芯片所需扩展的外围器件较少,可以直接连接单片机串口发送接收数据,无需对数据进行曼彻斯特编码,降低了编程和使用的难度。nRF401芯片采用4MHz晶振产生振荡频率,经频率合成器合成为40MHz的工作频率,天线使用微带天线直接设计在电路板上,通过Din、Dout接口与MC9S12DP256连接。
门锁单元子节点微控制器采用PHILIPS公司的低成本FLASH单片机P89LPC904。P89LPC904内部自带1KB Flash程序存储器、128字节RAM数据存储器、高精度的内部RC振荡器(不需要外接振荡器件),具有两个通道的8位A/D输入。同时,它具有空闲和掉电两种不同的掉电节电模式。在LIN总线空闲的时候,系统能切换到节电模式。
由于在应用中要驱动小马达,门锁单元需要使用到Motorola的H-bridge电机驱动芯片。微控制器的输出接口不能直接驱动电机,需要通过MC33887的电源IC芯片给门锁单元提供驱动能力。在电机驱动过程中,也会把电流值适时地转换成电压信号反馈给P89LPC904,供门锁控制中的故障检测之用。
3 车锁模块的软件设计
系统软件设计包括主节点与子节点两部分。
车锁模块主节点通过CAN总线接收车身网络总控制单元的控制命令,并返回当前车锁的开关状态以及故障信息。同时,它向车锁模块的子节点发送控制命令,接收状态信息。主节点需要对CAN和LIN总线间的数据帧进行合适的转换。
系统中的CAN总线采用CAN2.0B标准帧格式通信。标准格式的CAN2.0B数据帧包括仲裁场、控制场、数据场三部分。SOF(帧起始)标志数据帧和远程帧的开始,由一个显位构成。仲裁场由标识符和RTR(远程发送请求位)组成。RTR在数据帧为显位,而在远程帧中必须为隐位,门锁单元主节点的标识符为0x50。控制场中,标准帧的IDE位为显位,r0为保留位,DLC为数据长度码[4]。CAN2.0B标准帧格式如图3所示。
LIN总线通信通过报文帧进行,报文帧格式如图4所示。同步间隙表示新报文帧的开始,同步间隙由主任务(主节点内)产生。同步场的字节域为0x55。从任务总是能检测到同步间隙以及同步场字节流。如果检测到新的同步间隙、同步场,则中止正在进行的传输任务,而开始新的报文帧传输。报文头的标识符由6bit组成,取值范围为0到63。除去少数保留特定用途之外,均可以用作通信ID,门锁单元中的LIN节点的标识符分配如表1所示。
主节点通过LIN总线发送LOCK_DOOR帧给各个门锁单元,其中包括对门锁的锁定/解锁命令。子节点接收报文帧后,解析帧中的数据域,数据域中的第一字节标记解锁指令,bit0对应左前门,bit1对应右前门,bit2对应左后门,bit3对应右后门。第二字节标记锁定指令,对应关系与解锁指令相同。两个后门锁LOCK_R_L和LOCK_R_R则发送响应帧LOCK_DOOR_RL_STATUS和LOCK_DOOR_RR_STATUS来向主节点反馈系统故障和门锁马达执行时的故障信息。两个前门锁除了发送这些信息外,还发送门锁开关状态信息给主节点,主节点利用这些信息可以再次产生锁定/解锁命令。
另外,主节点通过CAN总线接收到车身总控制单元的远程帧后,需回复数据帧,通知总控制单元当前各个门锁状态。当门锁单元由于输入错误密码而处于死锁状态时,接收到总控制单元的复位命令帧后,门锁单元主节点恢复接收密码信号。
遥控门锁与钥匙之间通过简单的通信协议进行开/关锁,包括一个字节的帧头0x80、2bit的命令、6bit的帧长、数据域以及校验和。对于遥控开/关锁命令的数据域即开/关锁命令密码,需要进行一定的加密。实际上,遥控门锁和钥匙各持有一个密钥,钥匙首先从遥控门锁处获取一个随机生成的明钥,然后利用明钥和密钥对车门密码进行加密,然后发送给遥控门锁,遥控门锁根据明钥和密钥对接收数据进行解密,获得密码后验证正误。基于安全可靠方面的考虑,发送明钥、发送密码等一系列过程都是基于连接的通信。遥控开关锁命令帧格式如图5所示。命令字段划分为:0x00请求获得明钥,0x01发送密码开锁,0x02发送密码关锁。
主节点应用程序基于μC/OS实时操作系统。MC9S12DP256微控制器上已移植了μC/OS实时操作系统,μC/OS内核小巧、高效,对系统性能开销很小;而且基于多任务的操作系统开发应用程序可使得开发更为快捷、容易,同时增强了可移植性。主节点功能划分为不同任务各自独立执行。主节点在完成对CAN、LIN通信接口以及nRF401芯片的初始化后,创建任务进程OS_CAN_PROCESS、OS_LIN_PROCESS、OS_WIRELESS_PROCESS并使它们等待信号量,获得信号量后执行各自的操作。其中,它们等待的信号量由相应的中断处理程序发出,驱动各个任务执行,执行完任务后,继续在信号量上等待。OS_MAIN_TASK是主节点的主任务,等待消息队列,根据返回的消息来区分不同的操作状态。
OS_CAN_PROCESS与OS_LIN_PROCESS为CAN、LIN总线的数据接收任务,接收数据后放入缓冲区,并设置状态位,然后通过消息队列通知OS_MAIN_TASK进行适当的处理。CAN、LIN总线数据发送则直接通过OS_MAIN_TASK发起。
OS_WIRELESS_PROCESS管理无线通信的连接。无线连接具有多个状态,包括LISTEN、CONNECTED、FIRST_SEND、CLOSED等,分别代表等待连接、连接建立、明钥已发送、连接关闭。无线连接状态切换时需要通过消息队列通知OS_MAIN_ TASK,主任务根据不同连接状态进行管理控制。OS_MAIN_TASK任务流程如图6所示。
子节点程序相对简单,同时子节点控制芯片的能力较弱,因此程序设计基于前后台方式。子节点通过LIN总线接收主节点的命令帧后,通过驱动电路带动电机开/关锁。在开/关锁的过程中监控电机电流,检查是否发生故障,并返回汽车门锁状态信息以及故障情况。子节点的工作流程如图7所示。
随着汽车的电子网络化发展,低成本的LIN网络将会得到越来越广泛的应用。本文介绍并实现的基于CAN/LIN混合网络的自动门锁控制模块是汽车车身控制中的典型应用,它提高了车身整体的自动化程度,有着良好的应用前景。