Lebview入门到精通.doc

上传人:苏美尔 文档编号:8844999 上传时间:2021-01-19 格式:DOC 页数:28 大小:1.02MB
返回 下载 相关 举报
Lebview入门到精通.doc_第1页
第1页 / 共28页
Lebview入门到精通.doc_第2页
第2页 / 共28页
Lebview入门到精通.doc_第3页
第3页 / 共28页
Lebview入门到精通.doc_第4页
第4页 / 共28页
Lebview入门到精通.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《Lebview入门到精通.doc》由会员分享,可在线阅读,更多相关《Lebview入门到精通.doc(28页珍藏版)》请在三一文库上搜索。

1、LabVIEW8.20程序设计从入门到精通样章试读: 顺序结构、多面板程序设计、TCP编程入门篇中 程序结构一章中的内容节选:5.1 顺序结构(Sequence Structure)5.1.1 LabVIEW程序的执行顺序 如果你用传统的文本程序语言写过程序,你一定相当然的认为程序是按照语句的顺序从上到下一条条执行的,除非遇到goto语句或是函数才会跳到另外一段代码去执行。但是作为一种图形化开发语言,LabVIEW有它独特的方法来确定它的执行顺序。首先是根据数据流执行,只有当节点的所有输入点的数据都“流到”时,才会执行该节点。一般来说荻际前凑沾幼蟮接业姆较颉傲鞫钡摹缤?/SPAN5.1所示,这

2、段代码就代表了Result=(5+Rand)2这个表达式。 图5.1 数据流式的编程方法 如果你再放一段类似代码在同一个Block Diagram里的话,它又是如何执行的呢?如图5.2所示,这两段代码并不是按照从左到右或从上到下地顺序执行的,而是并行独立地执行的。这是因为LabVIEW实现了自动多线程。它使代码的执行效率大大提高了。如果用文本程序语言,实现多线程编程是非常费力的。 图5.2 多段代码同时执行5.1.2 Flat Sequence Structure和Stacked Sequence Structure 按照上述办法虽然能提高代码执行效率,但你不知道哪一段代码是先执行的。在很多情

3、况下,程序员也会需要多段代码能按照设定的顺序执行。这时候,我们就需要顺序结构(Sequence Structure)来帮忙了。有两种顺序结构,一种是Flat Sequence Structure, 它是按照从左到右的顺序执行的。这样的好处是你能看到所有的代码,但是当代码段数太多时就会很难看了。另一种是Stacked Sequence Structure,它按照标定的顺序执行代码。与Flat Sequence Structure不同的是,它将每段代码都“叠放”在了一起,因此你同时只能看一段代码。它们在Functions Palette中的位置如图5.3所示。图5.3 顺序结构在Functions

4、 Palette中的位置 当鼠标单击Functions Palette中对应的图标后,再在Block Diagram中按住鼠标左键向右下方拉动,估计大小合适的时候放开鼠标左键即可。可以看出它很像电影胶片,意思就是一帧一帧的按顺序执行。通过右击其边框选择Add Frame Before或Add Frame After来增加Frame。同理,可以选择Delete This Frame来删除Frame。下面我们将图5.2中的两段代码重新改写为按照顺序结构执行的两段代码。分别如图5.4和图5.5所示。图5.4 Flat Sequence Structure 图5.5 Stacked Sequence

5、Structure5.1.3 在Frame间传递数据 对于Flat Sequence Structure,只需要将Frame间的数据流用线连起来就能实现将前一个Frame的数据传递到后一个Frame中去。如图5.5所示。其中Frame之间的数据连接点是可以用鼠标拖动的,你可以通过拖动来合理布线。下面介绍到各种程序结构的数据连接端子都是一样可以拖动的。 图5.6 在Flat Sequence Structure的Frame间传递数据 而对于Stacked Sequence Structure则要复杂些。首先右击前一个Frame的下边框,选择Add Sequence Local,于是右击之处就出现

