微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 基于SAE J1939协议的发动机总线数据模拟器开发

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

时间:06-26 来源:电子设计工程 点击:

在车载网络的开发过程中,需要发动机节点向总线网络发送报文,为了降低成本,提高开发效率,模拟发动机。基于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))。发

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top