第一文秘网    > 工作计划

—种基于嵌入式Linux的柴油机故障诊断模块设计方法

作者:jnscsh   时间:2021-07-07 08:44:47   浏览次数:

zoޛ)j馐4uB3myi.)ĝ}饨ky应用。目前,高性能的柴油发动机故障诊断系统主要都采用国外企业生成的产品,这不但增加了国内汽车企业的运用成本,也妨碍了我国发展具有自主知识产权的汽车工业。因此,本文尝试基于开源软件平台设计一种柴油机故障诊断模块。该模块基于嵌入式Linux操作系统内核,通过对车载J1939网络故障诊断协议进行解析,实现电控柴油机的故障诊断。该模块提供了完善的应用接口,能够高效融入各种现有车载故障平台,具有较好的应用性价比[1]。

1 系统架构

本文设计的柴油机故障诊断软件模块在逻辑上分为硬件抽象层、内核层、J1939解析层和应用层共4层,其架构如图1所示。

2 硬件抽象层设计

本文设计的硬件抽象层的主体是硬件资源包(BSP)。BSP的作用是对底层硬件的参数细节进行封装,并向内核提供访问接口。本文选择的硬件平台是飞思卡尔imx6q处理器,所以BSP移植针对imx6q处理器展开,其方法如下。

(1)在\mqx\source\bsp和installdir\lib目录下分别创建新的目录fsmqx;

(2)将nscf51acrl.mem 文件中的:

“range 0x00000410 0x0003FFFF 4 ReadWrite //Second Section of the 256KBytes of Flash Memory

reserved 0x00040000 0x007FFFFF ”

改为:

“range 0x00000410 OxOOOlFFFF 4 ReadWrite //Second Section of the 128KBytes of Flash Memory

reserved 0x00020000 0x007FFFFF ”

(3)将$installdir\mqx\source\bsp\nscf51acrl\cw\intflash.lcf文件中的:

“:rom(RX):

ORIGIN = 0x00000440, LENGTH = 0x0003FBBF #Code + Const data # = 0x3FFFF - 0x440::256K Flash”

修改为:

“rom(RX):ORIGIN = 0x00000440, LENGTH =0x0001FBBF # Code + Const data # = OxlFFFF - 0x440::128K Flash ”。

3 嵌入式Linux内核移植

嵌入式Linux系统是一种针对嵌入式设备的开源、多任务操作系统。该系统具有性能稳定、可移植性好等优点,广泛应用在各类非实时嵌入式计算环境中。因此本文将其移植到基于的嵌入式平台上[2]。具体移植方法如下所示。

3.1 驱动定制

因为飞思卡尔imx6q处理器集成了CAN总线驱动器MSCAN,所以本文所设计系统为MSCAN。

定制驱动程序mscan.c和mscan.h。其设计方法为:

(1)MSCAN初始化的流程如图2所示。

(2)CAN数据帧收发功能设计。

CAN数据帧发送和接收功能流程如图3—4所示。

3.2 文件系统定制

文件系统的作用是管理各类固化存储器中的程序文件和配置文件。本文基于Yaffs2制作了嵌入式Linux文件系统镜像[3]。

4 J1939协议解析

J1939协议是一种位于CAN总线应用层的通信协议,用于定义和规范CAN数据帧中ID域和DATA域中的各項内容。该协议基于J1708和J1587协议标准开发,具有运行开销低、通信过程高效等优点,广泛应用于各类中大型客货车辆中[4]。J1939协议包含了J1939/11,J1939/21,J1939/31, J1939/71, J1939/73等子协议,其中J1939/73定义了车辆电控单元通信应用层和故障诊断方面的规范[5]。因此,本文所设计模块的核心任务之一是对该协议进行解析。解析过程主要针对PDU数据包展开,其基本方法包括以下两个[6-7]。

4.1 ID识别

根据数字字典中的ID类型对CAN数据帧ID进行模式匹配,具体方法为正则匹配法。

4.2 DATA区解析

采用协议树查找法对CAN数据帧DATA区数据进行解析,得到柴油发动机电控系统的原始参数。

5 实验

将本文设计的柴油机故障诊断模块通过CAN总线电缆和东风康明斯CM2150柴油机的OBD接口进行连接。分别进行故障码读取和数据流读取两项实验。该系统正确读取到了2组故障码,分别是水温传感器信号线对地短接,燃油轨道压传感器信号线断路。该系统能以10 Hz的采样率正确读取发动机转速、油门踏板开度、燃油轨道压力、进气量、水温等工况数据,达到了预期效果[8]。

6 结语

本文基于嵌入式Linux系统设计了一种能够解析J1939网络协议的柴油机故障诊断模块,具有成本低、可维护性和可扩展性好等优点。在东风康明斯CM2150柴油机上实验结果表明,该模块能够正确高效实现电控系统故障诊断。

[参考文献]

[1]孙鹏.柴油机共轨电控喷射系统故障诊断方法探讨[J].山东工业技术,2018(8):44.

[2]刘世伟.船舶柴油机故障诊断技术发展现状与趋势分析[J].内燃机与配件,2018(6):146-147.

[3]张远征.基于嵌入式Linux与QT的矿用柴油车虚拟仪表软件设计[J].煤矿机械,2016(12):163-165.

[4]李招峰.基于嵌入式技术的柴油机故障诊断系统的设计[D].武汉:武汉理工大学,2012.

[5]刘鲁平,张凤登,车蕊.基于CAN总线的柴油机故障诊断系统[J].电子测量技术,2016(12):184-188.

[6]李文静.船用柴油机信息化系统硬件在环系统的研发[D].上海:上海工程技术大学,2014.

[7]佚名.基于CAN总线的常见的应用层协议:J1939,CANopen,DeviceNet[J].国内外机电一体化技术,2018(1):42.

[8]汪志斌,吴长水,黄敏涛,等.基于J1939协议的车辆故障诊断与ECU报文解析[J].单片机与嵌入式系统应用,2017(12):7-11.

推荐访问:柴油机 嵌入式 故障诊断 模块 方法


[—种基于嵌入式Linux的柴油机故障诊断模块设计方法]相关文章