本文最后更新于 2026年8月22日。
是的,你的理解是正确的。.slxp 保护模型不能像普通的 .slx 模型那样,用 sim 命令直接调用。
这是因为.slxp文件和.slx文件的本质和设计目的完全不同:
.slx文件:是标准的Simulink模型文件,包含了完整的模型结构、参数和模块信息。sim函数可以直接读取并执行这些信息来运行仿真。.slxp文件:是“受保护模型”,主要目的是在不暴露模型内部实现细节(如模块、算法、逻辑)的前提下,将模型分享给第三方。它包含的是经过编译或加密的工件,而非可以直接解析的模型源码。
📌 正确的使用方式:在模型引用中使用
.slxp 文件的设计初衷是作为一个受保护的“模型引用”,供其他Simulink模型调用,而不是在MATLAB命令行中直接通过 sim 运行。
通常,你需要在另一个Simulink模型(称为“父模型”)中,使用 Model Reference(模型引用) 模块来引用这个受保护模型,然后通过对父模型执行 sim 命令来间接运行它。受保护模型的创建者可以在创建时,通过Protected Model Creator或Simulink.ModelReference.protect等工具,来设置是否允许接收方进行仿真、查看只读视图或生成代码等功能。
💡 补充说明:回调机制
虽然不能直接调用,但有一种间接的关联机制。受保护模型支持 回调(Callback) 功能。你可以在保护模型时,为 'PreAccess' 或 'Sim' 等事件绑定一个MATLAB脚本(如 pm_callback.m)。当模型被仿真(即其所在的父模型被sim命令执行)时,这个脚本就会自动运行。此功能常用于添加使用限制,例如检查授权或设置过期时间。