基于SAE J1939协议的发动机总线数据模拟系统设计

接口/总线/驱动

1116人已加入

描述

在车载网络的开发过程中,需要发动机节点向总线网络发送报文,为了降低成本,提高开发效率,模拟发动机。基于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智能接口向总线仪表发送数据并实时显示,达到测试仪表的目的。

该系统主要包括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帧信息显示模块验证

4.3 实时参数曲线模块验证

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

5 结论

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

此软件可部分替代真实的发动机,随机进行发动机各项工况检测,灵活性强,其选择范围较实际发动机更广。该系统可以辅助总线仪表等硬件开发,从而简化总线仪表测试过程。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分