From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



通过仿真接口工具包同时调用多个模型DLL



主要软件:
主要软件版本: 2.0
主要软件修正版本: N/A
次要软件: N/A

问题: 我现在有仿真接口工具包2.0,同时我还有两个DLL,test40.dll和test36.dll。其中,第一个有40个输出端口,第二个有36个。MathWorks公司的Simulink®软件为这两个DLL分别生成test40_base.vi和test36_base.vi。我有一个主初始化VI可以调用这两个_base VI。但是,我注意到这两个VI调用顺序不同,产生的程序结果也不相同。如果先调用test40_base VI,test36_base VI同样也初始化40个接口。如果先初始化test36_base VI,LabVIEW程序会崩溃。.

解答: 您所观察到的现象是符合预期设想的,那是因为_base VI中调用的SIT VI是不可重入的。因此,内存的分配取决于先调用哪个VI。这就是为什么第二个VI初始化端口数目与第一个VI相同。这也是为什么先初始化test36_base VI之后LabVIEW程序会崩溃,那是因为test40_base VI试图使用内存中分配的36个端口来实现40个端口的功能。

换句话说,如果需要通过SIT VI同时调用不同的DLL,您需要把SIT VI设置为可重入。因此,您需要在_base VI(或其他生成的VI)中,双击每个SIT VI,例如SIT Initialize Model (no server).vi等,并设置为可重入。您可以通过菜单File»Properties»Execution选择Reentrant execution参数,将该VI设置为可重入。

这样,您就可以使用相同的SIT VI来调用并初始化不同的DLL。

Simulink®是MathWorks公司的注册商标。其他所列产品和公司名为相应公司的商标及名称。

相关链接:

附件:





报告日期: 10/16/2006
最近更新: 10/16/2006
文档编号: 39CCD4DS