【问题标题】:Setting a Simulink model Inport value from an m file从 m 文件设置 Simulink 模型 Inport 值
【发布时间】:2012-05-17 19:47:36
【问题描述】:

在过去的几个小时里,我一直在做大量的研究,但我似乎无法弄清楚如何获取和设置 Inport 框的值。我有一个简单的模型,它有一个入口和一个出口,它们相互连接。我想将输入端口值设置为 2 并运行我的模拟,看看我的输出端口是否设置正确。我读到您不能使用 set_param 来设置该值,但您必须使用 sim(),但我对此没有任何运气。因此,如果有人知道如何查看输入框中的数据和/或如何设置它,我将不胜感激。谢谢!

卢卡斯

【问题讨论】:

    标签: matlab model simulink


    【解决方案1】:

    Simulink 中的端口inout 不会像您想象的那样工作。当您创建子系统时需要它们 - 您自己的 Simulink 模块,而不是您的 inout 端口。

    但是当你只想制作一些模型,并在其中传递一些数据,然后将结果传递给 Matlab,那么你需要 To workspaceFrom workspace 块。在他们的选项中分配了一些变量名,因此您可以从 .m 文件中设置输入数据并在 matlab 变量中获取结果。

    From workspace 接受矩阵变量,但如果你只想传递一个数字,你可以使用块Const 并用变量名填充它的值。

    这是一个屏幕截图,inoutto workspaceconst 块的示例: 在此示例中,我有输入参数 x(块 const)、子系统 Gain5 和输出参数 y(块 To workspace)。在子系统内部,我使用 inout 块来获取和返回值。

    【讨论】:

    • 您好!我是这个 matlab/Simulink 东西的新手,但在工作中我正在做一个新项目,我们之前也有过这个工作。我们使用 JMatLink.dll、jimc.jar 和 jimserver.jar 通过 eclipse/java 连接到 matlab。在此期间,我们有一个文件,它从模型中提取了所有的 inports 和 outports,我们在 eclipse 中设置它们运行模型并获取数据并输出它。但是,如果我们使用的不是双精度数,我们在运行 simulink 测试时就会崩溃。
    • 所以我们打算自己尝试编写它,以便我们能够在 Simulink 获取数据之前将数据更改为其他内容。我读到传递给 Simulink 的任何东西都是双精度的,这对我们不起作用。在使用 inport 块之前已经完成了,我只需要弄清楚“Jim”人是如何做到的。谢谢^^
    • 对不起,我还没有从 java 中使用 Matlab。事实上,默认情况下,Matlab 将所有内容都视为矩阵。例如,如果您将x=5 传递给块To Workspace,它将保存所有值=5 的矩阵1xn。但是所有块都是可配置的。所以也许,当你描述你的模型时,你应该正确配置你的 inout 端口
    • engEvalString() 可用于将值设置为 Inports 和 Outports。我只是不知道它是怎么做到的。我拆开了 JMatLink.dll 并发现了这一点。 engGetVariable 可用于获取输出端口的值。我只需要弄清楚这些函数是如何做到的,这样我就可以编写自己的函数来做我需要的事情。感谢回复^^
    • 有什么方法可以从 m 文件中获取 Simulink 模型的最终数据?我可以使用常量块值参数设置 M 文件中的数据,但是“到工作区”块需要我声明一个变量。我想要一个块,我可以只使用 get_param() 而不是将它设置为变量。上述方法仅适用于双打,所以我想尝试从 M 文件而不是通过他们的 dll 来做所有事情。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多