趙 熙,崔廣新,鄭喜艷
(河南省計量科學(xué)研究院,鄭州 450047)
功率傳感器是測量微波功率的標(biāo)準(zhǔn)設(shè)備,其測量準(zhǔn)確度通常用校準(zhǔn)因子表征。常規(guī)校準(zhǔn)功率傳感器的手動操作過程十分繁瑣且耗時長。為提高校準(zhǔn)功率傳感器的工作效率,基于Visual C++開發(fā)平臺,設(shè)計開發(fā)通用功率傳感器自動校準(zhǔn)軟件,實現(xiàn)對功率傳感器的自動校準(zhǔn)。自動校準(zhǔn)軟件通過GPIB (General-Purpose Interface Bus)、USB (Universal Serial Bus)等總線和可編程儀器標(biāo)準(zhǔn)命令(Standard Commands for Programmable Instruments,SCPI)控制儀器的運行,對作為標(biāo)準(zhǔn)器的各型號信號發(fā)生器、功率計和功率傳遞標(biāo)準(zhǔn)和被校功率傳感器都有很好的支持。
自動校準(zhǔn)軟件可通過GPIB、USB等多種數(shù)據(jù)總線和儀器通信,可根據(jù)儀器配置選擇傳遞標(biāo)準(zhǔn)法和交替比較法,具有實時數(shù)據(jù)顯示,不確定度計算,自定義校準(zhǔn)參數(shù),自動校準(zhǔn)控制,多次校準(zhǔn),單點控制,圖像識別等功能。軟件運行過程中可實時顯示已完成的測量數(shù)據(jù),并計算測量結(jié)果的不確定度。軟件自定義的校準(zhǔn)參數(shù)有校準(zhǔn)頻率、平均次數(shù)、校準(zhǔn)功率值和結(jié)果類型等,校準(zhǔn)頻率可按開始頻率,結(jié)束頻率,頻率步進(jìn)值的方式進(jìn)行設(shè)置,校準(zhǔn)頻率步進(jìn)值可選擇為1、2、5、0.1、0.2和0.5,滿足不同頻段頻率分布的要求;也可按各頻率點單獨添加的方式設(shè)置校準(zhǔn)頻率,兩種設(shè)置方式可單獨使用,也能夠結(jié)合在一起使用;校準(zhǔn)功率值可選擇為1 mW、0.1 mW或5 mW等,適用不同被校功率傳感器的測量范圍;當(dāng)平均次數(shù)大于1時,可選擇結(jié)果類型為平均值、中位數(shù),軟件根據(jù)結(jié)果類型的設(shè)置自動完成計算,并可計算顯示測量結(jié)果的標(biāo)準(zhǔn)差;根據(jù)儀器信息軟件生成默認(rèn)校準(zhǔn)參數(shù),在后續(xù)的操作中可對默認(rèn)校準(zhǔn)參數(shù)按自定義設(shè)置進(jìn)行修改。自動校準(zhǔn)過程中根據(jù)需要可暫停/繼續(xù)當(dāng)前自動校準(zhǔn)操作,或結(jié)束當(dāng)前自動校準(zhǔn)。校準(zhǔn)操作完成后,可重新設(shè)置校準(zhǔn)參數(shù)或按當(dāng)前設(shè)置的校準(zhǔn)參數(shù),繼續(xù)進(jìn)行校準(zhǔn)。軟件的單點控制功能可手動設(shè)置頻率點、信號源的輸出功率,自動讀取功率標(biāo)準(zhǔn)值和測量值,用于數(shù)據(jù)核驗。對于無數(shù)據(jù)總線接口的被校設(shè)備,通過圖像采集設(shè)備,使用圖像識別技術(shù)完成讀數(shù),實現(xiàn)自動校準(zhǔn)。自動校準(zhǔn)軟件后臺有儀器信息和校準(zhǔn)數(shù)據(jù)兩個數(shù)據(jù)庫,儀器信息數(shù)據(jù)庫存儲有各儀器的型號、測量范圍數(shù)據(jù),對于信號源、功率傳遞標(biāo)準(zhǔn)等標(biāo)準(zhǔn)器還存儲溯源信息,通過軟件對數(shù)據(jù)庫中的信息進(jìn)行維護(hù)更新;校準(zhǔn)數(shù)據(jù)數(shù)據(jù)庫存儲已完成的校準(zhǔn)數(shù)據(jù),可進(jìn)行數(shù)據(jù)查詢、查看和導(dǎo)出等操作。
軟件通過設(shè)置的數(shù)據(jù)總線類型和總線地址連接各儀器,如果某臺儀器連接失敗,將提示錯誤信息,所有儀器連接成功后讀取儀器的信息并顯示。完成校準(zhǔn)信息輸入和校準(zhǔn)參數(shù)設(shè)置后,開始自動校準(zhǔn)。所有校準(zhǔn)完成后,根據(jù)模版生成證書和記錄文件,并將校準(zhǔn)數(shù)據(jù)保存至校準(zhǔn)數(shù)據(jù)數(shù)據(jù)庫中。
圖1 軟件工作流程圖
自動校準(zhǔn)軟件通過VISA庫向儀器發(fā)送SCPI指令,讀取儀器信息和數(shù)據(jù),實現(xiàn)對儀器的控制;通過MFC類庫完成操作界面的設(shè)計和多線程運行控制;通過OpenCV庫完成圖像識別算法的設(shè)計。第三方類庫的應(yīng)用降低了軟件開發(fā)的復(fù)雜性,提高了軟件的可靠性。
軟件中的數(shù)據(jù)分為兩類,一類是信息數(shù)據(jù),如校準(zhǔn)日期、儀器編號等,使用CString數(shù)據(jù)類型存儲,另一類是數(shù)值數(shù)據(jù),如儀器的測量范圍、測量結(jié)果等,使用double數(shù)據(jù)類型存儲。根據(jù)軟件運行過程中的數(shù)據(jù)對象和操作,聲明儀器類、校準(zhǔn)信息類、校準(zhǔn)數(shù)據(jù)類等自定義類。
圖2 軟件內(nèi)部數(shù)據(jù)結(jié)構(gòu)
儀器類實現(xiàn)對各儀器的運行控制和信息存儲,成員變量有儀器的控制句柄,儀器信息等,成員函數(shù)有讀取信息函數(shù)、設(shè)置頻率函數(shù)和讀取測量值函數(shù)等,對于每一臺儀器聲明一個儀器類的實例用于對該儀器的操作。校準(zhǔn)信息類存儲本次校準(zhǔn)工作的基本信息,成員變量有記錄/證書編號、證書單位名稱、校準(zhǔn)日期、地點、環(huán)境條件等,對于每個校準(zhǔn)任務(wù),只需有一個校準(zhǔn)信息類實例。校準(zhǔn)數(shù)據(jù)類保存校準(zhǔn)過程中的各項測量數(shù)據(jù),成員變量主要有校準(zhǔn)頻率數(shù)組、功率標(biāo)準(zhǔn)值數(shù)組、功率測量值數(shù)組、測量不確定度數(shù)組等,成員函數(shù)有測量不確定度計算函數(shù)、平均值計算函數(shù)、中位數(shù)計算函數(shù)等。軟件中頻率數(shù)據(jù)基本單位為MHz,如100 kHz在軟件中的以數(shù)值0.1表示。校準(zhǔn)數(shù)據(jù)類中的所有數(shù)組均為使用C++標(biāo)準(zhǔn)模板庫中的vector容器類存儲,其大小為動態(tài)的,自動校準(zhǔn)過程中,只有當(dāng)新數(shù)據(jù)產(chǎn)生并需要存儲時,軟件向操作系統(tǒng)申請新的內(nèi)存空間,完成數(shù)據(jù)存儲;每次校準(zhǔn)操作的數(shù)據(jù)使用一個校準(zhǔn)數(shù)據(jù)類的實例存儲,多次校準(zhǔn)時,每次校準(zhǔn)完成將所有校準(zhǔn)數(shù)據(jù)存入校準(zhǔn)數(shù)據(jù)類的vector容器中。動態(tài)數(shù)據(jù)存儲方式極大提高了軟件的空間效率。
2.2.1 自動校準(zhǔn)控制算法
為提高運行效率和操作體驗,自動校準(zhǔn)軟件采用多線程工作模式實現(xiàn)并行處理,在控制儀器進(jìn)行自動校準(zhǔn)的同時,軟件顯示界面中實時顯示已完成的校準(zhǔn)數(shù)據(jù),不同工作線程之間通過Windows操作系統(tǒng)的消息傳遞機(jī)制實現(xiàn)數(shù)據(jù)傳遞。
自動校準(zhǔn)開始后,軟件主線程開啟自動顯示線程和自動校準(zhǔn)工作線程。自動校準(zhǔn)工作線程采用雙層循環(huán)方式控制自動校準(zhǔn)的運行。外層循環(huán)以校準(zhǔn)頻率的數(shù)量作為循環(huán)的控制變量,在外層循環(huán)中讀取校準(zhǔn)頻率數(shù)組中的頻率值,完成信號發(fā)生器的頻率和輸出功率、功率計的頻率的設(shè)置,讀取功率傳遞標(biāo)準(zhǔn)/標(biāo)準(zhǔn)功率計的讀數(shù),即功率標(biāo)準(zhǔn)值,并調(diào)節(jié)信號發(fā)生器的輸出功率在設(shè)置的校準(zhǔn)功率處。然后自動校準(zhǔn)工作線程開始內(nèi)層循環(huán),按設(shè)置的平均次數(shù)依次讀取功率傳遞標(biāo)準(zhǔn)/標(biāo)準(zhǔn)功率計的讀數(shù)、被校功率傳感器的讀數(shù),計算校準(zhǔn)因子的實際值和不確定度,完成一次測量后,自動校準(zhǔn)工作線程向顯示工作線程發(fā)送WM_USER+100消息,顯示線程接收到該消息后顯示當(dāng)前完成的測量數(shù)據(jù);如果設(shè)置的平均次數(shù)大于1,在完成內(nèi)層循環(huán)后,自動校準(zhǔn)工作線程計算該頻率點測量結(jié)果的平均值等數(shù)據(jù),并向顯示工作線程發(fā)送WM_USER+101消息,顯示工作線程接收到該消息后在主界面顯示平均值等數(shù)據(jù)。顯示工作線程按照測量完成的順序依次逐行顯示測量結(jié)果,對該頻率點多次平均的測量數(shù)據(jù),按“測量值1”、“測量值2”……“測量值n”標(biāo)識,對平均值、中位數(shù)等測量結(jié)果以“平均值”、“中位數(shù)”標(biāo)識,如果設(shè)置的平均次數(shù)為1,自動校準(zhǔn)工作線程不再發(fā)送WM_USER+101消息,測量結(jié)果的標(biāo)識為“測量值”。自動校準(zhǔn)工作線程完成所有測量和數(shù)據(jù)計算后,向顯示工作線程發(fā)生WM_USER+115消息、向主線程發(fā)送WM_USER+108消息,然后自動校準(zhǔn)工作線程終止;顯示工作線程接收到WM_USER+115消息后終止,主線程接收到WM_USER+108消息后,將本次自動校準(zhǔn)的測量數(shù)據(jù)存入校準(zhǔn)數(shù)據(jù)容器中,本次自動校準(zhǔn)工作完成。
為確保各儀器操作同步、數(shù)據(jù)讀取準(zhǔn)確,軟件向儀器發(fā)出操作指令后,讀取儀器的狀態(tài)數(shù)據(jù),當(dāng)儀器的狀態(tài)為指令完成時,再進(jìn)行下一步的操作。
交替比較法自動校準(zhǔn)程序算法功率傳遞標(biāo)準(zhǔn)法自動校準(zhǔn)算法基本相同。在完成一次設(shè)置頻率點的自動校準(zhǔn)后,自動校準(zhǔn)軟件會提示交換標(biāo)準(zhǔn)功率傳感器和被校功率傳感器在功分器的連接端口后繼續(xù)進(jìn)行測量,再按照設(shè)置的頻率點進(jìn)行一次自動校準(zhǔn),并完成最終的數(shù)據(jù)計算。
圖3 使用傳遞標(biāo)準(zhǔn)法自動校準(zhǔn)算法流程圖
2.2.2 圖像識別算法
軟件使用KNN(k-NearestNeighbor)算法完成圖像識別,軟件中存儲有0~9各數(shù)字的樣本圖片,通過比較識別圖片與樣本圖片,找到與識別圖片最相似的樣本圖片,確定識別圖片中的數(shù)字,完成圖像識別。OpenCV庫中提供了專門的類和函數(shù)用于圖像處理和KNN算法實現(xiàn)。自動校準(zhǔn)軟件通過圖像采集設(shè)備獲得被校功率傳感器示值顯示的圖像后,調(diào)用圖像識別參數(shù)對圖像進(jìn)行處理,包括灰度化、二值化、腐蝕/膨脹、輪廓提取、排序和數(shù)字分割等操作,處理完成后圖像背景為黑色,數(shù)字為白色。調(diào)用OpenCV庫中的knn算法函數(shù)predict()將獲取的圖像和樣本圖片進(jìn)行對比,完成最后的圖像識別。KNN算法相對于其它圖像識別算法,雖然占用內(nèi)存較大,但實際操作簡單,并具有很好的擴(kuò)展性,當(dāng)識別目標(biāo)的字體改變時,只需更新樣本圖片,即可實現(xiàn)對新字體圖像的有效識別。
使用圖像識別方式進(jìn)行自動校準(zhǔn)之前,需完成圖像識別參數(shù)設(shè)置,圖像識別參數(shù)包括數(shù)字顯示區(qū)域、圖像處理過程中使用的閾值、元素尺寸、腐蝕次數(shù)、膨脹次數(shù)和噪聲尺寸以及識別所用的K值、小數(shù)點尺寸等。不同型號功率傳感器的顯示方式不同,每次校準(zhǔn)時環(huán)境光照條件也會存在差異,因此自動校準(zhǔn)軟件未采用顏色分離的方式自動識別圖像中的數(shù)字,而采用手動方式設(shè)置識別區(qū)域和識別參數(shù),設(shè)置過程中可對設(shè)置參數(shù)的運行效果進(jìn)行驗證,確保識別結(jié)果的準(zhǔn)確性,在自動標(biāo)準(zhǔn)過程中如果識別出現(xiàn)錯誤,可以暫停自動校準(zhǔn),重新設(shè)置識別參數(shù)后繼續(xù)自動校準(zhǔn)。
使用圖像識別方式進(jìn)行自動校準(zhǔn)時,除自動校準(zhǔn)工作線程和顯示工作線程外,還有圖像實時顯示工作線程。該工作線程在專用窗口實時顯示圖像采集設(shè)備的視頻圖像,并將識別的數(shù)字保存為圖片,以“校準(zhǔn)次數(shù)_頻率值_測量次數(shù)”的方式命名,存儲在以該次校準(zhǔn)的證書編號命名的文件夾中,文件夾的存儲位置可通過軟件設(shè)置,方便數(shù)據(jù)核驗。
圖4 圖像識別方式讀數(shù)時保存的識別圖片
軟件采用MFC的文檔視圖界面,所有操作通過菜單執(zhí)行,每個菜單命令對應(yīng)有工具欄按鈕方便操作。信息輸入、參數(shù)設(shè)置等操作通過專用對話框?qū)崿F(xiàn),對話框通過菜單命令打開。軟件運行過程中,為避免操作沖突,在不同工作狀態(tài)下設(shè)置對當(dāng)前操作有影響的菜單項為灰色,不可使用,當(dāng)前操作完成后,再將其設(shè)置為可正常使用的狀態(tài)。
程序主窗口為校準(zhǔn)結(jié)果顯示窗口,實時顯示已完成的測量數(shù)據(jù)。主窗口采用表格的形式顯示數(shù)據(jù),分為頻率、功率標(biāo)準(zhǔn)值、功率測量值、校準(zhǔn)因子實際值、不確定度等列,每行顯示一次校準(zhǔn)操作的測量數(shù)據(jù)或平均值、中位數(shù)的計算數(shù)據(jù),根據(jù)使用的校準(zhǔn)方法,主窗口的表格形式會發(fā)生相應(yīng)的改變。
軟件另設(shè)置5個工作窗口,分別為儀器信息窗口、基本信息窗口、工作狀態(tài)窗口、圖像識別監(jiān)測窗口和單點控制窗口。儀器信息窗口顯示當(dāng)前系統(tǒng)所用的標(biāo)準(zhǔn)器和被校儀器的信息;基本信息窗口顯示記錄/證書編號、委托單位和校準(zhǔn)地點等信息;工作狀態(tài)窗口顯示當(dāng)前的工作狀態(tài)、操作結(jié)果等信息;圖像識別監(jiān)測窗口實時顯示圖像采集設(shè)備的視頻圖像和圖像識別過程中所保存的識別圖片,可實時看到圖像識別的結(jié)果;單點控制窗口實現(xiàn)單點控制功能,輸入頻率和信號源輸出功率,自動讀取并顯示功率標(biāo)準(zhǔn)值和功率測量值等數(shù)據(jù)。工作窗口采用浮動設(shè)計,通過菜單命令分別打開或關(guān)閉,工作窗口打開顯示時,可以嵌入到主窗口中(圖5 A)或懸浮在主窗口上(圖5 B),工作窗口顯示時不影響主窗口的使用操作和顯示。圖像識別監(jiān)測窗口僅能在使用圖像識別方式進(jìn)行自動校準(zhǔn)時打開顯示;單點控制窗口僅能在軟件不處于自動校準(zhǔn)狀態(tài)時才能打開顯示。
圖5 軟件操作界面
軟件操作過程中輸入信息、設(shè)置參數(shù)、維護(hù)儀器信息數(shù)據(jù)庫、查詢校準(zhǔn)數(shù)據(jù)等操作均通過專用的對話框完成,對話框通過菜單命令和對應(yīng)的工具欄按鈕打開。部分重要的操作完成后,軟件會彈出消息對話框提示操作的結(jié)果。
連接儀器對話框用于設(shè)置連接儀器所用的總線類型、GPIB地址和使用的校準(zhǔn)方法。信息錄入對話框輸入記錄/證書編號、委托單位、校準(zhǔn)地點等信息。校準(zhǔn)信息輸入完成后,再次打開該對話框時,會顯示已經(jīng)輸入的信息,可對這些信息進(jìn)行修改,軟件對信息修改情況進(jìn)行記錄。頻率設(shè)置對話框用于設(shè)置校準(zhǔn)頻率,校準(zhǔn)功率值、平均次數(shù)和結(jié)果類型等校準(zhǔn)參數(shù),對話框打開時將顯示軟件生成的默認(rèn)校準(zhǔn)參數(shù),可對默認(rèn)校準(zhǔn)參數(shù)進(jìn)行確認(rèn)或修改,校準(zhǔn)參數(shù)可以多次更新設(shè)置,軟件按照最新設(shè)置的校準(zhǔn)參數(shù)進(jìn)行自動校準(zhǔn)。校準(zhǔn)數(shù)據(jù)查詢對話框用于查詢數(shù)據(jù)庫中保存的校準(zhǔn)數(shù)據(jù),可按型號、出廠編號、校準(zhǔn)日期等信息進(jìn)行檢索,支持模糊查詢,查詢結(jié)果在對話框中顯示,并可將查詢到的數(shù)據(jù)導(dǎo)出保存至文件中。儀器信息對話框維護(hù)后臺儀器信息數(shù)據(jù)庫,可進(jìn)行查詢、修改、刪除和新增等操作。圖像識別參數(shù)設(shè)置對話框?qū)D像識別設(shè)備的曝光參數(shù)和識別參數(shù)進(jìn)行設(shè)置,驗證設(shè)置圖像識別參數(shù)的識別效果,確保圖像識別結(jié)果的準(zhǔn)確率。對話框中如頻率單位、GPIB地址等確定的有限項數(shù)據(jù)通過下拉列表的方式選擇確認(rèn),避免輸入錯誤數(shù)據(jù)影響軟件運行。
消息對話框用于顯示各種提示消息和軟件運行結(jié)果。軟件運行中某項操作成功完成后,彈出自動關(guān)閉對話框提示操作成功的信息,該對話框彈出后自動開始2 s倒計時,倒計時完成后對話框會自動關(guān)閉,倒計時未完成時可手動關(guān)閉對話框;如果操作過程中出現(xiàn)錯誤,或操作完成結(jié)果為不成功時,彈出錯誤信息提示對話框,錯誤信息提示對話框不會自動關(guān)閉,只能手動關(guān)閉。連接儀器和生成證書記錄文件等操作所需時間較長,且不能進(jìn)行其他操作,軟件彈出進(jìn)度條對話框位于軟件的前端提示等待信息,同時對話框中的進(jìn)度條會顯示當(dāng)前操作的進(jìn)度,操作完成時,對話框自動關(guān)閉。
軟件測試試驗標(biāo)準(zhǔn)器信號源為Rohde&Schwarz公司的SMF100A和Keysight公司的E8257D,功率傳遞標(biāo)準(zhǔn)為Rohde&Schwarz公司的NRPC18,標(biāo)準(zhǔn)功率傳感器為Rohde&Schwarz公司的NRP-Z51。被測功率傳感器分別為Rohde&Schwarz公司的NRP-Z21、Keysight公司的N1921A和亞美公司的YM8171。功率傳遞標(biāo)準(zhǔn)、標(biāo)準(zhǔn)功率計和NRP-Z21功率傳感器使用NRP2功率計作為讀數(shù)裝置,N1921A功率傳感器使用N1911A功率計作為讀數(shù)裝置,YM8171功率傳感器使用的YM2422功率計作為讀數(shù)裝置。軟件安裝計算機(jī)操作系統(tǒng)為Windows8.1 專業(yè)版64位操作系統(tǒng),CPU為Corei3-4020Y,主頻1.5 GHz,計算機(jī)內(nèi)存4 GB。
校準(zhǔn)NRP-Z21功率傳感器時設(shè)置校準(zhǔn)頻率為10 MHz ~ 18 GHz,頻率步進(jìn)值為1,校準(zhǔn)頻率點36個,平均次數(shù)3,校準(zhǔn)功率值5 mW,使用傳遞標(biāo)準(zhǔn)法校準(zhǔn),自動校準(zhǔn)軟件實際測量和計算的144個頻率點的數(shù)據(jù),自動校準(zhǔn)的實際運行時間為2 min 51 s。
校準(zhǔn)N1921A功率傳感器時設(shè)置校準(zhǔn)頻率為50 MHz ~ 18 GHz,頻率步進(jìn)值為1,校準(zhǔn)頻率點32個,平均次數(shù)3,校準(zhǔn)功率值1 mW,使用交替比較法校準(zhǔn),自動校準(zhǔn)軟件實際測量和計算的256個頻率點的數(shù)據(jù),不計更換功分器連接端口的操作時間,自動校準(zhǔn)的實際運行時間為4 min 19 s。
校準(zhǔn)YM2422功率傳感器時設(shè)置校準(zhǔn)頻率為10 MHz ~ 18 GHz,頻率步進(jìn)值為1,校準(zhǔn)頻率點36個,平均次數(shù)3,校準(zhǔn)功率值1 mW,使用傳遞標(biāo)準(zhǔn)法校準(zhǔn),自動校準(zhǔn)軟件實際測量和計算的144個頻率點的數(shù)據(jù),使用圖像識別方式進(jìn)行讀數(shù),自動校準(zhǔn)的實際運行時間為5 min 37 s,所有數(shù)字圖像均正確識別。
軟件測試時,通過VS開發(fā)平臺的診斷工具觀察,不使用圖像識別方式讀數(shù)時,軟件運行時內(nèi)存使用為20 MB~40 MB,CPU使用率不超過25%,使用圖像識別方式讀數(shù)時,內(nèi)存使用為40 MB~260 MB,CPU使用率不超過35%,一般配置的計算機(jī)均可滿足軟件運行要求,使用圖像識別方式讀數(shù)要求計算機(jī)操作系統(tǒng)為64 bit,且安裝有DirectX9.0C或以上版本。
自動校準(zhǔn)控制軟件的應(yīng)用極大提高校準(zhǔn)功率傳感器的工作效率,軟件的設(shè)計具有很強(qiáng)的通用性,支持主流廠商的信號源、功率計等儀器,可根據(jù)現(xiàn)有的儀器,配置軟件的運行參數(shù),完成自動校準(zhǔn)。軟件使用C++語言編寫,具有很高的執(zhí)行效率,采用面對對象的開發(fā)方法,方便對軟件進(jìn)行升級,實現(xiàn)對更多儀器的支持和擴(kuò)展功能。