6、了一个小黄色端子,可以将其拖拽到边框的任何位置。然后将需要传递的数据与该端子连接。接着进入后一个Frame,这时你仍然能看到这个端子,将其与你需要连接的点连接即可。如图5.7所示。 图5.7 在Stacked Sequence Structure的Frame间传递数据高级篇中 动态程序控制技术一章中的内容节选: 17.3.3 多面板程序设计在设计稍具规模的系统时,往往一个前面板很难显示下所有的内容,就算勉强显示得下,也会使界面臃肿难看。有些情况下,我们可以通过Tab Control控件进行分页显示,但是如果前面板控件过多,程序框图必然会更加繁乱。其实,类似于常见的Windows程序,我们可以通

7、过按钮或菜单弹出更多的界面。这样,无论多么复杂的系统都可以用很简洁的多面板人机界面实现。下面我们来看如何在LabVIEW中实现多面板的程序设计。这里,我们将多面板程序分为两种情况:一种是在弹出子面板时,主程序处于等待状态,直到子面板运行完成。另一种是弹出子面板后,子面板与主程序相互独立运行。对于第一种情况,我们可以简单的通过子VI实现。在子VI的File-VI Properties.-Window Appearance-Customize.对话框中使能“Show front panel when called”选项,当主VI调用到该子VI时,该子VI的前面板便会自动弹出。子VI可以是静态调用也

8、可以是动态调用。对于第二种情况,则需要通过VI Reference的方法节点来实现。下面我们通过一个实例来说明,其前面板和程序框图如图17.11所示。前面板的Panel1、Panel2和Panel3三个按钮分别对应三个VI面板。每当用户点击其中一个按钮就会弹出相应的程序面板。运行过程中,我们可以看到各个面板之间是互不相关的,即其中一个面板的运行不影响另一个面板的操作。下面来看程序框图是如何实现的。程序框图中最主要的是一个事件结构,该事件结构的触发条件来源于用户点击界面上四个按钮中的任何一个按钮。譬如当用户点击Panel1按钮时,我们通过CtlRef的Label.Text属性获得按钮的Label

9、,由此得到该按钮对应VI的绝对路径。通过Open VI Reference函数获得VI Reference后,由VI的Execution.State属性获得VI的运行状态,如果VI处于Idle状态(即不运行状态),则通过Run VI方法运行该VI,设置Wait Until Done参数为False表明该动态加载的VI与主VI相互独立运行。最后通过设置Front Panel Window.Open属性为True来打开动态加载VI的前面板。 图17.11 多面板程序示例下面我们来看子面板的写法,如图17.12所示。为了使用户点击按钮Quit实现面板的关闭,我们用到了VI的Front Panel.C

10、lose方法。 图17.12 子面板程序示例子面板可以有不同的行为模式,譬如子面板始终在界面最前面,或者是对话框方式,即子面板打开时用户不能操作其它面板。这可以在子面板程序的File-VI Properties.-Window Appearance-Customize.对话框中设置,对应与Window Behavior栏。它有三种模式:Default:普通模式,即如同普通面板一样没有特殊行为。Floating:面板总是浮在窗口最前面,用户此时仍然可以操作其它面板。Modal:对话框模式,即如图对话框一样,当该面板运行时,用户不可以操作其它面板。 除了通过按钮实现多面板的调用,我们也可以通过菜单

11、实现,如图17.13所示。这里我们是通过选中菜单项的ItemTag来实现菜单项与相应面板VI的对应。 图17.13 通过菜单实现多面板程序 以上的例子中,子面板与主面板之间不存在数据流,因此可以用同一段代码实现打开多个面板。若主面板VI与子面板VI存在数据流则会稍微复杂一些,请参考图17.10所示的例子。如果对数据的流向没有要求,我们则可以通过全局变量来实现数据的交换,从而简化编程。高级篇中 LabVIEW网络编程一章中的内容节选: 20.4.2 TCP通信LabVIEW中用于TCP编程的VI函数位于Functions Palette的Data Communication-Protocols-

12、TCP面板下,如图20.22所示。 图20.22 TCP 编程VI函数面板 通过这些函数,原本复杂的TCP编程在LabVIEW中也变得简单起来。具体函数的含义如表20-4所示。 表20-4 TCP 编程VI函数列表VI函数名称功能TCP Listen在指定端口创建一个监听端(Listener),并等待客户端的连接。TCP Create Listener在指定端口创建一个监听端(Listener)。TCP Wait On Listener在指定端口等待客户端的连接。TCP Open Connection打开与远程Server端的连接。TCP Read从指定的TCP连接读取数据。TCP Write

13、向指定的TCP连接写入数据。TCP Close Connection关闭指定的TCP连接。IP To String将IP地址转换为计算机名称。String To IP将计算机名转换为IP地址。Resolve Machine Alias通过VI Server或计算机别名返回计算机的IP地址。 TCP通信的两端分别为服务器端(Server)和客户端(Client)。服务器端先对指定的端口(Port)监听,客户端向服务器端被监听的端口发出请求,服务器端接收到请求后便建立客户端与服务器端的连接,然后就可以利用该连接进行通信了。通信完毕后,两端通过关闭连接函数断开连接。其过程如图20.23所示。注意:由

14、于有些端口已经被分配给指定的用途,例如80被分配给HTTP服务,20通常被分配给FTP服务,因此在选择端口时,最好不要选择小于1024的端口号,1024以下的端口号是保留给特定用途的,例如FTP,HTTP和Telnet等。 图20.23 双机TCP通讯流程图 下面通过几个代表性的实例来介绍具体如何在LabVIEW中进行TCP编程。 例20.1 利用TCP协议进行简单点对点通信本例中,Server端不断的向客户端发送数组数据,Client不断接收数据。Server端程序如图20.24所示。首先通过TCP Listen函数在指定端口2052监听是否有Client端请求连接,当Client端发出连接

15、请求后,进入主循环发送数据。最后关闭连接,并过滤掉因为正常关闭导致的错误信息。Client程序如图20.25所示。首先通过TCP Open Connection函数向Server端请求连接并建立连接,建立连接后,进入主循环接收数据。最后关闭连接,并过滤掉因为正常关闭导致的错误信息。运行程序时,必须先运行Server端再运行Client端。注意: 1. 由于TCP Write函数的数据输入只能是字符串,因此你需要通过Type Cast或Flatten To String函数将数据类型转换为字符串。同样,在接受端需要再通过Type Cast或Unflatten From String函数将字符串重

16、新转换为原始数据。2.由于TCP传递的数据没有结束符,因此你最好在数据发送前先发送该数据包的长度给接收端,接收端获知数据包的长度后才能知道应该从发送端读出多少数据。 图20.24 利用TCP协议进行点对点通信Server端程序 图20.25 利用TCP协议进行点对点通信Client端程序 例20.2 利用TCP协议进行交互式点对点通信在上例中只是进行了简单的服务器端发送数据,客户端接收数据。实际上,服务器端与客户端可以同时进行交互式通信,即服务器端可以同时向客户端发送数据并从客户端接收数据,客户端也一样。由于TCP协议自动管理数据分组、排队等,因此不会照成冲突。用户可以打开本书自带实例:交互式

17、点对点通讯举例_TCP Server.vi和交互式点对点通讯举例_TCP Client.vi学习。运行程序时,必须先运行Server端再运行Client端。 例20.3 利用TCP协议进行一点对多点通信上面两个例子都是点对点通信,实际上对于TCP编程也可以进行一点对多点进行通信。Server端只需要添加一个循环不断的监听连接,一旦有Client端请求连接,则与该Client建立连接,并将连接放入队列。主循环对队列中的每一个元素逐个进行读写。当然,这实际上仍然利用的是点对点的通信,即客户端与服务器必须建立点对点的连接。只不过这里是通过连接队列来逐个处理每一个连接。因此,这里并不是“广播”通讯,真

18、正的“广播”需要通过UDP协议才能实现。该例Server端程序框图和Client端程序框图分别如图20.26与图20.27所示。Server端程序利用到了队列,关于队列的知识将在下一章介绍。运行程序时,必须先运行Server端再运行Client端,Client端可以有多个。 图20.26 利用TCP协议进行一点对多点通信Server端程序框图 图20.27 利用TCP协议进行一点对多点通信Client端程序框图LabVIEW8.20程序设计从入门到精通样章试读: 顺序结构、多面板程序设计、TCP编程入门篇中 程序结构一章中的内容节选:5.1 顺序结构(Sequence Structure)5.

19、1.1 LabVIEW程序的执行顺序 如果你用传统的文本程序语言写过程序,你一定相当然的认为程序是按照语句的顺序从上到下一条条执行的,除非遇到goto语句或是函数才会跳到另外一段代码去执行。但是作为一种图形化开发语言,LabVIEW有它独特的方法来确定它的执行顺序。首先是根据数据流执行,只有当节点的所有输入点的数据都“流到”时,才会执行该节点。一般来说荻际前凑沾幼蟮接业姆较颉傲鞫钡摹缤?/SPAN5.1所示,这段代码就代表了Result=(5+Rand)2这个表达式。 图5.1 数据流式的编程方法 如果你再放一段类似代码在同一个Block Diagram里的话,它又是如何执行的呢?如图5.2所

20、示,这两段代码并不是按照从左到右或从上到下地顺序执行的,而是并行独立地执行的。这是因为LabVIEW实现了自动多线程。它使代码的执行效率大大提高了。如果用文本程序语言,实现多线程编程是非常费力的。 图5.2 多段代码同时执行5.1.2 Flat Sequence Structure和Stacked Sequence Structure 按照上述办法虽然能提高代码执行效率,但你不知道哪一段代码是先执行的。在很多情况下,程序员也会需要多段代码能按照设定的顺序执行。这时候,我们就需要顺序结构(Sequence Structure)来帮忙了。有两种顺序结构,一种是Flat Sequence Struc

21、ture, 它是按照从左到右的顺序执行的。这样的好处是你能看到所有的代码,但是当代码段数太多时就会很难看了。另一种是Stacked Sequence Structure,它按照标定的顺序执行代码。与Flat Sequence Structure不同的是,它将每段代码都“叠放”在了一起,因此你同时只能看一段代码。它们在Functions Palette中的位置如图5.3所示。图5.3 顺序结构在Functions Palette中的位置 当鼠标单击Functions Palette中对应的图标后,再在Block Diagram中按住鼠标左键向右下方拉动,估计大小合适的时候放开鼠标左键即可。可以看

22、出它很像电影胶片,意思就是一帧一帧的按顺序执行。通过右击其边框选择Add Frame Before或Add Frame After来增加Frame。同理,可以选择Delete This Frame来删除Frame。下面我们将图5.2中的两段代码重新改写为按照顺序结构执行的两段代码。分别如图5.4和图5.5所示。图5.4 Flat Sequence Structure 图5.5 Stacked Sequence Structure5.1.3 在Frame间传递数据 对于Flat Sequence Structure,只需要将Frame间的数据流用线连起来就能实现将前一个Frame的数据传递到后一

23、个Frame中去。如图5.5所示。其中Frame之间的数据连接点是可以用鼠标拖动的,你可以通过拖动来合理布线。下面介绍到各种程序结构的数据连接端子都是一样可以拖动的。 图5.6 在Flat Sequence Structure的Frame间传递数据 而对于Stacked Sequence Structure则要复杂些。首先右击前一个Frame的下边框,选择Add Sequence Local,于是右击之处就出现了一个小黄色端子,可以将其拖拽到边框的任何位置。然后将需要传递的数据与该端子连接。接着进入后一个Frame,这时你仍然能看到这个端子,将其与你需要连接的点连接即可。如图5.7所示。 图5

