第3.4节 通过GPIB控制频谱仪
課程目錄索引
第一章 課程概述.
第二章 控制設備
第2.2節 串行SPI接口控制PE4312數控衰減器.
第三章 控制儀器
第3.2節 通過GPIB控制信號源.
第3.3節 通過GPIB控制矢量網絡分析儀.
第3.4節 通過GPIB控制頻譜儀.
第四章 控制軟件
第五章 綜合案例一
第5.2節 應用工具包得到幅相加權.
第5.3節 共用端口的SPI控制.
第六章 綜合案例二
第七章 綜合案例三
第八章 課程總結
第3.4節 通過GPIB控制頻譜儀
- 課程目錄索引
- 3.4.1 GPIB連接
- 3.4.2 頻譜儀的測試設置
- 3.4.3 讀取與數據處理
- 3.4.4 頻譜儀控制函數
- 總結
3.4.1 GPIB連接
在前節介紹了通過GPIB接口控制矢量網絡分析儀的方法,在本節將簡要介紹如何通過GPIB對頻譜分析儀進行,首先是GPIB連接的代碼如下。
%% GPIB頻譜儀連接 delete(instrfindall); instrObj = visa('AGILENT','GPIB0::16::INSTR'); % 創建儀器連接對象 fopen(instrObj); % 連接儀器 fprintf(instrObj, '*IDN?'); % 詢問IDN idn = fscanf(instrObj) % 讀取IDN % ‘控制代碼’ fclose(instrObj); delete(instrObj);可以對比前節代碼,GPIB連接的部分基本上完全相同,如果有多臺儀器需要更改對象命名“instrObj”,同時“GPIB0::16::INSTR”中的連接數字會有不同。
3.4.2 頻譜儀的測試設置
在下面射頻頻譜儀的語句中,主要對中心頻率 FREQUENCY 、帶寬 SPAN 、分析帶寬BW 、參考電平 LEVEL 進行設置,并開啟標注點,并標注最大值。
%% 設置頻譜儀 FREQUENCY = 1e9; % 中心頻率1GHz SPAN = 500e6; % 帶寬500MHz BW = 1e5; % 分析帶寬100kHz LEVEL = 0; % 參考電平為0dBm fprintf(instrObj,':SENS:FREQ:CENT %f HZ\n', FREQUENCY); % 設置中心頻率 fprintf(instrObj,':SENS:FREQ:SPAN %f HZ\n', SPAN); % 調整帶寬 fprintf(instrObj,':SENS:BAND:RES %f HZ\n', BW); % 調整分析帶寬 fprintf(instrObj,':DISP:WIND:TRAC:Y:RLEV %f DBM\n', LEVEL); % 設置參考電平 fprintf(instrObj,':CALC1:MARK1:STAT ON'); % 開啟標注 fprintf(instrObj,':CALC1:MARK1:MAX:PEAK');% 標注最大點3.4.3 讀取與數據處理
最后,讀取最大點的橫軸X即頻率(單位Hz)和縱軸Y即幅度(單位dBm)。同樣由于讀取的是字符串,需要轉換成數字,這里用了 str2double 函數。
%% 讀取峰值的測試結果 fprintf(instrObj,'CALC:MARK1:X?'); X = str2double(fscanf(instrObj)); fprintf(instrObj,'CALC:MARK1:Y?'); Y = str2double(fscanf(instrObj));這里只是頻譜儀最基本的操作,其實只要學會查閱相關的VISA語句,無論什么儀器,理論上所有的手動操作流程都能夠轉化為代碼自動控制。需要注意的是,不同廠家不同型號的儀器相同操作可能對應的指令不同,如果更換測試平臺,最好在仔細檢查下代碼的兼容性。
3.4.4 頻譜儀控制函數
類似前面的信號源控制,實際使用時可能需要將頻譜儀相關的代碼寫成一個函數,輸入參數進行調用。這里將前面三部分代碼進行組合,以儀器地址ADD,中心頻率FREQUENCY(單位Hz),帶寬SPAN(單位MHz),分析帶寬BW(單位Hz),參考電平LEVEL(單位dBm)為函數的輸入,讀取到的最大電平Y(單位dBm)和最大值頻率(單位Hz)為函數的輸出。
%% GPIB頻譜儀連接 function [X Y] = SAContr(ADD,FREQUENCY,SPAN,BW,LEVEL) instrObj = visa('AGILENT',ADD); % 創建儀器連接對象 fopen(instrObj); % 連接儀器 fprintf(instrObj,':SENS:FREQ:CENT %f HZ\n', FREQUENCY); % 設置中心頻率 fprintf(instrObj,':SENS:FREQ:SPAN %f HZ\n', SPAN); % 調整帶寬 fprintf(instrObj,':SENS:BAND:RES %f HZ\n', BW); % 調整分析帶寬 fprintf(instrObj,':DISP:WIND:TRAC:Y:RLEV %f DBM\n', LEVEL); % 設置參考電平 fprintf(instrObj,':CALC1:MARK1:STAT ON'); % 開啟標注 fprintf(instrObj,':CALC1:MARK1:MAX:PEAK');% 標注最大點 %% 讀取峰值的測試結果 fprintf(instrObj,'CALC:MARK1:X?'); X = str2double(fscanf(instrObj)); fprintf(instrObj,'CALC:MARK1:Y?'); Y = str2double(fscanf(instrObj)); fclose(instrObj); delete(instrObj); delete(instrfindall);從稍專業的角度來看,這樣的代碼效率會比較低,因為每次運行這個函數都會從頭到尾的運行一遍程序,而在某些應用場景,其實并不需要重新設置頻譜儀,只是需要重新找個最大點讀數即可。避免這種低效操作的方法之一是使用面向對象編程,但考慮到這里的目標只是幫助射頻工程師快速的實現原型系統并解決手頭的問題,而不是實現一個高效的工程化的自動測試系統,因此這種順序的編碼方式可能更好理解和使用。
總結
本節介紹了采用GPIB控制頻譜儀完成峰值幅度測試的方法,包括連接儀器,設置中心頻率、帶寬、分析帶寬、參考電平、標注并讀取最大點頻率幅度等操作。
總結
以上是生活随笔為你收集整理的第3.4节 通过GPIB控制频谱仪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机考研数学和英语考什么,考研英语几与
- 下一篇: 循环渐进NsDoor(五)