测试框架与模型同步1. 概念讲解测试框架提供隔离的环境来试验设计改动。同步Synchronization就是把改动在测试框架与主模型两个方向之间传递。同步覆盖三类元素被测组件CUTCUT 模块及其内部的块、信号与其他实体块参数Block Parameters块上参数的取值右键块选 Block Parameters 可见可选地模型或测试框架的活动配置集Configuration Set。基础工作区的数据不需要同步因为框架与主模型都能访问它。子系统模型Subsystem Model测试框架总是与底层模型保持同步。配置集与模型工作区参数是否随重建同步由 Create Test Harness 对话框 Advanced Properties 页中的Update Configuration Parameters and Model Workspace data on rebuild决定。1.1 四种同步模式创建框架时就要指定同步时机自动还是手动。如果你打算在框架里试验不同的组件设计应选手动同步避免误覆盖主模型中的组件。各模式对比如下同步模式方向与时机可用对象框架打开时的锁定打开与关闭时同步Synchronize on harness open and close打开时模型 → 框架关闭时框架 → 模型子系统含 Stateflow 图、MATLAB Function 块、Model 块、S-Function 块Subsystem Reference 只同步块参数。不支持框图级、SIL/PIL、子系统模型框架主模型与框架均解锁模型中的子系统 CUT 被锁定框架中的子系统 CUT 解锁仅打开时同步Synchronize on harness open仅打开时模型 → 框架框图级、子系统、Model 引用块、S-Function 块Subsystem Reference 只同步块参数。不支持 SIL/PIL、子系统模型框架主模型与框架解锁模型与框架中的子系统 CUT 都被锁定仅推送与重建时同步Synchronize only during push and rebuildPush Changes框架 → 模型Rebuild Harness模型 → 框架子系统、Model 引用块、S-Function 块子系统模型总是此模式。不支持框图级、SIL/PIL、库中组件主模型、框架及其中各类 CUT含子系统全部解锁仅重建时同步Synchronize only during rebuild仅 Rebuild Harness模型 → 框架框图级、Model 引用块、SIL/PIL 验证模式组件。不支持子系统、S-Function 块、库中组件主模型与框架中各类 CUT 解锁但 SIL/PIL 模式组件被锁定并屏蔽两种需要特别记住的行为其一对 Model 块建 SIL/PIL 框架时框架内该块模式被改为 SIL/PIL关闭框架时不会把这个模式改动写回主模型其二框架中用了 SIL/PIL 块时建议把框架设为每次打开都重建Rebuild harness on open保持生成代码与主模型一致。无论哪种模式框架打开时你仍可以仿真主模型也可以为其他组件建框架但一次只能打开一个框架因此新建框架不会自动打开。1.2 三个核对与传递操作检查未同步差异Check for Unsynchronized Component Differences框架不自动同步时可用菜单Check Harness对应sltest.harness.check核对框架与主模型之间的组件差异。典型用途在框架里做试探性修改前确认不会覆盖主模型组件或主模型改了设计后确认哪些框架需要重建。注意两点check 只比较框图、块参数与掩码参数不含端口选项、编译属性、隐藏参数与 Model 块数据记录参数若组件含 Simscape Solver Configuration 块由于它受组件外部 Simscape 块影响check 永远显示组件有差异。重建Rebuild在框架中选Rebuild Harness让框架反映主模型最新状态除更新 CUT 与块参数外还会重建信号转换子系统原来没有则补上。重建可能断开信号线例如主模型信号名变了断线后需手动把线接回 CUT 或转换子系统。推送Push在框架中改完系统后选Push Changes把框架改动写回主模型——这会覆盖主模型中的组件。2. 操作步骤 / 工作流更改既有框架的同步模式关闭测试框架在主模型中单击块上或画布上的框架徽标在框架缩略图预览中单击 Harness operations 图标选Properties在属性对话框中改 Synchronization Mode。命令行方式sltest.harness.set设SynchronizationMode属性。典型核对—推送闭环打开框架 → 在框架中改组件/参数 → Check Harness 看差异 → 满意则 Push Changes 写回主模型或不满意则 Rebuild Harness 从主模型刷新。3. 示例% sltestCar 示例在 ShiftLogic_InportHarness 中改掩码参数并推送回主模型 open_system(sltestCar); sltest.harness.open(sltestCar/shift_logic,ShiftLogic_InportHarness); % 方式一双击 shift_logic 子系统把 Delay before gear change (tick) 改为 4 % 方式二命令行改掩码参数 shiftLogicMask Simulink.Mask.get(ShiftLogic_InportHarness/shift_logic); shiftLogicMask.Parameters.Value 4; % 检查框架与主模型是否同步 [comparison,details] sltest.harness.check(sltestCar/shift_logic, ... ShiftLogic_InportHarness); % 返回 comparison0details.reason 提示框图内容一致但块或掩码参数不同 % 推送回主模型界面Harness 选项卡 Push Changes sltest.harness.push(sltestCar/shift_logic,ShiftLogic_InportHarness) % 更新两端后重新检查 set_param(sltestCar,SimulationCommand,update); set_param(ShiftLogic_InportHarness,SimulationCommand,update); [comparison,details] sltest.harness.check(sltestCar/shift_logic, ... ShiftLogic_InportHarness); % 返回 comparison1details.reason二者校验和相同 close_system(sltestCar,0);4. 要点与注意事项想试验多种组件设计而不污染主模型选仅推送与重建时同步并养成改前先 Check 的习惯。Push Changes 是覆盖操作执行前务必确认框架中的改动就是要保留的设计。Rebuild 可能断开信号线重建后要检查连线SIL/PIL 框架建议开 Rebuild harness on open 保持代码新鲜。sltest.harness.check不报端口选项、编译属性等差异Simscape Solver Configuration 块永远报差异不要据此误判。配置集与模型工作区数据是否同步由 Update Configuration Parameters and Model Workspace data on rebuild 单独控制。框架打开时主模型一般仍可仿真但一次只能开一个框架。