(开源)MotorEffMAP-电机电控效率MAP图绘制程序
2026/6/20 22:05:39 网站建设 项目流程

MotorEffMAP 是一个用于绘制电动汽车电机、电控、系统效率 MAP 的 Python 桌面工具。程序读取 Excel 测试数据,根据MotorEffMAP.ini中的列名和绘图参数,批量生成效率 MAP、功率等高线、效率区域占比表和占比图。

下载

  • 项目仓库:https://github.com/swordstudiox/MotorEffMAP
  • 编译版下载:https://github.com/swordstudiox/MotorEffMAP/releases

普通用户建议从 Releases 下载编译版。开发者或需要二次修改时再使用源码运行。

主要功能

  • 支持一次选择多个 Excel 文件。
  • 支持自动遍历每个 Excel 文件中的多个 sheet。
  • 支持 MCU、Motor、System 三类效率 MAP。
  • 支持功率等高线叠加显示。
  • 支持效率区域占比计算,并导出 Excel 和 PNG。
  • 支持在界面中编辑MotorEffMAP.ini配置。
  • 支持源码运行和 Windows 编译版运行。

目录结构

文件或目录说明
run.py源码运行入口。
MotorEffMAP_GUI.pyPySide6 图形界面、配置页、绘图和输出保存。
MotorEffMAP_Logic.py数据读取、清洗、包络线、插值、占比计算。
MotorEffMAP.ini用户配置文件。
requirements.txt源码运行依赖。
build_exe.batWindows 一键打包脚本。
build_script.pyPyInstaller 打包逻辑。
example/示例数据和示例输出图片,可用于快速试运行和查看效果。
docs/program-implementation.md详细程序实现文档,供维护者和程序读取。
docs/program-implementation.html与 Markdown 同步的离线 HTML 文档,供用户查看。

编译版怎么运行

  1. 打开 Releases。
  2. 下载最新发布包。
  3. 解压到本地目录。
  4. 确认目录中至少包含:
MotorEffMAP.exe MotorEffMAP.ini
  1. 双击MotorEffMAP.exe
  2. 在程序中点击选择数据文件,选择.xls.xlsx
  3. 点击处理并保存所有

编译版会从MotorEffMAP.exe同级目录读取MotorEffMAP.ini。如果要给不同项目使用不同配置,可以复制整个程序目录,再分别修改各目录下的MotorEffMAP.ini

源码怎么运行

1. 准备 Python

建议使用 Python 3.10 或更新版本。

2. 克隆仓库

git clone https://github.com/swordstudiox/MotorEffMAP.git cd MotorEffMAP

3. 创建虚拟环境

Windows PowerShell:

python -m venv venv .\venv\Scripts\Activate.ps1

Windows CMD:

python -m venv venv venv\Scripts\activate.bat

4. 安装依赖

pip install -r requirements.txt

5. 启动程序

python run.py

源码运行时,程序会读取项目根目录下的MotorEffMAP.ini

程序界面

示例数据

仓库中的example/目录提供了一组可直接试用的示例文件:

文件说明
example/MotorEffMAP_主界面.png程序主界面截图。
example/示例_效率数据.xlsx示例输入数据,可在程序中直接选择并处理。
example/示例_效率数据_Sheet1_KK-630V-正转驱动_MCUEfficiencyMAP.png示例生成的 MCU 效率 MAP。
example/示例_效率数据_Sheet1_KK-630V-正转驱动_效率占比.xlsx示例生成的效率区域占比表。
example/示例_效率数据_Sheet1_KK-630V-正转驱动_效率占比.png示例生成的效率区域占比图。

示例图片使用仓库内相对路径引用,在 GitHub 等远程 Git 仓库页面中可以直接显示。

示例效果

Excel 数据要求

程序会读取 Excel 中的所有 sheet。每个 sheet 的第一行应作为列名,列名要和MotorEffMAP.ini中配置一致。

建议数据格式:

类型要求
转速数字,可正可负,程序会取绝对值用于 MAP。
扭矩数字,可正可负,程序会取绝对值用于 MAP。
功率数字,可正可负,程序会取绝对值用于 MAP。
MCU 效率数字,建议 0 到 100 之间。
电机效率数字,建议 0 到 100 之间。
系统效率数字,建议 0 到 100 之间。
母线电压数字,或在customUdc中直接配置固定电压。

注意事项:

  • Excel 末尾可以有空行,程序会删除无效空行。
  • 如果某列存在但某些单元格为空,空值不会被当成 0。
  • 如果配置中写的列名在 Excel 中不存在,程序会提示错误并停止处理该 sheet。
  • 同一个 sheet 建议只放同一转向、同一电动/发电状态、同一电压等级的数据。

