利用LabVIEW的CIN接口实现数值积分运算

时间:2022-06-04 01:20:41

利用LabVIEW的CIN接口实现数值积分运算

摘要:该文主要介绍如何通过LabVIEW中的CIN接口来实现在工程应用领域被广泛用到的数值积分算法。关键词:CIN接口;LabVIEW;数值积分

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)03-0691-02

LabVIEW是由美国NI公司研制的以框图形式产生程序的虚拟开发平台,简明、直观、易学易用,在虚拟仪器技术得到广泛利用的今天有着重要地位。但它的不足之处是修改程序比较麻烦,不如文本语言方便。然而,C语言具有功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好的特点。

本文中,作者就通过LabVIEW的CIN接口来调用C语言程序,结合两种软件的长处,实现工程领域中得到广泛应用的数值积分的运算。

1 LabVIEW与C语言的接口――CIN

1.1 CIN概述

CIN即“Code Interface Node”的简称,是LabVIEW与C语言的接口,在遇到一些LabVIEW软件难以实现的功能或者调试过程中可能需要大量修改的程序时,就可以通过CIN图标来将C语言编写的源代码引入LabVIEW,从而提高LabVIEW数据处理功能和程序修改的便捷性。

工作原理:通过输入、输出端口实现两种语言之间的数据传输,当LabVIEW的程序运行到CIN节点时,数据就会从CIN的输入端口传递给C语言源代码,程序就会去执行C源代码,执行完毕后得到的数据结果再由CIN的输出端口返回给LabVIEW显示。1.2 CIN图标调用路径

在程序框图面板,点击鼠标右键,执行函数>>互连接口>>库与可执行程序>>代码接口节点(如图1)。1.3 CIN图标的端口参数设置

将初始CIN图标根据所需的具体情况设置,在本文中,将它设置为如图2所示,有四个输入和输出端口,其中最后一个输入端口设置为无效。CIN的输入、输出端口的参数类型由连接在该端口上的空间的数据类型所决定。

图1 CIN图标对话框

2 LabVIEW调用C语言实现数值积分运算的设计步骤

本论文是在WindowsXP下,运用LabVIEW 8.5通过CIN接口来调用Visual C++6.0为平台编写的C语言代码来实现数值积分的运算的。2.1生成C源代码框架

首先在LabVIEW 8.5中设计出如图3所示的前面板,同时在它的程序框图(图4)中添加CIN端口,并做如图的设置和连接,命名为jifen.vi并且保存。

接着,鼠标右键点击程序框图中的CIN图标,在菜单中选择“创建.c文件”

项,在弹出的储存对话框中,将该文件存为“jifen.c”,则会有C的文件源代码如下:

/* CIN source file */#include "extcode.h"

MgErr CINRun(LStrHandle fX, float64 *b, float64 *a, float64 *result); MgErr CINRun(LStrHandle fX, float64 *b, float64 *a, float64 *result)

{/* Insert code here */ return noErr; }

2.2源代码添加

在上述中的“/* Insert code here */”位置添加已经编写好的数值积分运算的C源代码。这里用最常见的复化梯形公式:

{/* Insert code here */t=h*(f(a)+f(b));

#include do

#include { t0=t;#define e 1e-5g=0;

#define a 0//积分下限afor (i=1;i

#define b 1//积分上限bg+=f((a+(2*i-1)*h));

#define f(x) (x/((3*x*x*x)+(x*x)+5)) //被积函数f(x)t=(t0/2)+(h*g); //复化梯形公式int main();n*=2;{ int i,n;h/=2; }

double h,t0,t,g;while (fabs(t-t0)>e); n=1;printf("%.8lf",t); h=(double)(b-a)/2;return 0; }

2.3 C源代码文件的编译

启动VC++6.0,进行如下步骤的编译:

1)新建一个DLL工程文件,命名为jifen,并保存;

2)在工程文件中执行Project>>Add to Project>>Files操作,找到LabVIEW 8.5安装文件cintools文件夹中的中的cin.obj,labview. lib,lvsb.lib,lvsbmain.def四个文件和源代码文件jifen.c;

3)执行Project>>Setting对源代码文件进行编译前的设置。

a.将Setting for设置为All Configuration;

b.打开C/C++标签,在Category下选择Preprocessor,在Addition Include Directories中添加LabVIEW的cintools文件夹路径,例如在这里是“:D:\LabVIEW 8.5\cintools”。

c.同样在C/C++标签,在Category下选择Code Generation,将Struct Merber Alignment设置为1Byte;将Use Run-time Zibrary设置为

Multithreaded DLL。

d.打开Custom Build标签,在Commands中输入命令D:\LabVIEW 8.5\cintools\lvsbutil$(TargetName)-d"$(WkspDir)\$(OutDir)";在Output中输入命令$(OutDir)$(TargetName).lsb。

4)打开jifen.c源文件,进行编译,如有错误,按给出的提示修改程序,再次编译,直至没有错误。最后对原文件进行组建,即生成可执行文件jifen.lvb。2.4装载、程序运行

在LabVIEW8.5的程序框图窗口中,鼠标右键CIN图标,选择“加载代码资源”,选择jifen工程文件中Debug文件夹下的jifen.lsb文件。最后,即可运行程序,改变上下限b、a的值或者被积函数(fx)的表达式,观察输出显示。

3结束语

LabVIEW虽是功能强大的图形编程工具,但也存在一定缺陷,遇到一些需要大量修改,或是LabVIEW难以实现的功能时,就可

以通过它的CIN接口来调用C的源代码来更方便的解决问题。本文就以复化梯形公式求解数值积分为例,叙述通过CIN图标在LabVIEW中引入C语言源代码,从而增强其整体功能。

参考文献:

[1]刘君华.基于LabVIEW的虚拟仪器设计[M].北京:电子工业出版社,2003.

[2]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.

[3]崔胜民,李建如.数值为分积分算法及LabVIEW实现[J].机床与液压,2005(4).

[4]蔡共宣.虚拟仪器技术引入测试技术教学的研究与实践[J].装备制造技术, 2009(2).

[5]王武礼,杨华.基于虚拟仪器技术的计算机测控实验平台[J].实验技术与管理,2010(1).

上一篇:高精度超声波智能测距仪的设计与实现 下一篇:电脑电源初探