首页 文章

Simulink - 如何使用回调函数创建独立的自定义块

提问于
浏览
0

我目前正在编写一个包含多个模型的新库(我习惯于Matlab,但不习惯Simulink) . 我能够创建一个带有块参数的模型,比如参数'p',以及一个回调函数(initfct),它使用这个参数来计算我模型中使用的特定值(比如简单的增益K = K(p)) .

我的问题是我的参数'p'和'K'可直接在工作区中使用,我不想这样做 . 此外,如果我在一个系统中使用两次或更多这个模型,这两个模型总是共享相同的'K',这也是我不想要的 .

那么当我多次使用自定义模型时,如何使这些变量'p'和'K'独立,并防止在工作区中查看这些变量?

我应该使用“参考模型”,但我不熟悉这个功能......?

谢谢你回答,迈克尔

2 回答

  • 1

    在回调中, gcb 返回当前执行回调的块的路径 . 有了路径,您可以使用 get_param 来访问参数 .

    仅出于演示目的,将以下内容插入延迟块的MoveFcn:

    set_param(gcb,'DelayLength',num2str(randi(10)))
    

    每当块移动时,它将随机改变延迟 .

    我不确定我的答案是否解释了你需要的一切 . 可能你还需要一个面具 . 如果您认为此答案不完整,请更新您的问题并添加一个示例问题的示例模型 .

  • -1

    谢谢,在你的帮助下,我能够解决问题 .

    更具体地说,如果其他人有同样的问题:您需要在掩码中声明回调函数使用的内部变量 . 取消选中相关选项,使它们不会显示为模型的标准输入参数 .

    我的问题也是使用num2str而不是mat2str(当增益是一个作用于多个输入的矩阵时) .

相关问题