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

Use value from Input Port in Parameter of block - Simulink

本文关键字:输入端 Simulink 参数 在块      更新时间:2023-10-16

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

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

如前所述,这将转换为 C/C++ 代码,因此无论如何都没有使用 matlab 的选项。

假设我在状态空间块参数中使用矩阵 A。矩阵 A 的定义是这样的 A= [输入1 0;输入2 0;0 输入3]

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

在 Simulink 中,参数和信号之间有非常明显的区别。 参数是输入到对话框中的东西,而信号是输入或从块中出来的东西。

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

您有两种选择。

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

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

请注意,无论哪种情况,仅从模型设计的角度来看,您都可以确保对模型的更改有意义(例如,不要使任何循环等变得不稳定)。

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

在许多情况下,实现

此目的的另一种懒惰方法是使用基本工作区变量,该变量非常容易实现,并且在大多数情况下工作正常。