LabVIEW-动态调用VI
LabVIEW调用子VI(subVI)有两种方法:1)通过程序框图-查看(菜单)-函数-选择VI...,在程序框图上添加子VI时,该子VI的调用方法是静态链接的,即编译生成可执行程序后,子VI的代码将会被静态链接到可执行程序中;2)通过程序框图-查看(菜单)-函数-编程-应用程序控制-通过引用调用,通过VI引用动态调用,可以保证VI在需要时才被装入内存,与静态调用相比节约了内存资源。
操作方法
- 01
首先打开LabVIEW,创建一个子VI,实现Y=KX+B一元一次线性方程功能;
- 02
新建一个主VI,切换到程序框图,1)通过程序框图-查看(菜单)-函数-选择VI...;2)在程序框图上添加子VI,该子VI的调用方法是静态的;3)它与VI调用程序同时加载。
- 03
新建一个主VI,切换到程序框图,添加程序框图-查看(菜单)-函数-编程-应用程序控制-打开VI引用;
- 04
打开VI引用:返回由名称字符串或磁盘上的VI路径指定的VI、自定义控件或全局变量的引用。 类型说明符VI引用句柄(接线端):确定VI引用的数据类型和连线板信息。LabVIEW忽略该输入端的实际值。 默认状态下,函数返回通用VI引用。如果将该函数的VI引用输出使用在“通过引用调用”或“开始异步调用”节点,则必须连线严格类型VI引用至该输入端。如果将严格类型VI引用连接至该输入端,VI路径指定的接线板必须与该输入端匹配。 应用程序引用(接线端):是对LabVIEW应用程序实例的引用。 默认情况下,LabVIEW使用调用VI的应用程序实例。可通过打开应用程序引用函数获得其它应用程序实例的引用。如果将另一个应用程序实例的引用连接至应用程序引用输入,vi路径表示在运行应用程序实例的计算机的文件系统中的位置。 VI路径(接线端):支持包含引用VI名称的字符串,或包含引用VI路径的路径。 如连线名称字符串,字符串必须匹配终端内存中VI的完整分隔名称。如连线路径,LabVIEW可搜索内存中此前通过同一目标路径加载的VI。如内存中无匹配的VI,LabVIEW可尝试通过磁盘上的文件加载VI。如LabVIEW无法找到文件或该文件与内存中的另一VI发生冲突,可产生错误信息。 选项(接线端):决定了VI引用引用的VI特性,包括是否可以异步调用VI。默认值为0x0。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 密码(接线端):是VI密码,该VI的引用将被打开。 如果要编辑密码保护的目标VI,请将密码连接至该输入端。连线正确的密码时,函数返回VI的授权引用。如连接至该接线端的密码不正确,则该函数返回错误和无效的VI引用。如目标VI不受密码保护,LabVIEW将忽略该输入端。如果未将密码连接至该输入端且目标VI有密码保护,打开VI引用函数返回一个有效引用句柄,但不能使用该句柄编辑VI。 VI引用(接线端):是与已请求VI关联的引用句柄。 如函数不可用,则VI引用为非法引用句柄。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 05
1)创建VI路径常量;2)右击,选择浏览路径,选择我们需要动态调用的Y+KX+B.vi;
- 06
1)创建类型说明符VI引用句柄常量;2)右击,选择VI服务器类-浏览;3)选择我们需要动态调用的Y+KX+B.vi;
- 07
添加-程序框图-查看(菜单)-函数-编程-应用程序控制-通过引用调用;
- 08
通过引用调用: 调用引用指定的VI。引用VI必须为严格类型VI引用。 引用(接线端):是与已经打开VI关联的引用句柄。 引用必须为VI的严格类型引用。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 引用输出(接线端):返回无改变的引用。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 09
将“打开VI引用”的输出引用接线端连接至“通过引用调用”的输入引用接线端;
- 10
在“通过引用调用”各个接线端创建输入控件和输出控件;
- 11
再添加-程序框图-查看(菜单)-函数-编程-应用程序控制-关闭引用;
- 12
关闭引用:关闭打开的VI、VI对象、打开的应用程序实例、.NET或ActiveX对象的引用句柄。 引用(接线端):是与打开的VI、VI对象、打开的应用程序实例、.NET或ActiveX对象关联的引用句柄。引用的值可以是由引用组成的一维数组。 错误输入(接线端):指示节点运行前产生错误的条件。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 13
将“通过引用调用”的输出引用接线端连接至“关闭”的输入引用接线端;
- 14
运行VI;这种动态加载VI只有在打开VI引用时VI的调用程序才会将其加载。如果VI调用程序较大,采用动态加载VI的方式可以节省加载时间和内存,这是因为在调用程序需要运行该VI以前无需将其加载,在操作结束后又可将其从内存中释放。VI调用配置对话框可用来配置何时加载子VI。