通过仿真接口工具包同时调用多个模型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
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.