任世錦,趙恒青,鄭恩輝,付美芹
(1.徐州師范大學(xué) 計算機學(xué)院,江蘇 徐州 221116;2.中國計量學(xué)院 機電工程學(xué)院,浙江 杭州 310018)
隨著信息技術(shù)的發(fā)展,社會對測控儀器的需求不斷增加,因而對計算機軟硬件綜合設(shè)計和開發(fā)能力的要求也越來越高。然而,計算機專業(yè)普遍存在“重軟輕硬”的現(xiàn)象,學(xué)生綜合應(yīng)用計算機專業(yè)知識能力和測控產(chǎn)品開發(fā)能力較差,降低了學(xué)生的就業(yè)競爭力和發(fā)展?jié)摿Αa槍ι鲜鰡栴},基于提高計算機應(yīng)用系統(tǒng)綜合設(shè)計能力要求,充分利用自動測試技術(shù)、計算機技術(shù)、網(wǎng)絡(luò)通信技術(shù),結(jié)合科研和測控儀器開發(fā)的需要,適應(yīng)測控儀器向網(wǎng)絡(luò)化、虛擬化、集成化方向發(fā)展的趨勢[1-3],設(shè)計了網(wǎng)絡(luò)化虛擬測控系統(tǒng)。
網(wǎng)絡(luò)化虛擬測控系統(tǒng)基于Labview環(huán)境下開發(fā)的,從機為基于Nios II軟核微處理機系統(tǒng)的片上系統(tǒng)(SOPC),其主要功能為多通道模擬信號的采集、外部設(shè)備控制、與主機的通信、傳感器信號調(diào)理等;主機主要完成外部信號、數(shù)據(jù)處理與存儲、系統(tǒng)參數(shù)設(shè)置、顯示以及人機交互等。整個系統(tǒng)設(shè)計工作包括PCI接口卡設(shè)計及其驅(qū)動程序設(shè)計、虛擬儀器應(yīng)用軟件和SOPC系統(tǒng)定制、仿真及其從機軟件設(shè)計。該系統(tǒng)不僅提供二次開發(fā)接口,而且能夠配置、自動檢測外部設(shè)備變化,能夠應(yīng)用于科研、教學(xué)和實際測控,具有很強的靈活性、先進性和應(yīng)用價值。
借鑒虛擬儀器思想,把虛擬儀器技術(shù)引入測控系統(tǒng),組成以SOPC系統(tǒng)可配置數(shù)據(jù)采集模塊、PCI總線接口卡、虛擬儀器應(yīng)用軟件于一體的網(wǎng)絡(luò)化虛擬測控系統(tǒng)(如圖1所示)。系統(tǒng)的硬件設(shè)計包括PCI接口卡設(shè)計、基于NIOS II軟核的SOPC硬件系統(tǒng)的定制;軟件系統(tǒng)設(shè)計包括PCI接口卡驅(qū)動程序、SOPC軟件以及虛擬儀器應(yīng)用軟件、管理軟件的設(shè)計。虛擬儀器應(yīng)用軟件主要完成數(shù)字信號處理、分析、顯示以及存儲,服務(wù)器端軟件,多通道數(shù)據(jù)采集參數(shù)與工作方式的設(shè)置;管理軟件提供上傳、下載以及與儀器的無縫連接。為降低系統(tǒng)的開發(fā)難度、提高系統(tǒng)的可靠性和使用性,系統(tǒng)軟件基于虛擬儀器軟件Labview與Matlab混合編程方法,充分利用了Labview軟件的強大數(shù)據(jù)采集、分析與表達(dá)、圖形表示能力以及Matlab語言的豐富的工具箱和強大的計算能力,簡化了儀器軟件的編程,縮短了開發(fā)時間。主機系統(tǒng)通過 PCI接口卡與SOPC系統(tǒng)進行的信息交換,SOPC系統(tǒng)可以獨立工作以及外部設(shè)備進行通信,有效降低分布式測控系統(tǒng)的成本。
圖1 網(wǎng)絡(luò)化虛擬測控系統(tǒng)結(jié)構(gòu)圖Fig.1 Configuration of network virtual measurement and control system
虛擬測控系統(tǒng)硬件系統(tǒng)包括PCI接口卡和基于Nios II的嵌入式SOPC系統(tǒng)。PCI接口卡采用PLX公司生產(chǎn)的PCI 9054接口芯片,采用PCI9054局部總線工作模式C,該模式時序控制比較簡單,非復(fù)用32位地址/數(shù)據(jù)總線,PCI總線通過PCI9054內(nèi)部FIFO實現(xiàn)對局部總線進行單周期的I/O讀寫操作,支持DMA操作[4]。為提高計算機與SOPC系統(tǒng)之間的數(shù)據(jù)傳輸效率,借鑒文獻(xiàn)[5]的設(shè)計方法,PCI接口卡使用2片雙向FIFO存儲器IDT7204(4k×9)實現(xiàn)支持DMA操作,分別用于PCI總線讀寫數(shù)據(jù),其讀寫邏輯信號FPGA實現(xiàn),DMA傳輸時序如圖2所示[4],其對應(yīng)的FPGA讀寫邏輯狀態(tài)圖可表示為圖3所示。
圖2 PCI9054 DMA時序圖Fig.2 Temporal logic of PCI9054 DMA
圖3 DMA讀數(shù)據(jù)狀態(tài)圖Fig.3 Reading state-chart of DMA
相對于 PCI9054, HOLD、ADS#、BLAST、LWR#、LA[31..2]為輸出信號,READY#、LHOLDA 為輸入信號,LD[31..0]是雙向信號。由于本實驗儀器數(shù)據(jù)傳輸寬度為8位,局部地址線最低2位LA0和 LA1分別由BE0和BE1信號提供,數(shù)據(jù)對齊方式采用大端模式(由BIGEND#引腳及寄存器決定的)。對Local端為I/O類型的引腳,需要根據(jù)實際情況和引腳極性上拉或下拉電阻,如ADS#、HOLD、局部地址信號等。圖3中DMA方式讀數(shù)據(jù)邏輯狀態(tài)圖轉(zhuǎn)換描述如下:當(dāng)檢測到HOLD=1時,在下個時鐘周期賦值HOLDA=1,轉(zhuǎn)到狀態(tài)S1;ADS#下降沿到達(dá)時,從LA[31..2]及 BE1、BE0讀取地址,轉(zhuǎn)到狀態(tài)S2;如果 LWR#=1(讀數(shù)據(jù))且 BLAST=1、READY#=0,轉(zhuǎn)到狀態(tài)S3;在下一個時鐘周期上升沿從本地數(shù)據(jù)總線LD[0..7]把數(shù)據(jù)讀入到PCI9054內(nèi)部,循環(huán)讀取數(shù)據(jù)直至BLAST信號下降沿出現(xiàn),轉(zhuǎn)到 S4;如果 HOLD=1、HOLDA=1,則轉(zhuǎn)到 S1,否則轉(zhuǎn)到S0。
SOPC系統(tǒng)使用CYCLONE II系列可編程邏輯器件EP2C5F256C8,通過SOPC Builder定制和仿真NiosII微處理器及其外圍系統(tǒng),包括軟核CPU、并行輸入輸出(PIO)、多通道A/D及D/A轉(zhuǎn)換控制邏輯、UART串行接口、網(wǎng)絡(luò)控制邏輯、計數(shù)器/定時器、雙口FIFO控制器、SRAM控制器以及FLAS H控制器等外圍設(shè)備組成等。其中,PIO用于SOPC系統(tǒng)與外部設(shè)備的數(shù)字量輸入輸出;網(wǎng)絡(luò)控制邏輯與以太網(wǎng)接口芯片LAN91C111實現(xiàn)SOPC系統(tǒng)與外部設(shè)備之間的網(wǎng)絡(luò)通信。LAN91C111是SMSC公司生產(chǎn)的10M/100M以太網(wǎng)接口控制芯片,它通過8、16、32位總線與嵌入系統(tǒng)連接,是理想的NIOSII微處理系統(tǒng)以太網(wǎng)解決方案[6]。上述接口控制邏輯均由SOPC Builder工具選擇相應(yīng)的IP核及其相應(yīng)的VHDL,通過編譯整個系統(tǒng)建立一個完整的嵌入式系統(tǒng)。SOPC系統(tǒng)不僅接收主機命令以及數(shù)據(jù)傳輸,而且可以與其他外部設(shè)備進行通信。
為保證測控系統(tǒng)的可靠性和通用性,電路設(shè)計采用以下關(guān)鍵技術(shù):
1)多通道模擬信號采集與控制 該模塊由輸入信號差模轉(zhuǎn)換電路、8選1模擬開關(guān)MPC508A、AD公司的集成程控信號放大器AD620、跟隨器、1片采樣速率高達(dá)2.2 MHz、14位高速模數(shù)轉(zhuǎn)換器MAX1201、緩沖驅(qū)動電路以及光電耦合隔離器TIL300電路組成。其工作過程為,多路輸入模擬量(0~5 V)首先由低噪聲、寬頻帶運算放大器MAX4108組成差分電路把傳感器信號轉(zhuǎn)化為差分信號來消除電路干擾,并由模擬選擇開關(guān)ADG526A選通一路模擬信號,然后經(jīng)過程控信號放大器AD620放大同時使輸入信號由差分轉(zhuǎn)化為單端信號進入A/D轉(zhuǎn)換器MAX1201。MAX1201輸出的數(shù)字信號經(jīng)過光電耦合隔離器進入FIFO緩沖區(qū),緩沖區(qū)滿時通過向單片機或PC機發(fā)出中斷請求信號實現(xiàn)數(shù)據(jù)的讀取。
程控信號放大器 AD620的增益放大倍數(shù)有×1、×2、×10、×100、×1 000五檔,由 FPGA中的信號通道控制邏輯[4]控制AD620的放大倍數(shù),提高對傳感器信號的適應(yīng)性。模數(shù)轉(zhuǎn)換器MAX1201內(nèi)部有數(shù)字誤差自校正和自校正功能,具有良好的信噪比和抗諧波失真特性。差分轉(zhuǎn)換電路不僅能夠提高抗干擾性能,而且還可以增大信號的量程。采用A/D轉(zhuǎn)換器MAX1201的目的是,提高信號的轉(zhuǎn)換精度,并且接口電路簡單、便于與FIFO連接。MAX1201的工作方式分為程序啟動、外部觸發(fā)信號啟動。A/D轉(zhuǎn)換速率由SOPC系統(tǒng)定時器產(chǎn)生的波形頻率控制,根據(jù)A/D轉(zhuǎn)換結(jié)束標(biāo)志由FPGA中的采樣控制邏輯自動完成采樣數(shù)據(jù)的存儲。
2)電路隔離 實驗系統(tǒng)由模擬數(shù)字混合電路組成,存在大量的干擾。比如前置電路部分存在共模干擾和差模干擾,數(shù)字系統(tǒng)的高頻干擾容易進入模擬部分,外設(shè)信號還常常會受到電源波動、強脈沖等干擾。上述干擾不僅會影響模擬信號采集的精度,嚴(yán)重時會影響電路的穩(wěn)定性乃至計算機的工作。因此,實驗系統(tǒng)需要對所有的輸入、輸出信號均進行了隔離。
本文基于線性光耦TIL300模擬量輸入輸出實現(xiàn)隔離(如圖 4a),其中,U1A、U2A 為運算放大器 LF356,共同組成偏置電路;U2補償U1的傳輸特性與溫度漂移,保證U1的線性度;U3為輸入差分運放電路,提高輸入信號的抗干擾能力;模擬量隔離電路可以有效地提高脈沖量、階躍信號由光電耦HCPL22631隔離;數(shù)字量采用TTL113光電耦合器隔離,也可采用脈沖變壓器隔離。需要指出的是,光電耦合器輸出驅(qū)動能力非常有限,必須增加負(fù)載驅(qū)動電路,數(shù)字量除數(shù)隔離電路需要驅(qū)動電路。除了對所有的輸入輸出信號隔離外,實驗硬件系統(tǒng)還把模擬電路地與數(shù)字電路分開布線,并使用如圖4(b)所示的電路隔離模擬與數(shù)字地和電源。上述措施不僅能夠防止數(shù)字系統(tǒng)的高頻干擾進入模擬電路部分,而且阻斷了來自前置電路部分的共模干擾和差模干擾。
圖4 信號隔離電路Fig.4 Signal isolation circiut
3)電壓轉(zhuǎn)換 由于SOPC系統(tǒng)和PCI9054使用計算機提供的3.3 V電源,而RS232輸出電平為-10~+10 V,且不少器件需要5 V電源。電路中使用電源轉(zhuǎn)換器LTC1872把輸入3.3 V轉(zhuǎn)換為 5 V輸出電源(圖5),使用MAX232實現(xiàn)RS232與5 V電壓之間的轉(zhuǎn)換。
圖5 3.3 V轉(zhuǎn)換5 V電路Fig.5 Transformation circuit between 3.3V and 5V
軟件系統(tǒng)是網(wǎng)絡(luò)化虛擬測控系統(tǒng)的核心,系統(tǒng)軟件主要由虛擬儀器軟件、PCI接口卡驅(qū)動程序以及SOPC軟件組成。虛擬儀器軟件利用Lab Windows/CVI自帶的強大測控工具以及豐富的功能面板和庫函數(shù),采用事件驅(qū)動、交互式與回調(diào)函數(shù)編程技術(shù)[7],設(shè)計開發(fā)了信號采集與轉(zhuǎn)換、數(shù)字信號處理與分析、數(shù)據(jù)存儲與顯示、外部設(shè)備配置等模塊,使用到的技術(shù)主要有:
1)Matlab與Labview混合編程 Matlab語言已經(jīng)成為科研人員有力的仿真分析工具,幾乎滲透到各個學(xué)科。雖然Matlab擁有很強的數(shù)據(jù)分析處理以及復(fù)雜數(shù)值計算能力,但是其在界面開發(fā)、硬件連接控制及網(wǎng)絡(luò)通信等方面都不如Labview。將Matlab和Labview結(jié)合是提高測控儀器精度、可靠性、擴展性以及開發(fā)效率的有效途徑。
Matlab與Labview混合編程方法有兩種:①直接調(diào)用Labview內(nèi)建的600多條Matlab函數(shù);②通過Matlab(Ver6.5)ActiveX接口調(diào)用運行Matlab函數(shù)、與Matlab數(shù)據(jù)交換以及控制Matlab窗口等命令。其過程為:a.引用自動化對象:在Labview 的 Controls>>ActiveX>> Automation Refnum 模板中選擇自動化引用(Automation Refnum)控制量,將其放置在前面板上,從對象列表中選擇Matlab應(yīng)用庫。這樣Matlab的引用就添加到程序中。b.訪問Matlab自動化服務(wù)器:Labview在其Function>L>Communication>>ActiveX 模板中提供了一組與ActiveX操作相關(guān)的VI,其中Automation Open.vi打開引用,啟動Matlab自動化服務(wù)器,并將引用傳遞給其他節(jié)點,如屬性節(jié)點(Property Node)、調(diào)用方法節(jié)點(Invoke Node)。 ③ 使用Matlab Script節(jié)點。Labview使用ActiveX技術(shù)執(zhí)行Matlab Script節(jié)點,啟動Matlab進程。這樣可以在Labview應(yīng)用程序中使用執(zhí)行Matlab命令、使用各種工具箱。圖6為Labview調(diào)用Matlab語言中6階巴特沃斯(Butterworth)濾波器對正弦函數(shù)的濾波實驗結(jié)果。
圖6 濾波實驗Fig.6 Filter experiment
2)基于LabSQL的數(shù)據(jù)庫訪問 虛擬儀器應(yīng)用程序需要對采集數(shù)據(jù)以及數(shù)據(jù)分析結(jié)果進行存儲和訪問,Labview提供了類似SQL的數(shù)據(jù)庫訪問方法。用戶首先在ODBC中指定DSN(數(shù)據(jù)源名)和 ODBC驅(qū)動程序,由 LabSQL Connection VIs通過ODBC建立LabSQL與數(shù)據(jù)庫連接。然后利用LabSQL Command VIs完成ADO操作以及Recordset VIs對數(shù)據(jù)庫記錄操作,實現(xiàn)應(yīng)用程序與數(shù)據(jù)庫之間的數(shù)據(jù)交互傳遞。
3)基于DataSocket建立客戶機/服務(wù)器測控系統(tǒng) 對于網(wǎng)絡(luò)化測控系統(tǒng),由于把各節(jié)點數(shù)據(jù)匯總到處理主機,設(shè)計上采用DataSocket技術(shù)建立客服務(wù)器/客戶端 (C/S)通信模式。主機工作于服務(wù)器模式,負(fù)責(zé)相應(yīng)客戶端的請求以及采集、存儲和處理數(shù)據(jù),客戶端數(shù)據(jù)點計算機工作于Client模式,實現(xiàn)數(shù)據(jù)傳送。利用DataSocket發(fā)布數(shù)據(jù)需要3個要素:服務(wù)器(DataSocket Server),負(fù)責(zé)把數(shù)據(jù)寫到服務(wù)器的發(fā)布器(Publisher),客戶機從服務(wù)器讀取數(shù)據(jù)的訂閱器(Subscriber)。其工作過程為:①客戶端和服務(wù)器端分別運行DataSocket Server;②建立客戶端與服務(wù)器端DataSocket的連接;③客戶端接收和顯示測量數(shù)據(jù):客戶只需通過DataSocket Server發(fā)送請求即可實現(xiàn)數(shù)據(jù)的接收,這樣客戶機通過控制服務(wù)器端軟件實現(xiàn)遠(yuǎn)程測控。
4)WDM驅(qū)動程序設(shè)計 由于該系統(tǒng)基于PCI接口卡,因此需要開發(fā)windows環(huán)境下的PCI接口卡驅(qū)動程序。綜合考慮驅(qū)動程序的效率和靈活性,系統(tǒng)選用windows DDK與VC++語言開發(fā)PCI接口卡驅(qū)動程序。驅(qū)動程序主要包括初始化模塊、內(nèi)存讀寫模塊、I/O操作模塊、中斷模塊以及WDM與應(yīng)用程序的通信模塊,詳細(xì)設(shè)計可以參考文獻(xiàn)[4-5,8],在此不再詳述。
本文設(shè)計的網(wǎng)絡(luò)化虛擬測控系統(tǒng)具有硬件模塊化、網(wǎng)絡(luò)化、開放性以及操作方便等特點,適應(yīng)了當(dāng)前測控儀器向網(wǎng)絡(luò)化和虛擬化方向發(fā)展的趨勢,因而具有較強的應(yīng)用性和擴充性。
文中介紹了系統(tǒng)的設(shè)計與相關(guān)模塊的實現(xiàn),并簡要說明了關(guān)鍵軟件模塊的設(shè)計方法。需要指出的是,本文設(shè)計的網(wǎng)絡(luò)化虛擬測控系統(tǒng)具有教學(xué)和科研雙重價值,對本系統(tǒng)增加新的硬件模塊或者修改虛擬儀器應(yīng)用軟件可以完成不同的測試任務(wù)和控制任務(wù)。今后還需要在硬件模塊標(biāo)準(zhǔn)化,硬件模塊的故障監(jiān)測與故障修復(fù),物聯(lián)網(wǎng)在虛擬測控儀器上應(yīng)用,分布式網(wǎng)絡(luò)化測控系統(tǒng)的拓?fù)浣Y(jié)構(gòu)等方面進行研究。
[1]湯寶平,趙潔,姚金寶.遠(yuǎn)程操控現(xiàn)有虛擬儀器的通用網(wǎng)絡(luò)引擎研究[J].儀器儀表學(xué)報, 2008, 29(10):2041-2046.TANG Bao-ping, ZHAO Jie, YAO Jin-bao.Research on general network engine for remote operation and control of existing virtual instrument[J].Chinese Journal of Scientific Instrument, 2008 ,29(10):2041-2046.
[2]楊秀增,孫友明.基于Nios II的高精度多路溫度測量系統(tǒng)設(shè)計[J].儀表技術(shù)與傳感器,2010(7):72-74.YANG Xiu-zeng,SUN You-ming.Multi-channnel temperature measurement high resolution based on NiosⅡ[J].Instrument Technique and Sensor,2010(7):72-74.
[3]葉時平,歐陽楊,董亞波,等.基于Web的數(shù)字電子虛擬實驗系統(tǒng)平臺[J].系統(tǒng)仿真學(xué)報,2008,20(8):2092-2096.YE Shi-ping,OUYANG Yang,DONG Ya-bo et al.Web-based virtual laboratory platform for digital circuit experiment[J].Journal of System Simulation,2008, 20(8):2092-2096.
[4]方慶山.基于PCI總線的數(shù)據(jù)采集卡設(shè)計[D].南京:南京理工大學(xué),2008.
[5]熊煒.基于PCI總線和雙端口緩存的高速數(shù)據(jù)采集卡的研究與開發(fā)[D].武漢:華中師范大學(xué),2006.
[6]左震,鄧黠,唐貴林,等.基于Nios軟核處理器的以太網(wǎng)接口設(shè)計[J].計算機測量與控制,2009,17(4):763-766.ZUO Zhen,DENG Jie,TANG Gui-lin,et al.Design of an ethernet interface based on the nios soft-core processor[J].Computer Measurement&Control, 2009,17(4):763-766.
[7]侯國屏,王坤,葉齊鑫.L abVIEW 7.1編程與虛擬儀器設(shè)計[M].北京:清華大學(xué)出版社,2005.
[8]張帆,史彩成.Windows驅(qū)動開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.