武祎
摘 要:本文主要介紹了在Windows環(huán)境下,以LabWindows/CVI為軟件開發(fā)平臺,以熱電偶和計算機為主要硬件平臺,利用多線程機制進行溫度的采集和存儲,最后對采集到的數(shù)據(jù)加以分析。實際應(yīng)用表明該系統(tǒng)運行穩(wěn)定。
關(guān)鍵詞:LabWindows/CVI;熱電偶;多線程;數(shù)據(jù)采集
1 前言
虛擬儀器是近些年發(fā)展起來的新儀器技術(shù),它利用數(shù)據(jù)采集硬件模塊完成一般儀器的采集功能,利用計算機完成數(shù)據(jù)存儲、分析、顯示功能。LabWindows/CVI是目前世界上應(yīng)用最廣泛的虛擬儀器開發(fā)平臺之一,它以C語言為基本編程語言。為此,本文利用ADAM-4118熱電偶和LabWindows/CVI完成對數(shù)據(jù)的采集、存儲和分析工作[1]。計算機(工控機)通過串口RS-232,中間經(jīng)過RS-232和RS-485的轉(zhuǎn)換器與熱電偶進行通訊,被測參數(shù)的實時信號通過串口傳送給工控機。
⑴軟件設(shè)計。系統(tǒng)的應(yīng)用程序開發(fā)采用LabWindows/CVI,它是在Windows環(huán)境下面向計算機測控領(lǐng)域的虛擬儀器軟件開發(fā)平臺。該程序以ANSI C為核心,將C語言與測控專業(yè)工具有機的結(jié)合起來,并且支持多線程機制,利用它的集成開發(fā)環(huán)境,在編程過程中直接調(diào)用用戶界面函數(shù)并且利用采集卡提供的庫函數(shù),進行系統(tǒng)的軟件設(shè)計。LabWindows/CVI有許多標準函數(shù)庫,其中的RS-232函數(shù)庫提供了各種方式的串口通訊函數(shù)和IO函數(shù)。系統(tǒng)軟件主要包括串口初始化與實現(xiàn),安裝串口回調(diào)函數(shù),讀寫串口操作,數(shù)據(jù)保存,用戶界面5個部分。⑵硬件設(shè)計。系統(tǒng)的硬件主要是由熱電偶與工控機連接進行數(shù)據(jù)采集和顯示。
2 基于LabWindows/CVI數(shù)據(jù)采集系統(tǒng)的設(shè)計方案
基于LabWindows/CVI數(shù)據(jù)采集系統(tǒng)的建立分以下幾步:第一步,利用LabWindows/CVI建立用戶界面。此界面包括四個數(shù)據(jù)采集(熱電偶)模塊,每個模塊有8個通道。第二步,在界面上建立控件按鈕,如數(shù)據(jù)采集按鈕(開始采集、停止采集),數(shù)據(jù)確認按鈕,保存數(shù)據(jù)按鈕,數(shù)據(jù)顯示按鈕。第三步,在編程過程中使用多線程機制以保證數(shù)據(jù)采集的實時性,和提高CPU的利用率和程序的執(zhí)行效率。
⑴多線程機制的概念及設(shè)計。1)多線程概念。在Windows操作系統(tǒng)中,進程表示一個執(zhí)行中的程序,它是CPU的調(diào)度單位。執(zhí)行程序代碼是線程的工作。當(dāng)一個進程建立起來后,主線程也就產(chǎn)生了,所以每個Windows程序至少存在一個線程(主線程)。在數(shù)據(jù)采集系統(tǒng)的實時控制中,常會出現(xiàn)多任務(wù)同時進行工作的情況,如數(shù)據(jù)采集,數(shù)據(jù)存儲等工作的并行進行。如果采用單線程編程,必須要按數(shù)據(jù)采集-數(shù)據(jù)存儲的順序執(zhí)行程序,只有在數(shù)據(jù)存儲完后才能進行下一輪的采集。這樣就會影響程序執(zhí)行的效率而且可能導(dǎo)致數(shù)據(jù)丟失。而采用多線程機制,就可以將這些任務(wù)分給幾個單獨的線程,一個線程進行數(shù)據(jù)采集,一個線程進行數(shù)據(jù)存儲或其他。2)多線程編程。在LabWindows/CVI編程中,使用主線程進行創(chuàng)建、顯示并運行用戶界面。使用次線程進行數(shù)據(jù)的采集、存儲及其他操作。LabWindows/CVI提供了兩種機制來運行次線程,分別是線程池和異步定時器。線程池比較適用于一個死循環(huán)或者是不連續(xù)的任務(wù);異步定時器適用于執(zhí)行有規(guī)律的中斷。本系統(tǒng)采用線程池機制[2]。
⑵線程池的使用。線程池中運行次線程,首先需要調(diào)用通用函數(shù)庫中的CmtSchedulePoolFunction函數(shù)。并將需要在次線程中執(zhí)行的函數(shù)的函數(shù)名作為參數(shù)傳遞。其次,調(diào)用線程池等待函數(shù)CmtWaitForThreadPoolFunction等待線程池函數(shù)結(jié)束。最后,調(diào)用線程池釋放函數(shù)CmtReleaseThreadPoolFunctionID釋放空間。
3 溫度采集系統(tǒng)的設(shè)計
溫度采集系統(tǒng)的設(shè)計主要包括操作面板設(shè)計和能夠?qū)崿F(xiàn)數(shù)據(jù)實時采集功能的程序設(shè)計。面板是用于人機交流、對面板上的各種控件進行操作。后臺運行的功能程序?qū)崿F(xiàn)數(shù)據(jù)采集、存儲等功能。
⑴操作面板設(shè)計。面板(用戶界面)和面板中的控件如一些按鈕都是被控對象。面板的設(shè)計主要是利用了LabWindows/CVI中的用戶界面庫函數(shù)所提供的函數(shù)及通過改變對象的屬性來實現(xiàn)的。采集系統(tǒng)的前面板共有四個熱電偶模塊,每個模塊有八個通道進行數(shù)據(jù)采集。這四個模塊可以任意選擇來采集數(shù)據(jù),即可以全選,也可以選其中的一個,兩個或三個。在采集系統(tǒng)的串口通訊面板上發(fā)送接收命令,可改變模塊特性,如設(shè)定地址,輸入量程,波特率,從通道返回數(shù)據(jù)等。此外還有一些模塊的設(shè)置[3]。
⑵實驗結(jié)果。
實驗結(jié)果表明,采集的溫度數(shù)據(jù)穩(wěn)定且具有較好的線性度。這些數(shù)據(jù)很好地反應(yīng)了實驗室當(dāng)前的溫度情況。
4 總結(jié)
本系統(tǒng)在研究虛擬儀器技術(shù)以及數(shù)據(jù)采集技術(shù)相關(guān)理論的基礎(chǔ)上,使用虛擬儀器技術(shù)實現(xiàn)多通道數(shù)據(jù)采集,并將采集到的數(shù)據(jù)以文件形式進行存儲,用以數(shù)據(jù)分析。系統(tǒng)經(jīng)過調(diào)試后,運行穩(wěn)定可靠。
[參考文獻]
[1]史君成,張淑偉,律淑珍.LabWindows/CVI虛擬儀器設(shè)計[M].北京:國防工業(yè)出版社.2007.
[2]余軍,張璐瑩.虛擬現(xiàn)實技術(shù)及其應(yīng)用[J].河南:天中學(xué)刊.2007-5.
[3]張靚,黃海于.基于LabWindows/CVI的多線程數(shù)據(jù)采集的研究和設(shè)計[J].北京:中國儀器儀表.2005-8.