24、.7 在Stacked Sequence Structure的Frame间传递数据高级篇中 动态程序控制技术一章中的内容节选: 17.3.3 多面板程序设计在设计稍具规模的系统时,往往一个前面板很难显示下所有的内容,就算勉强显示得下,也会使界面臃肿难看。有些情况下,我们可以通过Tab Control控件进行分页显示,但是如果前面板控件过多,程序框图必然会更加繁乱。其实,类似于常见的Windows程序,我们可以通过按钮或菜单弹出更多的界面。这样,无论多么复杂的系统都可以用很简洁的多面板人机界面实现。下面我们来看如何在LabVIEW中实现多面板的程序设计。这里,我们将多面板程序分为两种情况:一种是

25、在弹出子面板时,主程序处于等待状态,直到子面板运行完成。另一种是弹出子面板后,子面板与主程序相互独立运行。对于第一种情况,我们可以简单的通过子VI实现。在子VI的File-VI Properties.-Window Appearance-Customize.对话框中使能“Show front panel when called”选项,当主VI调用到该子VI时,该子VI的前面板便会自动弹出。子VI可以是静态调用也可以是动态调用。对于第二种情况,则需要通过VI Reference的方法节点来实现。下面我们通过一个实例来说明,其前面板和程序框图如图17.11所示。前面板的Panel1、Panel2和

26、Panel3三个按钮分别对应三个VI面板。每当用户点击其中一个按钮就会弹出相应的程序面板。运行过程中,我们可以看到各个面板之间是互不相关的,即其中一个面板的运行不影响另一个面板的操作。下面来看程序框图是如何实现的。程序框图中最主要的是一个事件结构,该事件结构的触发条件来源于用户点击界面上四个按钮中的任何一个按钮。譬如当用户点击Panel1按钮时,我们通过CtlRef的Label.Text属性获得按钮的Label,由此得到该按钮对应VI的绝对路径。通过Open VI Reference函数获得VI Reference后,由VI的Execution.State属性获得VI的运行状态,如果VI处于I

27、dle状态(即不运行状态),则通过Run VI方法运行该VI,设置Wait Until Done参数为False表明该动态加载的VI与主VI相互独立运行。最后通过设置Front Panel Window.Open属性为True来打开动态加载VI的前面板。 图17.11 多面板程序示例下面我们来看子面板的写法,如图17.12所示。为了使用户点击按钮Quit实现面板的关闭,我们用到了VI的Front Panel.Close方法。 图17.12 子面板程序示例子面板可以有不同的行为模式,譬如子面板始终在界面最前面,或者是对话框方式,即子面板打开时用户不能操作其它面板。这可以在子面板程序的File-V

28、I Properties.-Window Appearance-Customize.对话框中设置,对应与Window Behavior栏。它有三种模式:Default:普通模式,即如同普通面板一样没有特殊行为。Floating:面板总是浮在窗口最前面,用户此时仍然可以操作其它面板。Modal:对话框模式,即如图对话框一样,当该面板运行时,用户不可以操作其它面板。 除了通过按钮实现多面板的调用,我们也可以通过菜单实现,如图17.13所示。这里我们是通过选中菜单项的ItemTag来实现菜单项与相应面板VI的对应。 图17.13 通过菜单实现多面板程序 以上的例子中,子面板与主面板之间不存在数据流,

29、因此可以用同一段代码实现打开多个面板。若主面板VI与子面板VI存在数据流则会稍微复杂一些,请参考图17.10所示的例子。如果对数据的流向没有要求,我们则可以通过全局变量来实现数据的交换,从而简化编程。高级篇中 LabVIEW网络编程一章中的内容节选: 20.4.2 TCP通信LabVIEW中用于TCP编程的VI函数位于Functions Palette的Data Communication-Protocols-TCP面板下,如图20.22所示。 图20.22 TCP 编程VI函数面板 通过这些函数,原本复杂的TCP编程在LabVIEW中也变得简单起来。具体函数的含义如表20-4所示。 表20-

