当前位置:东捷文档网 > 专题范文 > 公文范文 >

一种基于python,统计整车故障的系统设计与实现

| 来源:网友投稿

金旅 全勇 黄真 杨希 胡天妹

摘要:由于系统功能开发所需,同时也为了方便排查故障,各系统通常在CAN 总线上定义各种故障信号,用于告诉技术人员影响其正常工作的故障原因。当前判断整车故障的主要方式有:开发诊断仪读取故障码、分析远程监控系统上传到监控平台的数据以及录制报文并逐一分析故障。这3种方式在开发阶段和测试阶段都有一定的局限性。本文基于python 编程设计工程,结合整车DBC 矩阵分析整车BLF 报文后,自动化统计报文内整车所有故障,让技术人员快速知道整车报文内的所有故障信号,从而提高问题排查效率。

关键词:python ;
BLF 报文;
DBC 矩阵;
故障统计

中图分类号:TP277 文献标识码:A

0 引言

纯电动汽车各系统故障一般包括:与其他系统通信丢失、供电电源欠压或过压、高压互锁故障、绝缘故障、过温、过流、各系统检测其他系统的故障以及各系统自身特有的故障等。当整车发生故障时,如车辆无法起动上高压,技术人员需要知道整车各系统具体报的故障,从而判断故障源和故障原因。目前获取或监控整车故障常用的方法如下。

(1)诊断仪读取。该方法只能对整车出现的故障做一个基础的故障判断[1],在设计开发阶段该方法局限性较大,主要体现在:①在诊断仪上体现的故障不全,很多故障并没有做诊断;
②一般不体现故障发生时间以及故障发生次数。

(2)利用CANoe 等分析软件观察。但CANoe 等软件一般没有统计整车故障的功能,由于整车的故障信号特别多,逐一观察这些信号的方法效率低。

(3)开发远程监控系统监控。将采集到的整车故障上传到数据平台,通过数据平台监控。该方法无论是在设计开发阶段还是量产后的局限性也比较大,主要体现在:①远程监控系統采集频率一般是秒级[2],采集频率越高则相对成本就会越高;
而某个系统故障导致相关系统报故障的时间一般是毫秒级,因此通过数据平台的数据很难确定各系统报故障的先后顺序;
②各主机厂基于需求、成本等考虑,远程监控系统采集的故障信号个数有限,很多故障没有上传,从而导致无法分析故障原因。

综合以上3 点,在分析整车故障原因时,对分析人员综合能力要求较高。本文介绍一种基于python,根据整车BLF 报文统计整车故障的编程设计与实现,能够让分析人员快速、明确知道整车各系统所报的故障,减少其推测与验证故障原因的时间,从而提高问题排查效率。

1 引出故障信号列表

整车实时故障排查一般从源控制器、传输线路和目标控制器三大方面去排查[3]。本文通过获取整车报文内各系统报出故障的设计与实现,该结果用于辅助确认导致故障发生的源控制器。

获取整车报文内各系统报的故障信息,首先需要知道各系统有哪些ID 包含有故障信号,以及每一个故障信号定义是故障的信号值有哪些。将这些信息整理后得到整车故障信号列表,即整车DBC 内各系统定义为故障的ID、信号名称以及信号名称对应定义为故障的信号值列表(图1)。然后通过整车故障信号列表的ID 可以筛选出BLF 报文中定义有故障信号的报文帧,再通过故障信号名称及该信号名称定义为故障的信号值列表判断整车是否有故障。本设计将整车的故障信号列表导出为TXT 文档,而不是直接将其写在python 编程代码中。这主要考虑当车型变更导致DBC发生变更,或者不同车型之间整车DBC 定义差异大,表现出定义为故障的信号ID 不同,定义为故障的信号名称不同,同一个故障信号定义为故障的值列表不同,或者新增故障信号等导致不__同车型需要不同的整车故障信号列表时,不需要修改代码,仅需要根据变更点变更TXT 文档即可。这样可以通过不同TXT 文档的导入从而实现同一个工程可以适用不同的车型,让工程简单化。

2 导出整车故障信号列表

本设计选择python 的编程设计环境,它具有丰富和强大的库,常被称为胶水语言,能够把用其他语言制作的各种模块很轻松地连接在一起,是一门更易学、更严谨的程序设计语言[4]。纯电动汽车各电子控制单元之间需要进行大量的数据交换,而通信线路信息承载力是有上限的,如若把日益增多的电子控制单元全部挂载在同一条线路上,就很容易出现总线负荷过大,导致系统实时响应速度下降[5]。因此主机厂在研发设计过程中,会先设计出整车网络架构,并依据此架构及ECU 之间的功能交互设计网络总线数据库文件[6],即DBC 文件。整车各系统定义的故障信号信息包含在其中。通过整车DBC 导出整车故障信号列表的主要设计步骤如下。

(1) 想要获取整车DBC 文件的内容, 需要先将其导入python 中,将其解析后获取想要的内容。通过python 自带函数cantools.db.load_file() 加载整车DBC。

