Python:处理车辆控制单元MDF(CANApe数据)记录文件思路
目录
- 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数据)记录文件思路相关推荐
- python中print又可将数据写入文件_Python第五课-将写入文件的列表格式化
1.上节课代码中的问题 第四课中介绍了python持久化的基础实例--将数据写入文本文件. 可当我们试着把保存数据的文件读取出来会怎样呢? try: with open('man.txt', 'r') ...
- python将dataframe写入csv_Pandas dataframe数据写入文件和数据库
转自:http://www.dcharm.com/?p=584 Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作,DataFr ...
- python中print又可将数据写入文件_Python 通过print_lol将数据保存到文件中
1. 定义一个print_lol函数来控制列表的缩进和写入位置 import sys """this is a new fuction, which work for a ...
- ROS2学习笔记(十一)-- ROS2 bag数据记录与回放
简介:ROS2提供了ros2 bag命令,可以记录指定主题的数据到文件中,也可以将记录下的内容再发布出来,相当于是数据的回放,除了通过命令行的方式实现数据记录以外,也可以通过编程实现主题数据记录以及而 ...
- 获取文本上字符出现的次数,把数据写入文件
/*** @author 影子* @create 2021-12-19-11:49** * 练习3:获取文本上字符出现的次数,把数据写入文件* ** * 思路:* * 1.遍历文本每一个字符* * 2 ...
- python画车辆轨迹图_如何利用 Python 绘制酷炫的 车辆轨迹 — 速度时空图?三维数据用二维图像呈现...
说明:本文系交通攻城狮原创文章,如需转载请私信联系,侵权必究. 2020,第 30 期,编程笔记 建议直接阅读精编版:如何利用 Python 绘制酷炫的 车辆轨迹 - 速度时空图?三维数据用二维图像呈 ...
- 基于python的车辆轨迹研究_highD:德国提出从空中角度测量车辆数据的新方法(文末附多种车辆轨迹数据集)...
由极市.机器之心和中科创达联合举办的"2018计算机视觉最具潜力开发者榜单"评选活动,现已接受报名,杨强教授.俞扬教授等大牛嘉宾亲自评审,高通.中科创达.微众银行等大力支持,丰厚奖 ...
- 《Python编程从入门到实践》记录之json模块(数据存储)
模块json让你能够将简单的Python数据结构转储到文件中, 并在程序再次运行时加载该文件中的数据. 你还可以使用json在Python程序之间分享数据.更重要的是,JSON数据格式并非Python ...
- 使用Python将MQTT传感器数据记录到SQL数据库
使用Python将MQTT传感器数据记录到SQL数据库 在这个项目中,我们将创建一个简单的数据记录器,将数据记录到sqlite数据库. 该项目包括两个模块. sql logger类模块sql_logg ...
- Python中使用print,每次输出数据到文件时,记录当前输出时间,数据序号加一
在将数据写入文件时,有时需要将数据标号,每次记录时让标号递增.本文思路是新建一个用于标号数据的文本文件,每次运行程序时调用里面的数据,加一后再将数据写入文件. 具体代码如下: import time ...
最新文章
- C# WinForm获取当前路径汇总
- 机器学习基础(HGL的机器学习笔记1)
- Fuel 30 分钟快速安装OpenStack
- c++ 或者 vc++中判断程序实例是否运行
- RxJs Subject, AnonymousSubject, BehaviorSubject, ReplaySubject和AsyncSubject
- (转)MySQL自带的性能压力测试工具mysqlslap详解
- 【VIJOS - P1037】搭建双塔(dp)
- 计算机网络管理员绩效考核,绩效考核管理系统是如何发挥作用的?
- 丢失数据文件和控制文件的恢复案例(zt)
- 压力测试TPS总是上不去
- 程序性天空盒,unity实现
- 启动计算机按住del不放,惠普从光驱启动开始怎么做(包括hp笔记本)
- 怀仁一中2021高考成绩查询,2019怀仁一中录取分数线(附2019高考成绩喜报)
- 单倍型基因组组装方法
- 【MATLAB】MATLAB矩阵的表示
- 用scc-loader实现模块化css编程
- 案件精灵9判断坐标颜色变化发出提示音(按键精灵9接收通知必备)
- 电脑上桌面便签怎么移动位置
- 虚拟主机、VPS、云服务器傻傻分不清楚,看这里!
- Windows CE学习几个经验