基于SAE J1939协议的发动机总线数据模拟器开发

发布者:Shuxiang最新更新时间:2011-10-28 关键字:J1939协议  发动机总线数据 手机看文章 扫描二维码
随时随地手机看文章
  在车载网络的开发过程中,需要发动机节点向总线网络发送报文,为了降低成本,提高开发效率,模拟发动机。基于SAE J1939协议巾车辆应用层子标准及应用层诊断子标准,通过软件编程进行发动机总线数据模拟器的开发,模拟总线网络中的发动机ECU节点,向总线网络发送报文,从而测试总线网络上的另一节点仪表,检验仪表是否工作正常。

  1 SAE J1939协议概述

  SAE J1939标准是美国汽车工程师协会(SAE)发布的以CAN总线为核心的车辆网络串行通讯和控制协议,采用多路复用技术为车辆上各传感器、执行器和控制器提供在CAN总线基础上的标准化高速网络连接,在车辆电子装置之间实现高速数据共享,有效减少电子线束的数量,提高车辆电子控制系统的灵活性、可靠性、可维修性及标准化程度。

  1.1 SAE J1939协议简介

  J1939协议包括12个子标准。本文主要涉及车辆应用层及应用层诊断2个子标准。车辆应用层子标准(SAEJl939/71)规定了车辆控制控制参数的格式,包括参数范围、分辨率、类型及刷新率,数据场各位的含义;应用层诊断子标准(SAEJl939/73)主要针对排放的要求规定了12种诊断结果信息。

  1.2 协议数据单元

  SAE J1939应用层协议采用协议数据单元PDU传递信息,PDU由优先级P、保留位R、数据页DP、PDU格式PF、PDU特定域PS(可作为目标地址、组扩展或专用)、源地址SA和数据域7部分组成,如表1所示。每个PDU相当于CAN协议中的一帧,它们将被分组封装在一个或多个CAN数据帧中,通过物理介质传送到其他网络装置。


  2 总体方案设计

  在开发过程中,通过调用USBCAN-Ⅱ接口卡库端口函数,利用CAN总线实现上位机与下位机之间的通讯。发动机总线数据模拟器通过USBCAN-II智能接口向总线仪表发送数据并实时显示,达到测试仪表的目的。系统结构如图1所示。



  该系统主要包括6大功能模块,分别是发动机参数报文发送模块、发动机故障报文发送模块、CAN帧信息显示模块、虚拟仪表模块、实时参数曲线模块和仪表测试模块。系统软件采用C#环境开发,运行于Windows平台。系统开发的总体流程是:首先实现与USBCAN-Ⅱ接口卡的通讯,连接成功后,在主界面选择需要实现的功能,然后执行相关模块的操作。在关闭程序的同时,关闭USBCAN-Ⅱ接口卡。程序开发流程如图2所示。


  3 发动机总线数据模拟系统设计

  这里重点分析SAE J1939-7l关于发动机参数的定义以及SAE J1939-73关于故障诊断信息的定义,明确发动机发送报文的格式以及数据意义,进行系统各个模块的方案设计。

  3.1 发动机参数报文发送模块

  该模块是类比现场测试的一组数据,按照适用于BOSCH高压共轨系统的欧Ⅲ发动机基于SAEJ1939的CAN通讯规范,将帧ID和代表发动机参数的数据字节位置相对应,在报文规定的更新率下.将发动机参数持续发送到总线网络。该模块有单次发送和按J1939协议规定的更新率发送2种模式。发动机参数包括发动机转速、汽车行驶速度、油压、水温等。

  3.2 发动机故障报文发送模块

  该模块为总线仪表增加了故障诊断功能,即总线仪表可以借助液晶显示屏实时显示发动机的故障类型。该模块程序流程见图3,标定的故障依次规定了故障路径、故障详情、编号、SPN和FMI。


  3.3 虚拟仪表模块

  虚拟仪表主要将发动机的发动机转速、车速、油压、水温、电压等重要参数显示在虚拟仪表盘上,更直观显示相应数据,模拟行车仪表实际运行状态。采用Dundas Software公司的Dundas Gauge for.NET进行虚拟仪表的可视化开发,Dundas软件平台完全支持Visual Studio 2005特征,包括智能标记、高级数据绑定等。Dundas仪表向导提供了丰富的素材库,利用该向导,用户设计应用于各领域的仪表控件外形和数据指示方式。用户只需在应用程序中对仪表需要动态变化和响应的部分编写代码即可实现虚拟仪表的功能。

  3.4 CAN帧信息显示模块

  本模块是通过调用一个listview控件实现的,列元素依次是时间、帧ID、P、R、DP、PF、PS、SA、帧格式、帧类型、数据长度、数据、传输方向、时间标识、第几路CAN。其中,P,R,DP.PF,PS,SA由帧ID解析函数得到,其他则由接口函数库的参数得出。

  以发动机转速为例,给出CAN帧信息解析(实际参数=原始数×分辨率+偏移量)。报文名称:ElectrONic Engine Controller#1 (EEC1),SPN:190,PGN:61 444,ID:OxCF00,源地址:发动机(接收地址:ABS(0x0B)、仪表(0x17),更新率:10 ms,位置:4~5字节,分辨率:0.125 r/min,0偏移,数据范围:0~8 031_875 r/min。要发送转速为3 000 r/min,则发送数据的第4、5字节应为:3 000/0.125=24 000(0xC051))。发送PDU编码为:0CFD0400 XX XX XX C0 5D XX XX XX(XX表示任意数据)。

  3.5 实时参数曲线模块

  实时参数曲线模块是利用Dundas Chart for.NET以动态曲线显示发动机转速、润滑油压力等参数以,并可以将显示数据输出、保存,同时还提供历史数据回放功能。包括转速、油压、水温、电压4种曲线。该模块和虚拟仪表模块共同实现发动机参数动态直观的显示,便于实验调试。

  3.6 仪表测试模块

  该模块将虚拟仪表的指针运行速度与开发仪表进行比较,测试开发仪表的步进电动机驱动效果。通过选择待测表盘,设置发送数据的最大值,以及测试次数,可以实现虚拟仪表在选定范围内的循环运行,从而与待测仪表进行比对。仪表测试模块可以较直观的对仪表的开发提供参考。

  4 系统验证

  4.1 连接USB-t0-CAN设备

  USB-t0一CAN系统的设计都是基于连接USB-to-CAN设备实现的。首先选择设备索引号,调用函数,打开设备。选择第几路CAN,初始化CAN设备。打开设备界面如图4所示。


  相关代码如下:





  4.2 虚拟仪表与CAN帧信息显示模块验证

  发动机参数报文发出后,经过解析,CAN帧信息以及虚拟仪表实时显示状态如图5所示。


  4.3 实时参数曲线模块验证

  实时曲线工具所显示的数据与虚拟仪表同步,虚拟仪表的数值变化时,图表控件也将同一个数据点添加到以时间为横坐标的图表中,从而生成一条连续的曲线。在完成一次测试过程后,可以将数据保存,并输出为标准XML格式文件。该模块还提供历史数据回放功能,将已保存的XML文件重新绘制成一条数据曲线。其工作过程如图6所示。


  5 结论

  本文在研究CAN总线协议的基础上,在C#编程环境下完成了基于SAE J1939协议的发动机总线数据模拟器开发。该系统与待开发总线仪表连接,可以模拟发动机的各项工况数据输出。一旦选定某个发动机参数,发动机参数即在报文规定的更新率下持续发送到待开发总线仪表。

  此软件可部分替代真实的发动机,随机进行发动机各项工况检测,灵活性强,其选择范围较实际发动机更广。该系统可以辅助总线仪表等硬件开发,从而简化总线仪表测试过程。(电子设计工程 作者:余韵律 王 建 王启慧)

