LABVIEW编程

2024-06-10 版权声明 我要投稿

LABVIEW编程(共7篇)

LABVIEW编程 篇1

虚拟仪器技术就是利用高性能的模块化硬件, 结合高效灵活的软件来完成各种测试、测量和自动化应用。灵活高效的软件能创建完全自定义的用户界面, 模块化的硬件能方便地提供全方位的系统集成, 标准的软硬件平台能满足对同步和定时应用的需求。硬件是虚拟仪器的基础, 而软件是实现虚拟仪器的关键, 任何用户都可以通过修改软件的方法很方便地改变、增减仪器系统的功能和规模。虚拟仪器技术的出现开辟了用户自主设计仪器的新时代, 为各层次设计者提供了广阔的思维空间, 其优势体现在:性能高、扩展性强、开发时间少和无缝集成。传统仪器把所有软件和测量电路封装在一起, 利用仪器前面板为用户提供一组有限的功能。而虚拟仪器系统提供的则是完成测量或控制任务所需的所有软件和硬件设备, 功能完全由用户自定义, 可以使用高效且功能强大的软件来自定义采集、分析、存储、共享和显示功能。可以“实现一个应用, 不同的设备”或者“许多应用程序, 一个设备”。

所以虚拟仪器技术将有很大的发展空间, 值得进一步应用和推广, 其系统的组成如图所示, 虚拟仪器技术的组成部分包括:高效的软件、模块化的I/O硬件和用于集成的软硬件平台。

1. 虚拟仪器的硬件平台

虚拟仪器的硬件平台由计算机和I/O接口组成, 计算机是硬件平台的核心, I/O接口负责被测信号的采集、调整、放大和模/数转换。I/O接口硬件仪器根据不同的标准总线主要有以下五种:

(1) PC总线插卡。是基于计算机标准总线 (如IS (AIndustry Standard Architecture) Bus或PCI (Peripheral Component Interconnect) Bus等) 的内置功能插卡, 即PC-DAQ (Data Acquisition) 数据采集卡。插卡式仪器插入计算机主板上的空槽中即可, 价格低廉, 用途广泛。

(2) GPIB (General Purpose Interface Bus) 标准总线仪器。GPIB技术是IEEE488标准早期的发展阶段。GPIB测量系统的结构和命令简单, 适用于要求高精确度的场合, 但不适宜进行数据的高速传输。

(3) VXI (VEMBus Extension for Instrumentation) 标准总线仪器。VXI是高速计算机总线VME总线在VI领域的扩展, 它具有稳定的电源, 强有力的冷却能力和严格的电磁屏蔽功能, 是开放性仪器总线标准。然而, 组建VXI总线要求有机箱、零槽管理器及嵌入式控制器, 造价比较高。

(4) PXI (PCI Bus Extension for Instrumentation) 标准总线仪器。PXI是PCI在仪器领域的扩展, 是一种新的开放式的、模块化仪器总线标准。PXI仪器符合工业级的制造标准, 具有高级定时和触发功能, 更适应苛刻的工作环境。

(5) 远程总线数据接口 (RS-232、USB、IEEE1394、Ethernet等) 与前面几种总线相比, 接口简单, 使用方便。随着数字化的发展, 很多设备将信号模数转换后进行传输。这样可以保证数据的精度不丢失, 且不易受干扰。

2. 虚拟仪器的软件平台

虚拟仪器软件包括I/O接口设备驱动程序和应用软件。I/O接口设备驱动程序实现对DAQ、GPIB、VXI、PXI、RS232等硬件仪器的控制。VISA (Virtual Instrument Software Architecture, 虚拟仪器软件体系结构) 是I/O接口软件库及其规范的总称, 通过调用底层驱动程序控制仪器。目前已有多种设计虚拟仪器的软件开发工具, 比较常用的有:

(1) 文本式编程语言:如基于传统语言的C、Visual C++、Visual Basic、Lab Windows/CVI等。采用大家比较熟悉的语言, 拥有众多函数和类库, 适应面广, 开发灵活多变, 可以自己开发驱动程序。往往用来开发大型的、功能复杂的仪器软件, 但开发人员需要有较多的编程经验和较强的调试能力。

(2) 图形化编程语言:如NI-Lab VIEW、HP-VEE等。拥有逼真的仪器面板元件, 图形化的常用模块, 智能化的数据连线, 简便易用、丰富多彩的函数库和工具包。软件通过建立和连接图标来编写虚拟仪器程序并定义其功能, 具有编程效率高, 通用性强的特点。图形化软件编程工具为用户设计虚拟仪器提供了最大限度的方便与良好的开发环境。

二、Lab VIEW简介

1. Lab VIEW的基本概念

Lab VIEW是美国NI公司创立的虚拟仪器领域中最具代表性的图形化编程开发平台, 与Visual C++、VisualBasic、Lab Windows/CVI等文本编程语言不同, Lab VIEW用图标、连线和框图代替传统的程序代码, 是一种图形化的编程语言 (G语言) , 主要应用于仪器控制、数据采集、数据分析、数据显示等领域, 并适用于多种不同的操作系统平台。Lab VIEW作为G语言的典型代表, 是目前国际上唯一的编译型图形化编程语言, 在功能完整和应用灵活性上不逊于任何其他高级语言, 是带有可扩展函数库和子程序库的通用程序设计系统。

Lab VIEW提供用于PCI、GPIB、VXI、PXI、RS232/485、USB等各种仪器通信总线标准的所有功能函数, 以及数据分析、显示和存储的应用程序模块;32位的编译器生成32位的编译程序, 保证用户数据采集、测试测量方案的高速执行;提供包括DLL (Dynamic Link Library, 动态链接库) 、DDE (Dynamic Data Exchange, 动态数据交换) 、Active X在内的大量与外部代码或软件进行连接的机制, 提供CIN (Code Interface Node, 代码接口节点) 使得用户可以使用由C或C++语言编译的程序模块, 使得Lab VIEW成为一个开放的开发平台;具有强大的网络功能, 支持Data Socket协议、TCP/UDP协议和网络发布等。此外, Lab VIEW还提供常用的程序调试工具, 具有断点设置、单步调试、数据探针和动态显示执行流程等功能, 使用户能够非常清楚的观察数据传递过程中的细节, 使程序的调试和开发更为便捷。

Lab VIEW的运行机制就宏观上讲已经不再是传统上的冯·诺伊曼计算机体系结构的执行方式了。传统的计算机语言 (如C语言) 中的顺序执行结构在Lab VIEW中被并行机制所代替。从本质上讲, 它是一种带有图形控制流结构的数据流模式, 这种方式确保了程序中的函数节点只有在获得它的全部数据后才能够被执行。这样, Lab VIEW中被连接的方框图之间的数据流控制着程序的执行次序, 而不像文本程序受到行顺序执行的约束。因此, 可以通过相互连接的方框图快速简洁的开发应用程序, 甚至还可以有多个数据通道同步运行。

2. VI的组成

在Lab VIEW环境下开发的应用程序称为VI (Virtual Instrument) 。VI由人机交互界面——前面板 (Front Panel) 和相当于源代码功能的框图程序——后面板 (Diagram) 组成。前面板是程序的界面, 在这一界面上有控制量 (Controls) 和显示量 (Indicators) 两类对象。在前面板中, 控制量模拟仪器的输入装置并把数据提供给VI的框图程序, 例如开关、旋钮;而显示量则模拟仪器的输出装置并显示由框图程序获得或产生的数据, 例如波形显示窗口等。后面板又称代码窗口或框图程序, 在后面板中对VI编程, 以控制和操纵定义在前面板上的输入和输出等功能。后面板中包括前面板上对象的连线端子, 还有一些前面板上没有但编程必需的对象, 如函数、结构和连线等。

三、Lab VIEW的软件开发流程和设计步骤

1. Lab VIEW的软件开发流程

在Lab VIEW平台上开发软件, 既要遵循软件工程学的普遍规律和基本方法, 又要考虑到图形化编程语言的特点。软件工程学中用各种生命周期模型描述软件开发的各个阶段, 不同的软件生命周期模型各有其优缺点。根据最经典的瀑布模型, Lab VIEW平台上软件开发主要有六个阶段:一是系统需求分析阶段。在数据采集、分析、显示、存储、传输等方面明确用户需求, 考虑方案的可行性和成本;二是结构设计阶段。Lab VIEW符合模块化的程序设计思想, 采用由顶向下的方法, 把复杂的系统需求逐步分解为一系列简单的子任务, 为每一个子任务创建相应的VI, 有些子任务可能需要进一步划分, 从而形成逐层调用的树形软件层次结构, 例如本文开发的传感器信号测试平台的树形VI结构;三是细节设计阶段。按照软件的结构确定每个模块的输入输出以及完成的功能;四是编写代码阶段。先由底层VI开始编写图形代码, 再逐步向上集成, 直到顶层程序;五是

程序测试阶段。由于每个子VI都可以单独执行, 使得程序调试非常方便。每完成一个模块就测试一个, 输入预期的参数, 观察输出结果。发现问题及时修改, 最后进行总体测试;六是软件维护阶段。软件维护是为了使软件能够持久的满足用户的需求。软件维护分为改进性维护、适应性维护、完善性维护和预防性维护。

2. Lab VIEW设计VI的步骤

(1) 在前面板上放置控件。用工具模板中相应的工具从控制模板中取用所需的相关控件, 排列到前面板中合适的位置, 打开控件的属性设置窗口进行参数设置, 并加上各种文字说明或标签, 还可以加上一些装饰用的控件。

(2) 在后面板上放置节点、框图。用工具模板中相应的工具从函数模板中取用相关控件, 排列到后面板中合适的位置, 这些控件就是后面板中的节点或框图。一般情况下, 前面板中创建的控件会自动在后面板创建相应的端口。

(3) 在后面板上连线形成数据流。使用连线工具按数据流的方向将端口、节点、框图依次相连, 构成对象之间的数据通道, 其中不同的线型代表不同的数据类型。

(4) 运行检验。利用仿真或实测的方式进行VI功能检验。

(5) 程序调试。一是找出语法错误。如果存在语法错误, 则当启动快捷键工具栏的“运行”按钮时, 该按钮变成一个折断的箭头, 程序不能被执行。单击该按钮, 弹出错误清单窗口, 窗口中列出错误项, 双击其中任何一项, 出错的对象或端口就会自动变成高亮形式。二是慢速跟踪程序的运行。单击快捷工具栏中的“高亮执行”按钮, 该图标变成高亮形式, 再单击“运行”按钮, 程序就以较慢的速度运行。没有被执行的代码灰色显示, 执行后的代码高亮显示, 并显示数据流上的数据值。这样, 就可以根据数据流动状态, 跟踪程序的执行。三是断点与单步执行。使用断点工具可以在程序的某处终止程序执行, 用探针或单步执行方式查看数据, 来查找程序中的错误。四是设置探针。通过设置探针来查看框图程序流经某一根连接线的数据值。五是数据观察。在查找错误时, 单击“高亮执行”, 观察数据流中各个节点的数值。六是命名存盘。命名并保存设计好的VI。

四、小结

本文解释了虚拟仪器的基本概念, 介绍了虚拟仪器的体系结构, 比较了虚拟仪器与传统仪器的差别, 说明虚拟仪器技术将有很大的发展空间, 值得进一步应用和推广, 描述了虚拟仪器软件Lab VIEW的特性及其程序开发方法。基于虚拟仪器的图形化编程语言Lab VIEW, 以及利用Lab VIEW开发VI的流程和设计步骤。

摘要:虚拟仪器技术的出现, 开辟了用户自主设计仪器的新时代, 为各层次设计者提供了广阔的思维空间, 其优势体现在:性能高、扩展性强、开发时间少和无缝集成。在LabVIEW平台上开发软件, 既要遵循软件工程学的普遍规律和基本方法, 又要考虑到图形化编程语言的特点。根据最经典的瀑布模型, LabVIEW平台上软件开发主要有:系统需求分析阶段、结构设计阶段、细节设计阶段、编写代码阶段、程序测试阶段、软件维护阶段。

关键词:公共利益,地方政府,征地制度

参考文献

[1]莫慧芳.基于LabVIEW的小波神经网络在电机声频故障诊断中的应用研究[C].广东工业大学工学硕士学位论文, 2005, (5) :2-6.

[2]高波, 周大威, 王炎.焊缝自动跟踪系统的发展综述[J].黑龙江自动化技术与应用, 1995, (4) :1-4.

LABVIEW编程 篇2

1 多线程技术及其Lab VIEW编程

进程是应用程序的运行实例,而线程是进程内部的可独立执行的单元,是操作系统对系统资源的基本调度单位。同属于一个进程的所有线程都共享进程的虚拟地址空间,线程之间可以共享进程的全部数据和资源。

多线程是指操作系统支持一个进程中执行多个线程的能力。采用多线程编程技术,整个软件程序含有完成不同功能的多个线程,如数据采集、实时数据和曲线显示、数据处理与分析线程和用户界面线程等。这样,多个线程同时执行,在一段时间内并行完成多个任务,既加快了系统的反应速度,又提高了执行效率[4,5]。在现代测控技术中,多线程编程技术常常是必须采用的技术。

1.1 多线程在Lab VIEW中的实现

Lab VIEW图形化编程语言与其他成熟的计算机编程语言相比有较大的差别,主要特点是它引入了数据流的概念,程序执行过程中数据的流向、程序执行的顺序和方向都是可预见的[6]。然而,这种顺序化执行方式对多线程编程是不利的。因为各个线程并行运行,同时还要共享进程数据,从左至右的数据流方式似乎是不太可能实现多个线程的并行运行的。为了解决这个问题,Lab VIEW采用将没有直接数据连接的程序块单独创建一个线程,将各个模块放在循环结构中并行执行而实现多线程,它是Lab VIEW中创建多线程的一般方法。但是,创建了多个线程并不能保证它们能正确有序地运行,而是需要在线程间传递和共享数据,以及线程之间进行同步与通信。

1.2 多线程间的通信

