周慧(1979—), 女,汉族,讲师,武汉理工大学自动化学院硕士研究生,研究方向为汽车网络技术。基金项目:湖北省数字制造重点实验室开放基金项目(SZ06-15)
摘要:采用CAN(Controller Area Network)构建了汽车车灯控制系统,并基于SAE J1939协议设计了车灯控制报文格式。在硬件设计中,本文基于USBCAN-II接口卡实现开关控制功能,以P87C591为核心实现车灯控制功能。为达到代码的可重用性,本文采用模块化程序设计思想设计了基于CAN的汽车车灯控制系统软件。
关键词:汽车;CAN;车灯;网络控制
Abstract: This article constructs vehicle lamp control system based on CAN (Controller Area Network) and designs message format for vehicle lamp control based on SAE J1939. In hardware design, we implement switch control function with USBCAN-II interface card and achieve vehicle lamp control function base on P87C591. For reusing codes, we designed the software of vehicle lamp control system based on CAN with modular design method.
Key Words: Vehicle; CAN; Vehicle Lamp; Network Control
1 引言
有研究表明,在目前的汽车创新中,70%来源于电子系统的革新。汽车电子总的发展趋势是:汽车电子控制系统获取内部和外部的信息越来越多,功能越来越强,智能化程度越来越高,可靠性也越来越高。[1]汽车ECU(Electronic Control Unit,电子控制单元)的大量使用改善了汽车的动力性、经济性、舒适性和环保性,但是ECU数量的急剧增加必然要求改变传统汽车控制方式,以减少线束。同时,行驶过程中各ECU之间的关联和时序控制也与行车安全性密切相关,而传统控制方式并不能实现此目的。车载网络技术为解决上述问题提供了一种良好的解决方案。
2 基于CAN的汽车车灯控制系统结构
2.1 CAN概述
CAN(Controller Area Network)[2]是德国Robert Bosch公司在20世纪80年代初为汽车业开发的一种车载专用串行数据通信总线,满足SAE(Society of Automobile Engineer)对C类高速车载网络(≤1 Mbps)的要求,适合动力传动和底盘电子系统的信息传输与控制。因此,它也满足A类低速网络(≤10Kbps)和B类中速网络(≤125Kbps)的要求。CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。CAN具有多主工作方式、总线利用率高、数据传输距离远、数据传输速率高、采用非破坏总线仲裁技术节省总线冲突仲裁时间、通过报文标识符滤波实现数据接收、错误处理和检错机制可靠等特点。因此,CAN被作为专用车载总线加以广泛应用[3]。
2.2 基于CAN的汽车车灯控制系统结构
本文以汽车车灯位置分布和行驶安全性要求作为各模块划分的依据[4],采用CAN构建汽车车灯控制系统,图1为基于CAN的汽车车灯控制系统结构图。
该系统包括开关控制模块、左前模块、右前模块、左后模块和右后模块,各模块挂接在CAN总线(CAN-H和CAN-L为差分线)上,CAN总线的位速率为100Kbps。其中,开关控制模块通过对开关状态变化的监测,向其它四个模块发送控制指令;左前模块、右前模块、左后模块和右后模块在接收到属于本模块的控制指令后,分别控制对应位置的车灯动作。由于CAN是基于优先级的事件触发协议,根据行驶安全级别的不同,系统中各节点的优先级依次为开关控制模块——左后模块——右后模块——左前模块——右前模块。其中,开关控制模块是系统控制指令发送模块,安全性要求最高,具有最高优先级;左后和右后模块涉及制动等与行驶安全相关的车灯,其优先级仅次于开关控制模块;左前模块和右前模块优先级最低。

