资讯动态

SimulinkTest 库块测试

发布时间:2026/10/30 2:30:10 来源:尧图企业网站定制
库块测试1. 概念讲解如果你的模型中使用了来自某个库的模块实例那么有两层对象可测库里的源模块以及其他模型中的具体模块实例。此外还可以对可复用库子系统生成的软件在环SIL代码做测试。推荐顺序是先为库模块建测试框架、把库模块本身验证好库模块满足需求后再为链接块建框架、测试各个实例测试框架还可以在库与实例之间双向移动。1.1 库测试工作流Library Testing Workflow指南给出的标准流程分七步为库子系统创建测试用例与测试框架测试库子系统不满足需求就改设计再测测试通过后锁定库Lock the library在你的模型中创建链接子系统保留库的测试框架用等效性测试用例Equivalence Test比较链接实例与库模块的输出为链接实例补充更多测试用例与框架若希望某个框架随以后所有链接实例一起分发把它从链接子系统提升Promote/Move to Library回库。1.2 库与链接子系统测试框架的特殊属性库子系统的测试框架有三条特殊性质库不编译因此库子系统框架不使用数据类型、采样率等编译属性库子系统框架不生成块输入/输出的转换子系统库子系统框架不使用 Push 与 Rebuild 操作因为库不使用配置参数。从库子系统创建链接子系统时库上的测试框架会复制到链接实例不需要可以删除。为链接子系统建框架时框架挂在链接子系统上而不是库上。反过来框架也能从链接子系统移回库选中链接子系统上的框架徽标 → Harness Operations →Move to Library确认后框架即从实例移除、挂到库子系统上。1.3 从测试框架编辑库模块库也可以走边设计边测试的迭代流程在测试框架中测试库模块并更新被测组件关闭框架时改动同步回库。如果库模块设计已经冻结应在建框架时或之后设置属性防止框架改动被测组件。1.4 库与链接块联合测试示例示例对象是一个控制简单热泵系统的库模块给风扇与压缩机提供 on/off 信号并指定制热/制冷模式。测试文件sltestHeatpumpLibraryTests.mldatx中包含两个测试套件Library Block Test库块测试与Instance Test实例测试。库块测试是一个仿真测试Test Sequence 块为控制器设置三个场景怠速、仅开风扇、开制热与制冷系统Test Assessment 块逐场景检查信号。运行后 verify 语句全部通过。随后在闭环模型sltestHeatpumpLibraryLinkExample中Controller 是库的链接块关联 Baseline Test 框架——它给控制器送正弦温度、采集输出与基线数据比较基线测试通过说明链接块在宿主模型中仿真正确。最后把这个对实例特别有用的框架提升回库悬停在链接块的 Baseline_controller_tests 框架上 → 点 Harness operations →Move to Library→ 确认。此后该框架会复制到库模块的所有未来实例中。1.5 可复用库子系统的 SIL 测试可复用库子系统必须位于库顶层、并具有函数接口function interfaces以锁定子系统接口才能做 SIL 单元测试。工作流为先设置代码生成环境打开库构建库以生成代码并创建函数接口然后选中库顶层的子系统在测试管理器中用 Create Test for Model Component 向导生成背靠背MIL vs SIL等效测试并开启覆盖率。函数接口可在库模型右下角打开的 Manage Function Interfaces 对话框中查看。2. 操作步骤 / 工作流库测试标准步骤打开库模型为库子系统建测试框架Test Harness Create编写 Test Sequence 场景与 Test Assessment 判据运行至通过。测试通过后锁定库。在应用模型中拖入库子系统生成链接实例保留复制过来的框架。对链接实例建基线测试/等效测试比较其输出与库模块。好用的实例框架通过 Harness operations Move to Library 提升回库。SIL 测试环境准备orig Simulink.fileGenControl(get,CodeGenFolderStructure); Simulink.fileGenControl(set,CodeGenFolderStructure, ... Simulink.filegen.CodeGenFolderStructure.TargetEnvironmentSubfolder); open_system(ReuseLibSubsysExample); slbuild(ReuseLibSubsysExample); % 生成代码并创建函数接口 % 选中库顶层 Subsystem 后打开测试管理器 sltestmgr % 在 Test Browser 选中测试文件 → Coverage Settings → % 勾选 Record coverage for system under test % Coverage Metrics 勾选 Decision、MCDC、Condition3. 示例% 打开测试文件并运行库块需求测试 testFile sltestHeatpumpLibraryTests.mldatx; library sltestHeatpumpLibraryExample; system sltestHeatpumpLibraryLinkExample; sltest.testmanager.load(testFile); sltest.testmanager.view; open_system(library); sltest.harness.open([library /Controller],Requirements_Tests); % 库块测试通过后关闭库框架、打开闭环链接模型做基线测试 sltest.harness.close([library /Controller], Requirements_Tests); open_system(system); sim(system);4. 要点与注意事项库框架不编译、无转换子系统、无 Push/Rebuild——这是它与普通子系统框架最大的不同调试信号属性问题时不要期待转换子系统存在。建链接实例时框架自动复制到实例提升回库后新实例才会带上该框架已有实例不会自动补。库模块设计冻结后务必锁定库并设置框架不可改 CUT防止框架误改库设计。SIL 可复用库子系统有硬性前提库顶层 函数接口详细限制请参考 Embedded Coder 文档 Library-Based Code Generation for Reusable Library Subsystems。Move to Library 会从实例删除框架并加到库操作前确认该框架确有复用价值。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