Lab VIEW中提供了局部变量与全局变量,可以用局部变量在两个甚至多个线程间传递和共享数据。如对数据采集模块的输出设置一个写局部变量,处理分析模块设置一个读局部变量,两个模块间没有直接的数据连接,通过局部变量传递数据,数据采集和处理分析两个线程并行运行。然而,这种数据传递方式是不安全的,若处理分析模块运行所需的时间比数据采集模块要短,可能导致处理分析模块对局部变量多次重复读取,从而引起错误的的数据分析结果,这显然不是我们所期望的。

在Lab VIEW多线程程序设计的系统中,线程之间数据传递和共享、线程间的同步是实现多线程编程的关键。Lab VIEW在Synchronization中提供通知(Notifier)、队列(Queue)、旗语(Semaphore)、集合(Rendezvous)、事件(Occurrences)等函数,以解决多线程间的数据传递和同步问题。

2 Lab VIEW中线程编程技术比较

将数据采集系统分解成如图1的数据采集、采集显示(显示1)、处理分析、分析显示(显示2)、结果存储这五个模块,假设数据采集所需时间为60ms,处理分析为70ms,采集显示和分析显示均为30ms,结果存储为100ms,数据采集和结果存储VI的优先级设置为高于正常,显示VI设置成可重入,其他所有用户子VI的执行系统和优先级都按默认设置。连续运行30次,每次采集正弦函数产生的150个点的数据,分别用单线程、多线程方案来统计程序运行的时间,然后对测试结果进行分析和比较,以此来验证多线程编程技术的效果。

2.1 单线程实现

单线程的实现就是程序按数据采集、采集显示、处理分析、分析显示、结果存储的顺序执行,数据流从左至右依次流进这几个模块,程序框图如图2所示。

2.2 队列与集合实现

可以肯定,采用单线程这种顺序化的执行方式效率较低,因为各个模块都要等待数据,不能并行执行。对系统进行分解,可以明显看出,除了分成五个模块外,已采集数据的采集显示、处理分析可以并行执行。同样,处理分析后的数据也可以同时进行分析显示、结果存储。这样,系统就简化成了三个部分和两条主要的数据流,分别为数据采集到采集显示、处理分析的数据流,处理分析后的数据到分析显示、结果存储的数据流。而且,这三部分之间传递的数据还是有序的,因此可以采用两个队列(Queue)来传递数据。而已采集数据的采集显示、处理分析,处理分析后的分析显示、结果存储的并行执行使用集合(Rendezvous)来实现,具体的程序框图如图3所示。

在数据采集模块、处理分析模块完成后让输出的数据分别进入各自的队列(Enqueue Element),同时创建集合(Rendezvous),已采集数据的采集显示、处理分析,处理分析后的数据的分析显示、结果存储分别从两个队列中取出各自的数据,只有当等待集合(Wait at Rendezvous)收到集合信号后同时执行。

2.3 队列实现

若全部采用队列来实现五个模块的并行运行和模块间的数据传递、共享及模块间的同步,这时会有四个数据队列,分别为数据采集到采集显示的队列、采集显示到处理分析的队列、处理分析到分析显示的队列、分析显示到结果存储的队列。除了结果存储模块外,各个模块的输出均进入下一个队列,而除了数据采集模块外,各个模块的输入均来自上一个队列(Dequeue Element),程序框图如图4所示。

3 试验结果与分析

在Intel Pentium D CPU 3GHz,1GB内存(DDR2 533),Windows XP SP2,Lab VIEW7.1环境下运行,单线程的运行时间是8 792ms,同时使用队列和集合实现的多线程方案的运行时间是6 940ms,仅使用队列实现的多线程方案的运行时间为4 978ms。同时使用队列和集合的方案运行时间占单线程方案的78.9%,仅使用队列的多线程方案运行时间占单线程方案的56.6%。毫无疑问,使用多线程编程技术的确能有效地减少程序的执行时间。但是,两种方案实现的多线程效果有比较明显的差异,同时使用队列和集合的方案仅节约了20%左右的时间,而仅使用队列的多线程方案节约了近50%的时间。

分析和比较发现:队列加集合的方案虽然更符合人们编程的思维,但并没有达到理想的效果,原因在于采集显示模块所需时间和处理分析模块相差较大,两者并行运行的时间基本上取决于处理分析模块所用的时间,只有在处理分析模块运行完成后才发出集合信号,分析显示模块与结果存储模块才开始运行。同理,分析显示模块和结果存储模块相比也是如此,两者并行运行的时间基本上取决于结果存储模块所用的时间。因此,处理分析与结果存储这两个最占用时间的模块之间仍是串行运行的。相比而言,仅采用队列实现的多线程方案,四个队列的首尾是相连的,当一个数据进入队列后,马上就可以通过队列传递给其他的模块,因此五个模块都是并行运行的,大大节约了整个系统执行时间。由此可见,单线程的执行时间基本上等于各个模块的时间总和,仅采用队列实现的多线程方案的执行时间基本上由执行时间最长的那个模块决定。

对于一个数据采集系统,根据其任务功能恰当地分解成几个独立的模块,利用多线程编程技术,恰当地使用Lab VIEW同步机制中提供的函数,尤其是队列,可以有效地缩短系统整体的执行时间,提高数据采集系统的时效性。在Lab VIEW虚拟仪器平台下,多线程编程技术比单线程更能有效地缩短数据采集、分析和存储的时间,而且,仅使用队列的多线程编程方式具有更高的执行效率。

参考文献

[1]杨乐平,李海涛,赵勇,等.LabVIEW高级程序设计[M].北京:清华大学出版社,2003.

[2]高亚奎,支超有.多线程虚拟仪器测试软件的开发[J].计算机测量与控制,2003,11(12):986-987.

[3]李成,丁天怀,傅志斌,等.可多线程测量的模拟钻杆四分量力虚拟仪器[J].清华大学学报(自然科学版),2006,46(8):1414-1417.

[4]林康红.基于LabVIEW的远程虚拟仪器多线程技术[J].自动化仪表,2003,24(8):25-27.

[5]张靓,黄海于,张翠芳.基于Lab Windows/CVI多线程数据采集的研究与设计[J].中国仪器仪表,2005(8):72-76.

LABVIEW编程 篇3

一般情况下,在LabVIEW中实现I/O控制有两种方式,一种是I/O硬件已经自带了LabVIEW底层的驱动,这样只需要直接调用即可,这种方式一般用于采集卡或NI的一些板卡[1]上;第二种方式是使用LabVIEW中的I/O端口函数[2]编写底层细节,这种方法一般难度较大。

由于文章所讨论的系统的下位机采用了博来科技股份有限公司单片机主板2I260A,所以如果需要使用上述第一种方法来实现放大器增益的控制,需要额外购买硬件,成本太高,不划算;而且2I260A自带了8个DI和DO接口,如果将其利用,将提高设备的利用率。所以选择第二种方式性价比较高,但2I260A自带的资料全部都是调用WinIO.DLL来实现DIO的控制[3],使得使用I/O端口实现控制难度较大,所以急需使用一种新的方法来完成所需的I/O控制。

本文详细介绍了使用LabVIEW调用WinIO.DLL来快速实现2I260A上DO的控制,从而来控制放大器中继电器的切换,从而实现编程控制放大器增益[4]调节的目的。试验结果表明,这是一种比基于I/O端口控制更直接更高效的控制方法,完全可以满足放大器档位控制的要求,不仅提高了设备整体的利用率,而且效果良好且运行稳定。

