引言
随着车辆电子化和自动化程度的提高,车辆上的ECU日益增多。为了提高信号的利用率,要求在不同的ECU间,大量的数据状态信息能够实现共享,大量的控制信号能够实时交换。这样,传统线束已远远不能满足这种需求。
CAN总线及基于CAN的车辆网络通信协议提供了解决上述问题的途径。SAE J1939协议是美国汽车工程师协会(SAE)在CAN2.0B协议基础上制定的重型货车和客车网络通信协议,是目前汽车电子网络中应用最广泛的应用层协议之一。该协议使用多路复用技术为车辆各传感器、执行器和控制器提供建立在CAN总线基础上的标准化高速网络连接,在不同的ECU间实现高速数据共享,以有效减少线束数量并提高车辆电子控制系统的灵活性、可靠性、可维修性。
目前,车辆的ECU产品大都带有SAE J1939 CAN接口。针对具有SAE J1939 CAN接口的ECU产品(如发动机、变速器及其缓速器和ABS等ECU),自定义若干ECU,集成实现基于SAE J1939协议的车辆网络,完成自定义ECU的信息采集和各ECU间的信息交换。
1车辆网络拓扑结构
具有SAE J1939 CAN接口的ECU产品接上仪表板连成网络后,已基本满足车辆驾驶的要求。为了使自定义ECU对外通信尽量不影响ECU产品间的通信,整个网络分为两个网段,必要时可合并成一个网段。网段A包含信息交互ECU,发动机ECU,变速器及其缓速器ECU,ABS ECU;网段B包括信息交互ECU,发动机外围、I桥及II桥ECU,分动器ECU,III桥及IV桥ECU。信息交互ECU用两个CAN端口分别与两个网段连接,具有报文转发功能。车辆网络拓扑结构如图1所示。
图1车辆网络拓扑结构
2车辆网络通信设计
按照SAE J1939协议,车辆网络通信设计包括以下几方面内容:
◆ 物理层与SAE J193911兼容;
◆ 数据链路层与SAE J193921兼容;
◆ 网络层与SAE J193931兼容;
◆ 应用层与SAE J193971兼容;
◆ 应用层诊断与SAE J193973兼容;
◆ 网络管理层与SAE J193981兼容。
2.1物理层
物理层实现网络上所有ECU的电气连接。物理介质采用特征阻抗为120 Ω的屏蔽双绞线,CAN_H为黄色、CAN_L为绿色。网段尽可能使用线性拓扑结构,其波特率为250 kbps。网段干线两端均以120 Ω电阻做终端匹配。ECU使用短支线与网段干线连接,在网段中采用不相等布置以防止产生驻波。
位时间内实现同步、网络延时补偿及采样点位置确定等总线管理功能,其段组成如图2所示。同步是相位缓冲段1加长或相位缓冲段2缩短,其上限为同步跳转带宽(SJW)。采样点尽量位于(但不超过)位时间的7/8,能实现传播延迟和时钟误差最佳折中。时钟频率为16 MHz时,推荐分频因子=4、SJW=1tq、TSEG1=13tq、TSEG2=2tq(tq为时钟周期)。
图2位时间段组成
2.2数据链路层
数据链路层在物理层之上提供了可靠的数据传输功能,实现了应用层报文的数据交换。通过数据链路层的组织,实现了发送数据帧必须具有的同步、顺序控制、错误控制和流控制等功能。
数据链路层通过协议数据单元(PDU)组织数据帧中的协议相关信息。PDU由数据帧中29位ID和0~8字节数据场组成,其数据结构如图3所示。P场决定报文优先级;R位保留;DP位是数据页位;PF场决定PDU格式(PDU1或PDU2);PS场为PDU细节,由PF场决定是目标地址DA还是对PF的组扩展GE;SA为源地址。
图3PDU数据结构
数据链路层提供的报文有命令报文、请求报文、广播/响应报文、应答报文及组功能报文。此外,数据链路层还实现了传输协议功能,用于将大于8字节报文进行打包重组、连接管理,分为广播公告的BAM协议和点对点会话的RTS/CTS协议。
2.3网络层
网络层定义了为不同网段间提供互联功能的设备需求和服务。当多个网段存在时需要网络互联ECU,其功能包括报文转发、报文过滤、报文地址转换、报文重组及数据库管理。网络层功能对于特定ECU来说是可选的,网络中仅信息交互ECU用到网络层功能。
2.4应用层
应用层定义了针对车辆应用的信号(参数)和报文(参数组)。应用层通过参数描述信号,给每个参数分配了一个19位的可疑参数编号(SPN);通过参数组描述报文,给每个参数组分配了一个24位的参数组编号(PGN)。SPN用来标识与ECU相关的故障诊断元素、部件或参数组中参数;PGN用来唯一标识一个特定参数组。除已分配的参数和参数组外,用户还可通过分配未使用的SPN给自定义参数和定义专有报文对应用层进行补充。
2.5应用层诊断
应用层诊断定义了诊断报文DM119,其作用如表1所列。这19种报文在网络中并不都可用。目前,网络中仅用到报文DM1、DM2、DM3及DM11。
表1诊断报文DM119的作用
表1中的诊断故障代码(DTC)为4字节,由19位可疑参数编号(SPN)、5位故障失效模式(FMI)、7位故障发生次数(OC)以及1位SPN转换方式(CM)组成,如图4所示。
图4诊断故障代码DTC结构
2.6网络管理层
网络管理层通过提供地址分配管理和网络错误管理的定义和过程描述,来唯一识别网络上的控制器。其功能包括: 请求网络上控制器的地址和名字、为控制器声明一个地址、公告不能声明的地址和命令其他控制器使用新的地址等。
3车辆网络信息交互设计
车辆网络信息交互选用的液晶显示器为8寸、640×480像素、RS232通信,具有6个无源P9接口薄膜按键,其显示布局如图5所示。图中左半部分:上部为红色信号指示灯及其报警提示,其下为其他颜色信号指示灯;中部为仪表模拟模式下表盘指针或数字模式下数字,其下为小仪表报警提示;下部为组成员数据及各组报警提示。图中右半部分:上部为日期时间、环温/气压、单/全里程,其下为诊断指示灯及DM1来源、菜单;下部为信息分页,包括基本信息、各ECU产品未处理的信息、DM1及DM2内容、DM1及DM2下载应答、DM3应答、DM11应答、单里程清零应答和日期时间交互修改等。
图5LCD显示布局图
液晶显示器的功能有: 在指定位置显示8×16英文字符,在指定位置画线,在指定位置显示预置位图,在指定位置按指定方式自动显示日期时间、读取年月日、读取时分秒、设置日期时间、显示/关闭光标、打开/关闭背光。当进行不同程度的报警时,通过蜂鸣器发出的缓和或尖锐两种不同的声音进行提示。
4车辆网络软件设计
4.1信息交互ECU
信息交互ECU选用Freescale公司S12X系列中的MC9S12XDP512作为主芯片,使用了嵌入式操作系统μC/OSII。S12X的从CPU——中断协处理器XGate,处理μC/OSII时钟节拍中断并作任务切换,提高了系统的实时性,减轻了主CPU的负荷。XGate还用于处理与液晶显示器串口通信、与PC串口通信、查询键盘的有效输入,并管理报警蜂鸣器。
信息交互ECU在μC/OSII下创建了5个任务:系统初始任务、指示灯任务、仪表数据任务、键盘相关任务、J1939处理任务。系统初始任务打开RTI中断,上电自检,打开日期时间显示;指示灯任务周期性地显示信号指示灯及红色信号指示灯报警提示,显示诊断指示灯及DM1来源,处理报警事件;仪表数据任务周期性地按选定模式显示仪表及小仪表报警提示,显示组成员数据及组报警提示,显示环温/气压及单/全里程,并处理报警事件;键盘相关任务在有效输入下根据按键及菜单进行分页显示切换、系统设置修改等;J1939处理任务周期性地遍历两个端口的协议栈进行报文收发、报文转发和提取应答等。
4.2其余自制ECU
其余自制ECU选用Freescale公司S12系列中的MC9S12DG128作为ECU主芯片。上电初始化后,在无限循环下先遍历协议栈,对请求报文进行响应,然后采集数据更新报文。程序采集传感器信息,周期性地更新应用层报文。程序根据采集的信号、数据生成DTC,周期性地更新应用层诊断报文,根据DTC数目决定是否发送及是否用传输协议。程序半固定数据如DTC信息、里程信息等均保存在EEPROM中,每次上电导入,发生变化后实时更新。
结语
通过对具备SAE J1939 CAN接口的ECU产品CAN总线功能进行分析,自定义若干ECU,集成实现基于SAE J1939协议的车辆网络。在实验室对比CAN卡、上车对比仪表板进行试验研究的结果表明,所集成的车辆网络工作稳定、信息量丰富、能实时反映故障诊断信息,解决了车辆仪表盘信息量较少和故障诊断实时性不足的问题。
双核单片机的从CPU可提高μC/OSII的实时性,降低了主CPU的负荷。
此外,SAE J1939协议的完备通信策略和成熟的通信机制,使得协议完全可以在修改应用层和应用层诊断相关定义之后,推广应用到其他工业环境类似的CAN通信领域,如列车控制、工厂控制等。