(开源)MotorEffMAP-电机电控效率MAP图绘制程序
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.py | PySide6 图形界面、配置页、绘图和输出保存。 |
MotorEffMAP_Logic.py | 数据读取、清洗、包络线、插值、占比计算。 |
MotorEffMAP.ini | 用户配置文件。 |
requirements.txt | 源码运行依赖。 |
build_exe.bat | Windows 一键打包脚本。 |
build_script.py | PyInstaller 打包逻辑。 |
example/ | 示例数据和示例输出图片,可用于快速试运行和查看效果。 |
docs/program-implementation.md | 详细程序实现文档,供维护者和程序读取。 |
docs/program-implementation.html | 与 Markdown 同步的离线 HTML 文档,供用户查看。 |
编译版怎么运行
- 打开 Releases。
- 下载最新发布包。
- 解压到本地目录。
- 确认目录中至少包含:
MotorEffMAP.exe MotorEffMAP.ini- 双击
MotorEffMAP.exe。 - 在程序中点击
选择数据文件,选择.xls或.xlsx。 - 点击
处理并保存所有。
编译版会从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 输出开关
| 配置项 | 说明 |
|---|---|
MCUMAP | 1输出控制器效率 MAP,0不输出。 |
MotorMAP | 1输出电机效率 MAP,0不输出。 |
SYSMAP | 1输出系统效率 MAP,0不输出。 |
MCUAreaRatioCalculation | 1计算控制器效率区域占比。 |
MotorAreaRatioCalculation | 1计算电机效率区域占比。 |
SYSAreaRatioCalculation | 1计算系统效率区域占比。 |
绘图和网格参数
| 配置项 | 说明 | 示例 |
|---|---|---|
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=0、StartTorque=0时,从0rpm / 0Nm开始统计。
使用流程
- 准备 Excel 数据,确认第一行列名正确。
- 打开程序。
- 切换到
配置页,检查列名映射和绘图参数。 - 点击
保存并重载。 - 回到
处理与分析页。 - 点击
选择数据文件。 - 点击
处理并保存所有。 - 在程序目录查看输出的 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
构建脚本会:
- 强制使用项目虚拟环境
venv\Scripts\python.exe。 - 检查并安装
pyinstaller。 - 直接使用已有
MotorEffMAP.ico,不再转换图标。 - 清理旧的
build/、dist/和MotorEffMAP.spec。 - 使用 PyInstaller 打包。
- 根据
version.ini将发布目录命名为MotorEffMAP_日期-版本号。 - 复制
MotorEffMAP.ini、version.ini和MotorEffMAP.ico到发布目录。 - 清理当前程序不用的 Qt 资源并检查构建产物完整性。
构建完成后,可执行文件目录为:
dist/MotorEffMAP_20260611-V1.2/进入该目录双击MotorEffMAP.exe即可运行。