(2)加载整车的DBC 结果,再利用python 自带函数self.get_message_by_name() 获取每个节点的定义信息( 即节点ID)。然后利用print 函数打印出每个节点ID、信号名称、信号值及信号值定义(图2)。

(3)由于各系统设计人员定义故障名称习惯不同,很难自动识别故障定义,因此为了确保无误的同时减少设计复杂度,需要人工对打印出来的结果进行筛选。将筛选结果整理到TXT 文档中,从而得到整车故障信号列表。

3 对整车故障信号列表再处理

整车报文按ID 以时间顺序排列,如果直接用整车故障信号列表逐一判断是否有故障,那么每一帧报文都需要遍历一次整车故障信号列表。为提高判断效率,可以将整车故障信号列表再处理,得到不重复的故障ID 列表,这样仅需要对每一帧报文比对是否属于故障ID 列表,从而提高统计效率(图3)。对整车故障信号列表再处理的目的如下。

(1)对整车故障信号列表内的故障ID 去重得到故障ID 列表,如此可以提高筛选BLF 报文中定义有故障信号的报文帧效率。

(2)用故障ID 遍历整车故障信号列表,得到每个故障ID 对应的信号列表及每一个信号定义是故障的值列表。有了该对应关系,才知道筛选出的报文帧需要判断的信号列表,以及判断该信号列表内的每一个信号是否有故障。

4 根据BLF 报文统计整车故障

处理得到故障列表falut_idmsg_list 后,利用其判断整车报文内是否有故障的设计与实现。

(1)将BLF 文件处理成列表,这可以通过python 设计好函数实现,无需设计者单独开发。利用python 自带函数can.BLFReader() 读取BLF 文件,得到按时间排序的报文帧。需要注意的是,在排查问题录制BLF 报文时,如果是必现的问题,先断开低压供电蓄电池的连接,等待5 s 待所有系统均休眠后,重新连接低压蓄电池。此时各系统已经初始化,可以立即开始录报文。尝试复现故障,如此可以得到故障发生的时序,避免由于各系统恢复故障的设计不同,得不到原始的各系统各节点报故障时序,从而影响判断故障源。如果是偶发的问题,尽量尝试复现,拿到从不报故障到报故障的过程报文。

(2)考虑报文内可能存在错误帧,由于错误帧的报文长度一般不同于正常报文帧,因此可先根据报文长度过滤掉错误帧。当然,如若还有其他错误帧,也可以利用其特有的属性先将其滤掉,以防止程序在运行后出现意料之外的bug。

(3)筛选出来的报文帧,判断其ID 是否属于falut_idmsg_list 内的ID。如果是,则进行下一步;
如果不是则将其过滤,继续判断下一帧报文的ID。

(4)比对falut_idmsg_list 内具体的信号名称列表,利用python 编程设计函数,计算出每一个信号的值,判断是否为定义故障的值。如果是,则记录到故障日志列表。编程设计说明如下:①利用can.BLFReader() 读取BLF 报文的log,但该函数并没有具体可以读取数据域的参数,需要编程设计获取log 内8 字节的数据域;
②编程设计通过信号ID 及信号名称获取信号长度、起始位、精度和偏移量,这4 个参数都可以通过python 自带函数库获取;
③编程实现根据4 个参数解析数据域,得到信号值。

(5) 根据故障日志, 打印统计的整车故障结果, 利用Tkinter 设计GUI 界面。

5 系统设计

5.1 主流程图设计

统计整车故障的系统主流程图如图4 所示。可以看出,基于python 统计整车故障的系统设计流程如下:①整车故障信号列表导出;
②利用python 对整车故障信号列表进行再处理;
③对BLF 文件读取、过滤,遍历故障信号并确认故障信号值是否触发;
④记录整车故障日志列表;
⑤统计整车故障通过界面展示、打印故障日志到TXT 文檔。

5.2 系统验证

系统设计完成后运行如下。

(1)将BLF 文件地址、整车DBC 地址和故障信号列表地址通过界面传递到python 编程设计的底层,填写完成后点击开始统计。

(2)统计完成后,在界面左下方可以清晰看出发生故障的通道、节点名称、故障信号名称以及整个报文期间发生的故障累计帧数。这不仅可以帮助技术人员快速定位故障原因,还可以发现一些对实车影响不大的故障。这些故障通常不易发现,但它们的存在始终存在一定的隐患,如果在设计开发阶段发现并及时解决掉,可以避免问题流入市场,影响主机厂的品牌口碑。

(3)本设计还开发了获取整车故障信息过程中主要步骤的用时,并通过界面展示。其目的是为了知道程序各阶段的运行用时,以供开发者优化程序的方向,提高统计效率。如若需要提升获取故障日志列表的效率,在此建议考虑多线程设计开发的思路。

(4)在左下角输入打印故障日志列表的路径,输入完成后点击“打印故障信号日志”,打开界面包含故障发生时间、节点名称、通道、信号名称和故障值(图5)。按故障发生时间先后顺序,打印故障日志,可以让排查人员知道问题发生的先后顺序。当然也可以利用CANoe 等分析软件,根据故障统计结果逐一提取具体的故障信号来分析。

