目录
4.1.2 虚拟仪器开发平台软件 LabWindows/CVI
前言:
本文谈的软件设计,是指主机软件,而不是数据采集卡软件,因为数据采集卡软件是有第三发提供的 ,主机软件通过数据集采集卡厂家提供的dll库,从数据卡读取采样数据。
4.1 操作系统和开发平台
4.1.1 Windows2000 操作系统概述
Windows2000 是一种面向对象的操作系统,它由许多小的、封装的软件部件所组成。这些部件协同工作,一起操作系统的任务。每个部件都向操作系统的其它部件提供一组接口函数以供调用。 Windows2000 是设计在复杂指令计算机( CISC )和精简指令计算机( RISC )上运行的操作系统,因此设备和相关的驱动程序既可以通过硬件配置也可由软件配置。
Windows2000 是一抢占式的、可中断的操作系统,它既可以工作于单处理器下,也能工作于多处理器模式,这对于需要多处理器协同工作大运算量时很有用。Windows2000 支持使用重用 I/O 请求数据包的包驱动 I/O 和异步 I/O ,以保证 I/O请求的发起方能被连续执行,而不用等到请求结束才被执行。为此 Windows2000采用特权式和非特权式运行,即通常所说的核心态和用户态。在核心态,软件可以访问所有的系统资源, Windows2000 系统结构中的核心层可以访问系统数据和
硬件,核心态提供了直接访问内存的方式,并且运行在保护的内存空间,它根据优先等级标准决定何时运行何种代码。用户态中的软件在没有特权的状态下运行,对系统资源只拥有有限的访问权限。
图 4.1 为 Windows2000 操作系统的整体框架。
备注:上图中的应用程序是本文关注的重点。
4.1.2 虚拟仪器开发平台软件 LabWindows/CVI
介绍 LabWindows/CVI 之前有必要对虚拟仪器( Virtual Instrument ,简称 VI )作一简介。
所谓虚拟仪器,就是在以通用计算机为核心的硬件平台上,由用户设计定义,具有虚拟面板,测试功能由测试软件实现的一种计算机仪器系统。使用者用鼠标或键盘操作虚拟面板,就如同使用一台专用仪器。
虚拟仪器的实质是利用计算机显示器的显示功能来模拟传统仪器的控制面板,以多种形式表达输出结果,利用计算机强大的软件功能实现信号数据的运算、分析和处理,利用 I/O 接口设备完成信号的采集、测量与调理。从而完成各种测试功能的一种仪器系统 [40] 。
虚拟仪器的构成框图如图 4.2 所示。
虚拟仪器是现代计算机技术和仪器技术深层次结合的产物,是当今计算机辅助测试领域的一项重要技术,它的出现使测量仪器和个人计算机的界限模糊了。
LabWindows/CVI 是 NI ( National Instruments )公司推出的一套面向测控领域的软件开发平台,它是一种基于文本式编程语言的虚拟仪器软件开发工具。它以ANSI C 为核心,将功能强大,使用灵活的 C 语言平台与数据采集、分析和表达的测控专业工具有机地结合起来。
它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了 C 语言的功能,为熟悉 C 语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。
LabWindows/CVI 将源代码编辑、 32 位 ANSI C 编译、联接、调试以及标准ANSI C 库等集成在一个交互式开发环境中。因此用户可方便快速地编写、调试和修改应用程序,形成可执行文件。使用 LabWindows/CVI 设计地虚拟仪器可脱离LabWindows/CVI 开发环境,用户最终见到的是和实际的硬件仪器相似的操作面板。
LabWindows/CVI 有一下一些优点:
本课题所选 A/D 采集卡具有多通道,高速采集的特点,配备有支持LabWindows/CVI 开发的驱动。由于 LabWindows/CVI 具有以上的种种特性,比较适合本课题的开发要求,故最终选择了 NI 公司 2003 年推出的 LabWindows/CVI 7.0版本开发软件。
4.2 总体软件设计
硬件系统的建立只是前期的工作,它为数据采集提供了信号来源, 也就是说,本方案中,硬件只负责采集数据,并不负责处理数据,更不负责对信号进行模式识别,这部分工作是有主机软件来实现的。
而主机软件系统则充分利用计算机的处理功能来协调硬件的工作:
- 如由软件通过调用DLL库函数,发布指令到 A/D 采集卡来完成光、声信号的数据采集和存储;
- 通过 A/D 采集卡的数据输出口发送指令设置信号调理模块中程控放大器的放大倍数;
- 在时域、频域运用各种算法对信号进行处理和分析以得到需要的信息。//这是该方案的核心
- 为使软件能够正确判断焊接过程中的缺陷,还要进行 BP 神经网络的设计和训练等,将来软件的性能好坏决定了整个系统判断焊接缺陷的可靠度。
- 软件系统需要实现的目标:是可实现信号特征的提取,焊接过程稳定性的实时监测和典型熔透状态的判别。
前期,软件的开发工作主要是和合作单位进行协商,进行需求分析,明确程序需要完成哪些功能,建立了软件开发的计划表。在前面的基础上完成了软件总体结构的规划,各部分的具体实现细节和相应的人员分配,并开始进行具体的程序编制和调试,以后的工作还将有软件的改进和维护,软件开发过程中始终将实时性作为首要目标。
备注:
也就是说,软件的核心算法,并不是本文研究的重大,它又第三方合作单位提供的。】
本方案的主要任务是:数据的采集的硬件和软件的实现。数据采集的硬件在前文已经介绍,下面来介绍一下,主机软件如何调用数据采集卡的dll库实现数据采集的软件部分。
4.2.1 数据采集程序
PowerDAQ 系列采集卡附带的光盘上附带有应用程序接口( API ), API 已经集成到了PowerDAQ 的动态链接库( *.dll )里面,用户的应用程序通过调用动态链接库就可以和采集卡进行通信了。用户应用程序和采集卡的通信过程图如图 4.3所示。
当采集卡有事件产生时,它通过 PowerDAQ 的驱动创建一核心进程用来与应用程序通信。
采集卡采集到的数据通过 PCI 总线传到应用程序中用户级的数据缓冲区内。
PowerDAQ 的 API 包括一系列消息函数容许用户应用程序得到采集卡上的信息,如采集模式、串口号和 IRQ 号等,这些函数为采集卡自检提供了很好的支持。
所有的 PowerDAQ 系列采集卡都可以工作于两种操作模式:
- 查询模式
- 基于事件的模式。
在查询模式时,用户应用程序根据需要查询卡上各个子系统的状态,在应用程序不需要过多的和系统硬件打交道时,推荐使用这种工作模式。
在基于事件的模式中,数据采集卡通过调用 Win32 来通知应用程序预先定义好了的子系统产生的事件,在这种模式下程序开发者能够编写出异步应用程序。
备注:FIFO的作用是高速的DAC转换和相对慢速的主机软件之间进行缓冲,实现速率适配。
当采集到的数据存储到 A/D 的 FIFO 存储器后,前面已经提到过有四种将数据传输到主机内存的方式。这四种方式的选择是通过函数 _pdDiagSetPrm(…) 来实现的。
这里对普通模式和快速模式作一较详细介绍:
(1)普通模式:
当数据进入 FIFO 后,此时可以通过软件编程方式来将 FIFO 中数据转入主机内存,但是要保证这一过程在下一采样数据来到之前完成,如果 FIFO满了的话它将忽略新的采样数据。
普通模式下驱动程序在中断信号到达后每次传送 FIFO 容量 1/2 的数据量到主存,但是如果 FIFO 容量大于 8K 采样点后,每次传送的数据最大也只有 4K 采样点。
FIFO 被分为两步分:
- 一部分用来接受新的采样数据,
- 一部分将上次的数据传给主存
由此形成一个循环。而且驱动程序会检查数据的有效性,这种模式是一种安全传输模式但是速度较慢。
(2)快速模式:
这种模式是大多数 MF(S) 系列采集卡的缺省模式,驱动程序通过编程的 I/O 口将采样点从 FIFO 传给主存而不进行数据有效性检查,这样相比普通模式它消耗较少的 CPU 资源。实验结果表明 99% 的具有 PCI 主板的计算机都能较好的执行这种方式。
通过实际应用表明快速模式能够在保证实时性的前提下稳定的工作,因此课题中将采集卡设置为该工作方式。
进入主存的数据在主存中如何存储和处理也是影响实时性的一个关键因素,如果存储方式不正确即使在好的计算机系统也将显得效率底下。 PowerDAQ 驱动程序建立了一种高级圆形缓冲器( ACB )技术。如果应用程序和这种灵活的缓冲机制结合起来,那么整个系统的运行将更加高效。
ACB 技术用图表示如图 4.4
一旦采集开始,驱动程序将 FIFO 中的数据存入缓冲器中的头部,而应用程序从尾部读取数据,两者的操作可以以异步不同速度进行。
当然,也可以以计时触发或事件驱动的方式让它们同步进行。
当完成一个特定的采样或采集数据达到某一个量后,为了能够通知应用程序及时处理数据,驱动程序将缓冲器分段成为帧结构。
当进入 ACB 的数据超过帧边界后,驱动程序将发送事件消息给应用程序。工作于该方式下如果采集速度过快使头部到追上了尾部指针,缓冲器将填满并导致采集暂时停止,此时程序将给出出错报告。为防止该情况出项,应配置较好的 PC机,并选取适当的 ACB 大小。当需要在 PC 机上处理数据时,必需知道数据流中的数据格式。每两个连续的字节构成了 A/D 转换器中的一个采样点。这些采样点以它们从 A/D 转换器出来的顺序在文件中显示,每一个数据字的形式会根据 A/D 转换分辨率的不同而不同,PD2-MFS-4-500/14 的分辨率为 14 位,它的数据字格式如图 4.5 所示。
4.2.2 软件实现的功能
激光焊接监测系统软件部分的目标是:可实现信号特征的提取,焊接过程稳定
性的实时监测和典型熔透状态的判别。
根据客户提出的功能要求,现将激光焊接监测系统的软件部分划分为五个模
块:
- 数据采集模块
- 用户界面模块,
- 信号及数据分析处理模块,//这是核心算法
- 系统自检模块。
- 报表生成模块。
另外还有两个后续功能模块:
- 实时监测模块
- 网络监测模块。
课题目前主要实现了以下几个功能模块:
- 数据采集、
- 用户界面、
- 信号及数据分析处理 ,//这是核心算法
- 简单的系统自检(采集卡状态检测)。
4.2.2.1 主机软件的数据采集
数据采集可以对可见光、红外光和声音信号进行采集设置。
前面对采集过程已作了介绍,这里只给出采集时的软件界面。
4.2.2.2 主机软件的数据分析(核心)
数据分析界面如图 4.8 所示:
- 图中上半部分为原始信号的时域图形,
- 图中下半部分为数据分析处理后的结果。
激光焊接过程中的光、声信号不能精确地用数学函数来描述信号随时间的变化,它们是随机的动态信号。
在对动态信号的分析中,时域和频域表征了动态信号的两个方面:
- 时域分析是以时间轴为横坐标表示动态信号的特征,一般说来,用时域波形表示信号变化比较形象和直观,
- 频域分析是以信号频率为横坐标表示动态信号的特征。而用频谱分析动态信号则显得简练,而且能很好的找到特征频率值。
目前对动态信号的分析越来越多的由时域向频域发展,当然,这两者也是互相联系、相辅相成的。
(1)时域-统计分析
(2)频域分析
频谱特征是动态信号的基本特征之一 [41] ,频域分析常用到是傅立叶变换,按照傅立叶分析法,动态信号可以分为许多谐波分量,对其进行快速傅立叶变换( FFT )分析会得到信号的频谱分布情况。
利用 FFT 对光、声信号数据进行分析,最后得到的是信号幅值强度随信号的频谱分布的情况,频谱的高低成分与焊接状态有很大的关联。
FFT 主要是针对时不变信号,即对稳定状态进行研究,如对稳定的正常焊接状态和在一定程度上“稳定”的非正常焊接状态时采集的信号进行分析。
而对于过程控制来说,感兴趣的却恰恰是从正常焊接状态向非正常焊接状态变化的这个过程。而这是一个非平稳、时变的过程。对于这样的信号而言, FFT是无能为力的。
(3)时、频分析
为了能够对生产过程进行控制,在对信号的分析的同时,保留信号的时域信息是非常重要的,有必要了解激光焊接过程中每一时刻信号的幅度分布特点。
因此,目前的研究方向开始趋向于对采样信号进行时、频分析, 如利用短时傅立叶变换 (STFT) 。
目前较新的方法是采用小波分析对信号进行处理。小波分析的应用在于从时频分析的角度来分析激光焊接过程中缺陷的产生过程。小波变换能够把任何信号 ( 平稳的或非平稳的 ) 映射到由一个小波伸缩而成的一组基函数上,在信息量不受损失的情况下,得到分布在不同频段内的分解序列。这样,就可以根据研究的目的和需要,选取包含所需信息的频段序列,进行深层次信息处理,课题目前也在进行小波方面的信号分析。
(4)多传感器的信息融合
除了上述的分析方法外,还要考虑到对多路采集信号进行多传感器的信息融合,可用到的方法有统计决策法、 D-S 证据推理法和基于人工神经网络的方法。
(5)控制参数
图 4.9 为参数设置软件的界面,它包括四个部分:
- 实时信号监测
- 设置工艺参数
- 系统自检
- 历史数据
由于有些参数前面已经介绍,这里介绍设置工艺参数界面,它是采集数据前的准备工作。
设置工艺参数有焊接材料、材料厚度、接头方式、激光功率等 20 余项参数设置,而且在每次焊接完后可以随采样数据一起存盘。
此外还有采集卡的设置和门限设置,门限设置就是通过设定一阈值来在焊接过程中及时判断采样信号幅值是否超出该阈值,若是则可以认为焊接出现缺陷。
4.3 软件总体框架