关键字:J1939协议  发动机总线数据 引用地址:基于SAE J1939协议的发动机总线数据模拟器开发

上一篇:NiosII的I2C控制IP及其在成像系统中的应用
下一篇:计算机多设备接口波特率不匹配的研究

推荐阅读最新更新时间:2024-05-02 21:40

基于LabVIEW和J1939协议的CAN总线通讯平台开发
  应用领域:商用车CAN 总线通讯   挑战:CAN2.0B 规范的工业总线通讯、报文标识符和数据帧定义没有形成统一的标准,参数定义   随意性很大。商用车CAN 总线通讯标准,遵循建立在CAN2.0B 基础上的SAE J1939 协议。报文标识   符ID,按照SAE 标准制定的车速、发动机转速、扭矩、温度、压力、燃油消耗量等参数的物理定   义,报文数据帧格式对应协议数据单元相应数据内容的封装。面临的挑战是将J1939 协议融会贯通   于CAN 总线通讯平台的设计之中。   应用方案:使用NI LabVIEW 软件开发平台和PXI 模块化仪器系统中的CAN 通讯模块,创建过滤   识别J1939 协议报
[测试测量]
基于LabVIEW和<font color='red'>J1939</font><font color='red'>协议</font>的CAN<font color='red'>总线</font>通讯平台开发
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved