网站大量收购闲置独家精品文档,联系QQ:2885784924

labview动态调用.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
labview动态调用

基本概念?众所周知,LabVIEW程序又称虚拟仪器,即VI。VI是由以下三部分构成:·前面板——即用户界面。·程序框图——包含用于定义VI功能的图形化源代码。·图标和连线板——用以识别VI的接口,以便在创建VI时调用另一个VI。当一个vi可以应用在其它VI中,则称为子vi。子vi相当于文本编程语言中的子程序。?在进行LabVIEW程序设计时,一个VI中可以包含一个或若干个子vi。这些子vi是被直接放置在程序框图中,习惯上称这些子vi为:静态链接子vi。这些子vi在VI载入的同时也被加载到内存中。动态调用VI?在应用程序设计时,我们希望能够自由地、任意切换操作界面和测量程序界面,并且希望在任何时候,前面板上仅运行一个程序界面。这样就能够保证良好地、准确地实现“人机对话”。完成这样的操作,就需要动态的调用不同的VI。?与静态链接的子vi不同,动态加载VI只有在打开VI引用时VI的调用程序才会将其加载。如果VI调用程序较大,采用动态加载VI的方式可以节省加载时间和内存,这是因为在调用程序需要运行该VI以前无需将其加载,在操作结束后又可将其从内存中释放。?问题是:在涉及到动态调用的LabVIEW帮助文件中,看到了这样的概念:“严格类型VI”。那么与此相对应一定还存在着:“非严格类型VI”。似乎将VI分成了两种不同的形式?到底“什么是严格类型VI和非严格类型VI”?它们有什么内在联系和不同以及区别呢??前几天我还和NI的AE讨论这个问题,就是:“什么是严格类型vi和非严格类型VI”?但一直没有得到明确的答复。察看一些LabVIEW的资料,也没有弄明白这个问题。直到开始写这篇博客时,因涉及到这个概念,才开始对这个问题进行了仔细的分析,分析的结果似乎找到了一些答案。严格类型vi:?严格类型vi就是可以被其它VI调用的子vi(静态链接子vi)。进一步说LabVIEW提供的“函数”选板上的vi都是严格类型vi。严格类型的vi能够和其它VI通过连接板的定义与其它VI进行直接的数据交换,既可以独立运行也可以作为子vi被调用,作为子vi调用时通常不打开前面板。?非严格类型VI:?非严格类型VI是不能作为子vi来使用的,因为我们没有对它进行类型定义(除非你将它定义为严格类型vi)。非严格类型VI通常是一个独立的VI(或者称为:例程),它不能和其它VI进行直接的数据交换(可以通过全局变量来传递数据),可以独立作为一个程序运行,通常在导入时就将前面板打开。??二者的本质区别就是:是否准确地定义了“连线板”。?为了能够更清楚地说明这个概念,我们通过LabVIEW提供的一个例程,来进一步说明这个问题。该例程可以通过“NI范例查找器”在路径为:硬件输入输出/DAQmx/模拟测量/AcqGraph Voltage-Int Clk.VI下获得。它的程序框图见下图。图1?AcqGraph Voltage-Int Clk.VI的程序框图?从图1可看到一个“AcqGraph Voltage-Int Clk.VI”,它本身是由它所包含的6个子vi组成。它到底是什么类型的VI呢?从它的“连线板”看到它的确没有进行过任何定义,应该是非严格类型VI。参见下图。图2?非严格类型VI的“连线板”图?我们以图1中的第一个子VI,DAQmx Create Channel (AI-Voltage-Basic).vi的“连接板”为例,可以看出它是个严格类型VI。参见下图。图3?严格类型VI的“连线板”图?因为存在非严格类型VI和严格类型vi,所以在进行动态调用时其调用方式也应该有所不同。下面分别列出它们的动态调用方式。非严格类型VI的动态调用的方式?假如程序设计要求先后分别动态调用三个VI,它们被存放在项目中的某个文件夹中,名子分别为:A.VI(打包时的主VI);B.VIC.VI。?我们希望程序运行时首先运行A.VI(比如进行:欢迎界面、板卡验证、软件合法性验证等操作),待正确执行完成这些操作后,关闭A.VI,调用运行B.VI(可以是实际的应用程序)然后关闭B.VI,动态打开C.VI(测量结果保存等),关闭C.VI程序停止运行。并保证前面板上仅运行一个程序界面(实际上内存中也是仅保留一个VI,用LabVIEW提供的Memory Monitor.Vi可以清楚地看到这点)。?这个示例程序有些像接力赛,A-B-C。?当然这三个VI也可以是严格类型vi,但这里的动态调用方式是针对非严格类型VI的。下面给出每个VI的程序框图。注意:这里将动态调用程序设计成为一个子VI(动态调用1.VI)图4 A.VI的程序框图图5 B.VI的程序框图图6 C.VI的程序框图图7?动态调用1子VI的程序代码图4、图5、图6的程序都比较简单,大家一看就清楚,无需多说。这里重点谈谈图7的程序代码和编程思路。Case结构选择

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档