1 概述

1.1 2I260A及其DIO介绍

博来科技股份有限公司于1990年在台北正式成立。该公司专门研发生产工业电脑应用的嵌入式系统。目前已在中国大陆、欧洲和美洲设有多个分支机构。该公司致力于主机板、平板电脑及各类标准系统产品的设计及制造,主打嵌入式系统的各项应用,以满足客户在网络、数字监控、网络存储设备、网路应用、多媒体查询终端、POS机和精简型电脑等方面应用需求。此外,该公司可根据客户需求提供OEM或ODM服务。

2I260A就是博来科技研发的2.5英寸的单片机主板,其主要配置如下:英特尔1.6 GHz的CPU(双核处理器),DDR3 SDRAM 2 GB的内存,1×Realtek RTL8111F10/100/1 000 Mb/s的网卡,两个串口,两个USB接口,支持WDT、4路DI和4路DO,采用12 V供电,支持3G SIM读卡器。由于该电路板的设计结合了所有必要的输入和输出接口,使得2I260A成为一款用于数字标牌和瘦客户端应用程序的理想多功能一体机控制主板。由于其体积小,2I260A也是小尺寸和低功耗设备,如移动PC或小平板电脑的整个范围的完美平台[4]。

由于文章所讨论的系统使用了2I260A作为下位机开发系统,所以使用它的DO来控制放大器的增益省去了外部控制电路的搭建,同时也将设备的利用率达到最大化。

1.2 WinIO简介

WinIO是由Yariv Kaplan编写的动态链接库,它有如下特点:WinIO函数库通过使用内核模式下的设备驱动程序和其他一些底层编程技巧绕过Windows安全保护机制,允许Windows程序直接对I/O口进行操作;最新版本是3.0,支持32位和64位平台,并可供多个应用程序同时使用。WinIO允许在Windows NT/2000/XP/2003/Vista/7和2008上直接访问I/O端口和物理内存[4]。

2 LabVIEW调用WinIO实现放大器增益控制

2.1 为什么使用WinIO

其实LabVIEW中已经存在对I/O进行操作的函数,如图1所示。

但是,以下几个因素必须考虑:

由于获得的资料(以及demo程序)都是用C或VB编写的,关于I/O具体的地址定义及地址的含义不一定非常清楚,所以使用该I/O端口函数的难度有些大,这方面的资料获取比较难[5]。

LabVIEW毕竟和其他文本语言(比如C语言)还是有所区别,直接对底层程序的开发还存在一定的限制,比如对内存和指针操作就没有C语言那么灵活。而且由于操作系统的某些限制,直接编程来进行底层操作可能会遇到很多困难,而使用前人编写的一些现成的模块来绕过这些底层细节则会轻松很多,而且程序复杂度大大降低。基于上述几点,考虑使用WinIO库来代替I/O端口操作,以减轻工作量。

2.2 LabVIEW对WinIO的调用

这部分涉及到LabVIEW对DLL的操作[6],属于LabVIEW的高级应用。下面以InitializeWinIo函数为例介绍如何调用:

第一步:将下载的WinIO.dll放置到和将要调用的VI相同的目录下;

第二步:新建一个VI,保存VI到上一步的目录中并打开该VI的程序框图,在其中添加调用库函数节点;

第三步:双击调用库函数节点,打开调用库函数对话框,如图2所示。

因为函数原型为bool_stdcall InitializeWinIo(),所以接下来配置该对话框,如图3和图4所示。

单击确定按钮,然后完成如图5所示[6]程序框图。

执行该VI,如果返回值是0,则表示调用成功。其他函数的设置根据函数原型同理设置即可。至此,WinIO函数的调用测试已经完成。

2.3 使用LabVIEW调用WinIO控制2I260A的DIO

WinIO中的函数调用是有顺序的:InstallWinIoDriver函数→InitializeWinIo函数→DIO操作函数→ShutdownWinIo函数[7]。必须按照上面的顺序来调用,不然会出现意想不到的结果。

