labview多个生产者消费者模式优点

labview多个生产者消费者模式优点,第1张

优点是缓冲通信、数据采集和处理、网络通信、队列消息处理,具体如下:

1、缓冲通信:当多个进程以不同速度运行时,就适合采用进程间缓冲通信。有了足够大的缓冲区后,生产者循环可以以快于消费者循环的速度运行,而不会丢失数据。比如,有一个包含两个进程的应用程序,第一个进程负责数据采集,第二个进程将数据传输到网络上。第一个进程的运行速度是第二个进程的三倍。如果使用生产者/消费者设计模式来实现此应用程序,则数据采集进程充当生产者,网络进程充当消费者。当拥有足够大的通信队列(缓存区)时,网络进程便可以访问数据采集循环采集到的大量数据。这种数据缓存能力能够最大程度地减少数据丢失。

2、数据采集和处理:在采集需按顺序处理的多组数据时,通常采用生产者/消费者模式。假设要编写一个应用程序,该应用程序在接受数据的同时,还要按照接收顺序处理数据。由于这些数据的排队(生产)速度比实际处理(消费)速度高出很多,因此生产者/消费者设计模式最适合此类应用程序。通过这种方法,消费者循环可以按自己的速率处理数据,同时生产者循环也可以让额外的数据排队。

3、网络通信:网络通信需要两个进程同时以不同的速度运行:第一个进程将不断轮询网络线路并检索数据包,第二个进程将提取第一个进程检索的这些数据包并加以分析。在此范例中,第一个进程充当生产者,因为它向第二个进程提供数据,而第二个进程则充当消费者。这时就非常适合使用生产者/消费者设计模式。并行的生产者循环和消费者循环要同时检索和分析网络外数据,两个循环之间的排队通信可以对检索到的网络数据包进行缓存。这种缓冲在网络通信繁忙时就显得非常重要。借助缓存,数据包的检索和传输速度可以超过分析速度。

4、队列消息处理:排队消息处理器架构是生产者/消费者架构的一个特殊版本。数据队列用于为生产者/消费者设计模式中的循环之间传递数据。这些队列提供了一个优势,即生产者和消费者循环间的数据缓冲。

你先试一下用MAX里面的与仪器通信发这些命令有没有问题。

你说能找到GPIB0的接口,那你的仪器有没有被扫描出来?

你附图,我的GPIB卡连了3个仪器,在VISA资源下面就已经有了自动扫描出的3个仪器的资源名称。

没有这些你就没法通信的。

如果这些你都有,那就试一下第一行,如果通信也是可以的,那就是程序的问题了。

根据你的说法,通信时没有问题了

那你用你写的程序发IDN?可不可以,如果也行那就是你后面发的命令的问题了。跟那个I/O没啥关系了。

你再好好看下手册的命令描述,范例里面的命令有的时候是比较老的,不一定支持现在的仪器,你也可以执行下范例看行不行呀。

另外,要注意有些命令是没有返回值的,这样你在读 *** 作时当然会出错的,而一些测量的,比如说VOLT?之类的,你发下去最好要延时一下再去读的。

另外,建议你这些命令,你都用MAX里面的与仪器通信先试一下,哪些有返回值,哪些没有,再放到程序里面。

补:

询问:发送命令,并自动读取返回值,适用于有返回值的命令

发送:单纯的发送命令到设备

读取:从设备读取值,发送与读取一起用等同于询问,不过一个是自动,一个是手动。

比如说IDN,你点询问可以,你可以点下发送,再点读取也是一样。

你图中发的那个命令是 *** 作命令,没有返回值的吧,应该点发送,然后看仪器状态是否变化。发查询命令的时候,基本上后面有个‘?’,用询问才可以的。

labview按照数据流编程结构执行程序框图代码。数据流编程结构使得labview程序易于理解和调试,使得并行执行和数据并行化变得容易,这种编程结构基于数据流图,其中程序中的每个节点表示一个 *** 作或函数,数据以线连接节点之间。

LabVIEW应用程序目录是一个固定的文件夹,包含了LabVIEW应用程序所需的所有资源,包括VI、控件库、图标、帮助文件、图像等。在开发LabVIEW应用程序时,将所有相关资源存储在应用程序目录中可以使程序更加易于维护和部署。下面介绍如何使用LabVIEW应用程序目录:

1 打开LabVIEW软件,并创建一个新的项目。

2 在项目中右键单击“应用程序”选项,选择“新建应用程序”。在d出的窗口中,填写应用程序的名称和路径,然后点击“确定”按钮。

3 在创建好的应用程序目录中,可以创建VI、控件库等资源。在创建VI时,最好将它们保存在应用程序目录中,这样它们就可以直接与应用程序相关联了。

4 在应用程序目录中,还可以创建其他文件夹,如“帮助文档”、“图标”等,以便更好的组织应用程序所需的资源。

5 当需要打包部署应用程序时,可以使用“应用程序构建工具”,选择应用程序目录作为构建目录,并将所有资源打包为一个可执行文件。

6 在运行应用程序时,LabVIEW会自动查找应用程序目录中的资源,并按需要加载它们。因此,使用应用程序目录可以使程序更易于管理和部署。

labview可以做软件网页。

labview程序怎么生产网页:就是把自己的程序通过网页控制运行,工具里,有个WEB发布,试一下,在网上或者帮助里搜索使用办法。

labview是一种由美国国家仪器(NI)公司研制开发的程序开发环境,类似于C和BASIC开发环境。labview使用的是图形化编辑语言G编写程序,产生的程序是框图的形式,是NI设计平台的核心,也是开发测量或控制系统的理想选择,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。

与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW[3]的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。

根据摩尔定律,芯片上晶体管的数目每隔18~24个月就会翻一番。如同在过去40年里一样,这个定律现在还是正确的,但是在性能上却并不再呈现一个线性增强的现象。以前,芯片制造商通过提高处理器时钟速度使芯片性能翻番――从100MHz到200MHz,直至近来达到吉赫兹。

然而如今,因为能量消耗和热量发散的限制,通过增加时钟速度来提高性能已经不再可行。芯片制造商开始转向全新的芯片结构,即一个芯片上有多个处理器核。相对于单核,采用多核处理器的程序员们可以完成更多全局工作。然而,要充分利用多核处理器的优点,程序员们必须重新考虑他们该如何开发应用程序。有些程序员,希望在终端客户将他们的电脑简单升级到快速处理器的时候,就能立即获得软件应用程序性能的增强。按照微软的软件工程师HerbSutter的话来说,对这些程序员“已经没有免费的午餐”。简而言之,如今程序员们应当致力于可持续的性能改进。

提高处理器时钟速度,则顺序程序的性能改进;为电脑升级一个更快速的CPU,意味着每一条独立指令的运行速度都会加快。要想使用多核系统以继续提高性能,开发者需要设计应用程序,为每个核分配工作――本质上即是开发一个并行应用程序来取代顺序应用程序。

幸运的是,NI LabVIEW软件非常适合于工程师和科学家们充分利用多核芯片的处理能力,主要原因有下面三个。

1LabVIEW是一种图形化数据流编程语言

开发者可在LabVIEW中简便地实现并行任务,使得开发新的应用程序并更改现存的应用程序以利用多核处理器的优点成为可能。LabVIEW从50版本开始就是多线程的,而现在的85版本更引进了新的功能,以利用多核处理器的优点。

2LabVIEW将多核性能引进嵌入式实时硬件中

LabVIEW 85将桌面 *** 作系统(例如Windows和Linux)的自动多任务处理功能――也就是对称多处理技术(SMP)――引入确定性的实时系统。

3LabVIEW处于“Multicore―Ready”软件层次的顶层

LabVIEW应用程序的每一层(例如:LabVIEW应用程序代码、低层函数、I/O驱动),都是线程安全的,它们可以利用多核处理器的优点。

LabVIEW是一种图形化数据流编程语言

