電子測(cè)量?jī)x器IO模擬器設(shè)計(jì)
摘要: 本文介紹一種電子測(cè)量儀器IO模擬器實(shí)現(xiàn)方法。以網(wǎng)絡(luò)分析儀HP8753E為例討論了模擬器的部分實(shí)現(xiàn)細(xì)節(jié)及模擬結(jié)果。
關(guān)鍵詞: 儀器;IO模擬器;狀態(tài)機(jī);網(wǎng)絡(luò)分析儀
2008年4月25日收到本文。陳飛:高級(jí)工程師,研究方向?yàn)殡娮?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/測(cè)量">測(cè)量技術(shù)。
引言
自動(dòng)測(cè)試系統(tǒng)經(jīng)常使用各種電子測(cè)量儀器進(jìn)行系統(tǒng)集成。由于訂貨周期限制,這些儀器可能要到系統(tǒng)集成的后期才能到貨,因此軟件系統(tǒng)被迫延遲到到貨后才能進(jìn)行與儀器設(shè)備進(jìn)行聯(lián)調(diào)。由于聯(lián)調(diào)中發(fā)現(xiàn)的問題引發(fā)的設(shè)計(jì)更改,將大大延緩系統(tǒng)交付的時(shí)間。
通過預(yù)先得到的技術(shù)資料設(shè)計(jì)IO模擬器,模擬實(shí)際設(shè)備的IO響應(yīng),可以在儀器設(shè)備到貨前開始與軟件系統(tǒng)的聯(lián)調(diào)。另一方面,開發(fā)人員常常需要并行進(jìn)行系統(tǒng)和分機(jī)調(diào)試,采用模擬器也可解決實(shí)際設(shè)備數(shù)量限制問題,提高系統(tǒng)開發(fā)效率。
本文提出的IO模擬器,根據(jù)輸入IO數(shù)據(jù)流進(jìn)行狀態(tài)轉(zhuǎn)換,并由當(dāng)前狀態(tài)實(shí)現(xiàn)模擬數(shù)據(jù)輸出。由于采用文本格式的自定義數(shù)據(jù)文件控制模擬器實(shí)例化過程,測(cè)試系統(tǒng)內(nèi)可以同時(shí)模擬多種不同測(cè)量?jī)x器的IO響應(yīng),并具有良好的可擴(kuò)展性。本文引用地址:http://2s4d.com/article/85399.htm
模擬器工作原理
如圖1所示,應(yīng)用程序的IO操作由虛擬IO驅(qū)動(dòng)程序傳遞入模擬設(shè)備。IO模擬器通過加載描述設(shè)備工作模式的數(shù)據(jù)文件實(shí)現(xiàn)設(shè)備IO行為仿真。當(dāng)物理IO驅(qū)動(dòng)與虛擬IO驅(qū)動(dòng)程序繼承于同一個(gè)父類時(shí),應(yīng)用程序可以通過配置驅(qū)動(dòng)程序在運(yùn)行時(shí)進(jìn)行物理設(shè)備IO與模擬設(shè)備IO的動(dòng)態(tài)切換。對(duì)實(shí)際設(shè)備的寫入操作就自動(dòng)轉(zhuǎn)發(fā)給模擬設(shè)備,并由模擬設(shè)備對(duì)讀出等操作進(jìn)行響應(yīng),返回相應(yīng)數(shù)據(jù)流到應(yīng)用程序。
圖1 模擬器工作原理示意圖
IO模擬器根據(jù)數(shù)據(jù)文件實(shí)現(xiàn)一個(gè)用戶定義的有限狀態(tài)機(jī)。如圖2所示:繼承自抽象基類(IOManager)的VISimulator類用于實(shí)現(xiàn)IO模擬器。將模擬器替代實(shí)際IO管理器對(duì)象(VisaIOManger)進(jìn)行配置后,模擬器將截獲上層應(yīng)用程序發(fā)出的IO指令,并模擬實(shí)際設(shè)備進(jìn)行響應(yīng)。
圖2 模擬器類結(jié)構(gòu)示意圖
VISimulator的成員states為模擬器可用狀態(tài)表,variables為變量表,current為當(dāng)前狀態(tài)。狀態(tài)表是狀態(tài)類(VIState類)對(duì)象的集合,變量表為變量類(VIVariable類)對(duì)象的集合,變量值可用于狀態(tài)和變量值的入口檢查及計(jì)算。
當(dāng)寫入操作(Write)發(fā)生時(shí),模擬器遍歷所有的變量及狀態(tài),檢查其入口條件(entrance),對(duì)符合入口條件的變量,更新(Update)變量值(value)。如符合狀態(tài)入口條件,則將該狀態(tài)設(shè)置為當(dāng)前狀態(tài)。對(duì)于當(dāng)前狀態(tài),還需檢查其出口條件(exitus),如符合則設(shè)置當(dāng)前狀態(tài)為空。
當(dāng)讀出操作(Read)發(fā)生時(shí),模擬器由當(dāng)前狀態(tài)的模擬方法(Simulate)計(jì)算并返回模擬實(shí)際測(cè)量結(jié)果的數(shù)據(jù)。如當(dāng)前狀態(tài)設(shè)置讀操作為出口條件,則模擬器在讀出完成后返回空閑狀態(tài)。如當(dāng)前狀態(tài)為空或非可讀狀態(tài),模擬器將按照變超時(shí)設(shè)置延遲后返回?zé)o效數(shù)據(jù),真實(shí)地模擬IO指令序列錯(cuò)誤造成的測(cè)試過程現(xiàn)象。
ViSimulator的Load方法用于數(shù)據(jù)文件裝入,由數(shù)據(jù)文件的描述建立狀態(tài)表和變量表。由狀態(tài)和變量的靜態(tài)方法Parse完成解析并返回實(shí)例對(duì)象。
實(shí)現(xiàn)及模擬結(jié)果
筆者在實(shí)際測(cè)試系統(tǒng)開發(fā)過程中設(shè)計(jì)了前述模擬器,并根據(jù)儀器程控手冊(cè)編寫Agilent公司的HP8753E和E5071C等矢量網(wǎng)絡(luò)分析儀的數(shù)據(jù)文件,實(shí)現(xiàn)了對(duì)這些實(shí)際儀器IO功能的模擬。下面以HP8753E電壓駐波比測(cè)量為例詳細(xì)介紹IO模擬器實(shí)現(xiàn)方法。
矢量網(wǎng)絡(luò)分析儀用于測(cè)量射頻元件的端口特性,常用于測(cè)量端口電壓駐波比、衰減、阻抗等參數(shù)。因此其測(cè)量結(jié)果就包括多種格式不同的數(shù)據(jù)組合。當(dāng)用HP8753E進(jìn)行電壓駐波比測(cè)試時(shí),網(wǎng)絡(luò)分析儀會(huì)返回一個(gè)坐標(biāo)數(shù)組,坐標(biāo)的兩維分別是駐波測(cè)量值和測(cè)量頻率。
根據(jù)HP8753E程控手冊(cè)定義狀態(tài)SWRWaveform用于模擬電壓駐波比測(cè)量狀態(tài):
<SWRWaveform:state>//狀態(tài)名
length:101 //模擬波形長(zhǎng)度 format:value(1.00,1.1)|linear (StartFreq:10,EndFreq:100)
//模擬波形坐標(biāo)點(diǎn)格式
entrance:outpform(Format=swr) //狀態(tài)
入口點(diǎn)及輔助條件
exituse:[Read] //狀態(tài)出口
… …
<SWRWaveform> //狀態(tài)結(jié)束標(biāo)志
以上文本描述了狀態(tài)的工作模式,當(dāng)在寫入數(shù)據(jù)流中檢測(cè)到字符串outpform時(shí),如模擬器變量表中變量Format=swr時(shí)模擬器進(jìn)入狀態(tài)SWRWaveform。此時(shí)如收到讀出指令,模擬器將由SWRWaveform狀態(tài)模擬輸出電壓駐波比波形,返回一個(gè)101點(diǎn)的兩維坐標(biāo)數(shù)組,其中X為1到1.1之間的隨機(jī)數(shù),Y為從模擬器變量表中變量StartFreq到EndFreq的線性遞增數(shù)值。
圖3為測(cè)試系統(tǒng)由模擬器實(shí)際得到的測(cè)量波形,模擬器根據(jù)IO數(shù)據(jù)流正確地進(jìn)入了SWRWaveform狀態(tài),并以正確的頻率范圍返回了仿真數(shù)據(jù)。
圖3 模擬器輸出數(shù)據(jù)的結(jié)果波形
結(jié)語
本文介紹的模擬器適用于文本格式的控制指令集,在電子測(cè)量系統(tǒng)開發(fā)過程中已得到了驗(yàn)證和實(shí)際應(yīng)用。
參考文獻(xiàn):
1. Meilir Page-Jones,UML面向?qū)ο笤O(shè)計(jì)基礎(chǔ),人民郵電出版社,2001.4
2. 87XXET/ES Network Analyzer Programmer’s Guide, Agilent Technologies Inc. 08753-90475, February 2001
路由器相關(guān)文章:路由器工作原理
路由器相關(guān)文章:路由器工作原理
矢量控制相關(guān)文章:矢量控制原理
評(píng)論