題目: 地磁監測系統控制中心平臺
姓 名: 孫鵬 學號: 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].北京:電子工業出版社