



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于LabWindowsCVI多线程技术数据采集系统的构建摘要:在简要介绍虚拟仪器实验室的基础上,本文对LabWindowsCVI软件开发平台下利用多线程技术实现实时数据采集进行了研究与设计,重点讨论了在数据采集过程中数据采集卡驱动的制作,多线程技术的应用以及对数据库存储的操作,大大提高CPU的利用率。关键字:LabWindowsCVI 多线程 数据采集Abstract:On the basis of introduction of virtual instrument laboratory,the paper studies how to acquire data with multithread technology based on LabWindowsCVI,and discusses the drive of PMD-1208FS,application of multithread technology and the operation of the database save, raise the CPU utilization consumedly.Key words:LabWindowsCVI Multi-threadtechnology Data acquisition 1 引言虚拟仪器技术是近几年发展起来的新一代仪器技术,它通过应用程序与各功能化模块结合,用户利用友好的图形界面来控制计算机,完成对仪器控制、数据采集、分析、存储及显示等,正是由于这种由传统仪器到虚拟仪器的转变和实现促进测控技术的发展和更新。虚拟仪器实验室是利用计算强大的显示、运算、处理功能,将一个具体的实际系统实验用计算机来模拟配以生动形象的声音、图像或图形。达到与实际系统实验逼近的效果。学生可以在网上或独立的计算机上进行实验在时间空间上突破了常规实验方法的限制。数据采集系统是虚拟仪器实验室的一个重要组成部分,也是系统获取原始数据的主要手段:本文针对此研究平台LabWindowsCVI 的多线程实时数据采集技术,大大提高CPU的利用率.2.多线程技术线程是指进程内部的可独立执行的单元,是操作系统对系统资源的基本调度单位。单线程程序只有一个线程即主线程 ,多线程程序是在同一时间段内至少有2个线程在执行程序代码,其中每1个线程都有自己的堆栈,并独立于应用程序内的其它线程而运行,在实时控制中,常会遇到多任务同时进行工作的情况,比如数据采集和处理并行进行一若采用单线程编程方法,需要等到一遍数据采集完之后才能进行数据处理,大大降低 程序的执行效率系统的实时性也难以得到保证,而多线程技术的应用可以把这些任务分给几个单独的线程,1个线程进行数据采集,其它线程进行数据处理或其它工作,这样就能最大限度的保证数据采集的实时性,又能及时响应用户的其它操作,尤其在采集数据很大、数据处理任务很重时更加明显。3 LabWindowsCVI下的多线程设计LabWindowsCVI是在Windows环境下面向计算机测控领域的虚拟仪器软件开发平台。它以ANSI C为核心,将功能强大、应用广泛的C语言与测控专业工具有机地结合起来,并支持多线程,利用它的集成开发环境,在编程过程中直接调用用户界面函数和高级分析库函数,从而大大缩短软件的开发时间。在典型的LabWindowsCVI多线程程序中,使用主线程创建、显示并运行用户界面,在次线程中运行其它的对时间要求很高的操作。 在CVI中,设计多线程数据采集时,应首先创建线程池和新线程即数据采集线程;然后调用函数使主线程在结束之前处于等待状态,直到线程函数执行结束,这样可以使主线程在次线程结束前退出时,次线程能完全释放它们所占用的资源;再运行数据采集线程函数;最后结束线程函数后还要释放线程和线程池:在创建多线程后,实现线程间的信息交换也是必须考虑的一个问题:CVI专门提供了一个数据管道用于两个线程之间的通信:数据管道实际上是一个先进先出的队列,并且可以响应一定的事件:在建立线程安全队列TSQ的同时,设置对应于某一事件的回调函数,当有线程向线程安全队列TSQ添加数据或读取数据时,就会触发预先定义好的事件响应函数,这些函数存在于数据处理线程中从而完成相应的数据处理功能。多线程处理架构如图一所示: 图一 图二 4. 数据采集系统的设计数据采集系统主要完成的任务有实时采集波形,产生任意波形,对输入信号的波形进行直观的显示,并对幅值、频率、 置位连续调控;将采集的信号存人数据库或输出等。这些任务要求通过设计不同的程序模块来完成,并设计用户界面程序,由用户界面程序控制其它各功能程序的运行。流程图如图二所示。4.1系统硬件介绍 本系统硬件部分采用PMD1208FS多功能数据采集卡,PMD1208FS是一款支持USB2.0高速采集设备,支持八模拟通道输入(通道自带A/D),双通道12位模拟输出,16根数字I/O线,支持8通道11位单极性或4通道双极性输入。4.2数据采集卡驱动的制作 首先安装PMD1208FS多功能数据采集卡的驱动光盘,在安装目录下面有C,VB,DELPHI的一些实例,在这里我们采用支持C的函数,认真阅读用户手册及实例的编写,调用针对本系统采集的函数,部分函数介绍如下:int EXTCCONV cbAInScan (int BoardNum, int LowChan, int HighChan, long Count, long *Rate, int Gain, HGLOBAL MemHandle, int Options);/读设定通道范围内模拟输入信号int EXTCCONV cbDeclareRevision(float *RevNum);/初始化函数int EXTCCONV cbErrHandling (int ErrReporting, int ErrHandling);/对并发的函数调用设置错误处理在LabWindowsCVI调用这些函数时需加载采集卡自带的通用函数链接库。4.3采集线程设计程序中采用多线程编程技术,实现了波形显示时能同时进行数据存储,并且保证保数据采集的实时连续性;提高了执行效率和CPU的利用率程序以用户界面接口为主线程,完成用户的输入及显示的任务。用户界面具有合理的控制界面和参数设汁,能及时响应用户的各种操作,数据采集线程在响应界面采集指令后启动,并作为后台线程负责现场数据的采集。如图三所示,选择通道一后采集数据。创建采集线程函数代码如下:static int CVICALLBACK ThreadFunctiondaq (void *functionData) char *date,*time; float EngUnits; float RevLevel = (float)CURRENTREVNUM;int Samples; int Rate; double *ADData;short Status = RUNNING;unsign Options;switch (event)case EVENT_COMMIT: ULStat = cbDeclareRevision(&RevLevel);/链接数据采集卡函数库 GetCtrlVal (panelHandle, PANEL_SAMPLES1, &Samples); GetCtrlVal (panelHandle, PANEL_RATE1, &Rate); ADData = (double*)cbWinBufAlloc(Samples);/根据样点数自动生成数组长度 if (!ADData) /* Make sure it is a valid pointer */ exit(1); cbErrHandling (PRINTALL, DONTSTOP); Options = CONVERTDATA + BACKGROUND + CONTINUOUS + SINGLEIO; ULStat = cbAInScan (BoardNum, LowChan, HighChan, Samples, &Rate, Gain, ADData, Options);/采集数据 PlotY (panelHandle, PANEL_GRAPH, &ADData, samples, VAL_INTEGER, VAL_THIN_LINE, VAL_SIMPLE_DOT, VAL_SOLID, 1, VAL_YELLOW);/将数据输出到面板空间中ULStat = cbStopBackground (BoardNum,AIFUNCTION); return 0;4.4数据库存储线程设计 创建数据库存储线程,进行数据采集的同时对数据进行存储操作,代码设计如下:static int CVICALLBACK ThreadFunctionsave (void *functionData) hdbc = DBConnect (DSN=caiji); if (hdbc = 0) ShowError(); goto Error;/* begin map for constructed SQL statement */ hmap = DBBeginMap (hdbc); if (hmap = 0) ShowError(); goto Error;/获取存储数据date=DateStr();time = TimeStr ();Fmt (timers, %s%s %s, date,time); resCode = DBMapColumnToChar (hmap, 日期, 10, timers, &uutStat, ); if (resCode != DB_SUCCESS) ShowError(); goto Error;resCode = DBMapColumnToDouble (hmap, 数值, &ADData0, &meas1Stat); if (resCode != DB_SUCCESS) ShowError(); goto Error; /* the previously specified variables.) */ hstmt = DBActivateMap (hmap, table1); if (hstmt = 0) ShowError(); goto Error;/* Create the new record */ resCode = DBCreateRecord (hstmt); if (resCode != DB_SUCCESS) ShowError(); goto Error;/* Insert the record into the database */ resCode = DBPutRecord (hstmt); if (resCode != DB_SUCCESS) ShowError(); goto Error;resCode = DBDeactivateMap (hmap); if (resCode != DB_SUCCESS) ShowError(); goto Error; resCode = DBDisconnect (hdbc); if (resCode != DB_SUCCESS) ShowError(); goto Error; cbWinBufFree(double*)ADData);Error: break; return 0;5. 总结本文基于LabWindow
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-河南-河南药剂员四级(中级工)历年参考题库含答案解析
- 2024版医用口罩采购合同范本
- 2024版工程项目管理人员聘用合同
- 2025年事业单位工勤技能-河北-河北计算机信息处理员一级高级技师历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北水利机械运行维护工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北地质勘查员四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北保健按摩师四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-江苏-江苏有线广播电视机务员四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏公路养护工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西机械冷加工五级(初级工)历年参考题库含答案解析
- 变电运维培训课件
- SB/T 11243-2024美容业服务质量管理规范
- 2025至2030中国防爆设备行业发展分析及产业运行态势及投资规划深度研究报告
- 国家工业信息安全发展研究中心招聘笔试题库2025
- 2025年陕西省中考英语试卷真题及答案详解(精校打印版)
- 设备设施包保管理制度
- 啦啦操说课课件
- ASTM G154-23译本 中文版【后附英文官方原版 可复制可检索】
- 2025年护士执业资格考试老年护理学专项护理措施试题集
- 法人风险转移协议书
- 煤矿技能提升培训课件
评论
0/150
提交评论