配置文件说明

配置文件是MotorEffMAP.ini。可以直接编辑,也可以在程序的配置页签中修改后点击保存并重载

基本信息

配置项说明示例
VehicleCode车型、项目或样件代号,会出现在标题和输出文件名中。KK
customSpeedDirection自定义转向名称。留空时由转速均值自动判断;填写后覆盖自动判断结果。正转
customMotionState自定义工况状态。留空时由功率均值自动判断;填写后覆盖自动判断结果。驱动

Excel 列名映射

这些配置项右侧必须填写 Excel 第一行中真实存在的列名。

配置项说明
Speed转速列名。
Toqrue扭矩列名。
P_Motor电机功率列名。
Eff_MCU控制器效率列名。
Eff_Motor电机效率列名。
Eff_SYS系统效率列名。
U_dc母线电压列名。
customUdc固定电压值。填写有效数字后,程序优先使用该电压,不再使用U_dc列。

示例:

VehicleCode = KK Speed = 转速[rpm] Toqrue = 扭矩[Nm] P_Motor = 功率[kW] Eff_MCU = 效1 Eff_Motor = 效2 Eff_SYS = 效3 U_dc = Udc4 customUdc =

MAP 输出开关

配置项说明
MCUMAP1输出控制器效率 MAP,0不输出。
MotorMAP1输出电机效率 MAP,0不输出。
SYSMAP1输出系统效率 MAP,0不输出。
MCUAreaRatioCalculation1计算控制器效率区域占比。
MotorAreaRatioCalculation1计算电机效率区域占比。
SYSAreaRatioCalculation1计算系统效率区域占比。

绘图和网格参数

配置项说明示例
EffMAPStep效率等高线和占比阈值,支持英文逗号、分号或空格分隔。80,85,90,95,99
PowerMAPStep功率等高线值,支持英文逗号、分号或空格分隔。5,10,15,20,25
xstep转速轴刻度间隔。500
ystep扭矩轴刻度间隔。20
StartSpeed效率区域占比起始转速。默认从0rpm开始。0
StartTorque效率区域占比起始扭矩。默认从0Nm开始。0
SpeedGrid插值网格转速步长,必须大于 0。越小越精细,但越慢。5
TorqueGrid插值网格扭矩步长,必须大于 0。越小越精细,但越慢。0.5
MaxGridPoints最大网格点数安全上限,限制网格行数 x 网格列数,防止步长过小导致内存过大。5000000

效率区域占比分母按几何运行区域计算。默认StartSpeed=0StartTorque=0时,从0rpm / 0Nm开始统计。

使用流程

  1. 准备 Excel 数据,确认第一行列名正确。
  2. 打开程序。
  3. 切换到配置页,检查列名映射和绘图参数。
  4. 点击保存并重载
  5. 回到处理与分析页。
  6. 点击选择数据文件
  7. 点击处理并保存所有
  8. 在程序目录查看输出的 PNG、XLSX 和日志文件。

输出文件

输出文件会保存在当前运行目录。文件名包含源文件名、sheet 名、车型、电压、转向、状态和输出类型,以避免批量处理时互相覆盖。

示例:

示例数据_Sheet1_车型A-500V-正转驱动_MCUEfficiencyMAP.png 示例数据_Sheet1_车型A-500V-正转驱动_MotorEfficiencyMAP.png 示例数据_Sheet1_车型A-500V-正转驱动_SystemEfficiencyMAP.png 示例数据_Sheet1_车型A-500V-正转驱动_效率占比.xlsx 示例数据_Sheet1_车型A-500V-正转驱动_效率占比.png

怎么自行编译

Windows 下可以直接运行:

build_exe.bat

或在已安装依赖的 Python 环境中运行:

python build_script.py

构建脚本会:

  1. 强制使用项目虚拟环境venv\Scripts\python.exe
  2. 检查并安装pyinstaller
  3. 直接使用已有MotorEffMAP.ico,不再转换图标。
  4. 清理旧的build/dist/MotorEffMAP.spec
  5. 使用 PyInstaller 打包。
  6. 根据version.ini将发布目录命名为MotorEffMAP_日期-版本号
  7. 复制MotorEffMAP.iniversion.iniMotorEffMAP.ico到发布目录。
  8. 清理当前程序不用的 Qt 资源并检查构建产物完整性。

构建完成后,可执行文件目录为:

dist/MotorEffMAP_20260611-V1.2/

进入该目录双击MotorEffMAP.exe即可运行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询