2. Simscape物理网络基础

在Simulink中做控制算法时,我们习惯的是信号建模:一根箭头线从A模块指向B模块,线上流动的是一个数值(或数组),方向由箭头唯一确定,接收端只“读”这个值,不会反过来影响发送端。而Simscape走的是另一条路——物理建模。它不描述“谁把数据传给谁”,而是描述“哪些部件被同一根导线、同一根轴、同一个管路连在一起”,连接本身代表能量可以双向流动。理解这两者的差别,是进入Simscape世界的第一道门槛。

信号流与物理连接:两种完全不同的“连线”

信号建模的核心是因果性。一个Gain模块的输出等于输入乘以增益,输入是因、输出是果,箭头方向就是因果方向。Simulink求解器按模块的直通关系依次求值,每个模块都必须明确“谁是输入、谁是输出”。

物理建模的核心是非因果性。一个电阻,你既可以说“电流由电压决定”,也可以说“电压由电流决定”,到底哪个是因,取决于它和谁连在一起。Simscape因此不画箭头,而是用一根普通的连接线把两个部件的物理端口接起来。这根线不代表数据传递,而代表“这两个端口处于同一个物理节点上,共享同一个势变量和同一个流变量”。

以电气域为例,端口上的一对变量是电压v(势变量,Across)和电流i(流变量,Through)。当两个端口被连接线连在一起时,Simscape自动施加两条约束:势变量相等(两端电压相同),流变量之和为零(流入节点的电流等于流出节点的电流,即基尔霍夫电流定律)。这两条约束不是我们手写的,而是连接动作本身产生的。

信号建模 vs 物理建模:连线语义对比 信号建模(Simulink 因果) Sine Wave 输出:数值 Gain y = k·u 单向箭头 • 方向由箭头唯一确定 • 接收端只读,不反作用于发送端 • 每个模块必须区分输入/输出端口 求解方式:按模块直通关系依次求值 代数环需人工插入 Unit Delay 等打破 物理建模(Simscape 非因果) Resistor R = 10 Ω DC Voltage Source 无箭头连接线 • 连接 = 同一节点,能量可双向流动 • 端口成对变量:v(势)与 i(流) • 连接自动施加 KVL / KCL 约束 求解方式:联立整个网络的方程 因果由求解器决定,无需人工指定

物理端口、节点、连接线与参考地

物理端口是部件与外部世界交换能量的接口。在Simscape中,端口用一个小方块或小圆圈表示,它携带的是一对(或多对)势/流变量,而不是一个数值。例如电阻模块有两个电学端口,每个端口都带电压和电流两个变量。

节点是连接线交汇的地方。当三根以上的连接线汇于一点时,Simscape把它视为一个节点,并对该节点施加“势相等、流之和为零”。节点不是我们手动创建的模块,而是连线拓扑自然形成的。

连接线是物理建模中最容易被误解的元素。它没有箭头,因为能量可以双向流动;它也不是“理想导线”之外的什么东西——在电气域中,连接线默认就是零阻抗的理想导线,两端电压严格相等。如果需要导线电阻,必须显式加入一个电阻模块。

参考地(Reference / Electrical Reference)是电气域中唯一必须显式添加的“基准”模块。它把某个节点的势变量固定为0 V,从而让整个方程组有唯一解。没有参考地,电压只能确定相对差值,求解器无法给出绝对电压,仿真会报错。这与电路理论中“选一个节点为地”完全一致。

动手:搭建一个简单电阻网络

下面用Simscape Electrical搭建一个最基础的电阻分压网络,验证上述概念。目标:12 V直流源经两个电阻分压,测量中间节点电压。

所需模块(均在 Simscape > Electrical > Specialized Power Systems 或 Foundation 库中):

  • DC Voltage Source:幅值设为 12 V
  • Resistor R1:10 Ω
  • Resistor R2:20 Ω
  • Electrical Reference:作为 0 V 基准
  • Voltage Sensor:测量 R2 两端电压
  • Solver Configuration:每个物理网络必须且只能有一个

连接方式:DC Voltage Source 正极 → R1 一端;R1 另一端 → R2 一端,同时接 Voltage Sensor 正极;R2 另一端 → 电源负极,并接 Electrical Reference;Voltage Sensor 负极接 Electrical Reference。Voltage Sensor 的输出端口是信号端口,用普通 Simulink 箭头线接到 Scope 或 Display。

这里出现了一个关键分界:物理端口用无箭头连接线,信号端口用带箭头信号线。Voltage Sensor 正是这两者的转换器——它把物理域中的电压“读”出来,变成一个 Simulink 信号。反过来,Controlled Voltage Source 则把信号变成物理激励。

理论预期:R1 与 R2 串联,总电阻 30 Ω,电流 I = 12/30 = 0.4 A,R2 上电压 V2 = 0.4 × 20 = 8 V。仿真运行 0.1 s,Scope 上应看到一条稳定在 8 V 附近的直线(启动瞬间可能有极短的数值过渡)。若显示 0 V,优先检查 Electrical Reference 是否接上;若显示 12 V,检查 R2 是否被短路或 Sensor 接错位置。

Solver Configuration 模块负责把物理网络交给合适的求解器。一个物理网络只需一个,放在任意连接线上即可。若同一模型中有多个互不连通的物理网络,每个网络各放一个。

常见误区与排查

现象可能原因处理
仿真报“网络无参考”缺少 Electrical Reference在任一节点接入参考地
电压全为 0参考地未与回路连通确认参考地接在回路节点上
提示“多个求解器配置”同一网络放了两个 Solver Configuration删除多余的一个
信号线接不上物理端口把物理端口当信号端口用用 Sensor / Source 做域转换

把这张网络再扩展一步:在 R2 旁并联一个 20 Ω 电阻 R3,重新计算。R2∥R3 = 10 Ω,总电阻 20 Ω,电流 0.6 A,中间节点电压 6 V。你会发现,只需在图上多连一根线,Simscape 就自动更新了 KCL 方程,无需改动任何“因果”设置——这正是物理建模的价值所在。