目录

  • 1 博客内容
  • 2 提取信号
  • 3 程序原理
  • 4 源程序

1 博客内容

之前网上见有人问及Python在汽车行业的应用,这篇博客作为一个Use Case,介绍Python在处理汽车控制单元记录数据方面的应用:排查使用CANape采集的VCU记录数据中的异常点,数据类型的MDF(MF4通用)。

2 提取信号

设定内容,排查MDF文件三项数据:电机进水温>60℃、电机油温和进水差值>10℃、电机功率>50kW的所有数据点。之前有耳闻Python能处理MDF数据。网上搜索两个库可以,Python的Asammdf库似曾相识,因为去除MDF是康师傅的一个产品。

3 程序原理

下载轮子后,网上找不到教程。遂把帮助文件码一遍,分段print找规律。通过Signal.py和csselectronics(EN)网站对MDF4讲解,以及之前了解的基础教程+尝试,判断数据处理主要是对提取的信号(使用列表)处理。需留意不同信号的采样频率不一致,假设记录时间2min,列出信号:

  • 车速,VehicleSpeed,简写Vehspd,采样频率100Hz(10ms),信号点12000个;
  • 电机进水温度,EM Temperature Water In,简写TWI,采样频率10Hz(周期100ms),信号点1200个;
  • 电机进油温度,EM Temperature Oil In,简写TOI,采样频率10Hz(周期100ms),信号点1200个;
  • 电机扭矩,EM Torque,简写EMTq,采样频率10Hz(周期100ms),信号点1200个;
  • 电机转速,EM Speed,简写EMSpd,采样频率100Hz(周期10ms),信号点12000个;

CANape使用17版本自带例子,数据截图:

4 源程序

Python源程序

"""名称:  CheckMDF.py作者:  Morven_Xie版本:  1.0时间:  2020/7/21 1:49功能:  用于车辆排查车辆VCU记录的MDF文件简介:  提取车辆车速、电机进水温度、油温、电机扭矩、电机转速等信号Email:  morven_xie@163.com
"""# coding=utf-8
from asammdf import MDF                                  # 用于处理MDF文件
import os                                                # 用于获取文件路径file_path = "D:\SoftApp\Python\HardWay2StudyPython\MDFData" # 文件所在文件夹def CheckMDF(inpath):mdf =MDF(inpath)print(mdf.info())i=-1vehspd = mdf.get("sensor_S1_discrete_value")TWI=mdf.get("t")TOI=mdf.get("sensor_S1_state")EMTq=mdf.get("sensor_S2_state")EMSpd=mdf.get("sensor_S2_discrete_value")print(len(vehspd.timestamps))for k in vehspd.timestamps:i+=1if TWI.samples[i]>60:with open("CheckDataRecord.txt", 'a') as f:f.write(inpath)                         # 将固定信息先写入txt中f.write(str(TWI.samples[i]))f.write(str(k))f.write('\n')f.close()if (TOI.samples[int(i/10)]-TWI.samples[int(i/10)])>10:with open("CheckDataRecord.txt", 'a') as f:  # 新建txt,且其名称每次更新f.write(inpath)                          # 将固定信息先写入txt中f.write(int(TOI.samples[int(i/10)]-TWI.samples[int(i/10)]))f.write(str(k))f.write('\n')f.close()if (EMTq[int(i/10)]*EMSpd[i])/9550>50:with open("CheckDataRecord.txt", 'a') as f:f.write(inpath)                         # 将固定信息先写入txt中f.write(int((EMTq[int(i/10)]*EMSpd[i])/9550))f.write(str(k))f.write('\n')f.close()
pathss = []                                              #存储文件夹内所有文件的路径(包括子目录内的文件)
for root, dirs, files in os.walk(file_path):             # os.walk返回三个对象: dirpath(目录路径,string类型) dirname(多个子目录名,列表); filename(多个文件名,也是一个列表)path = [os.path.join(root, name) for name in files]  #遍历文件名对应的地址(3个文件地址)
for i in path:                                           #如果地址为真CheckMDF(i)                                          #调用def CheckMDF(inpath)函数

该思路的实际应用内容,点击“Python:处理车辆控制单元MDF记录文件思路_更新版”。

>> 更多相关内容,点击Morven_Xie博客概览

