使用块参数中的输入端口值 - Simulink

时间:2016-03-11 03:48:37

标签: c++ matlab simulink state-space

我有一个simulink模型,我计划转换为C代码并在其他地方使用。我已经定义了“输入端口”,以便在simulink模型中设置变量。

我试图找到一种方法将输入变量用作状态空间块的一部分但是已经尝试了所有内容而不确定如何去做它。

如上所述,这将转换为C / C ++代码,因此无论如何都无法使用matlab。

假设我在state-space block参数中使用矩阵A.矩阵A定义为谎言,因此A = [Input1 0;输入2 0; 0输入3]

我希望能够通过设置Input1 2 3等的值来改变代码输入的值。

2 个答案:

答案 0 :(得分:3)

参数和信号之间的Simulink有一个非常明显的区别。参数是输入对话框的内容,而信号是输入或输出的信号。

状态空间块中的矩阵被定义为参数,因此您永远无法将信号馈入它们。

您有两种选择。

  1. 不要使用State-Space块。而是使用更基本的块(即积分器,总和和产品块)自己开发状态空间模型。这对于小型模型是可行的,但并不是真正推荐的。

  2. 请注意,块的参数a通常是可调的。当您生成代码时,其中一个文件将是model_name_data.c,这将包含一个参数结构,允许您更改参数。

  3. 请注意,在任何一种情况下,仅从模型设计的角度来看,它都取决于您,以确保对模型的更改有意义(例如,不要进行任何循环,等等。不稳定)。

答案 1 :(得分:1)

生成代码后无法调整参数,因为它内联一个常量值,这通常是因为它会产生最快的代码。要完全控制行为,您必须使用tunable parameters。有一个包含不同代码版本的表,根据您的需要,您可以选择正确的参数类型。

在许多情况下实现这一目标的另一种懒惰方法是使用基本工作区变量,在大多数情况下非常简单,并且工作正常。