【问题标题】:Simulink .NET integrationSimulink .NET 集成
【发布时间】:2014-12-23 11:36:41
【问题描述】:

我正在开展一个项目,我需要将某个 PI-AF(数据库)与 Simulink 模型集成。我知道 PI-AF 有一个特定的 .NET AF-SDK api,通过它我可以引用/访问元素/属性。而且我还知道您可以将 .NET 程序集加载到 MATLAB 中并使用 .NET 库。但是,我们可以在 Simulink 中做同样的事情吗?我知道您可以在 Simulink 中创建一个功能块,您可以在其中编写 MATLAB 函数,这些函数将使用给定的输入执行并返回某个值。是否可以在此功能块中加载 .NET 程序集?我对 Simulink 和 MATLAB 完全陌生,以前从未真正研究过它们。如果你们中的一个人可以分享您在上述方面的知识,那就太好了。

谢谢。

【问题讨论】:

    标签: .net matlab simulink


    【解决方案1】:

    这取决于您要进行哪种集成:

    如果您只想从数据库加载一些数据,使用该数据运行您的 Simulink 模型,然后可能在仿真完成后将一些数据写回数据库,您不需要 MATLAB Function 模块参考。只需编写您的 MATLAB 代码(作为脚本或函数,没关系),然后在 model callbacks 中调用这些脚本/函数:可能在 PreLoadFcnPostLoadFcnInitFcn 回调中调用代码以加载从数据库中获取数据,并在StopFcn 中为代码将数据写回数据库。

    另一方面,如果您希望随着模拟的进行不断地与数据库进行交互,那么它会更加复杂,并且您确实需要按照您的建议使用 MATLAB Function 块。该块在后台使用 (C) 代码生成,我怀疑 .NET 相关函数不支持,因此您必须将它们定义为 extrinsic(有关详细信息,请参阅文档中的 Call MATLAB Functions)。请注意,虽然声明为外部的函数返回类型为 mxArray 的输出,但需要将其转换为已知类型,然后才能被其他函数/语句/等使用...如何做到这一点在上述文档中进行了解释页面。

    【讨论】:

    • 太棒了。所以我不需要在模拟过程中不断地与数据库交互。我只需要在模型执行后从数据库中加载一些数据并写回数据库。但是在您提到的第一个场景中,我可以将 .net 程序集加载到 MATLAB 代码中吗?简而言之,我可以在 MATLAB 中进行编码时做我能做的所有事情吗?我宁愿把它写成一个脚本,我可以叫那个脚本吗?
    • 我对 .NET 一无所知,但是您可以在 MATLAB 中执行的任何操作都可以放入您的脚本中,是的,它可以是一个脚本。
    • 非常感谢。我需要做的就是加载一个程序集,然后对我的工作进行排序。从您的评论来看,这似乎很有可能。谢谢你。如果我错了,请纠正我。
    • 由于工作流程是(1)从数据库加载,(2)模拟模型,(3)写入数据库,那么避免使用模型回调来执行步骤(1)可能更直接(3)。考虑到您可以在 MATLAB 中使用 sim command 来模拟您的 Simulink 模型并获得输出(步骤 2)。因此,您可以只编写一个处理所有 3 个步骤的 MATLAB 脚本。基本上,这只是一个问题,您是想使用 Simulink 模型(原始建议)还是使用 MATLAB 脚本(我的建议)来驱动工作流程。
    • @am304 我同意。这主要取决于个人偏好和特定用例——特别是 Simulink 如何融入您的工作流程。我发现自己做了相当多的自动化,所以我可能更倾向于从 MATLAB 驱动。但是,是的......如果 Simulink 仿真真的是这里的重点,并且加载/写入数据库是次要的设置/拆卸操作,那么您可能是对的,从 Simulink 驱动可能更有意义。
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多