根据博来科技股份有限公司官方网站(http://www.lex.com.tw)提供的2I260A的DIO操作demo程序的VB版本[8],可以很轻松地知道图6中的SetDOValue即是操作2I260A的DIO的函数。

这里只是把VB中WinIO.dll中函数的调用换成LabVIEW库函数调用,其他语句用LabVIEW标准语句来实现即可[9],如图7~图9所示。

经过测试和验证,该方法确实可以控制2I260A的DO,效果良好,运行稳定。如需控制DI,方法类似。

2.4 使用2I260A的DO控制放大器增益

完成对2I260A的DO的控制后,将放大器电路板的继电器控制端连接到这些DO上,即可控制放大器电路中继电器的输出,最多可以控制4个继电器,在档位不多的情况下均可满足,从而达到控制放大器增益的目的。

放大器部分的电路是由OPA820放大器构成的增益可调节放大器电路。

此处的放大器电路中运放的反馈部分由继电器连接4个电阻,采用二进制计数的方式进行组合得到步进增益值,因此只需计算出第一个电阻值就可以知道其他阻值了,如需要接通Rn(n=0~3),则将对应的继电器断开——即将对应电阻接入电路反馈端。如要得到1.1倍的增益,由A=1+R1R0,R0=1 kΩ,计算得到R1=100Ω,由二进制的特点可以算出R2=2R1=200Ω,R3=2R2=400Ω,放大倍数为An=1+RnR0,得到n=(An-1)×100,再将n值转换成二进制值对应到继电器和电阻即可(其中二进制中的“1”对应比特位的电阻应接入电路作为负载,相应的连接到电路的继电器的两个接线端为闭合状态,“0”则相反)。此外,使用DI也可以实现一些其他功能,比如数字信号的采集。这样可以进一步提高设备的利用率。由于本次未使用到数字输入信号,所以该部分未做详细研究。

3 结语

与LabVIEW自带的I/O端口函数相比,通过使用LabVIEW调用WinIO实现DIO的控制确实大大减少了工作量,并且没有碰到任何关于底层I/O相关的操作系统权限问题。这种方法完全可以满足放大器档位控制的要求,不仅提高了设备整体的利用率和节省了大量的时间,而且效果良好且运行稳定。

将WinIO的每个函数进行LabVIEW封装后,下次使用时只需直接调用所需功能的VI,比如,设置DO封装完成后就是一个SetDO.vi,这样以后每次调用就直接调用该VI即可,就能很方便地实现了模块化程序的编写,可谓是一劳永逸,大大提高了工作效率。

摘要:在此详细介绍了如何使用Lab VIEW调用Win IO来控制博来科技股份有限公司的单片机主板2I260A的DIO(数字输入/输出),以及通过控制2I260A的DO来实现控制放大器电路模块中继电器的切换,从而达到编程调节放大器增益的目的。试验结果表明,这是一种比基于底层I/O端口控制更直接更高效的控制方法,完全可以满足放大器增益档位控制的要求,不仅提高设备整体的利用率、降低开发周期,而且效果良好且运行稳定。

LABVIEW编程 篇4

Visual Basic基于对象进行可视化设计, 具有事件驱动的编程机制、结构化程序设计语言以及强大的网络、数据库、多媒体功能, 成为当今国内外最流行的程序设计语言之一, 也是学习Windows应用程序首选的程序设计语言[1]。但在开发工业测量与控制系统应用软件, 以及实时处理等方面, VB并不擅长[2]。Lab VIEW是美国国家仪器公司以虚拟仪器为基础所推出的图形化编程软件, 利用硬件系统完成信号的采集、测量与调理, 利用计算机完成数据的运算、分析和处理, 利用显示器模拟传统仪器的控制面板, 是计算机辅助测试领域的一项重要技术[3]。但Lab VIEW是按照数据流的模式运行, 在进行文本数据处理、多目标逻辑判断等情况时, 通过图形语言, 会占用大量的空间。对于稍大一点的程序, 对文本数据进行比较判断, 其程序面板会非常巨大, 对程序的修改会因为面板上的图形过多造成编写上的困难, 使用起来十分不便。而且, 对习惯使用VB、VC、VC++等高级语言编程的工程师来说, 使用Lab VIEW设置一些变量、数组来编写算法, 是十分困难的。对这方面软件的开发, 应把VB与Lab VIEW优势相互结合, 取长补短, 进一步开发出功能更加全面的测控软件。目前, 多数学者都是通过VB调用Lab VIEW生成的可执行文件和VB调用Lab VIEW生成的动态链接库文件来实现二者的混合编程[4,5], 但始终是以VB作为主程序来调用Lab VIEW子程序;也有学者提出将Lab VIEW中的Data Socket技术作为接口[6], 主要介绍VB子程序对于Lab VIEW中数据的读取, 但对两者间信息交互并无详细的说明。对于有些设备, 其功能主要用于监控, 主界面包含大量设备运行信息, 例如状态指示灯、仪表、量表、温度计等, 但是偶尔会出现一些文本数据的处理, 或者通过智能算法生成控制命令后下发, 这种情况下便需要以Lab VIEW作为主程序, 在需要的时候调用VB子程序。

故本文提出两种实现方法:第一种方法是以文本文档作为程序接口; 第二种方法是以Lab VIEW中的Data Socekt技术作为程序接口。

1 主程序设计

以Lab VIEW作为主界面, 程序通过串口与底层实时进行数据交换, 界面显示设备运行指示灯、运动状态等参数并控制设备执行终端进行运动。Lab VIEW按照数据流方式运行, 数据总是按照一定的流向一次性流过。而串口的通讯要求实时读取控制器的信息, 那么必定要在循环内进行。通过循环能对串口进行连续的读写, 但串口通讯参数的初始化值并非不变, 当更换端口或改变设备通讯参数时, 需进行设置。因此采用顺序结构, 将等待参数设置循环置于初始化操作之后。采用双循环结构保证程序按下急停按钮后仅退出信息交互循环, 并不退出整个监控程序, 松开急停按钮并重新进行通讯参数初始化, 系统可继续运行, 而双循环结构也为之后两种调用VB子程序的方式奠定了基础, 其程序主框架流程图如图1所示。

2 以文本文档为接口的混合编程

基于VB编写子程序, 用于进行用户密码登录, 包括密码的设置、更改, 用户添加、删除等操作, 在此不对其做过多阐述。需要说明的是Lab VIEW主程序调用VB应用程序, 其调用模块置于图1 中主框架的内循环中, 只有这样才能保证在Lab VIEW生成应用程序后, 对子程序的能够重复进行调用, 而不是仅能够调用一次, 其程序框图如图2 所示, 其中仅显示模块本身, 并不是整个主程序的程序框图。

图2 所示, 密码登录子程序正常关闭后, Lab VIEW立刻进行调用, 实现两程序之间的无缝连接, 其数据连接口便是之前生成的“登录结果.txt”文本文件。主程序与VB之间的连接调用包括以下2 个部分:

1) 可执行程序exe调用。通过Lab VIEW中:函数选板→互联接口→库与可执行程序→执行系统命令函数, 使主程序在Vi内部启用基于Windows的应用程序, 调用VB生成的应用程序。

2) 信息的调用。当匹配结果完成后, VB子程序会输出文本数据, 写入指定目录下的指定文件并且关闭子程序。此时“执行系统命令”函数会输出完成代码“0”, 用于判断子程序是否成功执行完毕。Lab VIEW主程序马上从该目录中调用刚生成的“登录结果.txt”文本文件, 若文本内容为“Y”, 则登录成功, 可以进行参数设置操作;内容为“N”, 则登录失败。

3 以Data Socekt为接口的混合编程

关于Data Socket技术, 已有学者做过大量介绍, 在此不做阐述。在主程序中建立3 个数据项, read、write、feedback, 作用如下:

read:主程序实时上传运动参数。

write:下发VB子程序生成好的控制命令流到主程序。

feedback:主程序接收到命令流文件进行匹配后, 开始执行, 每完成一条工艺命令, 将所完成的信息反馈回子程序。

利用Data Socekt插件, 在Lab VIEW主程序中编写通讯接口模块, 与之前文本文档为接口时相似, 主程序中的通讯程序, 置于内循环中, 框图如图3 所示;而调用子程序也同样通过“执行系统命令”函数, 但由于Data Socekt技术为实时通讯, 不再判断子程序是否成功关闭, 二者间的通讯流程图如图4 所示。

基于Data Socekt插件, 利用VB编写子程序, 并生成应用程序。其中需要注意的是, 在VB中通过Data Socekt插件的Connect To方法, 输入局域网中的IP地址, 连接主程序中所对应的数据项。此处调用时, 由于两个程序都在同一台电脑, 不存在IP地址的变动问题, 因此直接在子程序窗体载入时就使用Connect To方法按照本地IP, 将三个数据项接入主程序。代码编辑如下:

同时, 在VB中通过On Data Updated事件自动更新数据项中上传的信息, 而同一个数据项不允许出现两端同时写入的情况, 因此在DS服务器中建立了3 个Data Socket数据项, 以满足程序自动更新数据的需求, 其代码编辑如下。

Read数据项, 子程序用于自动更新主程序所上传的参数, 通过变量Data的Value属性, 获得文本数据, 用于具体的分析处理。

Write数据项, 通过命令下发按钮的单击事件, 将命令文本框Command_txt中的命令流文件的文本数据, 赋值给Write数据项中Data变量的Value属性。主程序从Write数据项中读取相关数据, 用于命令流文件的执行。

Feed Back数据项, 与Read数据项类似, 通过该数据项下变量Data的Value属性, 自动更新命令流完成状态信息, 并显示在指定文本框。

4应用程序生成和验证

利用Lab VIEW2013以及VB6.0进行程序的编制, 在Lab VIEW项目中生成可执行应用程序。应用程序不显示Lab VIEW工具栏, 用户打开程序后, 程序按照主框架中的双循环结构, 自动进入运行状态, 其运行示例如图5所示。

5结论

本文利用Lab VIEW与VB进行混合编程, 提供了两种以Lab VIEW为主程序调用VB子程序的方法, 并实现了程序间的无缝连接, 保证主程序在Lab VIEW强大的图形显示基础上, 进一步结合VB对后台数据处理时简单高效的特点, 使得二者的混合编程的方式更加灵活多样, 进一步丰富应用程序的功能, 缩短程序开发周期, 为自动化测试程序开发中跨平台通讯问题提供了解决方案。

