この記事では、Tek ビザを介して MATLAB にオシロスコープを呼び出して波形を収集する方法を記録します (主な機能は、記録と再構成の容易化です)。
1 TEK ドライバーのダウンロードと構成
最初の一歩:
TeK 公式 Web サイトからVISA ドライバーをダウンロードします: (オシロスコープのモデルを検索してください)
Tektronix Technologies, Inc. - テスト、測定、モニタリング業界のリーダー | Tektronix
ステップ 2: ビザをダウンロードし、デフォルトでインストールします。
インストール後は以下のようになります(初期状態では対応するLANがありません)
[ファイル] -> [設定] でフックできます。
(スキャン機器は起動時にオンにする必要があります。残りの 2 つの電源をオンにすることをお勧めします)
デバッグ検索基準
必要な接続方法を構成します。
ステップ 3:接続を設定し、ネットワーク ケーブルを使用します (例としてイーサネット接続)。
サブネットを構成する必要があります (この時点で、デバイスはネットワーク ケーブルを介してコンピューターに接続されている必要があります)
オシロスコープユーティリティを表示 -> I/O
以下の図に示すように: (以降の使用の便宜のため、手動手動構成を選択します)
デバイスのIPが192.168.0.5であることがわかります(自分で設定できます)
サブマスクは 255.255.0.0 です。
このとき、ブラウザにデバイスのIPを入力してデバイスを管理します(アクセスできれば通信は正常です)
イーサネット構成:
ネットワークとコントロールセンターの設定:(イーサネットをクリック)
IPをデバイスIPの近くのIPに設定します(同じではありません)。
192.168.0.10など_
サブマスクは255.255.0.0です
デフォルトのままにして、「OK」をクリックします
コンソールのcmdで試すことができます
Ping 192.168.0.5の送信が正常かどうか
上記が表示されれば通信は正常です
以上の操作が完了すると、TeKVISAの設定は完了です。
付属のマニュアルの設定手順は次のとおりです。
2 MATLABの構成
MATLABのテストおよび測定ツール tmtool での構成:
まず、tmtool アドオンをインストールする必要があります。
インストール後、コマンド ウィンドウに「tmtoolPunch Toolbox」と入力します。
ネットワーク ケーブル経由で通信する場合、 TCPIPにオプションがあることがわかります。
図に示すように、 configureでパラメータを調整します。
InputBufferSizeと OutputBufferSize はサンプリング ポイントの数を制御します (必要な数に設定)
遅延タイムアウトを増やす
SessionLossで(VISA オブジェクトとその他の情報を作成します):
3 コードとテスト例 (MATLAB)
呼び出しコード(例):
%オシロスコープをオブジェクトに設定し、プロパティ名とプロパティ値が指定された項目と一致するシリアル ポート オブジェクトの配列を返します。
obj1 = instrfind('タイプ', 'visa-tcpip', 'RsrcName', 'TCPIP0::192.168.0.5::inst0::INSTR', 'タグ', '');
% Create the VISA-TCPIP object if it does not exist
% otherwise use the object that was found.
if isempty(obj1)
obj1 = visa('TEK', 'TCPIP0::192.168.0.5::inst0::INSTR');
else
fclose(obj1);
obj1 = obj1(1);
end
fopen(obj1);
%指定获取波形的通道,格式,数据大小,采样长度;
fprintf(obj1,"DATa:SOUrce CH2");
fprintf(obj1,"DATa:ENCdg ASCII");
fprintf(obj1,"WFMOutpre:BYT_Nr 1");
fprintf(obj1,"DATa:STARt 1;STOP 100000");
fprintf(obj1,"WFMOutpre:ENCdg ASCii");
%获取示波器横坐标信息
cen_f = str2num(query(obj1,"WFMOutpre:CENTERFREQuency?"));
f_span = query(obj1,"WFMOutpre:DOMain?");
flushinput(obj1);
flushoutput(obj1);
numb = str2num(query(obj1,"WFMOutpre:NR_Pt?"));
samp_int = str2num(query(obj1,"WFMOutpre:XINcr?"));
h_basis = query(obj1,"WFMOUTPRE:XUNIT?");
flushinput(obj1);
flushoutput(obj1);
% 获取垂直坐标信息
dig_lel = str2num(query(obj1,"WFMOutpre:YMULT?"));
shift_y = str2num(query(obj1,"WFMOUTPRE:YZEro?"));
very_un = query(obj1,"WFMOUTPRE:YUNIT?");
form_wav = query(obj1,"WFMOutpre:ASC_Fmt?");
flushinput(obj1);
flushoutput(obj1);
%从示波器读取波形
R_mes=[];
waveform = str2num(query(obj1,"CURVe?"));
fclose(obj1);
%计算示波器横坐标
fin = samp_int*numb;
tim = [samp_int:samp_int:fin];
%计算电压值
x = waveform*dig_lel+shift_y;