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

时间:2016-03-08 10:42:11

标签: matlab callback simulink

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

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

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

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

谢谢你回答, 迈克尔

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:-1)

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

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

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

相关问题