葛婉寧 姜明順 張法業(yè) 張 雷 隋青美
(山東大學(xué)控制科學(xué)與工程學(xué)院,濟(jì)南 250061)
基于VC++的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
葛婉寧 姜明順 張法業(yè) 張 雷 隋青美
(山東大學(xué)控制科學(xué)與工程學(xué)院,濟(jì)南 250061)
基于VS2010平臺(tái)利用VC++開(kāi)發(fā)了一套適用于RS232、USB、TCP/IP協(xié)議通信接口的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了監(jiān)控計(jì)算機(jī)與嵌入式儀表設(shè)備的通信,滿足了不同種類傳感器的數(shù)據(jù)采集和處理。并通過(guò)實(shí)驗(yàn)驗(yàn)證了系統(tǒng)軟件的穩(wěn)定性。
數(shù)據(jù)采集系統(tǒng) VC++ 軟件設(shè)計(jì)
隨著計(jì)算機(jī)技術(shù)、數(shù)字通信技術(shù)、測(cè)控技術(shù)和智能儀器儀表的快速發(fā)展,數(shù)據(jù)采集處理技術(shù)已被廣泛應(yīng)用于通信、軍事、航空航天及工業(yè)等領(lǐng)域,它是計(jì)算機(jī)與外部物理世界連接的橋梁。數(shù)據(jù)采集(DAQ)又稱數(shù)據(jù)獲取,是指從傳感器和其他待測(cè)設(shè)備等模擬和數(shù)字被測(cè)單元中自動(dòng)采集非電量或者電量信號(hào),然后通過(guò)PC接口總線送至上位機(jī)中進(jìn)行分析、處理、顯示和存儲(chǔ)[1]。數(shù)據(jù)采集系統(tǒng)可實(shí)現(xiàn)對(duì)生產(chǎn)現(xiàn)場(chǎng)的各種環(huán)境參量和設(shè)備運(yùn)行狀態(tài)的采集、監(jiān)測(cè)和存儲(chǔ),保證安全生產(chǎn)。而目前智能傳感器或智能儀表等外圍設(shè)備與計(jì)算機(jī)主機(jī)系統(tǒng)之間進(jìn)行信息交換的主要接口包括TCP/IP以太網(wǎng)口、USB接口、RS232接口[2],因此設(shè)計(jì)一種可通用的應(yīng)用程序軟件具有一定的實(shí)用價(jià)值。
針對(duì)以上3種不同的通信接口類型,開(kāi)發(fā)了一套上位機(jī)軟件系統(tǒng),該軟件系統(tǒng)采用基于TCP/IP協(xié)議的Socket通信、RS232串口通信和USB通信技術(shù),多線程并行工作模式、消息映射機(jī)制和SQL Server 2008數(shù)據(jù)庫(kù),集數(shù)據(jù)采集、數(shù)據(jù)分析、數(shù)據(jù)處理及數(shù)據(jù)存儲(chǔ)等功能于一體,能及時(shí)、準(zhǔn)確地監(jiān)測(cè)各類傳感器數(shù)據(jù)的變化。
1.1 總體方案
數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖如圖1所示,由圖可以看出,數(shù)據(jù)采集系統(tǒng)由3部分構(gòu)成,即傳感器、數(shù)據(jù)采集終端和上位機(jī)軟件。數(shù)據(jù)采集終端通過(guò)不同種類的傳感器(傳感器A、B、C)完成對(duì)被測(cè)對(duì)象各種參量的獲取,然后通過(guò)數(shù)據(jù)傳輸通道(TCP/IP協(xié)議的Socket通信、RS232串口通信和USB通信接口)將采集的數(shù)據(jù)傳輸給上位機(jī),從而完成對(duì)數(shù)據(jù)的分析、處理、顯示及存儲(chǔ)等一系列功能。
圖1 數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖
1.2軟件設(shè)計(jì)
數(shù)據(jù)采集系統(tǒng)軟件平臺(tái)工作流程可簡(jiǎn)化為數(shù)據(jù)通信、數(shù)據(jù)分析、數(shù)據(jù)處理、實(shí)時(shí)顯示、數(shù)據(jù)存儲(chǔ)和歷史查詢。圖2為整個(gè)系統(tǒng)的軟件流程。
圖2 系統(tǒng)軟件流程
整個(gè)工作流程中,數(shù)據(jù)通信、實(shí)時(shí)顯示和數(shù)據(jù)存儲(chǔ)之間需要并行工作,所以將它們放在不同的輔助線程中,而不同線程間的數(shù)據(jù)傳遞依賴于MFC的消息映射機(jī)制,該機(jī)制的具體實(shí)現(xiàn)方法是:定義一個(gè)消息與對(duì)應(yīng)的消息處理函數(shù),當(dāng)有消息需要處理時(shí),能依照靜態(tài)表快速找出并調(diào)用對(duì)應(yīng)的消息處理函數(shù)[3]。
1.2.1數(shù)據(jù)通信的實(shí)現(xiàn)
數(shù)據(jù)通信是該軟件系統(tǒng)的核心部分,其余各模塊功能的實(shí)現(xiàn)都要以此為基礎(chǔ)。該部分的數(shù)據(jù)傳輸通道包括TCP/IP協(xié)議的Socket通信、RS232串口通信技術(shù)和USB通用串行總線技術(shù),為了使不同的數(shù)據(jù)傳輸手段之間協(xié)調(diào)工作,采用多線程技術(shù)。
針對(duì)基于TCP/IP協(xié)議的Socket通信的數(shù)據(jù)傳輸通道,設(shè)計(jì)了Server端和Client端程序,通信流程如圖3所示。將套接字設(shè)計(jì)為監(jiān)聽(tīng)模式(Listen),根據(jù)綁定的地址和端口,準(zhǔn)備接受Client端的連接請(qǐng)求,當(dāng)請(qǐng)求到來(lái)后進(jìn)入主程序,Server端根據(jù)不同的頻率設(shè)置向Client端發(fā)送數(shù)據(jù),Client端實(shí)現(xiàn)接收、處理、顯示和存儲(chǔ)的功能,最后Client端發(fā)出關(guān)閉請(qǐng)求,實(shí)現(xiàn)了一次完整的網(wǎng)絡(luò)通信[4]。
圖3 TCP/IP通信流程
針對(duì)基于RS232接口的數(shù)據(jù)傳輸通道,開(kāi)啟多線程,每個(gè)線程中都需要實(shí)現(xiàn)串口通信,基于面向?qū)ο蟮脑O(shè)計(jì)思想,設(shè)計(jì)了CSerialCtrl類,該類主要完成串口資源的申請(qǐng)和釋放,指定輸入、輸出緩沖區(qū)的大小,填寫(xiě)設(shè)備控制塊DBC,對(duì)已打開(kāi)的串口進(jìn)行參數(shù)配置(端口設(shè)置、波特率設(shè)置、校驗(yàn)位設(shè)置、數(shù)據(jù)位設(shè)置),ReadComm()、WriteComm()對(duì)串口進(jìn)行讀寫(xiě)操作,完成數(shù)據(jù)的接收和發(fā)送。圖4為該過(guò)程的流程。
圖4 RS232通信流程
針對(duì)基于USB通用串行總線的數(shù)據(jù)傳輸通道,該通信接口與其他兩種通信接口不同,需要專門的設(shè)備驅(qū)動(dòng)程序。在應(yīng)用程序與人機(jī)接口設(shè)備(HID)開(kāi)始通信之前,應(yīng)該先識(shí)別該設(shè)備并讀取其報(bào)表信息[5,6]。在此利用Windows系統(tǒng)下的API函數(shù)獲取設(shè)備信息集、識(shí)別接口信息、獲取設(shè)備路徑名、獲得設(shè)備句柄。在成功獲取設(shè)備句柄后,就可以使用它與設(shè)備進(jìn)行交換通信。當(dāng)應(yīng)用程序結(jié)束與設(shè)備的通信之后,必須釋放之前保留的資源數(shù)據(jù)。
1.2.2顯示模塊的實(shí)現(xiàn)
軟件設(shè)計(jì)可分為編碼設(shè)計(jì)和UI設(shè)計(jì),顯示模塊是UI設(shè)計(jì)的一部分,它是人機(jī)交互的重要組成部分。該系統(tǒng)顯示界面的設(shè)計(jì)以功能實(shí)現(xiàn)為基礎(chǔ),與硬件分布情況相對(duì)應(yīng),主要包括解調(diào)儀參數(shù)(頻率、增益及噪聲門限等)的配置、各類傳感器的模擬量數(shù)值和變化曲線、數(shù)據(jù)庫(kù)的連接、歷史曲線的查詢和報(bào)警查詢。
該模塊中,所有曲線的繪制,都采用TeeChart控件來(lái)完成,該控件使用方便,繪圖美觀,只需事先注冊(cè),并設(shè)置好相應(yīng)的參數(shù),便可完成圖形的繪制[7]。繪圖數(shù)據(jù)的傳遞由消息映射機(jī)制,從數(shù)據(jù)采集線程傳遞給繪圖線程,存放于動(dòng)態(tài)數(shù)組中,而動(dòng)態(tài)數(shù)組直接映射到內(nèi)存中,這樣使得對(duì)動(dòng)態(tài)數(shù)組的訪問(wèn)和修改速度與計(jì)算機(jī)的處理速度一致,保證了數(shù)據(jù)的實(shí)時(shí)性。
1.2.3數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)
在高頻采樣模式下,會(huì)產(chǎn)生大量的數(shù)據(jù)需要存儲(chǔ),為了保證系統(tǒng)的存儲(chǔ)效率和查詢速度,采用ADO數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)去訪問(wèn)SQL Server 2008數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)是表的集合,基于觸發(fā)器的設(shè)計(jì),完成了不同傳感器向它對(duì)應(yīng)表格中的存儲(chǔ),實(shí)現(xiàn)了歷史曲線的查詢[8,9]。
在對(duì)數(shù)據(jù)庫(kù)操作的過(guò)程中,首先需要引用支持ADO的組件類型庫(kù),并在程序初始化過(guò)程中初始化組件,然后通過(guò)實(shí)例化ADO的3個(gè)核心對(duì)象完成對(duì)數(shù)據(jù)庫(kù)的連接、插入及查詢等操作。
圖5為基于TCP/IP協(xié)議的溫度傳感器的測(cè)試結(jié)果,圖6為基于RS232通信的紅外CO2傳感器測(cè)試結(jié)果,圖7為基于USB通用串行通信接口的壓力傳感器的測(cè)試結(jié)果。
圖5 溫度傳感器顯示曲線
圖6 CO2傳感器顯示曲線
從顯示曲線可以看出,該系統(tǒng)可以在不同的通信傳輸方法下實(shí)時(shí)地采集各類傳感器的數(shù)據(jù),并監(jiān)測(cè)不同參數(shù)的模擬量數(shù)值和變化趨勢(shì),滿足了不同接口類型和傳輸速率的需求。
經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,基于VS2010平臺(tái)開(kāi)發(fā)的數(shù)據(jù)采集系統(tǒng)上位機(jī)軟件實(shí)現(xiàn)了與不同接口間的數(shù)據(jù)通信,同時(shí)能夠保證采集數(shù)據(jù)的完整、安全與正確,界面友好,操作簡(jiǎn)便,顯示直觀,具有良好的擴(kuò)展性和兼容性,為功能的擴(kuò)充和其他系統(tǒng)的集成奠定了良好的基礎(chǔ)。
[1] 祝常紅.數(shù)據(jù)采集與處理技術(shù)[M].北京:電子工業(yè)出版社,2008.
[2] 王琳,商周,王學(xué)偉.數(shù)據(jù)采集系統(tǒng)的發(fā)展與應(yīng)用[J].電測(cè)與儀表,2004,41(8):4~8.
[3] 孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[4] 劉爽,史國(guó)友,張遠(yuǎn)強(qiáng).基于TCP/IP協(xié)議和多線程的通信軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(7):1417~1420.
[5] 崔巖松,段大高,鄧中亮.USB接口的實(shí)時(shí)數(shù)據(jù)采集卡的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2004,(8):43~45.
[6] 夏益民,王光君.基于USB的高速數(shù)據(jù)采集系統(tǒng)[J].國(guó)外電子元器件,2003,(10):33~38.
[7] 吳勝勇,張勝,孫小飛. TeeChart圖形控件在通信檢測(cè)軟件中的使用[J].網(wǎng)絡(luò)與通信,2009,22(37):88~98.
[8] 王武生,韓艷,倪宏革.基于ADO的SQL Server數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的研究[J].微機(jī)發(fā)展,2003,13(11):95~98.
[9] 鄒建.SQL Server 2000開(kāi)發(fā)、管理與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2008.
DesignandImplementationofDataAcquisitionSystemBasedonVC++
GE Wan-ning, JIANG Ming-shun, ZHANG Fa-ye, ZHANG Lei, SUI Qing-mei
(SchoolofControlScienceandEngineering,ShandongUniversity,Jinan250061,China)
Basing on VS2010 platform, making use of VC++ to develop a data acquisition system suitable for RS232, USB and TCP/IP protocol communication interfaces was implemented to realize communication between the monitoring computer and the embedded instrument and to meet data acquisition and processing of different sensors. The experimental results verify stability of the system software.
data acquisition system, VC++, software design
TP274+.2
A
1000-3932(2016)11-1186-04
2016-09-20(修改稿)
國(guó)家自然科學(xué)基金項(xiàng)目(61174018,41472260,61505097);山東大學(xué)基本科研業(yè)務(wù)費(fèi)項(xiàng)目(2014YQ009)