虚拟曲线拟合仪.docx
《虚拟曲线拟合仪.docx》由会员分享,可在线阅读,更多相关《虚拟曲线拟合仪.docx(14页珍藏版)》请在冰豆网上搜索。
![虚拟曲线拟合仪.docx](https://file1.bdocx.com/fileroot1/2022-11/29/c815adfe-0cf9-49b3-bcfe-4fbea3dc6e5b/c815adfe-0cf9-49b3-bcfe-4fbea3dc6e5b1.gif)
虚拟曲线拟合仪
总目录
第一部分:
任务书
第二部分:
课程设计报告
第一部分
任
务
书
《虚拟仪器技术》课程设计任务书
一、课程设计的目的
(1)掌握Labview软件编程方法
(2)掌握Labview硬件的应用
(3)培养综合应用所学知识来指导实践的能力
二、课程设计的要求
(1)设计成果一份。
(2)课程设计论文一份。
三、课程设计进度安排
1.布置任务、查阅资料,方案设计 (两天)
根据设计要求,查阅参考资料,进行方案设计及可行性论证,确定设计方案,画出详细的原理图。
2.上机在LabVIEW环境下按要求进行设计(三天)
要求在虚拟仪器上观测到正确的波形并达到规定的技术指标。
3.硬件的装配及调试 (三天)
使用数据采集卡进行装配调试,使其全面达到规定的技术指标,最终通过验收。
4.总结报告 (一天)
四、使用仪器设备
(1)NI公司的数据采集和信号调理卡。
NIDQA-6024卡,NISC-2075卡各一套。
(2)PⅢ计算机一台。
(3)各种相关的实验材料和设备。
第二部分
课
程
设
计
报
告
1、设计任务及要求
虚拟曲线拟合仪
设计要求:
(1)采集多种外部数据信号以备拟合使用;
(2)对数据进行曲线拟合时,首先需要输入一一对应的两个数据序列X和Y,要求被处理的数据通过一个FOR循环产生,并且用公式节点产生X和Y之间的函数关系。
(3)对数据进行曲线拟合时,可手动选择线性、指数、多项式和最小二乘法等四种曲线拟合方式;
(4)当选用多项式拟合方式时,用户可根据精度要求设置多项式阶次,并进行拟合算法的选择;
(5)具有存盘功能
(6)基本实现传统的虚拟曲线拟合仪的功能,包括绘制出拟和数据图形。
2、系统总体设计方案
2.1总体设计方案
图2-1
2.2程序
图2-2
图2-3
图2-4
图2-5
图2-6
图2-7
图2-8
图2-9
3、FOR循环设计
3.1工作原理
用函数发生器产生一个三次函数再使用FOR循环不断的取出10组数据并生成一个二维数组。
3.2程序
图3-1
图3-2
4、数据采集设计
4.1工作原理
采用顺序结构来采集100个点,并用FOR循环不断地取出数据生成二维数组。
4.2程序
图4-1
图3-2
5、数据拟合设计
5.1工作原理
这里的数据拟合使用了线性拟合、多项式拟合、指数拟合和最小二乘法拟合四种拟合方式。
使用选择结构,当哪个条件满足就执行哪种拟合方式。
5.2程序
图5-1
图5-2
图5-3
图5-4
6、存盘设计
6.1工作原理
使用了选择结构,当输入路径存在时候删除该文件,不存在则由ERROROUT端口输出,后接空选择框,表示当路径不存在时,不执行删除动作,而程序运行过程中,当存盘按钮按下时,程序反复进行删除原数据并将最新一组数据存盘的过程,当程序停止运行时,被记录下的为运行过程的最后一组数据。
6.2程序
图6-1
图6-2
7、调试
调试是完成课题必不可少的部分,也是非常重要的部分。
在一步步完成课题的过程中,没做完一个部分就要调试知道达到要求为止,最后再把各个部分合在一起综合起来调试,最终要做到符合要求,下面就详细的介绍调试的过程。
1、FOR循环产生数据部分,这个部分是用函数发生器产生的,非常简单,一次就成功了,唯一的问题是结果会产生有零的情况,不能用指数拟合,只是改了一个数字就可以了。
2、数据采集部分,这部分之前采用了实验册上的方法使用FOR循环产生十组数据并生成一个二维数组,这在单个程序调试时没有什么问题但是当放入整个程序时就有问题了,首先采集的点比较少,其次送入拟合的数据不是连续的,而是一段一段的,每一段是个数据,这样导致的后果是拟合的后数据误差特别大。
后来改动之后采用了顺序结构来采集100个点并将这100个点送入拟合,这样拟合出的数据误差就很小了。
3、数据获取部分,数据获取也就是三种方式:
直接输入数据,FOR循环产生数据,以及从外部采集数据。
这里我们使用了选择结构,哪个条件满足就执行哪种方式,在这过程中也出现了问题,起初不熟悉什么什么才叫条件满足,所以就没办法实现各个方式的选择,后来经过翻阅资料以及一点点的尝试终于弄明白了也解决了问题。
4、最小二乘法部分,这个部分可以说做的时候比较困难,起初我们并不会做,也不知道公式是什么,耽误了不少时间,最后我们和其他同学商量在之前学过的传感器这本书中找到了公式,但也仅仅是一次的,所以我们就只做了这个。
知道了公式之后,程序也不是那么容易的,花费了差不多半天的时间才完成,这个程序中用到了两个FOR循环一个函数发生器。
不过好在程序虽然复杂,调试却不曾出现什么问题,这还是很令人兴奋的。
5、数据拟合部分,(由于线性拟合和指数拟合以及多项式拟合都比较简单再做的过程中也没有出现什么问题,这里就不说了)这里的数据拟合使用了线性拟合、多项式拟合、指数拟合和最小二乘法拟合,因此需要使用选择结构,当哪个条件满足就执行哪种拟合方式,这也使整个程序看起来简洁了不少。
因为有了之前数据获取的经验这里就轻车熟路了,并没有出现什么问题。
6、存盘部分,这一部分我想是整个课程设计最难的一块了,要求是需要的时候存数据不需要的时候不存并且要存数据的时候要删除掉之前的数据,本来就一点都没接触过,后来一点一点的摸索之后写了一个程序,可是却不停的存储,并且还跟其他的程序相矛盾,改来改去始终不能解决,我们几乎要放弃,但是还有时间,就跟老师讨论跟其他同学讨论,最后彻底推翻前一次的想法,使用了选择结构,当输入路径存在时候删除该文件,不存在则由ERROROUT端口输出,后接空选择框,表示当路径不存在时,不执行删除动作,而程序运行过程中,当存盘按钮按下时,程序反复进行删除原数据并将最新一组数据存盘的过程,当程序停止运行时,被记录下的为运行过程的最后一组数据。
在这个过程中也出现了问题,就是删除指令出现了问题,一开始加入删除文件的指令时,由于程序是循环运行的,在不进行存盘的,或者路径原本就不存在的时候,删除动作就会出错,提示无法检测到文件,然后程序跳出运行状态,这样就无法连续采集数据了。
后来试了很多模块,想用于检测路径是否存在,但都失败了。
正当没有头绪的时候,鼠标划过删除模块,红色的ERROROUT端口引起了我们的注意,查看端口功能,发现这个端口会输出TRUE和FALSE两个尝试着在后面结了一个选择框,再执行程序的时候就没有错误提示了,由于路径不存在的情况不需要执行什么动作,所以选择框内是空的。
删除操作的问题就这样在一个不经意间解决了。
7、整个程序,完成了每一个过程最后形成一个完整的程序,只等待最后的调试成功,这一次没有让我们失望,除了停止程序的运行不能实现之外其他都没有问题了,而这个是很好结局的,只要在整个程序外加个while循环就可以了。
至此整个课程设计就完成了。