参考文献

[1]龚沛曾, 杨志强, 陆慰民.Visual Basic程序设计教程[M].北京:高等教育出版社, 2007.

[2]元云飞, 张丽芳, 杨凤龙.Vb与Lab VIEW混合编程的实现[J].仪器仪表标准化与计量, 2006 (4) :8-10.

[3]林静, 林振宇, 郑福仁.Lab VIEW虚拟仪器程序设计从入门到精通[M].北京:人民邮电出版社, 2013.

[4]刘广敏.Lab VIEW与VB混合编程技术[J].机械管理开发, 2006 (1) :92-95.

[5]赵国伟, 徐跃民.基于VB和Lab VIEW的自动化控制和编程设计[J].微计算机信息, 2007, 23 (11) :94-95.

LABVIEW编程 篇5

厌氧发酵技术是现代发酵工程的一个分支,利用厌氧消化来处理粪便对维持我国农业生产体系的可持续发展,从而取得综合治理效益具有深远的意义。厌氧发酵过程控制是牲畜粪便产沼气发电工程中的关键工序, 发酵过程中的温度和压力的控制、发酵原料投料浓度的大小、接种物浓度的大小、配料成分、PH值的变化、含氧量的多少等都是影响发酵工程产气的量及质量的重要参数。基于实验数据进行建模分析是发酵工业实现优化控制的基础。厌氧发酵过程是一类非线性、时变、物理上不可逆的复杂生化过程。这类过程的操作自动化与最优化难度较大,因而基于现场生产数据进行建模、参数优化以及对过程的仿真是提高发酵过程的效益及自动化控制水平的重要途径。

本项目通过Matlab软件,对模型进行仿真与预测,利用Matlab软件、LabVIEW软件实现可视化的仿真平台。

2厌氧发酵参数检测与选择

2.1厌氧发酵检测数据选择

从厌氧发酵过程控制工艺参数在测量过程中的精度及实际生产过程中的可控性考虑工艺参数为温度、 发酵原料投料浓度的大小、配料成分中鲜牛粪和水、 PH值的变化、含氧量,产气的量、质量(甲烷的百分含量)作为输入层神经元。产气的量、质量(甲烷的百分含量) 这些变量作为神经网络模型的输出。

2.2厌氧发酵检测结果

本课题组利用实验装置进行了厌氧发酵控制过程的数据检测,测量数据有温度、发酵原料投料浓度的大小、配料成分中鲜牛粪和水、P H值的变化、含氧量、 产气的量、质量(甲烷的百分含量)。利用仿真平台进行建模、参数优化。实验结果,详见表1 。

3厌氧发酵模型的建立及工艺参数的优化

利用BP神经网络算法,建立发酵过程中的温度、发酵原料投料浓度的大小、接种物浓度的大小、配料成分、PH值的变化、含氧量等相关参数与发酵工程产气的量及质量的重要参数之间的数学模型。从厌氧发酵过程控制工艺参数在实验测量过程中的精度及实际生产过程中的可控性考虑工艺参数为温度、发酵原料投料浓度的大小、配料成分中鲜牛粪和水、PH值的变化、 含氧量,产气的量、质量(甲烷的百分含量)为优化指标。

3.1BP人工神经网络训练和预测

利用2 5组实验数据作为人工神经网络训练样本, 另选择其他5组数据作为检验样本,运用Matlab软件, 进行人工神经网络的训练和预测。设定BP人工神经网络训练循环次数参数为5000步,训练误差目标参数为0. 00001,学习率参数为0.1。

通过应用均方差函数比较目标值和预测值的差异, 计算目标值与预测值间的误差, 观察网络模型对训练情况,对网络拟合图性能进行评价[1,2]。产气量网络训练结果显示,经过4562步训练后,网络误差平方和SSE均值为8.5689e-005达到了设定的最小训练目标值。产气质量网络训练结果显示,经过1346步,网络误差平方和SSE均值7.5454e-005,达到了设定的最小训练目标值。

网络训练完毕后,利用Matlab仿真函数sim输出网络预测,用5组检验样本来检验网络训练效果如图1、图2所示。预测值与目标值比较说明厌氧发酵工艺参数为温度、发酵原料投料浓度的大小、配料成分中鲜牛粪和水、PH值的变化、含氧量,输出为产气的量、质量(甲烷的百分含量) 关系模型网络预测性能良好。

3.2厌氧发酵过程控制工艺参数优化

本项目通过介绍M a t l a b脚本节点的用法,来调用Matlab实现LabVIEW和Matlab的混合编程[3,4]。通过应用均方差函数比较目标值和预测值的差异,计算目标值与预测值间的误差,观察参数优化情况,经过500次循环训练后,网络误差平方和均值为3×10-3,达到了设定的最小训练目标值。

本项目通过10组数据进行厌氧发酵工艺参数优化, 通过应用均方差函数比较目标值和预测值的差异,计算目标值与预测值间的误差,观察参数优化情况,经过865次循环训练后,网络误差平方和均值为3×10-3,达到了设定的最小训练目标值。结果如图3 。

4LabVIEW与Matlab混合编程实现厌氧发酵仿真系统

利用LabVIEW调用Matlab,利用Matlab脚本节点实现神经网络建模和参数优化[5]。步骤如下:

步骤1 : 函数面板的“数学→脚本与公式→脚本节点”,将Matlab脚本节点放置在合适的位置。

步骤2:单击工具选板上的,在 Matlab ScriptNode中单击编辑M脚本。

步骤3:在Matlab Script Node中输入程序。

步骤4:在Matlab Script Node框图左侧上单击鼠标右键,选择“添加输入”,在出现的方框中输入所需的输入变量。

步骤5:在Matlab Script Node框图右侧上单击鼠标右键,选择“添加输出”,在出现的方框中输入所需的输出变量。

步骤6 : 在前面板中选择“控件→新式→数值”, 选择数值输入控件, 将其放在前面板的合适位置。

步骤7 : 在前面板中选择“控件→新式→数值”, 选择数值显示控件, 将其放在前面板的合适位置。

步骤8 : 在程序框图中将两个数值输入控件分别与输入变量连接,数值显示控件与输出变量连接[6]。

程序框图如图4所示。

输入数据,运行程序,程序同时会启动Matlab,并在Matlab中自动运行该脚本。产生如图5所示。

5LabVIEW与Matlab混合编程实现厌氧发酵仿真运行结果

5.1现场装置参数优化

从厌氧发酵过程控制工艺参数在实验测量过程中的精度及实际生产过程中的可控性考虑工艺参数为为温度、发酵原料投料浓度的大小、配料成分中鲜牛粪和水、PH值的变化、含氧量,产气的量、质量(甲烷的百分含量)为优化指标。选取五组实验数据进行优化,实验结果,详见表2。

5.2现场装置指标预测

将已经优化的五组实验数据进行输入到预测仿真系统中, 预测结果详见表3 。

6结束语

