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