我正在做一个项目,我需要将某个PI-AF(数据库(与Simulink模型集成。我知道PI-AF有一定的.NET AF-SDK api,通过它我可以引用/访问元素/属性。我还知道您可以将 .NET 程序集加载到 MATLAB 并使用 .NET 库。但是,我们可以在 Simulink 中做同样的事情吗?我知道您可以在 Simulink 中创建一个功能块,您可以在其中编写 MATLAB 函数,这些函数将使用给定的输入执行并返回某个值。是否可以在此功能块中加载 .NET 程序集?我是 Simulink 和 MATLAB 的新手,以前从未真正研究过它们。如果你们中的一个人可以分享您对上述方面的知识,那就太好了。
谢谢。
这取决于您追求的是哪种集成:
如果您只想从数据库中加载一些数据,请使用该数据运行您的 Simulink 模型,然后在仿真完成后将一些数据写回数据库,则不需要您引用的 MATLAB 功能块。只需编写 MATLAB 代码(作为脚本或函数,没关系(,并在模型回调中调用这些脚本/函数:可能在 PreLoadFcn
、 PostLoadFcn
或 InitFcn
回调中,代码从数据库加载数据,并在代码将数据写回数据库的StopFcn
中。
另一方面,如果您希望随着仿真的进行而不断与数据库进行交互,那么它就更加复杂,并且确实需要使用 MATLAB 功能块,正如您所建议的那样。该块在后台使用 (C( 代码生成,我怀疑与 .NET 相关的函数不支持,因此您必须将它们定义为extrinsic
(有关更多详细信息,请参阅文档中的调用 MATLAB 函数(。请注意,声明为mxArray
类型的外在返回输出的函数需要转换为已知类型,然后才能被其他函数/语句/等使用......上述文档页面中介绍了如何执行此操作。