30、4 TCP 编程VI函数列表VI函数名称功能TCP Listen在指定端口创建一个监听端(Listener),并等待客户端的连接。TCP Create Listener在指定端口创建一个监听端(Listener)。TCP Wait On Listener在指定端口等待客户端的连接。TCP Open Connection打开与远程Server端的连接。TCP Read从指定的TCP连接读取数据。TCP Write向指定的TCP连接写入数据。TCP Close Connection关闭指定的TCP连接。IP To String将IP地址转换为计算机名称。String To IP将计算机名转换为IP

31、地址。Resolve Machine Alias通过VI Server或计算机别名返回计算机的IP地址。 TCP通信的两端分别为服务器端(Server)和客户端(Client)。服务器端先对指定的端口(Port)监听,客户端向服务器端被监听的端口发出请求,服务器端接收到请求后便建立客户端与服务器端的连接,然后就可以利用该连接进行通信了。通信完毕后,两端通过关闭连接函数断开连接。其过程如图20.23所示。注意:由于有些端口已经被分配给指定的用途,例如80被分配给HTTP服务,20通常被分配给FTP服务,因此在选择端口时,最好不要选择小于1024的端口号,1024以下的端口号是保留给特定用途的,例

32、如FTP,HTTP和Telnet等。 图20.23 双机TCP通讯流程图 下面通过几个代表性的实例来介绍具体如何在LabVIEW中进行TCP编程。 例20.1 利用TCP协议进行简单点对点通信本例中,Server端不断的向客户端发送数组数据,Client不断接收数据。Server端程序如图20.24所示。首先通过TCP Listen函数在指定端口2052监听是否有Client端请求连接,当Client端发出连接请求后,进入主循环发送数据。最后关闭连接,并过滤掉因为正常关闭导致的错误信息。Client程序如图20.25所示。首先通过TCP Open Connection函数向Server端请求连

33、接并建立连接,建立连接后,进入主循环接收数据。最后关闭连接,并过滤掉因为正常关闭导致的错误信息。运行程序时,必须先运行Server端再运行Client端。注意: 1. 由于TCP Write函数的数据输入只能是字符串,因此你需要通过Type Cast或Flatten To String函数将数据类型转换为字符串。同样,在接受端需要再通过Type Cast或Unflatten From String函数将字符串重新转换为原始数据。2.由于TCP传递的数据没有结束符,因此你最好在数据发送前先发送该数据包的长度给接收端,接收端获知数据包的长度后才能知道应该从发送端读出多少数据。 图20.24 利用T

34、CP协议进行点对点通信Server端程序 图20.25 利用TCP协议进行点对点通信Client端程序 例20.2 利用TCP协议进行交互式点对点通信在上例中只是进行了简单的服务器端发送数据,客户端接收数据。实际上,服务器端与客户端可以同时进行交互式通信,即服务器端可以同时向客户端发送数据并从客户端接收数据,客户端也一样。由于TCP协议自动管理数据分组、排队等,因此不会照成冲突。用户可以打开本书自带实例:交互式点对点通讯举例_TCP Server.vi和交互式点对点通讯举例_TCP Client.vi学习。运行程序时,必须先运行Server端再运行Client端。 例20.3 利用TCP协议进

35、行一点对多点通信上面两个例子都是点对点通信,实际上对于TCP编程也可以进行一点对多点进行通信。Server端只需要添加一个循环不断的监听连接,一旦有Client端请求连接,则与该Client建立连接,并将连接放入队列。主循环对队列中的每一个元素逐个进行读写。当然,这实际上仍然利用的是点对点的通信,即客户端与服务器必须建立点对点的连接。只不过这里是通过连接队列来逐个处理每一个连接。因此,这里并不是“广播”通讯,真正的“广播”需要通过UDP协议才能实现。该例Server端程序框图和Client端程序框图分别如图20.26与图20.27所示。Server端程序利用到了队列,关于队列的知识将在下一章介

