一套可配置的双电机四驱纯电整车模型
从驾驶循环到前后轴扭矩,从电池约束到 Hamiltonian 最小化,再到多 Sheet Excel 参数管理:本文直接沿着真实模型、真实表格和真实脚本,把关键链路拆开讲清楚。
双电机四驱瞬时效率最优分配Excel 配置SLDD 安全写回
这不是一篇只画概念框图的介绍。下面的图片全部来自当前工程:Simulink 模型直接导出、VehicleParameters.xlsx 实际数据渲染,以及导入脚本的关键代码段。
一句话概括:驾驶员提出总轮端需求,控制器枚举前后轴候选扭矩,在电机与电池约束内比较瞬时电功率和惩罚项,选出代价最小的前后轴组合;车辆、电池和两台电机的物理参数则由 Excel 集中维护。
1先看模型:驾驶循环、控制器与整车被明确分层

图 1|ConfiguredVirtualVehicleModel 顶层。左侧环境和驾驶循环形成目标车速,中间 Driver 产生踏板需求,Controllers 计算控制命令,右侧 Vehicle 闭环返回车速与状态。
顶层结构把“驾驶任务”“控制算法”“被控对象”分开。这样更换工况时不用碰电机 MAP,更换电机或电池时也不用改驾驶员逻辑。本文的 Excel 配置正是沿着这个边界设计:主要管理 Vehicle、Drivetrain、Battery、DCDC、Motor 等物理参数,而 Driver、控制器标定、Bus、Enum、Variant 和求解器设置继续留在数据字典或模型中。

图 2|Vehicle 被控对象。该层集成电池、电机、电驱传动、车身纵向动力学、制动与热相关计算,控制器面对的是完整整车,而不是孤立的效率查表。

图 3|Electrical Machines 子系统。前后电机分别接收命令并反馈转速、扭矩、电功率及热量信息,是四驱扭矩优化真正落地的执行层。
前轴通道电机 1 的扭矩包络、效率 MAP、传动比和效率单独建模。
后轴通道电机 2 可以拥有不同峰值扭矩与效率特性,不要求与前电机相同。
2前后电机扭矩到底怎么分?
它不是固定的 50:50 比例,也不只是按照峰值能力做线性分配。控制器先形成一组前、后轴候选扭矩,然后对每个候选组合做可行性判断和代价计算。

图 4|EvPowertrainController2EM 顶层。能量管理使用车速、总轮端扭矩、踏板、SOC、电池电压/功率限制和两台电机转速等输入,输出前后轴电机扭矩命令。

图 5|Energy Management。Control Domain 先生成候选分配向量;Powertrain Constraints 对每个候选点计算饱和扭矩、电池电流和不可行标志;Hamiltonian computation and minimization 负责选最优索引。

图 6|Control Domain。驱动时分别构造前、后轴扭矩候选向量;制动时转入串联再生制动路径。候选空间使算法能够比较“前轴多出力”“后轴多出力”以及不同组合。

图 7|Powertrain Constraints。电机约束负责限幅和电功率估算,电池约束检查充放电功率/电流限制;不可行候选会被打标并附加惩罚。

图 8|Hamiltonian computation and minimization。模型将电池功率、不可行惩罚、牵引功率误差及扭矩变化相关代价合成为候选代价 H,再由函数块找到最小值索引,选出对应的前后轴命令。
H ≈ Pbatt + Jconstraint + Jtracking + Jtransition
这里的 Hamiltonian 可以理解成“统一评分函数”。每一组前后轴扭矩都会得到一个分数:电池瞬时输入功率越小越好;违反电机或电池边界的组合会得到很大的惩罚;总驱动力没有满足需求,也会增加跟踪误差代价;扭矩变化过快还可能被平滑项抑制。最后直接取最小代价候选的索引。
它算不算 ECMS?
更准确的说法:它采用了与 ECMS 相似的“瞬时 Hamiltonian 最小化”思想,但不是经典混动 ECMS。经典 ECMS 通常在发动机燃油和电池电能之间通过等效因子分配能量;本模型是纯电双电机,优化对象主要是同一电池供能下的前后轴扭矩组合。
所以文章标题可以写“基于 Hamiltonian 的瞬时效率最优分配”,但不建议简单写成“ECMS 前后轴分配”,否则容易让读者误以为模型里还有燃油等效或发动机—电机能量管理。
为什么效率 MAP 会直接影响前后轴分配?
同样的总轮端功率,可以由一台电机承担,也可以由两台电机分担。两台电机在各自转速、扭矩点上的效率不同,最终电池功率也不同。优化器借助候选向量与电机模型,把这种差异转换为可比较的 BattV × BattCurr,自然会偏向损耗较小的组合。
0 Nm 时是否已经考虑电机空转损耗?
效率表中虽然存在 0 Nm 行,但如果电功率核心仍按机械功率 T × ω 再除以效率计算,那么 T=0 时结果仍为 0。也就是说,现有 0 Nm 效率值本身不会自动产生空载铁耗、风摩损耗和逆变器待机损耗。若需要更真实的高速滑行能耗,应额外加入随转速/电压/温度变化的零扭矩损耗 MAP,而不是只改 0 Nm 行的效率。
3Excel 配置:只把高频物理参数放进去
把所有模型变量全部搬进 Excel,表面上统一,实际会把 Variant、Bus、控制标定和求解设置混在一起,维护风险反而更高。当前工作簿选择的是工程上最常换的一层:整车、轮胎/制动、传动、电池、DCDC 和两台电机。

