0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LabVIEW接口功能和动态链接库调用机制的研究及设计

电子设计 来源:合肥工业大学学报 作者:徐正红,金施群,丁 2020-11-16 10:45 次阅读

作者:徐正红,金施群,丁晓牧

虚拟仪器是现代计算机技术、仪器仪表技术及现代计算机辅助测试(CAT)技术相结合的产物,广泛应用于数据采集和自动测试领域。

LabVIEW是一种基于图形程序的虚拟仪器编程语言,LabVIEW程序称为虚拟仪器程序(简称VI)。LabVIEW按照模块化编程思想,将一些特定的测试任务,建立成一系列的VI,然后通过这些VI的组合来构成各种复杂的、功能强大的测试系统。LabVIEW除了带有各种基本的VI库(GP-IB、VISA、VXI和串行接口仪器的驱动程序等)和功能超强且庞大的分析函数库外,还可以通过调用外部代码实现Lab VIEW比较复杂的接口功能,其中就包括动态链接库调用机制。

动态链接库可采用VB、VC++6.0等高级语言开发,VC++6.0编制动态链接库,首先由AppWizard生成DLL框架,用户自己键入实现各种功能的代码。DLL需要h函数声明文件、C源文件及def定义文件。h文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。C文件是实现具体文件的源文件,它有一个入口点函数,在DLL被初次调用时运行,完成初始化工作。def文件是DLL项目中比较特殊的文件,用于定义该DLL项目将输出的函数,只有def文件列出的函数才能被应用函数调用,函数名列在该文件EXPORTS的关键字下。

多滚轮法大直径测量的数据采集系统

多滚轮法大直径测量原理结构

滚轮法大直径测量原理结构主要有被测大轴、滚轮、圆光栅、信号调理与接口、计数器及大轴转数测量标记组成。大轴直径计算公式为

D=α*d/2τN

其中,D为被测大轴直径;d为滚轮直径;α为滚轮转动角度;N为大轴转动周数。滚轮采用特殊的结构设计,以减小测量过程中打滑发生的几率。同时通过3个滚轮的冗余测量信号,可辩识出测量过程中的“打滑发生段”,并在进行三滚轮信号合成时,采用有效的数据融合技术,进一步将“打滑段”的信号剔除。通过对接触压力大小与滚轮直径变化的关系作精确标定,测量时根据拟合数学模型对滚轮变形作适时修正,以消除或减小滚轮变形引起的测量误差。为减小温度场不均匀或变化所导致的测量误差,在工件表面布置多个温度传感器,用以监测工件是否进入恒温状态及工件温度的变化和分布情况,以便对该温度场引起的大直径尺寸变化进行修正。用微位移传感器测量大轴表面形状误差,分离出各次谐波,用以修正测得直径,减小形状误差的影响。

数据采集系统组成

多滚轮法大直径测量系统采用的传感器种类和数目均较多,多参数的测量和控制由虚拟仪器测量系统实现,其结构框图如图1所。

LabVIEW接口功能和动态链接库调用机制的研究及设计

图1数据采集系统框图

光栅数据采集硬件主要由RENISHAW公司的RESR20圆光栅编码器和FAGOR公司的DRO板组成,RESR20圆光栅编码器的角分辨力可达0.01″,分度不确定度为0.5″。RGH20读数头输出4路信号,DRO板对这4路信号进行细分后转换成数字信号输入计算机,完成对圆光栅信号的数据采集。光电传感器的信号由6071E板(该板为NI公司的多功能数据采集板,具有模拟量、数字量采集单元,该板同时用于位移、压力等信号的采集)上的计数器送入计算机,作为数据采集的触发信号。同时为减小数据采集启停引起的误差,通常在大轴转动数周过程中采集光栅信号。在编制采集软件时设置大轴转动周数单元,当大轴转动且计数标记通过光电传感器时,计算机开始采集数据,当大轴转动周数达到预设值时,停止数据采集。

数据采集系统软件设计

6071E多功能采集卡自身带有适用于LabVIEW环境的驱动程序,直接进行设置即可。DRO板必须用VC++编程调用其动态链接库进行初始化,然后将VC++的调用生成动态链接库,由Lab2VIEW调用完成对DRO板的初始化,参数的初始化包括滚压轮标准参数、测试任务参数以及其他环境参数等。初始化结束,计算机检测到触发信号后开始数据采集,数据采集部分同样需要用VC++编程调用DRO板的动态链接库的库函数。圆光栅信号输入计算机后由软件进行数据的处理和存储,当大轴转动周数等于预设值时,停止采集,一次数据采集过程完成。

LabVIEW调用动态链接库,使用LabVIEW功能模板中“Advanced”子模板的“调用库函数(Call Library Function)”结点。实现动态链接库调用步骤如下:

(1)在LabVIEW程序建立“调用库函数结点”。其中“Call Library Function”结点通过选择功能模板“Advanced”子模板的“Call Library Function”功能产生。

(2)配置“调用库函数结点”。双击框图程序窗口的“Call Library Function”结点,在弹出的对话框中对此“调用库函数结点”进行配置。其中:在“Library Nameor Path”项中键入结点所链接的DLL文件名,它由c源代码编译而来;在“Function Name”项中键入结点相链接的DLL文件中函数的名称;参数“returntype”的类型选择“Void”,并增加所需的其他返回参数。

(3)编辑c源文件。c源文件包括硬件初始化文件和数据采集文件。硬件初始化部分源代码如下:

//FirstInittheBoardConfigandAxisConfigData

BoardConfig.NumberOfAxes=4;

do

{

printf(“\nSelectsignaltype(0=TTL,1=1Vpp):”);

signal_type=getch();

}while((signal_type‘1’));

signal_type=signal_type-‘0’;

//Enteryourownvalues,theseareonlyasample.

(4)编译c源代码。将c源文件编译成DLL文件,使用VC++6.0完成。

(5)运行VI。运行由上述步骤生成的LabVIEW程序。

结束语

LabVIEW的外部代码扩展功能是其重要特点之一,调用动态链接库是LabVIEW提供的调用外部代码的4种途径中最通用的一种。可调用标准共享库和用户自定义的库函数,对于不附带LabVIEW驱动程序的硬件尤其具有使用价值。通过调用动态链接库机制可引入C语言的强大功能,确实是一条增强LabVIEW与其它Windows应用程序之间的数据共享能力的良好途径。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LabVIEW
    +关注

    关注

    1915

    文章

    3615

    浏览量

    316916
  • 虚拟仪器
    +关注

    关注

    22

    文章

    774

    浏览量

    87024
  • 数据采集
    +关注

    关注

    38

    文章

    4489

    浏览量

    112301
收藏 人收藏

    评论

    相关推荐

    LabVIEW调用动态链接库无响应

    RT,想通过调用动态链接库来使用 视频解码的函数,但每次一到某个函数的时候 进度条就停在那里,一直没有反应。此时LV占用内存1G左右,CPU50%。我想问下 是什么原因导致这种情况呢?我试了一下午也没有成功导出一个
    发表于 02-29 20:22

    关于使用动态链接库及图像采集的问题

    我用的是方诚科技的工业相机,里面提供了一些动态链接库,包括了相机初始化,采集图像,颜色处理等函数,我以前都是用VB做的,买相机的时候他会提供VB的模块,所以用VB比较方便。现在我想用LABVIEW
    发表于 05-26 18:05

    labview调用动态链接库

    小弟我最近用到labview调用动态链接库相关的知识,不是很懂,请问哪位大神能帮我看看怎么调用的啊?不胜感激的哦!能帮我完善的,小弟在此膜拜
    发表于 07-10 21:59

    labview调用动态链接库问题

    本帖最后由 ZHZJK 于 2014-7-15 11:07 编辑 本人使用动态链接库一直没成功过,这次准备调用读卡器的dll来读卡用了其中 打开串口 和读取卡号 两函数总是有错希望大家帮忙看看
    发表于 07-15 11:01

    LabVIEW动态链接库

    问一下大家,如何利用动态链接库调用LabVIEW官方不支持的摄像头?求高手指教!
    发表于 03-13 09:59

    关于labview调用相机的动态链接库,在labview中怎去调用,求大神指点

    我想做用labview调用相机的动态链接库中的文件,然后实现labview与USB相机的通信,这样我就能把相机拍摄到的照片用
    发表于 07-30 15:51

    咨询如何用LabView编译动态链接库

    以前没用过LabView,有一个需要是用LabView创建小的程序用来做脚本,并编译成动态链接库,用C++调用,但不知道如何做?麻烦大家谁有
    发表于 10-15 21:39

    LABVIEW调用动态链接库以后的编程问题

    labview调用动态链接库,可以在图形显示框中显示光栅光栅的峰值波长比如1550nm,下一步打算显示出应力,就是说给他一个力,他的峰值波长就会变化,比如峰值波长变到1553nm,就
    发表于 11-17 14:29

    LabVIEW调用visual studio C#生成的动态链接库dll文件

    1)visual studio C#生成动态链接库dll文件2)LabVIEW通过构造器调用C#的dll文件
    发表于 07-23 23:18

    labview怎么生成带面板的动态链接库啊 ?

    labview怎么生成带面板的动态链接库啊 ?
    发表于 09-28 15:13

    关于labview'的动态链接库的问题

    最近使用labview调用动态链接库,使用vs2017生成dll文件,然后调用,但是为什么输入数组的情况下输出一直为0呢,我使用公式节点
    发表于 03-14 11:26

    Labview在图像采集卡上实现动态链接库

    LabVIEW中的提供了调用共享库函数的接口,但是一些现成的函数却因为接口参数类型不同而不能在Lab
    发表于 06-13 06:00

    动态链接库LabVIEW中的高级应用

    LabVIEW 中的提供了调用共享库函数的接口,但是一些现成的函数库却因为接口参数类型不同而不能在LabVIEW 中使用。利用重新编写
    发表于 08-04 10:09 56次下载

    英创信息技术WinCE设备动态链接库的制作与调用

    在使用英创ARM9系列主板做开发时,用户可能希望将自己一部分代码封装起来,隐藏代码的实现过程,只提供接口供其他程序调用。使用动态链接库(Dynamic Link Library)可以很
    的头像 发表于 01-15 14:33 944次阅读
    英创信息技术WinCE设备<b class='flag-5'>动态</b><b class='flag-5'>链接库</b>的制作与<b class='flag-5'>调用</b>

    Linux下的静态链接库动态链接库的区别是什么?

    学习Linux动态链接库是一个绕不开的话题,我们今天就一起来看一下什么是动态链接库动态链接库
    的头像 发表于 02-17 10:49 782次阅读
    Linux下的静态<b class='flag-5'>链接库</b>和<b class='flag-5'>动态</b><b class='flag-5'>链接库</b>的区别是什么?