LXI(LAN eXtensions for Instrumentation)のVXI-11(VISAを介した標準的な制御)ではなく、より低レイヤーで高速なTCP/IP Sockets(ポート 5025)を直接叩く方法。
VISAライブラリをインストールできない軽量な環境や、オーバーヘッドを最小限に抑えたい場合に有効です。Pythonの標準ライブラリ socket を使用した参考プログラムを紹介します。
1. Socket通信による参考プログラム
SIGLENT SNA5000AのデフォルトのSocketポート番号は 5025 です。
import socket
import time
# --- 設定項目 ---
IP_ADDRESS = "192.168.1.100"
PORT = 5025 # SCPI Socket標準ポート
TIMEOUT = 5.0
def vna_socket_control():
# 1. ソケットの作成と接続
# AF_INET: IPv4, SOCK_STREAM: TCP
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.settimeout(TIMEOUT)
try:
print(f"Connecting to {IP_ADDRESS}:{PORT}...")
client.connect((IP_ADDRESS, PORT))
# --- 送受信関数 ---
def send_cmd(cmd):
# SCPIコマンドは末尾に改行コード \n が必要
client.sendall((cmd + "\n").encode('utf-8'))
def query(cmd):
send_cmd(cmd)
# データの受信 (バッファサイズは必要に応じて調整)
return client.recv(4096).decode('utf-8').strip()
# 2. 接続確認
idn = query("*IDN?")
print(f"Connected to: {idn}")
# 3. 測定設定 (例: 4.5GHz帯の評価設定)
send_cmd("*RST")
time.sleep(0.5)
send_cmd("SENS:FREQ:STAR 1GHz")
send_cmd("SENS:FREQ:STOP 4.5GHz")
send_cmd("SENS:SWE:POIN 401")
# 4. スイープ実行と完了待ち
send_cmd("INIT:CONT OFF")
send_cmd("INIT:IMM")
# *OPC? でスイープ完了を同期(1が返るまで待機)
while True:
opc = query("*OPC?")
if opc == "1":
break
time.sleep(0.1)
# 5. データの取得
# 振幅データ(dB)を要求
send_cmd("CALC:SEL:FORM MLOG")
raw_data = query("CALC:SEL:DATA:FDAT?")
# カンマ区切りの文字列をリストに変換
data_points = [float(x) for x in raw_data.split(',')]
print(f"Captured {len(data_points)} points.")
print(f"First data point: {data_points[0]} dB")
except socket.timeout:
print("Error: Connection timed out.")
except Exception as e:
print(f"An error occurred: {e}")
finally:
# 6. 切断
client.close()
print("Connection closed.")
if __name__ == "__main__":
vna_socket_control()2. LXI Socketsを使用する際の重要ポイント
改行コードの扱い
VISA (pyvisa) を使う場合はライブラリ側で処理されますが、socket の場合は以下のルールを厳守する必要があります。
送信時: 全てのコマンドの末尾に \n (Line Feed) を付与してください。
受信時: 機器からのレスポンスも \n で終わるため、.strip() で取り除くと処理しやすくなります。
データのパース
CALC:SEL:DATA:FDAT? で返ってくるデータは、非常に長いカンマ区切りの文字列です。
ポイント数が多い場合(例:1601ポイント以上)、client.recv(4096) では一度に受け取りきれないことがあります。
その場合は、ループを回して全てのデータを読み切る(\n が現れるまで受信を続ける)処理を実装してください。
ブロッキングと同期
Socket通信はVISAの query メソッドほど高機能ではありません。
INIT:IMM(スイープ開始)の直後にデータ取得を試みると、測定が終わっていないためエラーになるか、古いデータが返ります。必ず *OPC? を投げて、機器から 1 が返ってくるのを確認してから次のコマンドを送るのが、安定運用のコツです。
4.5 GHz帯などの特定周波数での注意点
SNA5000Aをこの帯域で使用する場合、アダプタやケーブルの損失(De-embedding)設定もSocket経由で行えます。
SENS:CORR:EXT:PORT1:TIME 0.1 (ポート1の延長/ディレイ設定など)
必要に応じて、特定のレジスタ状態を読み取るコマンドを追加して、エラーチェック(SYST:ERR?)をルーチンに組み込むことをお勧めします。
Vector Network Analyzer Programming Guide
SNA5000A Series
SNA5000X-E Series
SNA6000A Series
SHN900A Series
https://siglentna.com/wp-content/uploads/dlm_uploads/2026/03/VNA_Series_ProgrammingGuide_EN04A.pdf
PR:
![]() | SMM3000Xシリーズ 高精度ソースメジャーユニット・表示桁数:6½桁(2,100,000カウント) ・SMM3311X(1ch) / SMM3312X(2ch) ・価格:90万円~ |
![]() ・USB VNA | ![]() |
![]() | SDS8000Aシリーズ オシロスコープ 特長と利点 |
![]() | SSG6M80Aシリーズ |
![]() | ![]() |
![]() | SSA6000A Series Signal Analyzer Main Features |
![]() | SNA6000A Series Vector Network Analyzer Key Features |
お礼、
T&Mコーポレーションは設立5年ですが、おかげさまで業績を着実に伸ばしており、
オフィスを港区芝(最寄り駅浜松町)に移転し、スペースも拡大いたしました。
電子計測器業界の「ゲームチェンジャー」として、高性能/高信頼/低価格/短納期を武器に
T&Mコーポレーションはお客様のご予算を最大限生かす製品群をご提案させていただいております。



















