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