题目: 地磁监测系统控制中心平台
姓 名: 孙鹏 学号: 20121003920
院(系): 自动化学院 专业: 测控技术与仪器
指导教师: 葛健
2019 年7月
摘 要
Labview是一款程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是Labview与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而Labview使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。Labview是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而Labview采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是Labview的程序模块。Labview提供很多外观与传统仪器类似的控件,可用来方便地创建用户界面。用户界面在Labview中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。Labview的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。
关键词:虚拟仪器,Labview,VI
目 录
第一章 课程设计目的与任务 4
第二章 课程要求 4
第三章 设计分析 4
第四章 设计流程 5
4.1 下位机程序代码 5
4.2 上位机程序框图 6
4.2.1串口配置 6
4.2.2数据采集 6
4.2.3启动开关 7
4.2.4 包头包尾判断 7
4.2.5 提取串口信息 7
4.2.6 数据处理 8
4.2.7 数据显示 9
4.2.8 数据存储 9
4.3 前面板及效果图 9
4.3.1 ardunio芯片发送数据 9
4.3.2 前面板初始状态 10
4.3.3 前面板数据开始采集 10
4.3.4前面板数据连续采集 11
第五章 问题分析 12
第六章 小组分工 12
第七章 心得体会 12
致 谢 13
参考文献 14
第一章 课程设计目的与任务
掌握虚拟仪器的概念和系统组成,虚拟仪器系统的基本设计思想;认识虚拟仪器的软件开发工具LabVIEW及图形化编程语言;掌握虚拟仪器软件的设计方法,能够运用LabVIEW进行数据操作、结构控制、文件读写、信号处理、数学分析、波形分析等。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。虚拟仪器以通用的计算机硬件及操作系统为依托,实现各种仪器功能。通过本课程设计,使学生了解智能仪器的分类、组成、特点以及智能仪器的发展方向及新技术;掌握虚拟仪器的数据采集技术、人机对话接口技术以及典型数据处理算法。能够熟练运用所学知识进行智能仪器的设计和开发。
第二章 课程要求
1、利用Labview控制前端地磁监测仪(利用单片机模拟)进行地磁总场F,分量(X、Y、Z)的采集与串口传输。
2、根据采集数据计算地磁场磁偏角和磁倾角、分量的校正(总场数据校正分量数据)。
3、能够实时显示当前地磁要素(总场、分量、磁偏角和磁倾角)曲线,并能进行数据的本地txt文件存储。
4、上位机控制下位机功能,就是上位机发送一个信息给下位机,下位机点亮一个灯,开始传输数据,同时停止传输数据是一样的,也要有标志。
5、磁场总场值f应围绕49600进行微调。
6、波特率必须达到115200。
7、存储的文件数据要附上采集的时间,并且注意存储的格式(如空格,各数据之间的区分等)。
第三章 设计分析
1、利用ardunio串口发送功能向电脑发送地磁总场F,分量(X、Y、Z)数据,并可以接受上位机控制,每发送一组数据,ardunio开发板上led灯闪亮一次。
2、写LabVIEW上位机程序,上位机既可以发送命令,又可以接受ardunio上传的数据。根据采集数据计算地磁场磁偏角和磁倾角、分量的校正(总场数据校正分量数据)。并用示波器显示出来。
3、将当前地磁要素(总场、分量、磁偏角和磁倾角)和当前时间存储在txt文件中。
第四章 设计流程
4.1 下位机程序代码
因为ardunio集成串口发送功能,故可以用简单程序完成串口接受发的功能。
程序如下所示:
char led = 13; //定义LED灯为引脚13
uint8_t i=0;
static uint16_t cichang[10][4]= //定义十组数据
{48107,27903,28103,27905,
48018,25120,30502,28126,
47980,28146,25167,29846,
48048,27103,26480,29892,
48012,25109,28045,31023,
48023,27203,29892,27735,
48045,28103,26309,30204,
48092,28023,27012,29103,
48108,27974,28123,28133,
47977,28034,27988,2789,
};
void setup()
{
Serial.begin(9600); //打开串口
pinMode(led, OUTPUT); //LED引脚定义为输出
}
void loop()
{
if(Serial.read()=='#') //当单片机接收到“#”后,开始发送一组数据
{
digitalWrite(led, HIGH); //LED闪亮一次表示一组数据发送完成
for(uint8_t j=0;j<4;j++)
Serial.print(cichang[i][j]);
digitalWrite(led, LOW);
++i;
if(i>=10) //依次发送十组数据
i=0;
}
}
4.2 上位机程序框图
4.2.1串口配置
配置串口文件写入区域和波特率。
图4-1 配置串口程序图
4.2.2数据采集
用一个条件语句表示是否启动串口发送程序,既数据采集是否开始。
图4-2 数据开始采集程序
4.2.3启动开关
启动是否接受串口的数据。
图4-3数据开始采集程序
4.2.4包头包尾判断
只有LabVIEW检测到包头包尾才处理数据,否则丢失数据。
图4-4包头包尾判断程序
4.2.5 提取串口信息
将下位机发送的数据经过处理得到地磁总场F,分量(X、Y、Z)数据。
图4-5提取串口信息程序
4.2.6数据处理
将处理后的数据格式化后放入虚拟式示波器显示。
图4-6数据处理程序
4.2.7数据显示
将处理后的数据格式化后放入虚拟式示波器显示。
图4-7数据显示程序
4.2.8数据存储
将得到的地磁要素(总场、分量、磁偏角和磁倾角)和当前时间储存在txt文件中。
图4-8数据存储程序
4.3前面板及效果图
4.3.1 ardunio芯片发送数据
图4-9ardunio实物图
4.3.2 前面板初始状态
图4-10前面板效果图
4.3.3前面板数据开始采集
图4-11 开始采集效果图
4.3.3 前面板数据连续采集
图4-12 连续采集效果图
第五章 问题分析
1、开始时没有注意包头包围问题,导致labview收集的数据移位,收集的数据完全没有任何意义。
2、在葛老师的指点下,我们将数据的采集模式改为当ardunio接收到labview 的命令后不停的向上位机发送数据。
3、为解决数据掉包的问题,我们选择将采集的数据连续发送两次,而VISA读入的缓冲区为数据区的两倍,这样可以解决数据掉包问题。
4、为了将采集的数据无间隔的接收,ardunio每隔50ms发送数据一次,这样可以避免第一次数据无缘无故突变为0.
5、采用条件结构,可以实现波形图表和文本格式显示,即可实现暂停的功能。
6、文本写入的方式与格式会影响最后数据的储存,这点需要注意。
第六章 小组分工
由李文柏负责上位机的程序,吴斌负责下位机的程序编写,孙鹏负责程序的整合调理、布局,大家一起进行程序的调试,问题分析及解决问题,进行优化。最后大家一起商量、讨论绘制PPT,撰写报告。
第七章 心得体会
通过一周的labview学习,让我掌握了LabVIEW的VISA接口程序,让我从不懂到略微懂在到熟悉的过程。其中遇到很大问题,也有想放弃的想法,很感谢团队的吴斌和李文伯给予我物质和精神上的资助,让我有毅力坚持下去,努力解决我所遇到的问题。
在这里我还是很感谢曹炳与徐姝同学给予的帮助,让我们走出困境,虽然花费很长时间,但我觉得我从中学到了知识,这是值得的。
致 谢
课程设计终于顺利完成,首先在此感谢我们的指导老师葛健老师给予我们的帮助,对我们提起的要求,引导我们分析问题与解决问题;还有在做设计的过程中,也遇到了很多新的问题,解决这些问题得益于徐姝团队和曹炳团队对我们的慷慨帮助,此次课程设计才能够顺利完成;最后感谢我的团队,与我的队友们团结协作,并肩作战,给与我莫大的帮助和无限的能量,问题才能得以解决,取得课程设计的圆满成功。
参考文献
[1]牛群峰,王莉,胡红生,吴才章.Labview虚拟仪器系统开发与实践[M].北京:中国电力出版社.
[2]张凯,郭栋.labview虚拟仪器工程设计与开发[M].北京:国防工业出版社
[3]杨高科.labview虚拟仪器项目开发与管理[M].北京:机械工业出版社
[4]李江全,任玲,廖结安,温宝琴.labview虚拟仪器从入门到测控应用130例[M].北京:电子工业出版社