如何在C-S函数之间共享C结构? [英] How to share a C struct among C S-functions?

查看:7
本文介绍了如何在C-S函数之间共享C结构?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法在几个CS函数之间共享一个C结构(只实例化一次)?我的意思是:我有一个带有许多块的Simulink模型,这些块被实现为C-S函数。这些块中需要许多模型参数,我想创建一个包含所有模型参数的对象,并且在开始模拟时只实例化一次。现在,我为每个S-Function实例化该对象,以便访问参数,但在S-Function之间共享该对象会很好。

仅供猜测:我可以将模型参数结构放在单独的DLL中,然后从每个CS函数访问它吗?你们以前做过这个吗?

推荐答案

我已经成功地实现并测试了动态链接库的思想(即,将所有模型参数收集到动态链接库中的结构中--加上任何必要的计算--并将其链接到其他C-S-函数)。Simulink是一个单独的进程,我相信模拟是一个单独的线程(如果不是这样的话,有一些方法可以使它成为线程安全的)。

具有来自DLL的模型参数的结构充当单例(每个模拟仅实例化一次,并在其他S函数之间共享)。

更新(MathWorks的部分回复):

Simulink的模拟部分始终是单线程的。因此,共享DLL不存在线程安全问题。

不同S函数块的全局变量将共享相同的内存位置。这意味着将为所有Simulink加载共享库的单个实例。因此,加载共享库的所有S-Function实例都将引用相同的共享库和数据。

或者,您也可以考虑使用数据存储块来实现全局变量。这将需要从每个S功能到适当的数据存储块的信号连接。但不需要S函数之间的连接。

这篇关于如何在C-S函数之间共享C结构?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