




已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于VI服務(wù)器與隊(duì)列的程序架構(gòu),Cedar 2009-09-03,應(yīng)用領(lǐng)域,自動(dòng)化測(cè)試系統(tǒng)(ATE),挑戰(zhàn),以往的教材中著重強(qiáng)調(diào)了某一個(gè)功能的實(shí)現(xiàn),但是在實(shí)際應(yīng)用中一個(gè)完整的自動(dòng)測(cè)試系統(tǒng)(ATE)往往有很多功能要求實(shí)現(xiàn)。 由于ATE(auto test system)使用的設(shè)備非常昂貴,所以要盡量減少單位產(chǎn)品所消耗的ATE工時(shí)。 針對(duì)以上要求,筆者利用隊(duì)列和VI-server創(chuàng)建測(cè)試軟件。,使用產(chǎn)品,Labview8.6,關(guān)鍵詞,Labview VI-server 并行測(cè)試 隊(duì)列 錯(cuò)誤處理,介紹,本文基于labview中的VI-server和queue的組合,開(kāi)發(fā)出可并行測(cè)試多個(gè)功能的測(cè)試軟件。 由于可根據(jù)測(cè)試軟件本身特點(diǎn)可以修改config文件,形成可測(cè)試不同產(chǎn)品的程序,從而大幅度縮短項(xiàng)目開(kāi)發(fā)周期。,正文,Labview是一種圖形化編程語(yǔ)言,比文本編程語(yǔ)言開(kāi)發(fā)時(shí)間短。 在當(dāng)今降低成本要求越來(lái)越高的時(shí)代,盡量將測(cè)試項(xiàng)目集成到一個(gè)程序已是大勢(shì)所趨。 為了縮短項(xiàng)目開(kāi)發(fā)時(shí)間,盡量利用以前的代碼也不為是一個(gè)節(jié)約成本的好辦法。,測(cè)試結(jié)構(gòu),一般的測(cè)試程序可以被分為: 初始化 等待運(yùn)行指令 進(jìn)入測(cè)試 保存測(cè)試數(shù)據(jù) 退出測(cè)試,測(cè)試流程,初始化,等待運(yùn)行指令,進(jìn)入測(cè)試,保存數(shù)據(jù),退出測(cè)試,測(cè)試流程,初始化設(shè)備:測(cè)試之前往往要首先刷新整個(gè)ATE,使得所有的測(cè)試設(shè)備能夠符合被測(cè)品(DUT)的要求。 等待運(yùn)行指令:當(dāng)外圍準(zhǔn)備好了方能進(jìn)入測(cè)試,比如被測(cè)品有沒(méi)有安裝到位?保護(hù)措施有沒(méi)有打開(kāi)?等等,而程序必須在此步等待操作者確認(rèn)完畢后方能進(jìn)入下步操作。,測(cè)試流程,進(jìn)入測(cè)試:此時(shí)PC將按照測(cè)試計(jì)劃(testplan) 規(guī)定流程,逐步對(duì)被測(cè)品進(jìn)行各項(xiàng)測(cè)試,要求的測(cè)試項(xiàng)往往很多,如按照串行順序測(cè)試將消耗很多工時(shí),這時(shí)如將互不影響的測(cè)試項(xiàng)并行測(cè)試將大大減少工時(shí)。 保存數(shù)據(jù):為了方便統(tǒng)計(jì)分析,往往要求對(duì)測(cè)試數(shù)據(jù)進(jìn)行保存,一般的情況是本機(jī)(local)要求一份,服務(wù)器要求一份。 退出測(cè)試:所有測(cè)試項(xiàng)完成且保存完數(shù)據(jù)后將ATE進(jìn)入保護(hù)狀態(tài)以防止更換被測(cè)品帶來(lái)?yè)p傷。,基本測(cè)試程序架構(gòu),測(cè)試程序架構(gòu)比較,根據(jù)以上的要求我們可以編寫(xiě)相應(yīng)的代碼 第一種:使用error-handle串行,這張圖想必看過(guò)清華出版軟件工程在labview中的應(yīng)用的人都不會(huì)陌生,這個(gè)順序看起來(lái)很好,簡(jiǎn)單而又準(zhǔn)確,但是如果想添加一個(gè)新?tīng)顟B(tài)或者改變一下這些狀態(tài)的順序,該怎么辦?這些恐怕要涉及到刪除源代碼以及移動(dòng)VI。所以這種結(jié)構(gòu)不適合開(kāi)發(fā)一些大型的測(cè)試項(xiàng)目。,測(cè)試程序架構(gòu)比較,第二種:狀態(tài)機(jī) 定義:狀態(tài)機(jī)是一種具有指定數(shù)目的狀態(tài)的概念機(jī),在某個(gè)時(shí)刻僅處于一個(gè)狀態(tài)。狀態(tài)的轉(zhuǎn)變是由輸入事件引起的狀態(tài)變化的,作為輸入事件的相應(yīng),系統(tǒng)可能轉(zhuǎn)變到相同或不同的狀態(tài),而輸出事件可能是任意產(chǎn)生的。 就以軟件工程在labview中的應(yīng)用書(shū)中的洗衣機(jī)為例。流程圖見(jiàn)下圖,測(cè)試程序架構(gòu)比較,測(cè)試程序架構(gòu)比較,上圖是洗衣機(jī)的分層結(jié)構(gòu)圖,可選擇每個(gè)狀態(tài)和輸出條件。,測(cè)試程序架構(gòu)比較,上圖顯示的就是狀態(tài)機(jī)基本結(jié)構(gòu),開(kāi)始條件輸入進(jìn)移位寄存器,然后將之傳送給case語(yǔ)句。,測(cè)試程序架構(gòu)比較,測(cè)試程序架構(gòu)比較,另一種狀態(tài)機(jī),在實(shí)際使用中測(cè)試流程在測(cè)試前就已經(jīng)規(guī)定好了,一般使用數(shù)組這就不需要用到enum控件,使用delete from array.vi讓測(cè)試項(xiàng)逐次運(yùn)行,如測(cè)試項(xiàng)出現(xiàn)異常,則選擇下面的測(cè)試項(xiàng),上圖如出現(xiàn)異常則進(jìn)入“end”測(cè)試項(xiàng)。,測(cè)試流程,Delete from array,選擇,測(cè)試程序架構(gòu)比較,上圖所示的結(jié)構(gòu)是很多ATS使用的結(jié)構(gòu),此結(jié)構(gòu)比error-handle結(jié)構(gòu)優(yōu)秀,特別是其中的錯(cuò)誤處理功能。 但筆者在實(shí)際使用中,發(fā)現(xiàn)此結(jié)構(gòu)還是有一定的缺陷: 第一,如果要新增test3測(cè)試項(xiàng),只有打開(kāi)mainvi增加代碼,雖然只是簡(jiǎn)單的增加一個(gè)case結(jié)構(gòu)但是也需要重新debug整個(gè)程序,其中就隱含了不確定因素增加了風(fēng)險(xiǎn); 第二,如果test1和test2兩個(gè)測(cè)試項(xiàng)互不影響可以并行測(cè)試,但這種結(jié)構(gòu)只能串行測(cè)試?yán)速M(fèi)了寶貴的測(cè)試時(shí)間。,測(cè)試程序架構(gòu)比較,針對(duì)以上兩個(gè)問(wèn)題筆者使用兩種方法解決 第一,使用vi-server避免修改mainvi,vi-server是labview獨(dú)有的技術(shù),將代碼調(diào)入內(nèi)存執(zhí)行,執(zhí)行完成后釋放內(nèi)存,(具體可參考清華出版Labview高級(jí)程序設(shè)計(jì))筆者將所有的testvi做成標(biāo)準(zhǔn)格式,每個(gè)測(cè)試項(xiàng)功能相當(dāng)于狀態(tài)機(jī)中的一個(gè)case結(jié)構(gòu),這樣可以將testvi和mainvi分離,兩者之間使用 vi-server銜接,如果測(cè)試項(xiàng)修改,增加,刪除。只需要更改config文件,不需要更改mainvi,避免了風(fēng)險(xiǎn)的產(chǎn)生。代碼見(jiàn)下圖,測(cè)試程序架構(gòu)比較,其中的LOG,FMT,result,error out各有用處,下一部分將對(duì)此詳細(xì)講解。,測(cè)試程序架構(gòu)比較,上面是vi-server的前后面板,由此得知所有的testvi必須要有LOG,FMT,result,error out這幾個(gè)控件。,測(cè)試程序架構(gòu)比較,下圖為一個(gè)標(biāo)準(zhǔn)的testvi樣板,必須要有FMT,LOG,result,error out幾個(gè)輸入項(xiàng)。把testvi統(tǒng)一成一個(gè)樣式,這樣可以方便mainvi的調(diào)用。,測(cè)試程序架構(gòu)比較,第二;針對(duì)并行測(cè)試,我們可以創(chuàng)立兩個(gè)線程:masterthread;slavethread.,masterthread,slavethread,測(cè)試程序架構(gòu)比較,上圖創(chuàng)建了兩個(gè)隊(duì)列masterthread;slavethread 把可以并行測(cè)試的測(cè)試項(xiàng)組成兩個(gè)字符串?dāng)?shù)組,寫(xiě)入兩個(gè)隊(duì)列,由于labview是自動(dòng)實(shí)現(xiàn)多線程的,所以可以達(dá)到并行測(cè)試目的。 必須將vi-server這個(gè)vi設(shè)置為“preallocate done for each instance”模式,具體方法為:filevi propertiesexecutionexecution reentrant.設(shè)置這個(gè)模式方能在兩個(gè)線程中同時(shí)調(diào)用此vi。否則只能一個(gè)線程釋放后另一線程才能使用此vi,喪失了并行測(cè)試的意義。,例程講解,筆者針對(duì)以上所述的內(nèi)容,創(chuàng)建了一套demo程序。,例程講解,例程講解,1,2,3,4,例程講解,上面兩幅是程序的前面板。 在ATS中,操作者只需要知道有沒(méi)有通過(guò)測(cè)試,所以前面板盡量少安排控件。 控件作用講解: 1.這是一個(gè)eunm控件,用來(lái)顯示有幾種testplan,并選擇相對(duì)應(yīng)的testplan. 2.這是一個(gè)布爾控件,點(diǎn)擊后進(jìn)入測(cè)試狀態(tài),注意此控件要選擇“l(fā)atch when release”機(jī)械狀態(tài)。,例程講解,3.3和4 都是TAB結(jié)構(gòu)里面的一頁(yè),3里面是一個(gè)string控件,用來(lái)顯示被測(cè)品當(dāng)前狀態(tài);4是一個(gè)table控件,用來(lái)顯示被測(cè)品的測(cè)試狀態(tài)。,例程講解,1,2,3,例程講解,上圖為例程的代碼部分 1.這是程序的主體部分,使用的順序結(jié)構(gòu),其中包括初始化,等待指令,進(jìn)入測(cè)試,保存數(shù)據(jù),退出測(cè)試。后面將對(duì)此詳細(xì)講解。 2.2和3 是兩個(gè)隊(duì)列,用來(lái)在前面板顯示數(shù)據(jù)并對(duì)之進(jìn)行必要的處理(自動(dòng)翻頁(yè),錯(cuò)誤顯示紅色,等等)他們分別對(duì)應(yīng)前面板的string&table控件,這是采用NI推薦使用的生產(chǎn)消費(fèi)模式,在主體產(chǎn)生的數(shù)據(jù)同時(shí)被寫(xiě)進(jìn)隊(duì)列將顯示部分獨(dú)立于其他部分。,例程講解,1,例程講解,上圖是主體程序的第一步,作用是初始化。因是demo程序,沒(méi)有刷新硬件部分,筆者只放了讀取testplan List的部分,將config里面所有文件名讀出并將他們顯示在enum控件。正常程序中要將config,testdata,mainvi,drivervi,這些文件夾會(huì)整體放入一個(gè)文件夾,盡量避免使用固定的文件夾如“c:test”等等,這樣方便保存修改的記錄也方便拷貝到其他電腦上出現(xiàn)找不到某個(gè)vi的情況。,例程講解,例程講解,上圖顯示的是程序的第二頁(yè),內(nèi)容是等待指令。 筆者使用的是while循環(huán)套一個(gè)事件結(jié)構(gòu),只有操作者觸發(fā)布爾控件的值發(fā)生變化才會(huì)觸發(fā)這個(gè)事件,而事件結(jié)構(gòu)內(nèi)有個(gè)true常量會(huì)輸入到while循環(huán),從而退出循環(huán)進(jìn)入下一步。,例程講解,2,3,1,例程講解,上圖是進(jìn)入測(cè)試部分: 1.讀取操作者選取的testplan名稱,并根據(jù)這個(gè)找到對(duì)應(yīng)的config文件。 2.讀取config文件中testflow,將之轉(zhuǎn)化為字符串?dāng)?shù)組,并寫(xiě)入testflow隊(duì)列中。 3.將string&table兩個(gè)控件清零。,例程講解,1,3,2,4,5,A,例程講解,上圖是本程序的重點(diǎn)部分 1.讀取上頁(yè)寫(xiě)入testflow隊(duì)列的數(shù)據(jù),并根據(jù)此依次讀出主從線程的測(cè)試項(xiàng)。此功能依靠read sub config.vi 實(shí)現(xiàn)(見(jiàn)上圖的A點(diǎn))具體代碼見(jiàn)下面的附件,讀出兩個(gè)線程的測(cè)試項(xiàng)同時(shí)將他們寫(xiě)入masterthread&slavethread這兩個(gè)隊(duì)列中。,例程講解,2.從read sub config讀出的主從流程,將被寫(xiě)入masterthread&slavethread兩個(gè)隊(duì)列,請(qǐng)注意3下面的子vi,他必須設(shè)為preallocate done for each instance模式,因?yàn)閮蓚€(gè)線程可能同時(shí)調(diào)用這個(gè)vi。labview中如果隊(duì)列沒(méi)有元素了,那么dequeue element.vi將處在等待狀態(tài)無(wú)法正常退出,所以創(chuàng)建watch dog.vi的作用就是當(dāng)隊(duì)列中沒(méi)有元素了,此隊(duì)列將被release,從而dequeue element.vi可以退出等待狀態(tài),進(jìn)入程序的下一步。代碼見(jiàn)附件。,例程講解,例程講解,上圖是進(jìn)入測(cè)試的最后部分,因?yàn)閟tring&table控件處理需要時(shí)間,往往出現(xiàn)所有的測(cè)試項(xiàng)都已經(jīng)運(yùn)行完畢但是數(shù)據(jù)處理并沒(méi)有完成,這時(shí)候就必須放置等待功能,每隔0.1s輪詢一次兩個(gè)隊(duì)列,如果里面有元素就繼續(xù)等待,沒(méi)有則rel
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程經(jīng)濟(jì)考試包含的主要知識(shí)點(diǎn)試題及答案
- 2025大連簽訂住宅用地開(kāi)發(fā)合同
- 重慶兩江新區(qū)遴選事業(yè)單位考試真題2024
- 2025年工程項(xiàng)目管理市場(chǎng)變化試題及答案
- 中級(jí)經(jīng)濟(jì)師沖刺資料試題及答案
- 公共關(guān)系傳播渠道研究試題及答案
- 工程市場(chǎng)分析試題及答案
- 2025年土地租賃征收合同
- 投資決策模型分析試題及答案
- 工程經(jīng)濟(jì)考點(diǎn)明確化試題及答案
- 五年級(jí)小數(shù)乘法練習(xí)題300道及答案
- 萬(wàn)達(dá)商家入駐商場(chǎng)合同(2024版)
- 【課件】初心與使命-時(shí)代的美術(shù)擔(dān)當(dāng)+課件-高中美術(shù)人美版(2019)美術(shù)鑒賞
- DLT 722-2014 變壓器油中溶解氣體分析和判斷導(dǎo)則
- 北師大版五年級(jí)下冊(cè)英語(yǔ)教案
- 鋁合金薄板的熱處理工藝與性能的研究
- 四川省成都市郫都區(qū)2023-2024學(xué)年數(shù)學(xué)五下期末調(diào)研試題含解析
- 四年級(jí)數(shù)學(xué)思維訓(xùn)練題
- DB63T 2286-2024 電化學(xué)儲(chǔ)能電站消防設(shè)施要求
- DZ/T 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范(正式版)
- DB43-T 2927-2024 中醫(yī)護(hù)理門(mén)診建設(shè)與管理規(guī)范
評(píng)論
0/150
提交評(píng)論