Python:处理车辆控制单元MDF(CANApe数据)记录文件思路相关推荐

  1. python中print又可将数据写入文件_Python第五课-将写入文件的列表格式化

    1.上节课代码中的问题 第四课中介绍了python持久化的基础实例--将数据写入文本文件. 可当我们试着把保存数据的文件读取出来会怎样呢? try: with open('man.txt', 'r') ...

  2. python将dataframe写入csv_Pandas dataframe数据写入文件和数据库

    转自:http://www.dcharm.com/?p=584 Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作,DataFr ...

  3. python中print又可将数据写入文件_Python 通过print_lol将数据保存到文件中

    1. 定义一个print_lol函数来控制列表的缩进和写入位置 import sys """this is a new fuction, which work for a ...

  4. ROS2学习笔记(十一)-- ROS2 bag数据记录与回放

    简介:ROS2提供了ros2 bag命令,可以记录指定主题的数据到文件中,也可以将记录下的内容再发布出来,相当于是数据的回放,除了通过命令行的方式实现数据记录以外,也可以通过编程实现主题数据记录以及而 ...

  5. 获取文本上字符出现的次数,把数据写入文件

    /*** @author 影子* @create 2021-12-19-11:49** * 练习3:获取文本上字符出现的次数,把数据写入文件* ** * 思路:* * 1.遍历文本每一个字符* * 2 ...

  6. python画车辆轨迹图_如何利用 Python 绘制酷炫的 车辆轨迹 — 速度时空图?三维数据用二维图像呈现...

    说明:本文系交通攻城狮原创文章,如需转载请私信联系,侵权必究. 2020,第 30 期,编程笔记 建议直接阅读精编版:如何利用 Python 绘制酷炫的 车辆轨迹 - 速度时空图?三维数据用二维图像呈 ...

  7. 基于python的车辆轨迹研究_highD:德国提出从空中角度测量车辆数据的新方法(文末附多种车辆轨迹数据集)...

    由极市.机器之心和中科创达联合举办的"2018计算机视觉最具潜力开发者榜单"评选活动,现已接受报名,杨强教授.俞扬教授等大牛嘉宾亲自评审,高通.中科创达.微众银行等大力支持,丰厚奖 ...

  8. 《Python编程从入门到实践》记录之json模块(数据存储)

    模块json让你能够将简单的Python数据结构转储到文件中, 并在程序再次运行时加载该文件中的数据. 你还可以使用json在Python程序之间分享数据.更重要的是,JSON数据格式并非Python ...

  9. 使用Python将MQTT传感器数据记录到SQL数据库

    使用Python将MQTT传感器数据记录到SQL数据库 在这个项目中,我们将创建一个简单的数据记录器,将数据记录到sqlite数据库. 该项目包括两个模块. sql logger类模块sql_logg ...

  10. Python中使用print,每次输出数据到文件时,记录当前输出时间,数据序号加一

    在将数据写入文件时,有时需要将数据标号,每次记录时让标号递增.本文思路是新建一个用于标号数据的文本文件,每次运行程序时调用里面的数据,加一后再将数据写入文件. 具体代码如下: import time ...

最新文章

  1. C# WinForm获取当前路径汇总
  2. 机器学习基础(HGL的机器学习笔记1)
  3. Fuel 30 分钟快速安装OpenStack
  4. c++ 或者 vc++中判断程序实例是否运行
  5. RxJs Subject, AnonymousSubject, BehaviorSubject, ReplaySubject和AsyncSubject
  6. (转)MySQL自带的性能压力测试工具mysqlslap详解
  7. 【VIJOS - P1037】搭建双塔(dp)
  8. 计算机网络管理员绩效考核,绩效考核管理系统是如何发挥作用的?
  9. 丢失数据文件和控制文件的恢复案例(zt)
  10. 压力测试TPS总是上不去
  11. 程序性天空盒,unity实现
  12. 启动计算机按住del不放,惠普从光驱启动开始怎么做(包括hp笔记本)
  13. 怀仁一中2021高考成绩查询,2019怀仁一中录取分数线(附2019高考成绩喜报)
  14. 单倍型基因组组装方法
  15. 【MATLAB】MATLAB矩阵的表示
  16. 用scc-loader实现模块化css编程
  17. 案件精灵9判断坐标颜色变化发出提示音(按键精灵9接收通知必备)
  18. 电脑上桌面便签怎么移动位置
  19. 虚拟主机、VPS、云服务器傻傻分不清楚,看这里!
  20. Windows CE学习几个经验

热门文章

  1. 各种浏览器下的页面元素xpath获取方法
  2. NCM格式如何转换为Mp3-音乐格式ncm转换mp3工具
  3. Bayer Pattern
  4. 计算机量子化学计算焓变,中国科学技术大学超级计算中心
  5. android跳转界面的方法有多少,Android跳转WIFI界面的四种方式
  6. cicso+RHEL7实践——小型校园网的搭建
  7. js中 urlencode编码
  8. PROE4.0抄数逆向点造型高级曲面建模教程
  9. JAVA——斐波那契数列(递归)
  10. java multipy_PyTorch版YOLOv4更新了,适用于自定义数据集