C++ 使用block-Simulink参数中输入端口的值
我有一个simulink模型,我计划将其转换为C代码并在其他地方使用。为了在simulink模型中设置变量,我定义了“输入端口” 我试图找到一种方法,将输入变量用作状态空间块的一部分,但我已经尝试了所有方法,但不确定如何进行 如前所述,这将转换为C/C++代码,因此无论如何都没有使用matlab的选项 假设我在状态空间块参数中使用矩阵A。矩阵A定义为liek,因此A=[Input1 0;Input2 0;0 Input3]C++ 使用block-Simulink参数中输入端口的值,c++,matlab,simulink,state-space,C++,Matlab,Simulink,State Space,我有一个simulink模型,我计划将其转换为C代码并在其他地方使用。为了在simulink模型中设置变量,我定义了“输入端口” 我试图找到一种方法,将输入变量用作状态空间块的一部分,但我已经尝试了所有方法,但不确定如何进行 如前所述,这将转换为C/C++代码,因此无论如何都没有使用matlab的选项 假设我在状态空间块参数中使用矩阵A。矩阵A定义为liek,因此A=[Input1 0;Input2 0;0 Input3] 我希望能够通过设置Input1 2 3等的值来通过代码更改输入值。生成代
我希望能够通过设置Input1 2 3等的值来通过代码更改输入值。生成代码后,您不能调整参数,因为它与常量值内联,这通常是因为它会生成最快的代码。要完全控制行为,您必须使用。有一个具有不同代码版本的表,您可以根据需要选择正确的参数类型
在许多情况下,另一种惰性的实现方法是使用基本工作空间变量,实现起来非常简单,在大多数情况下效果很好。在Simulink中,参数和信号之间有非常明显的区别。参数是输入到对话框中的东西,而信号是输入或输出到块中的东西 状态空间块中的矩阵被定义为参数,因此您将永远无法向其中输入信号 你有两个选择
model\u name\u data.c
,它将包含一个参数结构,允许您更改参数请注意,在任何一种情况下,仅从模型设计的角度来看,都将由您来确保对模型的更改是合理的(例如,不要使任何循环等变得不稳定)。请向我们展示您尝试了什么以及您得到了什么错误消息。@Daniel我尝试过使用inports,但它们在参数块中无法引用。我也尝试过在模型工作区中创建参数,但它们不会出现在代码生成中。所以您有一个工作正常但不支持代码生成的模型?请分享一个最简单的例子,这个模型符合你的要求。描述生成代码后不再工作的内容。问题是它根本不起作用,或者您不能修改参数。@Daniel一切正常,但我无法更改值“请注意,块的参数通常是可调的。”当变量是模型工作区的一部分时,也是这样吗?我认为只有在基本工作区的变量部分默认情况下才可调。你说得对,模型工作区变量通常不可调,但是(在某些情况下)仍然会生成一个Model_name_data.c文件。谢谢!最后我自己建立了状态空间模型,因为它不是一个很大的模型。