图 9|ReadMe Sheet 先声明边界、应用命令、只校验命令、MAP 约定和排除项。工作簿本身就是一份可交付接口说明。

图 10|Scalars 中与双电机最相关的部分:前后传动比/效率、电池容量和串并联数、前后电机最大转速/扭矩与时间常数。每行同时保留 Excel 单位、模型目标单位、目标 SLDD 和说明。
Enabled 允许暂时跳过某一行;ExcelUnit / TargetUnit 让 rpm→rad/s 等转换显式化;DataSource 则防止同名参数被误写进错误的数据字典。

图 11|Battery_OCV 二维 MAP:行轴为 SOC,列轴为温度,单元格为开路电压。Battery_Rint 使用同样的二维网格约定。
这种形式比在脚本中维护长数组直观得多。Loader 会检查轴严格递增、SOC 位于 [0,1]、OCV 和内阻为正,并确认 OCV 与 Rint 的温度轴一致。

图 12|EM1_Torque:用 Speed_rpm—Torque_Nm 两列描述前电机扭矩包络。后电机采用独立的 EM2_Torque Sheet。

图 13|EM1_Efficiency:扭矩为行轴,转速为列轴,单元格为效率百分数。修改这张表会直接改变候选扭矩组合的电功率评估。
Excel 里只维护最容易理解和标定的二维基础效率表。模型内部需要的转置、温度维度和电压维度,由 Loader 自动构造 3D/4D 数组,避免人工复制带来的维度错位。

图 14|MapCatalog 汇总每张 MAP 的格式、轴、单位和目标变量。对参数交付、版本评审和供应商数据替换非常实用。

图 15|Checks 列出 Loader 执行的保护项:必需 Sheet/列、有限数、递增轴、范围、三维网格完整性、字典归属、形状保护和备份。
4导入脚本:不是简单 readtable,而是一条安全写回链
Excel 能否成为模型配置入口,关键不在“读到数”,而在“错误的数据不能悄悄写进去”。当前 Loader 把流程拆成读取、构造、校验、预览、备份、写回、提交和模型更新。

图 16|入口参数和必需 Sheet。DryRun、CreateBackup、UpdateLoadedModel 都有明确默认值;Excel 的管理范围也直接写在函数注释中。
这里先检查工作簿路径和九张必需 Sheet,再分别调用 Scalars、电池、电池功率限制和两台电机的解析函数。缺 Sheet 时立即终止,不进入字典写操作。

图 17|Loader 在顶层 SLDD 中逐项查找目标,检查类型、标量/数组形状以及 DataSource。DryRun 在所有检查完成后、实际写入之前返回。
这是最重要的工程保护:即使 Excel 单元格内容是合法数字,如果目标变量属于另一份 SLDD,或原来是数组而新值变成标量,也不会继续写入。

图 18|写回阶段先确认字典没有未保存修改,再把涉及的 SLDD 复制到带时间戳的 Work/ParameterBackups。setValue 全部成功后才 saveChanges;异常时 discardChanges 并重新抛出错误。

图 19|电机 MAP 导入。脚本检查效率范围和轴,执行 rpm→rad/s、℃→K,并由二维基础表生成模型所需的 3D/4D 效率数组。
推荐使用顺序
编辑 Excel只改 Value、MAP 数值或需要更新的轴;不要重命名必需 Sheet 和列。
先做 DryRun读取与校验全部参数,但不修改 SLDD。
确认 report查看更新数量、变量名、来源字典、旧尺寸与新尺寸。
正式应用自动备份字典、写入并保存;模型已经打开时可执行 update。
report = loadVehicleParametersFromExcel(DryRun=true); report = loadVehicleParametersFromExcel;
5热相关部分怎么屏蔽?

图 20|Thermal 子系统包含平均温度、座舱、EM Heat Flow、Heat Flow Estimates、Thermal Accessory Power 和启停状态等路径。它不只是一个显示模块,部分热附件功率会影响电耗。
当前模型中没有发现一个覆盖整个 Thermal 子系统的统一总开关,因此不建议直接删线或注释整块。若只是研究前后轴效率分配,建议采用“热旁路”思路:
建议的最小影响屏蔽方式
1. 将热附件功率请求置零,避免空调/热管理额外消耗进入电池功率。
2. 将电池和电机温度保持为固定标定温度,使温度不再动态反馈到功率限制或效率维度。
3. 保留原信号接口,用 Variant Subsystem 在“原热模型”和“常值旁路”之间切换。
4. 分别对比热模型开/关时的 SOC、BattCurr、前后轴扭矩和总电耗,确认隔离范围。
这类开关属于试验场景或控制结构,不适合塞进物理参数 Excel。更合适的做法,是在模型中新增例如 EnableThermal 的 Variant 控制,而 Excel 继续只管理质量、效率、MAP、初始温度等物理数据。
6这套配置方式最适合哪些工作?
车型参数快速替换质量、轮胎半径、传动比、电池串并联、电机峰值能力集中修改。
电驱方案对比分别导入前后电机扭矩包络和效率 MAP,观察最优分配变化。
标定交付与审查用 Sheet、单位、目标字典和 Checks 建立清晰接口。
批量仿真MATLAB 先应用 Excel,再运行不同工况并输出能耗与前后轴工作点。
真正值得“Excel 化”的,是频繁变化、数值型、具有清晰单位和维度的物理标定;真正应该留在模型/SLDD 的,是控制逻辑、Bus/Enum、Variant、求解器和不希望普通用户随意修改的控制器参数。
夜雨聆风