微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于CAN/LIN网络的汽车门锁控制系统

基于CAN/LIN网络的汽车门锁控制系统

时间:05-07 来源:电子技术应用 点击:

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混合网络的自动门锁控制模块是汽车车身控制中的典型应用,它提高了车身整体的自动化程度,有着良好的应用前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top