36、绍。运行程序时,必须先运行Server端再运行Client端,Client端可以有多个。 图20.26 利用TCP协议进行一点对多点通信Server端程序框图 图20.27 利用TCP协议进行一点对多点通信Client端程序框图基于LabVIEW的虚拟示波器的设计和实现 2007-06-01 10:33:08作者:来源:中国电子测试网浏览次数:623文字大小:【大】【中】【小】简介:虚拟仪器的出现使人类的测试技术进入了新的发展纪元。以虚拟双通道示波器为例,从系统构造、软硬件实现等方面详细介绍了如何应用数据采集卡和开发工具LabVIEW构造和实现这一仪器。关键字:虚拟仪器; 示波器; 数据采集卡

37、; LabVIEW 1 仪器的工作原理及系统构成虚拟示波器是由信号调理器,PCI总线的数据采集卡组成的外部采集系统加上软件构成的分析处理系统组成。被测信号送到信号调理电路,进行隔离、放大、滤波整流后送数据采集卡进行A/D转换,最后由控制软件对测试信号进行数据处理,完成波形显示,参数测量、频谱分析等功能。系统结构如图1显示图1 系统结构图2 系统的设计及功能实现2.1硬件部分 硬件部分主要包括传感器、信号调理电路及数据采集卡。而传感器和信号调理电路针对不同的测试对象有不同的选择和设计。数据采集是硬件部分的核心,它的性能直接影响数据采集的速度和精度。另外,LabVIEW可对NI公司的数据采集卡进行

38、驱动和配置,可充分利用采集卡的性能。基于此,我选择的数据采集卡是NI公司生产的。下面主要介绍数据采集卡的性能和安装配置。2.1.1 PCI6010数据采集卡的简介PCI6010采集卡是基于32位PCI总线的多通道的数据采集设备,具有数字输入/输出、模拟输入/输出和计数器等功能。它通过SH37F37M电缆与CB37FLF 输入输出接口面板连接,该接口面板具有37个螺旋状的接口终端。同时此数据采集卡具有3个完全独立的DMA控制(模拟输入、定时/计数器0、定时/计数器1)。本卡还具有刻度校准电路系统。由于运行时,时间和温度漂移会引起一定的模拟输入、输出误差,为了使此误差最小,可以调整设备的校准刻度。

39、而它的出厂校准信息存储在EEPROM中,不能修改。而修改此信息必须通过软件来实现。 该数据采集卡具有8个差动模拟输入通道(即16个对地单信号模拟输入通道),电压范围为5V, 1V,0.2V;2个模拟输出通道,电压范围为5V。同时它还具有6个数字输入通道,4个数字输出通道。数字输入的VIH(Input high voltage)的最小值是2.0 V, 最大值是5.25 V,VIL(Input low voltage)的最大值是0.8 V, 最小值是0.3 V;数字输出的IOH(Output high current)的最大值是6 mA ,IOL (Output low current) 的最大值

40、是2 mA。信号通道的最大采样速率是200 kS/s (single channel) ,扫描时最大采样速率是33.3 kS/s (scanning)。2.1.2 PCI6010数据采集卡的安装 将NI PCI6010数据采集卡插到计算机主板的一个插槽中,接好附件。附件包括一个型号为CB37FLF的转接板,和一条SH37F37M电缆。转接板直接与外部信号连接。在完成了NI PCI6010数据采集卡的硬件连接后,就需要安装该卡的驱动程序。安装步骤如下:(1) 运行程序National Instrument DAQNI-DAQ Setup。在出现对话框中单击NEXT按钮。(2) 在出现的Selet

41、ct DAQ Devices对话框中选中NI PCI6010,单击NEXT按钮。(3) 在后续出现的全部对话框中单击NEXT按钮,即可完成NI PCI6010数据采集卡的安装。(4) 重新启动计算机。完成数据采集卡的安装。2.1.3 PCI6010数据采集卡的配置 在安装好数据采集卡后就要对其进行系统配置。点击图标Measurement & Automation Explorer,在弹出的Devices and Interface 中进行I/O配置。(1) 这支采集卡在系统的设备的编号:将参数Device值设为1;(2) 设置模拟输入AI的属性:将Polarity 值设为-5V+5V,将Mod

