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.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 文档供用户查看。编译版怎么运行打开 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 MotorEffMAP3. 创建虚拟环境Windows PowerShellpython -m venv venv .\venv\Scripts\Activate.ps1Windows CMDpython -m venv venv venv\Scripts\activate.bat4. 安装依赖pip install -r requirements.txt5. 启动程序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车型、项目或样件代号会出现在标题和输出文件名中。KKcustomSpeedDirection自定义转向名称。留空时由转速均值自动判断填写后覆盖自动判断结果。正转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输出控制器效率 MAP0不输出。MotorMAP1输出电机效率 MAP0不输出。SYSMAP1输出系统效率 MAP0不输出。MCUAreaRatioCalculation1计算控制器效率区域占比。MotorAreaRatioCalculation1计算电机效率区域占比。SYSAreaRatioCalculation1计算系统效率区域占比。绘图和网格参数配置项说明示例EffMAPStep效率等高线和占比阈值支持英文逗号、分号或空格分隔。80,85,90,95,99PowerMAPStep功率等高线值支持英文逗号、分号或空格分隔。5,10,15,20,25xstep转速轴刻度间隔。500ystep扭矩轴刻度间隔。20StartSpeed效率区域占比起始转速。默认从0rpm开始。0StartTorque效率区域占比起始扭矩。默认从0Nm开始。0SpeedGrid插值网格转速步长必须大于 0。越小越精细但越慢。5TorqueGrid插值网格扭矩步长必须大于 0。越小越精细但越慢。0.5MaxGridPoints最大网格点数安全上限限制网格行数 x 网格列数防止步长过小导致内存过大。5000000效率区域占比分母按几何运行区域计算。默认StartSpeed0、StartTorque0时从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即可运行。