本节摘要:Simscape 把建模单元从"有输入输出的运算模块"换成"通过端口交换能量的物理元件",连线语义从赋值变成守恒。本节把 4.1 节手工搭建的电机模型升级为 Simscape 物理网络:电气端口、机械端口、物理信号各归其位,重点讲清物理网络与信号流的因果性差异、混合建模的接口规范,最后用交叉验证证明升级没有改变物理行为。
硬件组审阅 4.1 节模型时提了一个看似简单的要求:"给我们一个电端口,我们想直接把它接进母线模型。"手工框图模型答不了这个要求——它的"电压输入"是一根信号线,语义是"把数值赋给参数",不是"这个端口与你的母线交换电流"。物理世界的端口是双向的:你给我电压,我回你电流,谁也不单方面"赋值"。要满足这类需求,模型必须换成物理网络的表达。
Simscape 的单元库按物理域组织:电气域里是电阻、电感、电容、源与测量元件;机械域里是转动惯量、轴承摩擦、理想转矩源。元件之间用物理连线连接,每根线代表一个"节点",节点上基尔霍夫定律自动成立——电气节点电流和为零、机械节点角速度一致转矩和为零。建模者的工作从"排列因果次序"退到"画电路图",方程自动生成,因果性由求解器整理(1.3 节对比 Modelica 时讲过的非因果范式,Simscape 是它在 Simulink 家族内的实现)。
电模型的转换直来直去:电枢回路改成"电压源、电阻、电感、反电动势受控源"串成一条支路;机械侧把转动惯量与摩擦块接到理想机电耦合元件的机械端口上。转换后模型多了两个物理端口——电气正负端口、机械转轴端口——硬件组的要求达成:他们的母线模型可以直接接上来,连接即守恒。
真正的转换难点在接口。物理网络与信号框图混合时,双向的物理量要经两类特殊模块翻译:物理信号到 Simulink 信号的传感器(取出电压、电流、转矩作为信号送给控制器),以及 Simulink 信号到物理源的执行器(把控制器的占空比指令变成源的行为)。接口处要盯两件事:其一,信号方向明确后物理量纲要核对,传感器选错了量(取成电压而非电流)网络照样能跑,数值全错;其二,每个物理网络必须恰当地定义参考——电气域的接地、机械域的机座,悬空的参考是物理建模报错的头号来源。
% 物理网络搭建后的交叉验证脚本 load_system('motor_simscape'); % 新的物理网络版 load_system('motor_speed_loop'); % 4.1 节手工框图版 cfg = [ {'ode23t','1e-4'}, {'ode23t','1e-5'} ]; % 物理网络常配隐式求解器 for k = 1:2 set_param('motor_simscape', 'Solver', cfg{k,1}, 'RelTol', cfg{k,2}); outN(k) = sim('motor_simscape', 'StopTime', '1.0'); end outO = sim('motor_speed_loop', 'StopTime', '1.0'); % 交叉验证:同一指令与负载下,转速曲线逐点对比 wn = interp1(outN(1).tout, outN(1).w.Data, outO.tout); err = max(abs(wn - outO.w.Data)) / max(outO.w.Data); fprintf('物理网络与手工框图最大相对差 %.3f%%\n', err*100); % 判定:误差在千分之一量级 = 转换未改变物理行为 % 若误差达百分点级,优先核对:摩擦块参数、耦合元件的默认值、参考定义

物理网络改变了求解器画像。守恒约束让方程组带上代数性质(DAE 特征),隐式求解器从"可选"变成"常规"——上一节刚在 3.2 节认识的隐式家族在这里成了默认搭档。元件的物理参数如果量级悬殊(毫欧级的接触电阻对兆欧级的绝缘电阻),刚性加剧,步长被拖紧——所以物理建模有一条自己的参数卫生习惯:别把理想化到极端的参数(零电阻、无穷大阻抗)写进模型,用"工程上足够大或足够小"的实际值代替。
交叉验证是升级的收尾仪式,不可跳过。上面的脚本给出判定基准:同工况下两版模型转速曲线最大相对差在千分之一量级,转换即告无副作用;若差到百分点级,优先核对三处——摩擦块的默认参数、机电耦合元件的类型选择、参考定义是否完整。验证通过后,手工框图版不必删除:轻量版跑控制整定与批量扫描,物理网络版接待硬件对接与保真度追问,两版并存各司其职,共用同一份参数脚本(第 6 章的数据管理会把这件事制度化)。
💡 关键直觉:物理网络换来的不是"更真实",而是"更可组合"。单看一台电机,手工框图又快又好;一旦模型要与其他组的热网络、传动网络直接握手,端口与守恒语义就开始值钱。
三个高发病因按顺序排查。参考定义缺失或重复:电气域少接地、机械域少机座,或者多接了造成冗余约束,矩阵立刻奇异——数一数每个独立回路的参考点数量。理想化参数极端:零电阻的导线段、完全刚性的连接件,把方程的数值条件拉到悬崖边,给它们换上"工程上足够极端但有限"的实际值。冗余元件:两个串联的理想电压源、并联的理想电流源,物理上就是矛盾方程,求解器无从下手。三类病因加起来覆盖了九成的数值奇异报错,而它们的共同点是说:病不在求解器,在物理表达本身。
部分可以。网络对应的方程经符号化简后可以生成代码,但开关级、事件密集的物理网络生成出来的代码通常超出嵌入式预算——实践中的分工还是 5.2 节的两版并存:物理网络版负责高保真验证,从它导出降阶模型(或直接用轻量框图版)去做部署代码。想走"物理网络直接生成"路线的项目,先把 8.2 节的资源预算算清楚再决定,不要等生成完才发现体积超标。
物理骨架换好了,还剩一种世界没进过:没有微分方程、时钟直接跳到下一个事件的世界。下一节走进测试线。