LabVIEW异步调用VI的多个实例实现并行执行
默认情况下,如对一个VI进行多个异步调用,LabVIEW将这些调用按顺序排列,依次执行。各个调用的执行时间累加,效率不高。按照下列步骤,并行执行各个调用,避免一个调用阻止另一个调用的执行。
使用的对象
使用下列程序框图对象,开始对重入VI进行动态调用,稍后收集VI的输出:
创建下列程序框图,在重入VI上开始多个异步调用并收集结果。
下面列出了上述程序框图的要点。
在VI属性对话框的执行页上,勾选共享副本重入执行或预分配的副本重入执行,配置vi路径指定VI的重入执行。
在打开VI引用函数的选项参数中包括0x40标签。该标签表示开始同步调用重入VI。否则,LabVIEW按顺序执行调用。
注LabVIEW帮助中打开VI引用函数的选项标签为十六进制表示。因为,传入数值常量之前,把数值常量的格式改为十六进制显示,以保证传入正确的值。
也可组合使用选项标签,指定被调VI的多个特性。在该例中,合并选项标签0x100和0x40,配置LabVIEW对VI进行同步调用,并收集被调VI的执行结果。
对于一个具体的引用,使用等量的等待异步调用节点和开始异步调用节点。
使用0x40选项标签表示开始异步调用节点调用VI的副本,而不是VI本身。关于调用VI副本的详细信息,请参考意见和建议。
如在一个VI引用上开始了多个调用,不能直接确定VI实例返回的是哪个等待异步调用节点返回的输出。如要获知VI返回的是哪个实例的输出,可为VI调用分配一个标识符。
收集结果后,使用关闭引用函数关闭VI引用。
如要忽略异步调用的结果,取消等待异步调用节点,并使用0x80替换0x100选项标签。
说明和建议
VI服务器属性和方法无法修改异步调用的VI的并行实例。如在0x40 VI引用上调用VI服务器属性或方法,属性或方法无法修改异步调用节点实际调用的VI副本。属性和方法会影响到原被调VI。如要将VI服务器属性或方法应用于开始异步调用节点实际调用的VI副本,在原被调VI中调用相关属性和方法。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。