仿真平台系统以LabVIEW和Matlab相结合进行设计。LabVIEW具有友好可视化编程画面的特点,Matlab具有强大的数值分析和图形显示功能的特点, 使用Matlab中的M函数文件实现仿真数据获得和仿真图形绘制的功能。用户只需在平台系统上根据实际情况输入相关工艺操作参数,就可以得到发酵过程中温度、PH值、底物浓度等重要状态变量的变化曲线和数据,继而进行相关工艺、自动控制和优化操作变量的研究,或在生物发酵运行过程中对现场仪表进行跟踪控制,提高生产过程中的产气率和产气质量。

LABVIEW编程 篇6

目前, 我国航天地面发射支持系统型号配套软件、仿真测试软件, 并使用了Lab View语言准确地实现了用户需求。近年来, 在软件的使用过程中, 软件出现了时序不同导致的多线程变量赋值错误、软件界面触发逻辑混乱导致用户误触发等典型的质量问题, 分析主要原因为:软件无统一设计架构, 设计师精力集中在功能实现及代码级, 导致当软件使用场景及输入负载变化时, 软件性能不达标, 并影响正常功能的实现。

针对上述问题, 论文提出一种基于Lab View语言的通用设计架构, 并提出了功能模块划分依据和优先级设定方法, 提炼出了常用功能模块可重用设计思路, 为监控类软件提供了一种可靠的设计方法。

2 软件总体架构设计

在进行程序框图设计时, 应考虑将源代码控制在一屏能显示的范围内。主VI只处理前面板用户事件, 涉及数据处理和通信接口, 均通过调用子VI实现。

基于Lab View的软件总体架构一般采用标准状态机设计架构, 通过While循环+状态判断条件架构实现软件运行状态的切换, 基于状态机的架构设计, 关键在于状态的定义和状态切换条件定义。

数据采集需要持续执行的功能模块, 一般采用动态调用的方法, 实现主VI和子VI并行运行。

3 软件多线程架构设计

3.1 多线程运行机理

Lab View通过6个执行系统实现了多线程调度系统, 并为每个执行系统分配一个线程池和一个调度队列, 实现程序框图中多个循环模块并行执行。一般情况下, 可通过VI属性—执行—首选执行系统来实现对执行系统的选择。一般为默认选项:与调用方一致。调用方 (主VI) 的选项一般为默认标准系统, 当界面显示要求高, 频繁使用属性节点时, 应将与界面显示相关的VI执行系统设置为用户界面, 以避免频繁的执行系统和线程切换导致程序性能下降。

3.2 多线程架构设计方法

设计多线程架构时, 应当遵循这样的原则:一般一个功能模块对应一个线程, 对于通信类多通道并行执行的功能一般按照通道数建立多个线程并行运行。可以同时运行的功能模块可并排摆放, 不要用连线、顺序框等方式强制它们依次执行。在并行执行时, Lab View会自动把它们安排在不同的线程下同时运行, 以提高程序的执行速度, 节省运行时间。为避免某一个线程占用CPU资源达100%, 其他线程反应迟钝, 导致用户认为程序死锁的情况, 应在循环中加延时函数。延时的时间长短应根据本循环实现功能的优先级来确定, 优先级越高的线程延时时间越短。

4 软件功能模块设计

根据软件功能不同, 将系统划分为“参数初始化”“数据接收”“数据解析”“数据发送”“UI界面显示”“曲线图像”“数值显示”“系统心跳”“错误响应”“数据存储”10个功能模块, 每个功能模块设计思路如下。

4.1 参数初始化

采用顺序结构, 程序首先完成参数初始化工作, 初始化成功后顺序结构后移, 开始运行主程序。程序在初始化模块中可进行变量初始化、读取硬盘参数配置文件等工作。

4.2 数据接收

软件实际应用中, 必须保证分析处理的实时性, 此处软件设计无延时, While循环实现数据接收功能。同时为保证数据的完整性和实时性, 接收完数据后将数据与时间信息打包为簇常量, 并入数据接收队列。若存在多个数据接收通道, 为保证多个通道间数据互补干扰, 采用多个独立While循环实现多通道数据接收工作[1]。

4.3 数据解析

数据解析功能模块用于将数据接收队列内的数据进行解析, 并赋给相应的系统变量。由于系统解析在要求一定的处理实时性的同时, 还具有一定的处理复杂度, 设计采用循环间隔为200ms的While循环结构实现。将所有系统变量打包至一个簇常量, 对数据进行解析, 分别更新簇常量内对应系统的参数值, 可以避免系统变量增多导致结构复杂的现象, 同时提高数据刷新速度。在完成数据解析功能的同时, 设计数据存储队列, 解析数据完成入列操作, 为数据存储模块准备。

4.4 数据发送

数据发送模块用于将数据发送队列中的数据出列并按照一定的格式发送出去, 由于软件发送数据一般为指令帧, 为非周期触发, 故采用队列传递方式, 当队列中无数据时, 此线程处于阻塞模式, 此时, 线程一次循环的等待时间设置为250ms, 在本时间段内, 其他线程占用CPU资源执行。

4.5 UI界面响应

UI界面以While循环结合事件触发的结构实现, 用于响应用户在UI界面进行的操作, 同时生成相应的操作代码, 并将操作代码入列数据发送队列。

4.6 曲线图像

曲线图像模块用于以曲线的方式显示系统反馈参数, 由于多曲线多通道占用系统资源, 此处设计使用时间间隔为100ms的定时While循环模块。由于人眼错觉, 100ms的刷新速度可以满足需求, 又可以降低系统资源占用。

4.7 数值显示

数值显示模块用于以数值的方式显示系统反馈参数, 由于占用系统资源较少, 此处设计使用时间间隔为100ms的定时While循环模块。由于人眼错觉, 100ms的刷新速度满足需求。

4.8 系统心跳

系统心跳用于检测系统心跳信息, 周期固定2s, 用间隔周期2000ms的定时While循环实现。设计中采用心跳数组, 每接收一次心跳信息, 数组值加1, 软件周期判断该数值是否增加, 若增加则心跳指示灯亮, 否则为灭。

4.9 错误响应

错误响应模块用于响应系统错误并执行相应处理操作。使用时间间隔为1000ms的While循环控件实现, 模块独立运行, 采集系统错误, 经过系统信息处理函数处理, 根据处理信息选择相应执行操作。

4.1 0 数据存储

数据存储模块用来实现系统接收发送数据的存储功能。本模块基于数据完成性要求高, 而存储实时性低且文件读取写入资源消耗高的特点, 使用数据存储队列与While循环结合进行设计实现。本模块使用循环间隔为10000ms的定时While循环, 读取数据存储队列内数据, 每次将队列中的所有数据读出, 并以二维数组的形式批量写入存储文件, 当存储队列中无数据时, 结束本次循环, 避免造成软件响应滞后。

存储数据线程通过对存储队列的出列操作, 按照时间、数据解除簇常量捆绑, 分别经过“时间存储格式化输出”“数据存储格式化输出”子VI, 实现存储格式格式化存储。同时, 模块检测当前系统时间, 按照小时为单位进行数据存储, 若存在新的小时, 则创建新的存储文件路径, 这样可以避免长时间运行程序造成存储文件异常, 同时提高文件检索效率。

5 应用效果评估