图1 基于CAN的汽车车灯控制系统结构
3 基于SAE J1939的汽车车灯控制应用层协议
CAN只提供与物理层和数据链路层相关的协议,并没有制定与特定应用相关的应用层的内容。SAE J1939是一种基于CAN的高层协议[5],利用CAN2.0B扩展帧的29位标识符定义了汽车通信编码系统。表1比较了CAN2.0B和SAE J1939格式。其中,SAE J1939中的29位标识符由P (Priority,优先权位)、R(Reservation,保留位)、DP(Data Page,数据页位)、PF(PDU Format,协议数据单元格式)、PS(PDU Specific,协议数据单元细节)和SA(Source Address,源地址)组成。
表1 CAN2.0B和SAE J1939比较:
CAN扩展帧格式 |
S
O
F |
11位标识符 |
S
R
R |
I
D
E |
18位扩展标识符 |
CAN ID位置 |
ID28-ID18 |
ID17-ID0 |
J1939帧格式 |
优先权P |
R |
DP |
PF |
|
|
PF |
PS |
源地址 |
|
3,2,1 |
8-3 |
|
|
2,1 |
8-1 |
8-1 |
J1939帧位置 |
1 |
2-12 |
13 |
14 |
15,16 |
17-24 |
25-32 | SAE J1939将CAN2.0B扩展帧的29位标识符进行了明确定义,用两个参数组定义了车灯报文格式,分别是车灯控制命令和车灯状态反馈,前者属于命令类,后者属于信息类。本文基于车灯控制命令的报文格式定义了车灯控制系统的信息编码,其基本信息定义如下:
报文传输重复率:随车灯的开关状态而变化,两条信息间隔最多不超过1秒,每秒的报文数量最多不超过10条;数据长度:8;数据页:0;PF:254;PS:65;优先级:3;参数组编号:65089(0xFE41)。 车灯控制数据帧中8字节的位定义规范见表2。
表2 车灯控制数据帧中8字节的位置规范:
字 节 |
位 的 定 义 |
1 |
2, 1 运行指示灯 4, 3 灯光照射高度调节数据 6, 5 低光柱数据 8, 7 高光柱数据 |
2 |
2, 1 前雾灯 4, 3 转弯信号灯 6, 5 左转向灯 8, 7 右转向灯 |
3 |
2, 1 倒车灯和倒车喇叭 4, 3 中央停车灯 6, 5 右刹车灯 8, 7 左刹车灯 |
4 |
1- 6 为空 8, 7 牌照灯、示廓灯 |
5 |
2, 1 后雾灯 3—8 为空 |
6 |
2, 1 底部示宽灯 4, 3 顶部示宽灯 5 —8 为空 |
7 |
2, 1 乘客区灯 4, 3 驾驶室灯 6, 5 右近光灯 8, 7 左近光灯 |
8 |
2, 1 为空 4, 3 右远光灯 6, 5 左远光灯 8, 7 后工作灯 | 4 基于CAN的汽车车灯控制系统硬件设计
4.1 开关控制模块
在实验中,采用PC应用程序和USBCAN-II接口卡来模拟开关控制模块。PC应用程序采用Delphi软件编写,用户界面中的每个按钮与各开关按键相对应;点击按钮后,应用程序会形成相应的控制报文,并通过USB2.0接口发送给USBCAN-II接口卡。USBCAN-II接口卡一方面通过USB2.0接口与PC连接,接收应用程序发送的指令;另一方面通过CAN接口连接到CAN总线上,完成CAN报文的发送和接收任务。使用该应用软件时需设置一些参数,如CAN控制器的验收码、屏蔽码、滤波方式、波特率(定时器0和定时器1)、发送模式、发送类型、帧类型、帧格式等。
4.2 车灯控制模块
左前模块、右前模块、左后模块和右后模块的硬件结构类似,如图2所示。其核心是带CAN控制器的单片8位微控制器P87C591[6]。P87C591是一个高性能的CAN微控制器,可用于汽车和通用的工业应用,完全符合CAN2.0B规范,并提供一个直接从SJA1000独立CAN控制器的软件移植路径。除了普通的CAN特性以外,P87C591还提供增强型PeliCAN。PeliCAN特性包括:4个独立可配置的验收滤波器组;每个组都有4个可选的验收滤波器配置;每个验收滤波器都有32位区分符;所有滤波器都可“在运行中改变”;支持更高层的协议的验收滤波器;接收FIFO特性;只听模式,自检测模式;只有达到FIFO接收中断级才产生接收中断;在接收到高优先级数据帧时立即产生接收中断等。除此之外,各模块的硬件结构还包括了电源单元DC/DC、CAN接口单元(包含光电耦合器6N137和CAN收发器TJA1040)、功率驱动单元(MC33286)和复位单元等。
5 基于CAN的汽车车灯控制系统软件设计

本文采用模块化程序设计思想设计基于CAN的汽车车灯控制系统软件,按照功能分成不同的程序模块,各模块间相对独立,以完成特定的功能。模块与模块之间可以相互调用,数据共享,以达到重复利用代码和简化代码的目的。主要的功能模块有:CAN初始化模块、接收中断服务程序模块、CAN报文发送模块、转向灯控制模块等。
程序开始执行时首先执行初始化程序模块,以初始化系统,将对应车灯的I/O控制口输出方向设置为输出,并初始化CAN控制器及定时器,等待CAN报文的接收中断;如果有CAN报文的接收中断,则读取CAN报文的数据字节并且按照前述SAE J1939车灯控制格式进行解析,并控制相应车灯控制I/O口的变化,由功率驱动芯片来完成车灯的开关操作。主程序流程图如图3所示。

6 总结
本文采用CAN构建了汽车车灯控制系统,解决了汽车ECU的日益增加与传统汽车控制方式之间的矛盾。基于SAE J1939的车灯控制报文格式的应用为整车应用层协议的设计提供了参考。
参考文献:
[1] 秦贵和.车上网络技术[M].北京:机械工业出版社,2003.5.
[2] CAN Specification 2.0, Robert Bosch GmbH,1991.
[3] 饶运涛,邹继军.现场总线CAN原理与应用[M].北京:北京航空航天大学出版社,2003.6.
[4] 胡剑, 李刚炎等. 客车照明与信号灯多路传输控制系统的设计[J]. 微计算机信息, 2006,(4):124-126.
[5] Surface Vehicle Recommended Practice SAE J1939, SAE, 2005.1.
[6] P8xC591 Microcontroller in CAN Applications, Philips semiconductors, 2000.
作者信息:
周 慧,徐华中 (武汉理工大学自动化学院,湖北 武汉 430070)
李刚炎 (武汉理工大学机电工程学院,湖北 武汉 430070)
|