6 结束语

本研究通过python 编程设计,实现统计整车BLF 报文内的整车故障,通过该设计可以快速找出整车CAN 报文内各系统发出的故障,从而辅助技术人员排查定位问题,同时也是对各系统功能的一种加强测试,可以发现一些对实车使用影响不大的问题。由于各主机厂DBC 的保密性,该方法主要适用于各主机厂研发人员,不适用于售后维修排查。

此外,该方法仅适用辅助分析故障源,快速缩小排查范围,具体的故障源判断以及故障解决还需要专业技术人员。往往整车某个问题涉及多个系统,逐一排查各系统很容易造成人力物力的浪费,同时也不容易定责为哪个系统负责人去排查。有了本研究所设计的系统,可以很好解决这2 个问题。

【参考文献】

[1] 刘俊. 浅析新能源汽车维修中电子诊断技术的应用[J]. 汽车世界,2020(01):121-122.

[2] 李坤. 车联网远程监控系统设计与实现[J]. 科技视界,2020(08):125-127.

[3] 李敏, 蔡营, 岳意娥.CAN 总线报文通信丢失的故障树分析方法浅析[J].汽车电器,2018(11):74-76.

[4] 翟高粤.基于Python的数据分析概述[J].甘肃科技纵横,2018,47(11):5-7+26.

[5] 郭海宇, 张晓光. 基于快速原型的新能源汽车网关控制器开发平台设计[J]. 现代电子技术,2018,41(19):141-145.

[6] 胡林, 唐岚, 李亚, 等. 基于CANoe 的车载网关系统仿真及分析[J]. 农业装备与车辆工程,2020,58(02):35-39.

作者简介:

金旅,本科,助理工程师,研究方向为整车高压电性能、功能测试。

猜你喜欢报文矩阵基于J1939 协议多包报文的时序研究及应用汽车电器(2022年9期)2022-11-07CTCS-2级报文数据管理需求分析和实现铁道通信信号(2020年4期)2020-09-21浅析反驳类报文要点中国外汇(2019年11期)2019-08-27初等行变换与初等列变换并用求逆矩阵中央民族大学学报(自然科学版)(2016年3期)2016-06-27ATS与列车通信报文分析铁道通信信号(2016年8期)2016-06-01矩阵南都周刊(2015年4期)2015-09-10矩阵南都周刊(2015年3期)2015-09-10矩阵南都周刊(2015年1期)2015-09-10

推荐访问:整车 故障 统计

热门排行

对党组领导班子的总体评价4篇

对党组领导班子的总体评价4篇对党组领导班子的总体评价 对XX单位党委领导班子的整体评价一、团结民民主方面:班子成员能够够树立大局意识,团结协协作,有较强...

基层风气专项整治讨论辨析5篇

基层风气专项整治讨论辨析5篇基层风气专项整治讨论辨析 >才智 228政法精英TheEliteofPoliticalandLaw浅析如何纠治发生在基层的不正之风营造风清气正的良好环境张会敏 

列为发展对象党员群众意见9篇

列为发展对象党员群众意见9篇列为发展对象党员群众意见 第1页共4页党员发展对象考察意见评语33篇 党员发展对象考察意见评语11 1、该同志自进入入党培养考察以...

党支部基本活动存在的问题及整改措施5篇

党支部基本活动存在的问题及整改措施5篇党支部基本活动存在的问题及整改措施 基层党组织存在的问题及整改措施按照保持共产党员先进性教育活动的工作安排,县委...

如何推动党建工作与业务工作融合发展4篇

如何推动党建工作与业务工作融合发展4篇如何推动党建工作与业务工作融合发展 我们要增强先进性意识,明确先进性目标,实践先进性要求,树立先进性形象。以下是...

专项整治问题清单及整改措施9篇

专项整治问题清单及整改措施9篇专项整治问题清单及整改措施 XXX公安局教育整顿顽瘴痼疾专项整治整改问题清单及整改措施一、总体目标二、整治内容、措施及目标(...

2022中国城市人口密度榜最新出炉(完整)

人口密度(densityofpopulation)是单位土地面积上的人口数量。通常使用的计量单位有两种:人 平方公里;人 公顷。它是衡量一个国家或地区人口分布状况的重要指标...

个人廉洁自律问题清单及整改措施4篇

个人廉洁自律问题清单及整改措施4篇个人廉洁自律问题清单及整改措施 个人廉洁自律方面存在的问题及整改措施三篇 个人廉洁自律方面存在的问题及整改措施2021年...

2023年度牢记嘱托感恩奋进挑大梁勇登攀走在前研讨发言4篇(范文推荐)

牢记嘱托感恩奋进挑大梁勇登攀走在前研讨发言近期,根据总行党委主题教育深入开展“牢记嘱托、感恩奋进、走在前列”大讨论工作安排,学习了习近平总书记对江苏工作

党支部基本活动存在的问题及整改措施8篇

党支部基本活动存在的问题及整改措施8篇党支部基本活动存在的问题及整改措施 支部建设存在的问题及整改措施支部建设存在的问题及整改措施3篇支部建设存在的问题...