李永伟,许 勇,刘 强
(桂林电子科技大学电子工程与自动化学院,广西桂林 541004)
随着汽车电子技术的发展,现代汽车配置有各种汽车电子仪表和多种电子控制装置,以提高整车的舒适性、可操控性、安全性等各项技术指标。典型的控制单元有发动机管理系统、自动变速系统、防抱死制动系统、巡航控制系统、仪表显示系统等等。这些电气设备的应用,必然导致车身布线越来越长,运行可靠性降低,维护难度增加。提高信号的利用率,而且大数据能在不同的ECU之间实现信息的共享,传统的线束已经远远不能满足这种通信需求,CAN总线和基于它的车辆网络通信标准提供了解决上述问题的途径。SAEJ1939协议是SAE发布的以CAN总线为基础、以CAN 2.0B作为网络核心协议的车辆网络串行通信和控制协议,其使用多路复用技术使各电气设备之间建立了以CAN总线为基础的高速通信网络,实现了数据的共享,而且减少了汽车线束[1]。
柴油发动机作为动力来源,是汽车和船舶等装载设备的核心,同时柴油发动机也是大量固定动力系统如发动机等的动力来源,应用及其广泛。柴油发动机的动态监控也成为目前非常重要的技术问题,其功能和效率都在随着技术进步逐渐提高。
作为柴油机电控系统的核心,发动机的电控单元ECU(Electronic Control Unit)将发动机的传感器如共轨压力传感器、机油压力温度传感器、水温传感器、曲轴转速传感器等模拟信号和数字信号进行采集,作为执行器如喷油器、电磁风扇线圈等的控制依据,并同时对信息进行处理打包通过CAN总线传向车载网络。
目前基于SAEJ1939协议的CAN总线技术已广泛应用于国内外的先进内燃机中,通过附件ECU,基于SAEJ1939协议的柴油机监控系统能够实时获取柴油机的各项运行参数和故障信息,为操作者了解和掌握发动机当前状态,提供了大量信息[2-3]。
针对具有SAEJ1939 总线接口的发动机ECU,开发了基于CAN总线的发动机状态参数及故障信息显示系统。
选用EDC17电控发动机ECU与STM32单片机通过CAN总线收发器建立通讯,该系统遵守CAN2.0B协议和SAEJ1939应用层协议,根据车载仪表等发展趋势和技术要求,选用液晶显示器作为显示载体,系统原理框图如图1所示。CAN总线的数据报文通过总线由发动机ECU经过CTM1050T CAN收发器送入主控MCU STM32,然后依照SAE J1939协议对数据包进行解析计算得到发动机的水温、油压、转速等状态参数,然后由FSMC接口送往LCD显示,并且通过触摸屏实现人机交互[4]。
图1 系统原理框图
2.1主控MCUSTM32
系统采用了基于Cortex-M3内核的32位增强型闪存微控制器STM32F103VET6作为控制核心,这是一款低功率处理器,特点是门数低、中断延迟短且调试成本低。它专用于要求快速中断响应的深层嵌入式应用程序,包括微控制器、汽车和工业控制系统。其工作频率为72 MHz执行速度为1.25 DMIPS/MHz,内部带有ADC、I2C、UART、USB、SPI、FSMC等外围接口,特别是其内部带有支持CAN 2.0B协议的CAN控制器,简化了系统的软硬件设计[5]。
此外,灵活的静态存储控制器FSMC能够同步或异步存储器与16位PC卡接口相连,便于外扩存储器和液晶显示屏。
2.2CAN通信接口电路
CAN总线接口是采用带隔离及TVS保护的通用CAN收发器CTM1050T为CAN控制器与物理总线之间提供接口,CTM1050T内部集成了信号隔离电路和所有必需的CAN电平转换电路,具备差动发送和接收功能,同时带有TVS保护,可以支持最高1 Mb/s的通讯速率,单芯片实现了CAN节点的数据收发、隔离、保护功能,并且具有工业级的温度范围(-40~85℃);从而省却了传统设计中采用的光电耦合器件、DC-DC隔离(2 500 V隔离)、CAN收发器等多种器件。为了提高总线通信时的抗干扰能力,分别在CAN的接收端(RXD)和CANH与CANL之间加上30pF和100pF的电容。CAN通信接口原理图如图2所示。
图2 CAN通信接口原理图
2.3JTAGSWD模式下载电路
传统的JTAG下载调试模式使用的是20 pin接口,太多的接口会占据PCB板大量的空间,想实现PCB板的小型化比较困难。所以系统采用的是SWD模式,其下载速度可以达到10 M/s,而且高速下载时比传统的JTAG更加可靠,此模式只需要4跟线,分别是VTref,SWDIO,SWCLK,GND.
3.1SAEJ1939通讯报文内容解析
J1939是一种支持闭环控制的多个ECU之间高速通信的网络协议网[6-7]。J1939协议实质是将CAN扩展帧格式中未明确定义的11位ID,18位扩展ID进行了明确定义,紧随ID的是8个字节的数据域,如表1所示。
表1 CAN扩展帧格式与J1939帧格式对照表
系统所采用EDC17电控发动机ECU作为检测对象,它依据SAE J1939通用协议标准,实现潍柴发动机CAN总线通讯在基于发动机/车辆中的不同电控单元之间信息的传递和交换。表2为通过CAN分析仪接收到的数据,其帧格式为数据帧,帧类型为扩展帧,数据长度为8。
表2 ECU的总线数据
CAN扩展帧格式包含一个单一的协议数据单元(PDU),由七部分组成,分别是优先级(P),保留位(R),数据页(DP),PDU格式(PF),特定PDU(PS),源地址(SA)和数据域。根据J1939协议规定其地址解译和数据信息解释(对故障信息的解译本文不再详述),首先退ID地址解译,通过以上所得实验数据分析,以帧ID 0x0CF00400为例,其位信息的分配如表3所示[8]。
表3位信息分配表
从上表可以看出优先级(P):3,数据页(DP):0,PDU格式(PF):240,特定PDU(PS):4,参数组编号(PGN):61444,另外,以潍柴发动机为例,发动机的源地址(SA)被定义为0。
数据信息解释,J1939应用层定义了J1939网络的每个参数,并为每个参数分配了一个编号(SPN)。在程序中是通过与数据信息的ID进行匹配查找每一个参数组,通过帧ID的匹配把相应的接收信息存入不同的PGN组,系统对PGN分成了29组,程序中根据不同的帧ID定义了不同的PGN,具体实现方法如下所示。
if(RxMessage.ExtId==0x0CF00400)SAEJ1939_PGN[1]=RxMessage;
if(RxMessage.ExtId==0x18FEE000)SAEJ1939_PGN[4]=RxMessage;
在帧的数据域中发动机转速占据参数组的第4、5字节。下面的程序讲述了如何从参数组F004中获得相应的数据。
void PGN_F004(void)
{
spn513=SAEJ1939_PGN[1].Data[1];
spn512=SAEJ1939_PGN[1].Data[7];
spn190=(SAEJ1939_PGN[1].Data[4]<<8|
SAEJ1939_PGN[1].Data[3])>>3;
}
根据第4、5字节的数值及SPN190中的定义其计算方式如下:
发动机转速=原始数×分辨率+偏移量
如果第4、5字节的数据分别为3EH、40H.则发动机转速计算公式为:
发动机转速=62×32+64×0.125=1 992 rpm
3.2CAN总线底层配置
柴油机电控系统以SAEJ1939协议数据广播的形式,按规定格式和周期向外部控制系统传输数据(转速、压力、温度等)到CAN总线上,系统采用CAN总线接受中断的方式实现数据的接收,一旦中断发生,即将接收的数据经过过滤器的匹配后自动存储到接收邮箱中等待进一步处理。SAEJ1939采用250K的通信波特率,所以也需要将系统CAN通信波特率配置为250 K,STM32的bxCAN挂载在APB1总线上,当Ppclk=36 M时,其波特率的配置如下。
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
CAN_InitStructure.CAN_Prescaler=9。
3.3μCOS-II实时操作系统及μCGUI图形界面系统
文中采用实时操作系统μCOS-II作为STM32的片上操作系统,实时性是指能在确定的时间内执行计算或处理功能,并对外部的异步事件做出响应。系统的核心在于任务调度,而任务调度的依据是根据任务的优先级来完成的,μCOS最多支持63个任务每个任务只能有独立的优先级[9]。软件设计流程图如图3所示。根据系统的需要文中各任务的优先级分配如表4所示。
表4 任务优先级分配表
图3 软件设计流程图
μCGUI是一种用于嵌入式应用的图形支持软件。它被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。采用GUI的视窗管理可以实现对物理液晶屏的虚拟扩展,根据系统需要使用视窗管理建立了4个窗口,而且在线比较粗的地方采用抗锯齿处理。需要注意的是在使用μCGUI相应的功能的时候需要先在配置文件中将该位对应的功能置1,其中第二窗口如图4所示。其它显示元素主要是采用了CGUI的基本绘图函数,LCD驱动层的基本绘图函数如下:
LCD_L0_DrawHLine()绘制一条水平线
LCD_L0_DrawVLine()绘制一条垂直线
LCD_L0_DrawBitmap()通用绘制位图函数
LCD_L0_FillRect()直译一个矩形区域
LCD_L0_XorPixel()翻转一个像素
图4 界面窗口
在完成了系统的硬件设计后,软件的调试就需要依赖ECU的实时数据。系统采用的是潍柴EDC17电控发动机ECU,根据其电器匹配手册搭建ECU的运行环境。部分传感器通过电位器模拟,试验台的调节面板部分包括机油温度、机油压力、冷却液温度、冷却液压力,通过旋钮可以手动调节。
文中通过对发动机电控系统CAN总线报文的分析,基于SAE J1939协议并搭载实时操作系统μCOS II和图形界面显示系统μCGUI 开发了发动机参数显示系统,并进行了实验验证。设计的数据显示界面功能全,简单明了。为使用者提供了大量的发动机实时数据,有利于发动机的维护和保养。
参考文献:
[1]许勇.工业通信网络技术和应用.西安:西安电子科技大学出版社,2013.
[2]吴志玲,靳鸿,武耀艳.基于CAN总线的分布式测试系统节点设计.仪表技术与传感器.2013(4):57-58
[3]赖海鹏,冯国胜.基于DSP电控柴油机监控系统的开发.柴油机设计与制造,2002(4):27-31.
[4]刘嘉,黄英等.基于SAE J1939协议的发动机虚拟仪表及故障诊断系统开发.设计·计算·研究,2007(6):22-25.
[5]Cortex-M3 Technical Reference Manual.2010.
[6]SAE Standard.SAE J1939/21:Data link layer,2000.
[7]SAE Standard.SAE J1939/73:Vehicle Application Layer,2003.
[8]SAE Standard.SAE J1939/73:Vehicle Application Layer Diagnostics,2003.
[9]嵌入式实时操作系统μC/OS-II(2版).邵贝贝译.北京:北京航空航天大学出版社,2005.