数据采集系统的软件设计
- 格式:pdf
- 大小:6.48 MB
- 文档页数:75
东北石油大学毕业设计(论文)任务书题目基于proteus的数据采集处理系统专业学号姓名主要内容:1、针对基于单片机的温度的数据采集系统进行深入的研究,分析其硬件结构和优缺点;2、选择温度传感器和单片机、应用PROTEUS软件设计系统电路图和Keil软件设计系统程序;3、应用PROTEUS软件仿真实现数据采集系统。
基本要求:1、设计完善的硬件电路图;2、应用Proteus软件仿真实现3、提交规范的论文。
主要参考资料:[1] 张丹,费陆公.基于proteus和labview的教学监控系统的设计[J].仪器仪表标准化与测量,2008(1):42-44[2] 周润景. 基于DS18B20的温度测量模块设计[M].机械工业出版社,2011.13-43.[3] 张福学.传感器应用及其电路精选[M].高等教育出版社,2004:58-67[4] 林祝亮,武林,杨金华.基于双单片机的多路数据采集系统设计.仪器仪表学报,2006,No.6完成期限:指导教师签名:专业负责人签名:年月日摘要随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力的场合。
本设计以温室环境作为研究对象,主要研究了温度数据采集系统的设计过程与仿真的实现方法。
针对该系统设计了基于单片机的温度数据采集系统的各部分电路并利用汇编语言设计了针对该系统的各个环节的子程序。
同时在Proteus环境下结合Keil uVision 2成功实现了基于单片机的温度数据采集系统的仿真调试。
该系统实现了温度数据的采集、处理、实时显示、开关量的控制输出、超限报警及系统键盘设置等功能。
此外,该系统可手动调节报警上下限,控制方便,操作简单。
本设计的仿真方法提高了系统的开发效率、缩短周期和降低成本,为单片机系统的开发提供了手段。
关键词:AT89C51;温度;proteusAbstractWith the rapid development and popularization of micro-computer technology,data acquisition monitoring has become an increasingly important detection techniques are widely used in industry and agriculture need to monitor such as temperature, humidity and pressure of the occasion. The design and simulation implementation methods of temperature data acquisition system are introduced in this paper, which takes a green house as the research object. Each part of the circuit based on the MCU temperature data acquisition system is designed for the system and the use of assembly language to design subroutine of each link for the system. At the same time, in the Proteus environment combined with Keil uVision 2 realized the virtual simulation debugging process based on MCU temperature data acquisition system. The system verify that it is possible to realize many functions, such as temperature data acquisition, data processing , displaying on real time,the output of switching value , alarm, and the keyboard operation and so on . In addition, the system can manually adjust the alarm range, convenient control and simple operation. This design of the simulation method is proved to be an effective means which raised the development efficiency, reduced the cycle time and saved costs .Key words : AT89C51 ; temperature ; Proteus目录第1章绪论 (1)1.1 研究背景及其目的意义 (1)1.2 国内外研究现状 (2)1.3 该课题研究的主要内容 (2)1.4 本章小结 (3)第2章数据采集系统方案论证 (4)2.1 数据采集系统 (4)2.2 方案论证 (4)2.3 系统的元件介绍 (8)2.4 本章小结 (18)第3章数据采集系统原理及分析 (19)3.1 系统总体流程图 (19)3.2 系统各部分电路设计 (20)3.3 本章小结 (30)第4章软件部分 (30)4.1 仿真软件 (30)4.2 主程序设计 (35)4.3 仿真结果 (40)4.4 功能模块的调试 (43)4.5 本章小结 (43)结论 (44)参考文献 (45)致谢 (46)附录1:程序 (47)附录2:系统原理图 (58)第1章绪论1.1 研究背景及其目的意义近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。
多路数据采集系统设计
多路数据采集系统设计通常包括硬件设计和软件设计两个方面。
硬件设计方面,需要考虑以下几个方面:
1. 数据采集模块:根据需要选择合适的模拟输入、数字输入或其他类型的传感器模块,并进行连接。
2. 信号调节:如果传感器输出的信号不符合需求,需要将其进行放大、滤波、隔离或其他调节。
3. 数据转换:将模拟信号转换为数字信号,可以采用模数转换芯片。
4. 多路信号复用:如果同时需要采集多个信号,可以使用多路复用器或多个采集模块。
5. 电源供应:为各个模块提供稳定的电源供应。
6. 通信接口:设计合适的通信接口,如串口、网络接口等,以方便数据传输。
7. 数据存储:选择合适的存储设备,如内存、硬盘、SD卡等,以存储采集到的数据。
软件设计方面,需要考虑以下几个方面:
1. 采集控制:编写控制程序,通过控制硬件模块的工作方式、采样时序和频率等参数,实现多路数据的同时采集。
2. 数据读取:编写数据读取程序,从硬件模块中读取采集到的数据,并进行处理。
3. 数据处理:对采集到的数据进行滤波、校正、分析等处理,以提取有用的信息。
4. 数据存储:将处理后的数据存储到合适的存储设备中,以便后续分析和使用。
5. 用户接口:设计合适的用户界面,以方便用户对系统进行操作和监视。
综上所述,多路数据采集系统设计需要综合考虑硬件和软件两个方面,确保系统能够稳定、高效地采集和处理多路数据。
多通道数据采集系统的设计与实现近年来,随着科技的不断发展和数据的迅速增长,对于多通道数据采集系统的需求越来越迫切。
多通道数据采集系统旨在通过多个输入通道同时采集、传输和处理多组数据,以满足大规模数据采集和处理的需求。
本文将详细介绍多通道数据采集系统的设计与实现。
1. 系统需求分析在设计多通道数据采集系统之前,首先要明确系统的需求。
根据具体的应用场景和目标,我们需要确定以下几个方面的需求:1.1 数据采集范围:确定需要采集的数据范围,包括数据类型、数据量和采集频率等。
这将直接影响系统的硬件选择和设计参数。
1.2 数据传输和存储要求:确定数据传输和存储的方式和要求。
例如,是否需要实时传输数据,是否需要数据缓存和压缩等。
1.3 系统的实时性要求:确定系统对数据采集和处理的实时性要求。
根据实际应用场景,可以确定系统对数据延迟和响应时间的要求。
1.4 系统的可扩展性:考虑系统的可扩展性,以满足未来可能的扩展需求。
这包括硬件和软件的可扩展性。
2. 系统设计在需求分析的基础上,我们进行多通道数据采集系统的设计。
系统设计主要包括硬件设计和软件设计两个方面。
2.1 硬件设计根据需求分析中确定的数据采集范围和要求,我们选择合适的硬件设备进行数据采集。
常用的硬件设备包括传感器、模拟信号采集卡和数字信号处理器等。
2.2 传感器选择根据需要采集的数据类型,选择合适的传感器进行数据采集。
不同的传感器适用于不同的数据类型,如温度传感器、压力传感器、光传感器等。
2.3 采集卡设计针对多通道数据采集系统的特点,我们需要选择合适的模拟信号采集卡进行数据采集。
采集卡应具备多个输入通道,并能够同时采集多个通道的数据。
2.4 数字信号处理器设计针对采集到的模拟信号数据,我们需要进行数字信号处理。
选择合适的数字信号处理器进行数据处理,如滤波、采样和转换等。
2.5 软件设计针对系统的需求和硬件的设计,我们需要进行软件设计,以实现数据采集、传输和处理。
《基于单片机和LabVIEW的多路数据采集系统设计》篇一一、引言随着科技的发展,多路数据采集系统在工业、医疗、环境监测等领域的应用越来越广泛。
为了满足多路数据的高效、准确采集需求,本文提出了一种基于单片机和LabVIEW的多路数据采集系统设计。
该系统设计旨在实现多路信号的同时采集、处理及实时监控,以适应复杂多变的应用环境。
二、系统概述本系统采用单片机作为核心控制器,结合LabVIEW软件进行数据采集和处理。
系统由多个传感器模块、单片机控制器、数据传输模块以及上位机软件组成。
传感器模块负责实时监测各种物理量,如温度、湿度、压力等,并将采集到的数据传输给单片机控制器。
单片机控制器对数据进行处理和存储,并通过数据传输模块将数据发送至上位机软件进行进一步的处理和显示。
三、硬件设计1. 传感器模块:传感器模块采用高精度、高稳定性的传感器,如温度传感器、湿度传感器等,实现对物理量的实时监测。
传感器模块的输出为数字信号或模拟信号,方便与单片机进行通信。
2. 单片机控制器:采用具有高速处理能力的单片机作为核心控制器,实现对数据的快速处理和存储。
单片机与传感器模块和数据传输模块进行通信,实现数据的实时采集和传输。
3. 数据传输模块:数据传输模块采用无线或有线的方式,将单片机控制器的数据传输至上位机软件。
无线传输方式具有灵活性高、安装方便等优点,但需要考虑信号干扰和传输距离的问题;有线传输方式则具有传输速度快、稳定性好等优点。
四、软件设计1. 单片机程序设计:单片机程序采用C语言编写,实现对传感器数据的实时采集、处理和存储。
同时,程序还需要与上位机软件进行通信,实现数据的实时传输。
2. LabVIEW程序设计:LabVIEW程序采用图形化编程语言编写,实现对单片机传输的数据进行实时处理和显示。
同时,LabVIEW程序还可以实现对数据的存储、分析和报警等功能。
五、系统实现1. 数据采集:传感器模块实时监测各种物理量,并将采集到的数据传输给单片机控制器。
数据采集系统软件的设计一主程序开发模块通信主线程的主要功能是对各个通信子线程进行调度和管理。
启动通信主线程:AfxBeginThread(ThreadMainCommunication, GetSafeHwnd());变量m_com_usable 为可用的串口个数。
S_comnum=CreateSemaphore(NULL,m_com_usable,m_com_usable,NULL);然后再用下面的语句为每个可用的串口创建一个对应的子通信线程,主要代码如下所示:for(ii=0;ii<32;ii++)//最多三十二个串口{ThreadID[ii]=ii;if(m_comst[ii].com_status==1)///如果该串口的状态为可用的{m_comst[ii].telephone.Empty();hThread[ii]=AfxBeginThread(ThreadRead,&&ThreadID[ii]);// 创建一个对应的子通信线程} }二多串口多线程开发模块三 TCP/IP多线程通信开发模块主程序:通信主线程的主要功能是对各个通信(串口和TCP/IP)子线程进行调度和管理;多串口多线程开发模块:每个子通信线程对应一个串口,每个子通信线程负责通过对应的串口进行数据的读写;主程序中的主线程通过向子线程依次传递不同的数据从而使一个串口依次与不同的设备进行连接。
希望使用信号量和互斥变量,用多线程并行的方式通过多个串口进行并行通信。
这种多串口多线程通信方法,使多个串口能并行通信和数据传输;TCP/IP多线程通信开发模块(客户端和服务端)串口传过来的数据可以通过TCP/IP传给客户端或服务端;或这个模块也可以单独与其他客户端和服务端进行连接接收他们的数据;四 LOG开发模块五数据库开发模块六不同设备以及不同协议开发各自的协议模块,而且互不干扰;七对不同串口以及不同协议可以进行有效控制八加密安全管理模块九系统采用c++ for linux or java十数据库采用Oracle;本例子是本人Linux下基于TCP多线程Socket编程的第二个例子,本例子是用C++实现的服务器采用了面向对象的多线程,用到了队列与链表,信号量(操作系统中叫PV操作)本例子中的队列与链表源代码在前面可以找到,这里就不多贴了此系统所支持的自定义命令跟上个例子相同,就里就不多说明了头文件Thread.h代码,里面就一个抽象类(抽象类没有自己的实例,一定要被子类所继承) #ifndef THREAD_H_INCLUDED#define THREAD_H_INCLUDEDclass Thread{public:void ThreadEnter();protected:virtual void Start() = 0;virtual void Initialize(){}};#endif // THREAD_H_INCLUDEDThread.cpp代码:#include "Thread.h"void Thread::ThreadEnter(){Start();}以下为服务器主要头文件Server.h代码:#ifndef SERVER_H_INCLUDED#define SERVER_H_INCLUDED#include "Thread.h"#include "LinkList.h"#include "ThreadQueue.h"#include <netinet/in.h>#include <pthread.h>#include <semaphore.h>#define MSG_SIZE 1024#define BACKLOG 10#define PORT 8001class Server : public Thread{public:Server();~Server();public:void Start();void Initialize();void SendMessage(Server* serer);static void* SendMessageThread(void* param);void ReadMessage(Server* server);static void* ReadMessageThread(void* param);private:int sock_fd,new_fds[BACKLOG],new_fd;struct sockaddr_in serv_addr,dest_addr;pthread_mutex_t mutex;pthread_t pth_r,pth_s;sem_t sem_r,sem_s;int thread_cout;LinkList list;ThreadQueue queue;DataType *pData;};#endif // SERVER_H_INCLUDED以下为Thread.h实现的Thread.cpp代码:#include "Server.h"#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <iostream>#include <string>using namespace std;//------------------------------------------------------------------ Server::Server(){pthread_mutex_init(&mutex,NULL);sem_init(&sem_r,0,10);sem_init(&sem_s,0,0);}//------------------------------------------------------------------ void Server::Initialize(){sock_fd = socket(AF_INET,SOCK_STREAM,0);if(sock_fd < 0){perror("socket fail!" );exit(-1);}serv_addr.sin_family = AF_INET;serv_addr.sin_port = ntohs(PORT);serv_addr.sin_addr.s_addr = INADDR_ANY;bzero(&(serv_addr.sin_zero), 8);if (bind(sock_fd, (struct sockaddr*) &serv_addr,sizeof(struct sockaddr)) < 0){perror("bind fail! ");exit(-1);}if(listen(sock_fd,BACKLOG) < 0){perror("listen fail!" );exit(-1);}cout << "listenning......" << endl;socklen_t sin_size = sizeof(dest_addr);while(1){if(thread_cout == BACKLOG - 1){return;}new_fd = accept(sock_fd,(struct sockaddr *)&dest_addr,&sin_size); if(new_fd < 0){perror("accept fail!" );exit(-1);}cout << "\nA client has connected to me "<< inet_ntoa(dest_addr.sin_addr)<< ":" << ntohs(dest_addr.sin_port)<< endl;pthread_mutex_lock(&mutex);thread_cout++;list.InsertNode(thread_cout,new_fd);pthread_mutex_unlock(&mutex);pthread_create(&pth_r,NULL,ReadMessageThread,this);}}//------------------------------------------------------------------ void Server::Start(){pthread_create(&pth_s,NULL,SendMessageThread,this);Initialize();}//------------------------------------------------------------------ void Server::ReadMessage(Server* server){int fd = server->new_fd;char buf[MSG_SIZE];int len;/*pthread_mutex_lock(&mutex);int count = thread_cout - 1;pthread_mutex_unlock(&mutex);*/while(1){sem_wait(&sem_r);if ((len = read(fd, buf, MSG_SIZE)) == -1){perror("read fail!");pthread_exit(NULL);}else if (len == 0){cout << "Current client has disconnected to me" << endl; //cout << "close fd = " << fd << endl;close(fd);list.DeleteNode(fd);pthread_exit(NULL);}//cout << "read fd = " << fd << endl;buf[len] = '\0';DataType *data = new DataType();data->fd = fd;strcpy(data->buff,buf);cout << "\nRECEIVE: " << buf<< " receive fd = " << fd << endl;//pthread_mutex_lock(&mutex);queue.EnterQueue(data);//pthread_mutex_unlock(&mutex);//delete data;sem_post(&sem_s);}}//------------------------------------------------------------------void* Server::ReadMessageThread(void* param){Server* server = (Server *)param;server->ReadMessage(server);return NULL;}//------------------------------------------------------------------void Server::SendMessage(Server* server){while(1){sem_wait(&sem_s);int list_len = list.GetLength();int tNewfd,tReceivefd;//pthread_mutex_lock(&mutex);pData = queue.OutQueue();//int queue_len = queue.Queuelength();//pthread_mutex_unlock(&mutex);tReceivefd = pData->fd;//cout << "Received fd = " << tReceivefd << endl;pthread_mutex_lock(&mutex);for(int i = 1; i <= list_len; i++){list.GetNodeData(i,tNewfd);//cout << "New fd = " << tNewfd << endl;//if(queue_len != 0)//{if(tNewfd != tReceivefd){write(tNewfd,pData->buff,sizeof(pData->buff));cout << "Send to client successful! fd = " << tNewfd << endl;; }//}}delete pData;pthread_mutex_unlock(&mutex);sem_post(&sem_r);}}//------------------------------------------------------------------ void* Server::SendMessageThread(void* param){Server* server = (Server *)param;server->SendMessage(server);return NULL;}//------------------------------------------------------------------ Server::~Server(){close(sock_fd);pthread_join(pth_r,NULL);pthread_join(pth_s,NULL);}//------------------------------------------------------------------以下为主文件main.cpp代码:#include "Server.h"int main(void){Server* server = new Server();server->ThreadEnter();return 0;} <!--v:3.2-->基于多线程技术实现多串口的实时通信邓林涛(江西赣粤高速公路股份有限公司江西南昌 330000)摘要:介绍了采用一种通过基于多线程的多串口实时通信方式实现在现代加工制造业中对多台数控设备进行集中控制的方法。
微型计算机原理及接口技术课程设计-数据采集系统设计是一个综合性的项目,需要考虑到硬件和软件两个方面的内容。
以下是一个简单的数据采集系统设计的课程设计思路:一、硬件设计1. 选择合适的微处理器或微控制器,如8051、ARM等。
2. 确定数据采集模块,如AD转换器、传感器等。
3. 选择适当的数据存储模块,如RAM、EEPROM等。
4. 根据系统需求,设计合理的接口电路,如RS-232、RS-485、I2C、SPI等。
5. 确保电路的稳定性和可靠性,进行必要的抗干扰设计。
二、软件设计1. 编写微处理器或微控制器的程序,包括数据采集、处理、存储等环节。
2. 实现与数据采集模块和存储模块的通信,实现数据的实时传输和存储。
3. 实现系统的初始化、参数设置、结果显示等功能。
4. 进行必要的测试和调试,确保系统的稳定性和准确性。
具体步骤如下:一、系统总体设计1. 根据需求分析,确定系统的总体结构和功能。
2. 确定数据采集模块的类型和参数要求。
3. 确定存储模块的类型和参数要求。
4. 根据硬件选择,确定微处理器或微控制器的型号和参数要求。
二、硬件电路设计1. 根据系统总体结构和功能,设计合理的接口电路。
2. 根据所选硬件,进行必要的抗干扰设计。
3. 制作电路板,进行必要的调试和测试。
三、软件程序设计1. 根据系统总体结构和功能,编写微处理器或微控制器的程序。
2. 实现与数据采集模块和存储模块的通信协议,实现数据的实时传输和存储。
3. 进行必要的测试和调试,确保程序的正确性和稳定性。
四、系统集成和测试1. 将硬件和软件整合在一起,进行系统的集成和测试。
2. 进行性能测试、精度测试、稳定性测试等,确保系统的稳定性和准确性。
3. 编写系统使用手册和故障排除指南,为用户提供必要的支持和服务。
以上是一个简单的数据采集系统设计的思路和步骤,具体的设计过程还需要根据实际情况进行调整和优化。
同时,还需要注意安全性和环保性等方面的要求,确保系统的安全可靠运行。
江苏科技大学本科毕业设计(论文)学院电子信息学院专业电子信息工程学生姓名赵越班级学号1140302124指导教师张贞凯二零一五年六月江苏科技大学本科毕业论文基于NI myDAQ的数据采集系统的设计Design of data acquisition system based on myDAQ摘要在从前,各种数据采集都是通过人工的方式进行的,所以一直存在很大的局限性,即无法做到对大量的实验数据的分析处理。
随着电子科技的发展,人们可以同时采集大量的信号数据并且通过计算机处理分析这些数据。
虚拟仪器仅是一个程序化的仪器,这种仪器和计算机结合使用,使得人们可以在事先编好的程序下完成对数据的一系列处理分析工作。
本文着重研究了几种典型的基于NI myDAQ的数据采集系统,设计了很多实用的虚拟仪器。
如虚拟数字电压表,它代替了传统的电压表,提高了测量效率和精准度。
连续脉冲序列产生VI,它能够产生任意占空比,任意频率的方波。
在脉冲宽度测量中,可以通过设置计数方式等方便快捷地测量出脉冲序列的宽度。
连续信号采集则是通过DAQmx API 采集信号,执行连续的硬件定时信号采集。
简单的边沿计数VI可以选择计数的方式,方便快捷地统计出一个方波的波峰个数。
同时本文在原有数据采集系统的基础上对部分系统进行升级改进,实现了更加丰富的功能。
关键词:虚拟仪器;LabVIEW;NI myDAQAbstractIn the past, a variety of data acquisition is performed by artificial means, it has a lot of limitations, which can not be done on a large number of experimental data .With the development of electronic technology, people can collect and processing large amounts of signal data and analyze the data through computers .Virtual instrument is only a procedural instrument. It is possible to complete a series of data processing and analysis work in the pre-programmed procedures with the combination of virtual instrument and computers.This paper focuses on some typical data acquisition system based on NI myDAQ and designs many useful virtual instrument. Such as Virtual digital voltmeter, which replaced the traditional voltmeter and improved the efficiency and accuracy. Continuous pulse sequence VI, it can generate a any duty and any frequency square wave. Pulse width measurement can measure the width of the pulse sequence quickly and easily by setting the counting methods. Continuous signal acquisition is to acquire signals by using DAQmx API. Simple Edge Count VI can choose the way of counting, it can count the number of a square wave crest quickly and easily. Meanwhile, based on the original data acquisition system .This paper upgrade part of the system to achieve a richer function.Keywords: Virtual instrument; LabVIEW,; NI myDAQ目录第一章绪论 (1)1.1 研究背景及意义 (1)1.2 国内外发展现状 (1)1.3 虚拟仪器 (2)1.3.1 虚拟仪器产生的背景 (2)1.3.2 虚拟仪器的概念 (3)1.3.3 虚拟仪器的开发语言 (3)1.4 本文的主要结构 (4)第二章 DAQ简介 (5)2.1 数据采集卡的硬件简介 (5)2.2 数据采集卡的软件简介 (6)2.3 设置NI myDAQ设备 (6)2.4 本章小结 (10)第三章 LabVIEW简介 (11)3.1 LabVIEW和G语言的概述 (11)3.2 LabVIEW编程环境 (12)3.2.1 启动界面 (13)3.2.2 前面板 (13)3.2.3 程序框图 (14)3.3 浅谈G语言 (16)3.3.1 G 语言简介 (16)3.3.2 G 语言的特色——数据流 (18)3.3.3 G 语言的基本结构 (20)3.4 LabVIEW界面设计 (23)3.5 本章小结 (23)第四章基于NI myDAQ的数据采集系统 (24)4.1 虚拟数字电压表 (24)4.1.1 电压表的前面板布置 (24)4.1.2 电压表的程序框图 (24)4.1.3 测试过程 (25)4.1.4 测试结果 (25)4.2 连续信号采集 (26)4.2.1 程序框图的设计 (26)4.2.2 系统前面板的布置 (26)4.2.3 测试过程 (27)4.2.4 测试结果 (27)4.3 简单的边沿计数 (27)4.3.1 程序框图的设计 (27)4.3.2 系统前面板的布置 (28)4.3.3 测试过程 (28)4.3.4 测试结果 (29)4.4 脉冲宽度测量 (29)4.4.1 程序框图的设计 (29)4.4.2 系统前面板布置 (30)4.4.3 测试过程 (30)4.4.4 测试结果 (31)4.5 连续脉冲序列产生 (31)4.5.1 程序框图的设计 (31)4.5.2 系统前面板的布置 (32)4.5.3 测试过程 (32)4.5.4 测试结果 (33)4.6 本章小结 (33)本文总结 (34)致谢 (35)参考文献 (36)第一章绪论本章主要讲述了基于NI MyDAQ的数据采集系统设计的背景和意义,国内外所设计的数据采集系统的开发现状以及尚未解决的问题,随后简要提及了虚拟仪器的基本知识,最后列出本文的主要结构。
1104322035 公开TP241代号分类号 学号 密级10701题(中、英文)目数据采集系统的软件设计Software Design of Data Acquisition System作者姓名 张瑜朱荣明 教授工学 提交论文日期二○一四年三月控制理论与控制工程指导教师姓名、职称 学科门类 学科、专业西安电子科技大学学位论文独创性(或创新性)声明秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。
申请学位论文与资料若有不实之处,本人承担一切的法律责任。
本人签名:日期西安电子科技大学关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。
学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。
同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。
(保密的论文在解密后遵守此规定)本学位论文属于保密,在年解密后适用本授权书。
本人签名:日期导师签名:日期摘 要随着工业技术需求的不断加深,计算机技术在电子仪器测试领域得到了广泛的应用,新的测试平台虚拟仪器成为了当前测试领域的发展主流。
虚拟仪器不仅极大的提高了测试手段,而且具有实现容易、扩展性强,在信号调理、数据存储、数据分析、数据显示等多个方面与传统的测试仪器相比,具有十分突出的优点,使得人类的测试技术跨入了一个新的时期。
本文运用虚拟仪器开发平台LabWindows/CVI设计了一个数据采集系统软件。
软件可以对飞行控制系统测试的模拟信号、离散信号和网络数字信号进行采集、显示、存储和回放。
本文先介绍了虚拟仪器、软件开发平台LabWindows/CVI和多线程技术的相关知识,然后对数据采集系统软件的需求进行了分析,提出了数据采集系统的概要设计。
根据系统的概要设计,结合人机工程学相关理论,开发了简单、友好、方便、一致的人机交互界面。
同时,对软件的数据采集和记录、通道配置、通道监控和数据回放功能,在LabWindows/CVI软件开发环境下进行编程实现。
经过测试表明:软件的界面显示直观、操作简便;程序设计思路正确、性能良好,满足设计要求。
关键词:虚拟仪器 LabWindows/CVI 数据采集 人机界面AbstractWith the deepening of industrial technology needs, computer technology in the field of electronic test has been widely applied, the new test platform virtual instrument has become into the mainstream of the current testing field. Virtual instrument not only greatly improve the means test, but also have outstanding advantages of easy implement and high expansion, compare to traditional instrument, it also have high superiority in such aspect as signal conditioning, data save, data analysis, and data display, which make the testing technology of human into a new age.Software of data acquisition system developed by virtual instrument development platform LabWindows/CVI is given in this paper. The software can acquire, display,save and replay the signals in flight control system ground test such as analog signals, discrete signals and network digital signals. Firstly, the knowledge of virtual instrument, software development platform LabWindows/CVI and multithreading technology are introduced, and then the software requirement of the data acquisition system is analyzed, and the general design is put forward according to software requirement. According to general design, a user interface with virtues of simple, friendly, convenient and consistent is developed combined with ergonomics theory. Meanwhile, the functions such as data acquisition and save, channel configuration, channel supervision and data replay of the software are implemented under the LabWindows/CVI development environment. The test shows that the software meets the design requirement of data acquisition system with the virtues of clear interface, easy operation, right design idea and good performance.Keywords: Virtual Instrument LabWindows/CVI Data AcquisitionUser Interface目 录第一章绪论 (1)1.1课题的研究背景和意义 (1)1.1.1研究背景 (1)1.1.2研究意义 (2)1.2数据采集及测试仪器的发展历程及国内外研究现状 (2)1.2.1数据采集系统的发展历程 (2)1.2.2测试仪器的发展历程及国内外虚拟仪器的研究现状 (4)1.3论文的主要内容及章节安排 (5)第二章虚拟仪器技术相关知识介绍 (7)2.1虚拟仪器技术介绍 (7)2.1.1虚拟仪器 (7)2.1.2虚拟仪器的特点 (7)2.1.3虚拟仪器的组成 (8)2.1.4虚拟仪器的发展趋势 (11)2.2 LabWindows/CVI开发平台介绍 (11)2.2.1 LabWindows/CVI (11)2.2.2 LabWindows/CVI软件的对象编程 (12)2.2.3 LabWindows/CVI编程环境下的软件组成 (13)2.2.4 LabWindows/CVI软件的集成开发环境介绍 (14)2.2.5 LabWindows/CVI编程环境下设计虚拟仪器的步骤 (16)2.3多线程技术 (16)2.3.1多线程技术 (17)2.3.2多线程运行机制 (17)2.3.3多线程运行中的数据保护机制 (18)2.4小结 (19)第三章数据采集系统的软件设计 (21)3.1需求分析 (21)3.2数据采集系统的概要设计 (22)3.3数据采集系统软件的详细设计及实现 (23)3.3.1 UI(人机界面) (23)3.3.2数据采集和记录 (27)3.3.3通道配置 (32)3.3.4通道监控 (34)3.3.5数据回放 (36)3.4小结 (40)第四章数据采集系统软件的文件结构及测试 (41)4.1数据采集系统软件的文件结构 (41)4.2数据采集系统软件的测试 (42)4.2.1数据采集功能测试 (42)4.2.2数据回放功能测试 (45)4.3小结 (51)第五章总结 (53)致谢 (55)参考文献 (57)附录A (61)附录B (63)附录C (65)第一章绪论1第一章绪论1.1课题的研究背景和意义1.1.1研究背景飞行控制系统是关系到飞机飞行安全的重要因素。
在飞机试飞前,必须对飞行控制系统进行地面测试,试验中需要采集大量的数据,用来分析飞机系统的功能、性能,找出存在的隐患,确保飞机飞行的安全性。
因此,数据采集已经成为飞行控制系统地面测试中必不可少的一部分,更是整个测试的前提条件和基础。
数据采集是现代测控系统的重要组成部分,是人们用来获得数据信息的一种方式,指的是从外围设备包括数字设备或者模拟设备和传感器中自动获取数据的过程。
数据采集技术是一门融合了多门技术的综合类技术,为各种测试提供了有效的数据支撑,具有十分重要的实用性,在现代测控技术领域发挥着及其重要的作用。
早期的数据采集主要依靠人工进行,通过各种测试仪器和仪表的显示,由操作人员进行现场的抄取,并将抄取的数据进行汇总上报的一个过程。
这种数据采集的测试仪表和仪器不仅需要经常进行维护和保养,而且在人工进行抄取时,效率低下,同时会不可避免的出现误读和误写,难以保证数据的准确性。
伴随着工业技术的快速发展,现代工业对于功能强大的测试仪器需求更加迫切,这种情况下传统的测试仪器所暴露出的固化型和功能单一性已经不能满足新的工业技术对于测试仪器的要求,人们开始寻求出了新的测试系统,这种测试系统中,传统仪器的硬件功能被灵活的软件功能所取代,在测试系统的开发中,系统的软件功能不仅极大的提高了设计的灵活性,而且拓展了仪器的整体功能。
随着现代工业智能化的不断发展,新的功能更为强大的智能化测试系统——虚拟仪器出现了。