本节摘要:真实的工程系统几乎都是混合系统:连续的被控对象、离散的数字控制器、事件驱动的保护逻辑,各自以不同的时间观运行在同一张框图里。本节讲清混合系统的拼接规则——采样保持如何架桥、速率转换如何消化多种采样率、执行次序如何确定——并把混域建模最常见的三个错误逐一演示。读完本节,你能有把握地搭建"连续对象加离散控制器"的标准闭环,为第 4 章的全程复盘备齐结构知识。
把 2.1 节的连续电机与 2.2 节的离散 PI 接成闭环,交界处立刻出现问题:控制器的输出是一个台阶波(每 1 毫秒更新一次、期间保持),电机的输入电压却被假设为连续量;反过来,控制器要读转速,读到的却应是"最近一次采样时刻"的值而不是此刻的值。混合建模的桥就是采样保持对:零阶保持模块把连续信号按控制器节拍切片,送给离散域;信号经过离散运算后,输出的台阶波直接被连续域接收——对连续对象来说,台阶波本身就是合法的连续信号(分段常值)。
反方向的桥更微妙。连续信号进入离散模块的那一刻,Simulink 会在求解器内部隐式插入采样行为,但隐式行为不如显式建模可靠:手动放置零阶保持,把采样周期写成与控制器一致,交界处一目了然,混域错误在画布上直接可见。经验法则:能显式的都显式——交界处的桥、多速率之间的速率转换,全部手放模块。
系统复杂后,速率不止两个:电流环 10 千赫兹、速度环 1 千赫兹、监控记录 100 赫兹。多速率系统引入一个连续系统不存在的问题——不同速率的模块如何对表。速率转换模块(Rate Transition)负责这件事,它有三种模式,行为差异直接决定数据一致性:
| 模式 | 行为 | 适用场景 |
|---|---|---|
| 保序且确定 | 慢读快写都排队,结果可复现 | 安全关键系统默认选择 |
| 快到慢加保护 | 快信号被慢域读到最新完整值 | 高速数据进慢速监控 |
| 低延迟 | 尽量少缓冲,可能读到正在写的值 | 非关键的调试信号 |
安全相关项目一律用第一种模式,性能敏感的观测通路可以放宽——但每放宽一处,都要能说清"这根信号读到旧值一拍,会有什么后果"。这个"能说清"的要求在第 7 章验证环节会变成硬性检查。

混合系统还引入了时刻语义:求解器的时间轴不再是均匀的,它由一串"重要时刻"组成——每个采样命中点、每个过零事件(第 3 章详述)都是一个时刻。在同一个时刻,模块的执行次序由拓扑排序决定;而虚拟子系统与原子子系统的区别正在于此:原子子系统把内部所有模块绑成一个不可分割的执行单元,在多速率交错处保证次序确定性;虚拟子系统只是视觉分组,模块会被打散重排。混域模型的关键路径上放原子子系统,是消除"时序不确定"焦虑的标准做法。
把这层的三个错误提前点名。错误一:交界处不放显式保持,靠隐式规则,画布上看不出域边界在哪;错误二:速率转换模式随手选,被问"这条信号慢一拍会怎样"时答不上;错误三:模型里的控制周期是拍脑袋值,与目标处理器定时器不一致,仿真结论上机即失效。三条都指向同一个习惯——域边界与速率决策要显式、要留痕、要与实物对表。
把规则落到一个真实排查场景。小林在混域闭环上遇到怪象:同样的指令曲线,仿真两次结果不同,误差在转速过零附近最为明显。按混域三查走:一查域边界,零阶保持都在、位置正确,排除;二查速率转换,发现测量通路的速率转换被设成了低延迟模式——快域写、慢域读没有保护,转速过零附近读写竞争使结果依赖执行次序,这正是"两次不同"的根源;三改模式重跑,改回保序确定模式后十次运行结果完全一致,误差消失。
这个案例的推广价值在于它揭示了混域问题的一般形态:症状在连续域曲线 上,病根在离散域的次序与节拍里。看见"结果不确定""偶尔发散""过零附近异常",先别动物理参数,回头检查速率转换模式、原子化设置与采样相位——三查走完仍无果,才轮到怀疑模型物理本身。
统一速率确实省心,代价是仿真计算量按速率比放大。电流环 10 千赫兹、机械负载 100 赫兹够用的场合,强行统一成 10 千赫兹意味着机械侧白白多做百倍的无用计算;模型一大、实验一多,这笔账非常可观。多速率的正确心态是:把它当成有纪律的工程事实来管理(显式桥、显式模式、定期核对),而不是当成要消灭的麻烦。
输出点跟随时间轴上的"时刻"分布——采样命中与事件点密集处输出就密,平缓段就疏,这是混合系统的正常行为。需要等间隔数据时,在模型配置里启用细粒度输出(按指定网格输出),或事后对记录信号做等间隔重采样;两者都会引入轻微插值误差,频谱分析前先确认它落在你的精度预算内。
先定控制器的节拍(它由目标处理器的任务配置决定,是约束条件),再把对象模型的表达粒度向它对齐——对象里快于控制节拍一半的动态要么建准、要么显式简化,不能让它以"半糊弄"的状态混进仿真。这个顺序与 2.2 节"采样时间一石三鸟"一脉相承:节拍是约束链的源头,对象建模粒度是下游决策,源头定好下游才有依据。
至此四种数学对象还剩一种没亮相:事件驱动。它与层次化结构一起,构成下一节的内容——也是本章的收尾。