DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1223|回复: 0
打印 上一主题 下一主题

[待整理] 基于SAE J1939协议的发动机总线数据模拟器开发

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 20:55:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在车载网络的开发过程中,需要发动机节点向总线网络发送报文,为了降低成本,提高开发效率,模拟发动机。基于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协议的发动机总线数据模拟器开发。该系统与待开发总线仪表连接,可以模拟发动机的各项工况数据输出。一旦选定某个发动机参数,发动机参数即在报文规定的更新率下持续发送到待开发总线仪表。
此软件可部分替代真实的发动机,随机进行发动机各项工况检测,灵活性强,其选择范围较实际发动机更广。该系统可以辅助总线仪表等硬件开发,从而简化总线仪表测试过程。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-26 12:26 , 耗时 0.087034 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表