42、e属性设置为Differentioal(差动);(3) 设置模拟输出AO的属性:在AO窗口中,将属性设为Bipolar(双极性)。 在完成上述设定之后,单击“确定”按钮。在Systerm窗口中 有“Test Resources”按钮,可检验设备是否正确配置。通过后再进行简单的通道配置,即可完成数据采集卡的全部设置。2.2 软件部分 LabVIEW(laboratory virtual instrument engineering workbench实验室虚拟仪器工程平台)是美国国家仪器公司(NI公司)推出的一种基于“图形”方式的集成化程序开发环境,是目前国际上唯一的编译型图形化编程语言。它是N

43、I公司开发的面向仪器与测控过程的图形化开发平台,它的概念,是直观的前面板与流程图式的编程方法的结合。本设计中采用LabVIEW7.1。 概括地讲,系统软件总体上包括数据采集、波形显示、参数测量等三大模块,其流程如图2所示:图2 软件流程图2.2.1 数据采集模块的设计 数据采集模块式虚拟示波器软件的核心,主要完成数据采集的控制,数据的读取及数据的转换。数据采集卡通过多路开关、A/D 转换新片和数据缓存的几个部件将多通道的模拟信号转换成数字信号并贮存在其缓存中,而计算机通过LabVIEW中的数据采集VI对数据采集卡中的几个部件的运作进行控制,数据采集卡和计算机之间通过计算机总线含通信,交换数据和

44、控制信息。一个多通道波形数据采集的过程一般包括以下几个步骤:(1) 数据采集卡有关的采样参数(采集频率、采集次数、采集通道、数据缓存的大小)(2) 采样开始,多路开关对采样通道进行一次扫描,每个通道采样一个点。(3)A/D 转换。(4) 数字信号存到数据缓存。(5)重复(2)(4),直到采集到了所需的采样次数,全部数据顺序存储到缓存中。(6)从数据采集卡的缓存中读取数据到计算机的内存中。 其程序代码如图3:图3 数据采集部件2.2.2 波形显示模块 波形显示模块主要包括幅值调整、位移调整和精度调整。波形显示主要用Waveform chart 控件。通过幅值、位移及精度的调整,可方便的放大或延展

45、波形,便于观察。其代码如图4:图4 参数控制部件 仪器前面板如图5所示。图5 仪器面板图总的程序代码如图6所示。图6 总的程序代码图3 结束语 外接一台信号发生器,皆能轻松实现虚拟仪器的调试和检验。经过软件修改,在一台示波器上还能实现频谱分析、频率电压转换等普通示波器所根本不具有的功能,充分体现了软件设计的灵活性。另外,将虚拟仪器技术与网络技术结合进行远程数据采集,可以充分发挥虚拟仪器的优势,最大限度地实现硬件资源共享,随着计算机技术的迅猛发展以及各种高性能的数据采集卡的大量涌现,虚拟仪器的应用前景将非常广阔。LabVIEW是一种通用的编程语言吗?作者:Jeff Kodosky,LabVIEW

46、之父我经常听到,甚至有时关注于对LabVIEW的争论,即LabVIEW是一种通用的语言还是一种用于测量和自动化的特定应用程序的开发环境。一方面,有经验的程序员指出了LabVIEW缺乏的流行编程语言所具有的特性,但是另一方面,一些用户详细阐述了他们使用LabVIEW所建立的通用应用程序,而完全没有使用任何数据采集或分析。对LabVIEW用户的调查可能与最近一个非正式的对一个团队中的开发者的调查一致,这个团队中的绝大多数人都认为LabVIEW已具有足够的功能来被归为通用语言类,而且事实上,正是以这种方式在使用它。LabVIEW被提到次数最多的不足是常用的递归和递归式数据类型,以及面向对象的结构,但是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1