数据采集存储与传输

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据采集、存储和传输

压缩机转速为8k转/分时,频率133.33

f≈Hz,若要分析到信号频率的4倍频时,有经验公式得采样频率: 2.54133.33 1.33

f≥⨯⨯≈kHz。所要采集的振动

s

信号是,x y轴两个方向的信号,故要使用采集卡的两个通道进行数据采集,所以,采样频率

f应大于2.66kHz。所以,采集卡的最高采样速率达到3kHz即可满足

s

转速为8k转/分的压缩机的振动信号采集。

中断采集:

在LabView中软件触发方式比较简单,但采样速度较低,在采集振动信号时不能满足实际要求。而采用中断触发方式可以实现数据的高速采集,最高采样速率可达100kHz。

以下是LabView下采用中断触发方式实现数据高速采集时用到的几个关键子VI的简单介绍:

DeviceOpen:打开指定的设备并返回一个驱动句柄,之后所有执行相应I/O 操作的子VI 都应基于该句柄参数所获得的配置数据。该子VI 必须在调用其他驱动子VI 之前调用。

AllocDSPBuf:为用户缓冲区分配参数Count 指定大小的空间。该子VI 的输出用作FAITransfer 子VI的输入,通过MemoryType 参数可以选择以电压形式或二进制形式显示数据。程序运行结束后,LabVIEW自动释放此内存空间。EnableEvent:通过指定相应的事件类型代码来使用或禁用一个指定的事件,并通知由DriverHandle所指定的硬件设备。

MultiChannelINTSetup:开始多通道中断触发方式的A/D转换,并将采集到的数据储存到内部缓冲区,该操作将一直进行,直到调用FAIStop子VI。该子VI 运行时将自动调用AllocINTBuf子VI,分配FAIINTStart.Count参数所指定大小的内部缓冲区。与用户缓冲区不同的是,在程序结尾需另外调用子VI释放此内存空间。通过该子VI可以设置采样率、各通道增益代码、循环方式、是否使用FIFO缓存器等。

WaitFastAIOEvent:使程序进入等待状态,直到设定的事件发生(内部缓冲区半满或全满,等待结束,内部缓冲区全满)或等待时间超出用户通过Timeout参数设定的值。该子VI可以用来捕获内部缓冲区半满或全满事件。BufferChangeHandler:将数据从内部缓冲区传送到用户缓冲区。该子VI能够判断内部缓冲区当前的状态是半满还是全满,从而执行不同的操作:半满时,从内部缓冲区取出1/2Count数量的数据到用户缓冲区;全满时,不做任何传输操作。要实现连续数据采集,程序中需要反复调用该子VI。此外,如果在AllocDSPBuf中选择的是以电压形式显示数据,该子VI还负责完成从原始数据到电压值的转换。

ClearOverHandler:用来处理FAI采样缓冲区的溢出状态,并清除溢出标志。即当采集数据的数量达到FAIINTStart.Count 的值后归零,重新开始计数。OverRun:显示缓冲区中的数据是否已被及时地传送出去;HalfReady:显示内部

缓冲区的状态:0 表示无任何半区满;1 表示前半区已满;2 表示后半区已满。需要注意的是,该子VI 和FAITransfer 判断半满和全满的标准是采集到的数据数量是否达到FAIINTStart.Count 的一半和FAIINTStart.Count,并不是内部缓冲区真正意义上的半满和全满。当然,如果将内部缓冲区的容量设置为与FAIINTStart.Count 的值相等,这两者就是同一种情况。

FAIStop:停止中断采集。

FreeFAIBuffer:释放中断采集的内部缓冲区。

DeviceClose:关闭由DeviceOpen 打开的设备,在程序结尾需调用此子VI,以释放资源为下次操作做好准备。

中断方式下数据采集并实时显示的前面板图如下所示:

程序框图:

文件存储:

由于中断采集速度快,数据量大,直接将采集到的数据存入MySQL数据库总会出现问题,故使用数据存储文件(TDM文件)来存储数据。TDM文件将动态类型的信号数据存储为二进制文件,同时可以为每一个信号添加一些附加信息,如信号名称、单位和注释等,这些信息将会以XML的格式存储在扩展名为.tdm的文件中。而信号则存储在扩展名为.tdx的文件中,这两个文件在LabView

中以引用的方式自动联系起来,用户只需对TDM文件操作就可以了。为了便于数据的存储和传输,将存储数据的TMD文件存储在本地数据库MySQL中。程序如下图所示:

存储在文件中的数据信号在本地可以方便地进行读取,数据读取部分程序如下图所示:

前面板:

数据通讯:

数据的通讯部分,先用一个客户端和一个服务器端简单地实现了数据的传输,传输过程中试用了TCP/IP传输协议。TCP/IP网络通过提供通用网络服务,使得具体网络技术对用户或应用程序透明,从而将具体通信问题从网络细节中解放出来,使网络应用更加灵活方便。在Labview中,可以直接调用TCP模块完成流程编写,不需要过多考虑网络的底层实现。

服务器和客户端的前面板图如下所示,其中客户端以一个正选信号为例,在正常运行状态下服务器端能够侦听到客户端的信号并进行显示:

程序框图:

待解决的问题:

数据的存储部分:如何实现数据定时存储到一个个文件中,并实现文件的自动编号。现在的做法只是将采集到的数据不断地写入一个指定的TDM文件中,这样随着文件的不断增大,加之中断采集速度较快,将文件存入MySQL数据库就会出现问题,也不便于数据的传输。

本地数据浏览与采集系统的同步问题。现在是在同一个While循环框中进行,还未数据采集和本地浏览完全分开。

数据通讯部分:现在只是以正选信号为例实验数据的通讯过程,还未将其用到本数据采集系统。

相关文档
最新文档