【问题标题】:Simulink - How to create independent custom blocks using callback functionsSimulink - 如何使用回调函数创建独立的自定义模块
【发布时间】:2016-03-08 10:42:10
【问题描述】:

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

我的问题是我的参数“p”和“K”可以直接在工作区上使用,这是我不想要的。此外,如果我在一个系统中使用该模型两次或多次,这两个模型总是共享相同的“K”,这也是我不希望的。

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

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

谢谢你的回答, 迈克尔

【问题讨论】:

    标签: matlab callback simulink


    【解决方案1】:

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

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

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

    每当移动方块时,它会随机改变延迟。

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

    【讨论】:

      【解决方案2】:

      谢谢,在您的帮助下,我能够解决问题。

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多