使用LabVIEW开发应用程序的最主要好处就是其直观的、图形化的语言。在LabVIEW中,解决工程问题就如同在纸上画方块图一样简单。由于LabVIEW能够并行表达和执行任务,所以现代的多核处理器使得LabVIEW成为编程工具的一个更有利的选择。

LabVIEW的数据流特性意味着不论何时,只要代码在线上有个分支或在方块图上有个并行序列,潜在的LabVIEW编译器就会尝试并行执行代码。用计算机科学的专有名词来说,这就是“隐并行”,因为你并不需要为了并行执行程序而明确编写代码,LabVIEW的图形化语言将自行实现一定程度的并行性。

从单核到双核计算机,理论上的优势是性能的双倍改进。但是,如何逼近该极限,则与你能多大程度上并行执行程序有关。LabVIEW程序员自然是并行地编写其算法。在普通LabVIEW应用程序的初始基准下,若不考虑多核编程技术,不改变代码,则其性能能够提高15%~20%。

图1是一个简单的应用例子:LabVIEW代码的一个分支用于两个分析任务――滤波 *** 作和快速傅里叶变换(FFT)――在双核机器上并行执行。因为两个任务计算量都很大,所以采用双核执行,相对于单核的效率改进是1省略/multicore上找到所有这些优化方案的例子。

LablVEW为实时嵌入式硬件引入多核性能

一直以来,工程师们使用的工具都不能利用嵌入式多核系统的特性进行最优化的并行式编程。LabVIEW 85软件为确定性实时系统引入了台式机的自动多线程调度器(也被称为SMP)。LabVIEW 85的实时模块加入了一流的多核系统支持,它有着如下特性:

在嵌入式实时系统中,在多个核上自动进行负载均衡。

对于时间关键(time-critical)的代码,可以将定时循环分配到指定的处理器上将定时循环结构中的关键代码与应用程序中的其他代码隔离开。

利用Real-Time ExecutionTrace Toolkit 20工具,用户可以方便地对VI程序运行过程中的线程和处理器核进行图形化的表示,以便更好地调整实时系统,进而获得最佳性能。

LabVIEW处于“Multicore-Ready”软件层次的顶层

Intel公司定义了用户需要评估的四层软件层次来确定多核系统的可用程度。这四层软件层次分别是 *** 作系统、设备驱动、应用程序库和开发工具。如果所用的应用程序库和设备驱动不是为多核而设计的,或者 *** 作系统不能够在多个核上进行负载均衡,那么并行化程序在多核系统上是不能够运行得更快的。

设备驱动软件层的一个例子就是NI-DAQmx驱动软件。传统的NI-DAQ是“线程安全”的,也就是说在一个NI-DAQ函数被调用时,整个程序库会阻塞其他调用的线程。从第一感觉看来,这是非常有逻辑性的,因为NI-DAQ是用来控制硬件的,而硬件通常被认为是单一的源。NI-DAQmx这款重新设计过的新型DAQ驱动程序是可重入的,这意味着多个DAQ任务可以以一种真正并行的方式运行而不再需要阻塞线程。利用这种方法,驱动程序可以使用户的应用程序在同一块电路板上并行地运行多个任务,诸如独立的模拟和数字输入/输出等。

LabVIEW――理想的并行化编程语言

大多数用户将会看到多核系统所带来的好处,它利用改进的性能同时运行多个应用程序(电子邮件、视频、文字处理等),这也被称为多任务。但是,对于试图对单一应用程序进行优化的开发者而言,它所能提供的好处是有限的。

工程师和科学家们正在为测试需要或者在控制应用中改进的闭环速率而寻找更快的测量仪器。他们需要考虑如何实现并行的应用。LabVIEW软件就是这样一种用户可以借助于它所提供的软件环境来实现并行应用的有效工具。语言的数据流特性、LabVIEW Real-Time工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层,使得LabVIEW软件成为进行并行化编程的首选。

以上就是关于labview多个生产者消费者模式优点全部的内容,包括:labview多个生产者消费者模式优点、用Labview对GPIB设备编程通信问题、labview按照哪种编程结构执行程序框图代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10134610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存