<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于工控機(jī)的虛擬儀器軟件設(shè)計(jì)方案

          基于工控機(jī)的虛擬儀器軟件設(shè)計(jì)方案

          ——
          作者:袁昊,周蔭清,李景文,唐智 時(shí)間:2007-03-20 來(lái)源: 收藏
          引 言

          系統(tǒng)以工控機(jī)為核心,輔以一定的外圍簡(jiǎn)單電路,通過(guò)GPIB、USB以及串行通信口,把現(xiàn)有的測(cè)量?jī)x器連接起來(lái),并通過(guò)編程人員開發(fā)針對(duì)測(cè)量過(guò)程的控制軟件。測(cè)量者只需要把儀器與設(shè)備正確地連接起來(lái),向汁算機(jī)發(fā)出簡(jiǎn)單的操作指令就可以實(shí)現(xiàn)測(cè)量、數(shù)據(jù)分析、處理和記錄的全過(guò)程。

          1、作為COM 組件的測(cè)量?jī)x器

          在軟件開發(fā)中,可以先將儀器設(shè)計(jì)成COM組件。儀器的功能在C()M組件設(shè)汁中要全部實(shí)現(xiàn)并給出相應(yīng)的接口函數(shù),在軟件中通過(guò)調(diào)用這些組件來(lái)實(shí)現(xiàn)對(duì)具體儀器的操作。這樣,編程人員在開發(fā)控制軟件時(shí)可以把具體的儀器當(dāng)成組件來(lái)對(duì)待,通過(guò)組件的各個(gè)函數(shù)來(lái)完成實(shí)際儀器的各個(gè)指令操作。這樣做不但容易對(duì)硬件可能出現(xiàn)的問(wèn)題進(jìn)行排錯(cuò),而且一旦硬件更新,開發(fā)人員只需要作針對(duì)C0M的升級(jí)維護(hù)即可。

          以某型頻譜分析儀為例,設(shè)汁測(cè)量某信號(hào)在控壓變化范圍內(nèi)的雜散值的過(guò)程:

          1) 首先調(diào)整頻譜儀到對(duì)數(shù)坐標(biāo)系,并根據(jù)該信號(hào)的變化范圍設(shè)定頻譜儀的中心頻率及合適的帶寬以保證頻譜儀在控壓變化范圍內(nèi)可以捕獲信號(hào).這樣實(shí)現(xiàn)了測(cè)量雜散初始化的子過(guò)程;

          2) 在不同的控壓點(diǎn)讀取帶寬內(nèi)信號(hào)主瓣外的所有信號(hào),以最大的旁瓣值作為雜散值。為了避免信號(hào)的白噪聲影響雜散值的測(cè)量.采用同一控壓點(diǎn)測(cè)量若干組信號(hào)用軟件求平均的思路.平滑白噪聲引起的信號(hào)起伏,取平滑后的雜散值作為測(cè)量結(jié)果,這樣實(shí)現(xiàn)了測(cè)量當(dāng)前信號(hào)雜散值的子過(guò)程。

          圖1 雜散值測(cè)量流程圖
          圖1 雜散值測(cè)量流程圖

          該型頻譜儀在連續(xù)測(cè)量若干組信號(hào)求平均的過(guò)程中,相鄰兩組數(shù)據(jù)測(cè)量之間有一個(gè)工控機(jī)與頻譜儀通信的時(shí)間,這就削弱了信號(hào)的時(shí)間相關(guān)性,不利于平滑白噪聲。為了提高測(cè)量的準(zhǔn)確性,引入了可以作均值測(cè)量的頻譜儀,工控機(jī)只需讀取均值測(cè)量后主瓣外的所有信號(hào)最大值作為當(dāng)前信號(hào)雜散值即可。按上述思路重新設(shè)計(jì)頻譜儀COM組件,測(cè)量雜散值的過(guò)程還是按照上述的測(cè)量流程圖,軟件調(diào)用更新后的組件,程序員甚至可以不用改虛擬儀器軟件中的一句源代碼。

          對(duì)同一信號(hào)改進(jìn)前后軟件測(cè)出的雜散值分別為-76.3dB和-78.2dB,而用標(biāo)定設(shè)備測(cè)出的值為-78.51dB,改進(jìn)后軟件的測(cè)量值更加準(zhǔn)確。

          2、采用Access數(shù)據(jù)庫(kù)作實(shí)時(shí)測(cè)量存檔

          在測(cè)量過(guò)程中,有時(shí)設(shè)備會(huì)因?yàn)橥蝗粩嚯?、?jì)算機(jī)病毒發(fā)作等一系列不可預(yù)期的故障導(dǎo)致測(cè)量過(guò)程意外中斷,但此時(shí)用戶測(cè)量可能還沒(méi)有結(jié)束,也沒(méi)有大提交測(cè)量報(bào)表,而在系統(tǒng)內(nèi)存中的數(shù)據(jù)將會(huì)全部丟失,這對(duì)用戶來(lái)說(shuō)是非常不利的,所以必須對(duì)用戶的所有測(cè)量結(jié)果做一個(gè)實(shí)時(shí)的數(shù)據(jù)庫(kù)備份。

          對(duì)用戶測(cè)量全過(guò)程進(jìn)行監(jiān)控的數(shù)據(jù)庫(kù)采用全部?jī)?nèi)存變量存儲(chǔ)的方式,包括用戶的設(shè)定量、用戶的測(cè)量結(jié)果、用戶的操作步驟以及測(cè)量結(jié)果的自動(dòng)評(píng)判,都在數(shù)據(jù)庫(kù)中建立相應(yīng)的字段。在用戶進(jìn)行虛擬儀器操作時(shí)。每新測(cè)量一個(gè)產(chǎn)品都會(huì)以用戶填入的產(chǎn)品編號(hào)及測(cè)量時(shí)間新建一條測(cè)量記錄,操作過(guò)程中實(shí)時(shí)地把用戶的操作及結(jié)果同步提交到數(shù)據(jù)庫(kù)中,只有當(dāng)用戶全部測(cè)量完畢并保存報(bào)表之后,該條記錄才被刪除,否則記錄予以保留,留下來(lái)的某條記錄即為某個(gè)非正常退出系統(tǒng)的實(shí)時(shí)測(cè)量存檔,這就是系統(tǒng)實(shí)時(shí)測(cè)量存檔的過(guò)程。當(dāng)用戶下一次打開虛擬儀器軟件時(shí),軟件會(huì)自動(dòng)加載該數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)存在數(shù)據(jù)記錄,則在加載操作界面之后會(huì)提示用戶有以前未完成的任務(wù),讓用戶選擇是繼續(xù)未完成的任務(wù)還是刪除某次不全的測(cè)試記錄,如果選擇繼續(xù)則會(huì)給出未完成任務(wù)列表,讓用戶選擇開始某一次未完成的任務(wù),用戶選擇后會(huì)自動(dòng)把數(shù)據(jù)庫(kù)里對(duì)應(yīng)的值恢復(fù)到虛擬儀器操作界面,恢復(fù)某一次意外狀態(tài)前的結(jié)果,這樣通過(guò)系統(tǒng)的問(wèn)詢及用戶的選擇,實(shí)現(xiàn)了加載測(cè)量存檔的過(guò)程。當(dāng)然,如果用戶也可以選擇刪除某些不全但不想保留的測(cè)試記錄,對(duì)存檔數(shù)據(jù)庫(kù)進(jìn)行清理,同樣也可以選擇全新測(cè)量,開始新的操作。

          虛擬儀器軟件的工作流程如圖2所示。

          圖2 以數(shù)據(jù)庫(kù)為核心的軟件工作流程圖
          圖2 以數(shù)據(jù)庫(kù)為核心的軟件工作流程圖

          3、系統(tǒng)性能評(píng)價(jià)

          采用本文的方案,使用VB.NET程序設(shè)計(jì)語(yǔ)言開發(fā)的虛擬儀器軟件成功的應(yīng)用在某產(chǎn)品的指標(biāo)測(cè)量上。整套系統(tǒng)研發(fā)周期短、維護(hù)簡(jiǎn)單方便。而“實(shí)時(shí)測(cè)量存檔”在軟件內(nèi)部異常保護(hù)的基礎(chǔ)上又增加了一個(gè)抵御外部突發(fā)事件的能力,有效地保護(hù)了測(cè)量數(shù)據(jù)。每一個(gè)產(chǎn)品測(cè)量所需時(shí)間僅為原先人工用儀器測(cè)量的1/3~1/4(不包括后期的數(shù)據(jù)處理時(shí)間),極大地提高了生產(chǎn)效率。而整個(gè)系統(tǒng)的開發(fā)成本非常低,所有的測(cè)量?jī)x器都是利用現(xiàn)有的設(shè)備,硬件的投入只是一臺(tái)工控機(jī)和GPIB轉(zhuǎn)接卡及一些電纜。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();