在发射平台环境监测上位机软件中应用了上述设计方法。经试验表明, 本架构满足系统使用功能、性能需求, 软件使用过程中未发生卡滞、死机等异常现象。在软件参加总装调试阶段, 对于总体及用户提出的界面易用性更改, 只涉及主VI变更, 并未影响子VI及软件架构改变, 大大降低了软件维护成本。

摘要:分析了LabView图形化编程语言的特点及运行机理, 提炼出应用LabView语言编写地面发射支持系统监控类软件的总体架构、功能模块划分及优先级设定方法, 并对各个功能模块的可重用程序框图进行说明, 提供了一种基于LabView编程语言的地面发射支持系统监控类软件通用设计方法。

关键词:LabView,监控类软件,可重用

参考文献

LABVIEW编程 篇7

在本科教学实践过程中, 除了基础的理论教学外, 做实验更是必不可少的重要环节。但是各高校均面临着实体实验室压力大、时间紧、排课难等问题, 不能在师生间提供最优方法, 不利于提高学生学习效率。鉴于此类问题, 本文提出利用Lab VIEW和MATLAB两个编程软件的结合构建虚拟实验系统, 重点将其在控制工程基础实验中实现, 通过虚拟实验系统的使用, 能够更加灵活地实现数据给定、参数设置, 还可以使实验结果更加精确, 便于学生观察和研究, 将其与实体实验室相结合, 能够有效地提高学生学习效率。

2 Lab VIEW和MATLAB软件的介绍

Lab VIEW和MATLAB是倍受程序开发人员青睐的两种可实现虚拟仿真的编程语言, 但这两种语言有各自的优缺点和适用范围。

Lab VIEW是美国NI公司研制开发的一种程序开发环境, 使用图形化编辑语言G语言来实现程序的编写, 所产生的程序是框图的形式, 采用数据流编程方式, 程序框图中节点之间的数据流向决定了VI及函数的执行顺序。因此, 其程序的编写简单易懂, 对使用者的基本素质要求不高。Lab VIEW软件人机界面友好, 使用灵活方便, 接口易于扩展。

MATLAB是美国Math Works公司出品的商业数学软件, 具有强大的数学计算功能。该软件集数值计算、符号计算、可视化建模、仿真和图形处理等多种功能于一体, 是数学计算方面功能最强的软件。用户可以通过命令的方式编写m文件, 实现仿真, 也可以利用simulink仿真模块中的库函数实现仿真, 操作方便。

3 混合编程的实现方法

MATLAB与Lab VIEW相结合的混合编程, 既可以实现强大的运算仿真功能, 又能拥有简单明了的界面, 深受大家喜爱。混合编程的基本方法是利用Lab VIEW作为前端开发工具, 将Lab VIEW前面板中的用户自定义初始值送到MATLAB中进行相应较复杂的数学运算处理, 然后输出和显示在Lab VIEW前面板上。目前的混合编程方式主要有动态链接库 (DLL) 技术、动态数据交换 (DDE) 技术和MATLAB脚本节点法。

动态链接库 (DLL, Dynamic Link Library) 技术是基于Windows程序设计的一个重要组成部分, DLL是一个位于程序外部的过程库, 不能直接运行, 是一个包含可被多个程序同时使用的代码和数据的库, 它可以从应用程序中调用和共享。因此应用DLL技术可以实现MATLAB与Lab VIEW之间数据的传输和函数的调用。

动态数据交换 (DDE, Dynamic Data Exchange) 技术是Windows应用程序之间的通讯协议。利用DDE技术在客户程序和服务程序之间可以相互发送或接受命令及数据。在Lab VIEW函数模板的DDE VI可将Lab VIEW程序设置为DDE服务器程序或者是DDE客户程序, 从而实现对MATLAB程序的创建或调用。

MATLAB脚本节点法是MATLAB与Lab VIEW通讯和混合编程中常用的方法。这种方法容易实现, 打开脚本速度快, 可满足多输入多输出, 信息处理量大。但该方法不能控制MATLAB服务器, 当节点脚本执行完毕后, MATLAB程序不能自动关闭。

在Lab VIEW中调用MATLAB语言节点时应注意的问题:

a.MATLAB语言节点只能在Windows平台上运行;

b.应用MATLAB语言节点要求计算机必须安装MATLAB5.0以上版本;

c.MATLAB语言节点的内外数据类型要匹配, 否则会产生错误, 导致程序无法运行。

在MATLAB 7.0和Lab VIEW 2012环境下应用MATLAB语言节点实现混合编程的基本步骤是:

a.运行Lab VIEW 2012, 进入空白VI, 进行程序设计;

b.在框图程序窗口菜单栏查看中单击“函数选板”, 依次点击“数学→脚本与公式→脚本节点→MATLAB脚本”。MATLAB脚本节点可实现多输入多输出, 方法是在节点上单击, 然后在弹出式列表中选择“添加输入”或“添加输出”;

c.在Lab VIEW中调用MATLAB程序时, 可以在MATLAB节点中直接写入MATLAB程序, 也可以将写好的MATLAB程序导入MATLAB脚本节点内;

d.编写相应的Lab VIEW前面板和框图外围程序, 调试运行。

4 MATLAB脚本节点法开发控制工程基础虚拟实验系统

在控制工程基础课程中, 传递函数占有重要地位, 掌握传涵的性质是学习的重点。鉴于MATLAB的数学运算优势和Lab VIEW的编程可视化, 可将Lab VIEW和MATLAB混合编程技术应用于控制工程教学领域, 这对学生理解课程实质, 提高学习效率有重要意义。

现以控制工程基础实验课中的一个实验为例, 介绍虚拟实验系统的应用。编好的虚拟实验系统前面板如图1所示。从图1中可知, 前面板中设置了4个数值输入控件, 4个数值显示控件, 2个布尔控件分别用于参数设置、结果显示和程序运行控制。前面板中还设置了实验的传函模型、系统框图和模拟电路图, 便于使用者联系理论与实际。

图2是仿真实验的结果界面, 由图2可以看出仿真结果精确无误, 不存在误差, 方便使用者观测与研究。

结束语

日前, 仿真软件逐渐渗透到教学实验环节中来, 且趋势越来越明显, 人们在不断的探究新方法, 新理念来配合传统实验室, 意在追求更好的教学效果。本文分析了Lab VIEW和MATLAB软件各自的优缺点, 介绍了动态链接库 (DLL) 技术、动态数据交换 (DDE) 技术以及MATLAB脚本节点法实现混合编程的方法和注意事项, 着重研究了MATLAB脚本节点法。在此基础上, 提出了将混合编程应用于控制工程基础实验课程中的思路, 以其中二阶线性定常系统虚拟实验平台的搭建为实例, 说明了本方法在控制工程基础实验课程中广泛的应用价值与前景。

摘要:阐述了LabVIEW和MATLAB两种软件各自的功能与特点, 分析了其混合编程的几种方法, 重点研究了利用MATLAB脚本节点与LabVIEW进行混合编程的方法。在此基础上, 深入讨论了本方法在控制工程基础实验课程中的应用, 并以其中几个典型的实验为例, 利用混合编程实现了虚拟实验系统的开发。

上一篇:流通策略下一篇:短期走势