AIと電子工作系ブログ

趣味でやっている電子工作とtennsorflow等を使った何かを書いていきます。

Pythonを使用してファンクションジェネレータSDG1032Xを制御してみる

Pythonを使用してファンクションジェネレータSDG1032Xを制御する方法をご紹介します。


まず、計測器,実量器と通信するためにNI-VISAをインストールします。
www.ni.com
VISAはVirtual Instrument Software Architecture の略称で計測制御用通信ライブラリ仕様のことを指します。

次にpython側では

pip install pyvisa

と入力してpyvisaライブラリを入れてください。

次にファンクションジェネレータSDG1032XとPCをUSBで接続してください。
接続した後にNI-VISA Interactive Controlを起動してください。

起動すると下図の画面が表示されます。
青矢印のところに接続したファンクションジェネレータが表示されますので選択し、緑矢印のところに表示される文字列をコピーしておいてください(python内にて使用します)

VISA Interactive Control


プログラム内容は下記になります。

import pyvisa

pvl = pyvisa.ResourceManager()
SDG = pvl.open_resource("NI-VISA Interactive Controlに記載された文字列")

SDG.write('*IDN?')
out = SDG.read()

#測定器、実量器の情報
print(out) 

#出力インピーダンス設定
SDG.write('C1:OUTP LOAD,HZ')

#周波数設定
SDG.write('C1:BSWV FRQ,1000')

#出力電圧設定
SDG.write('C1:BSWV AMP,1')

#出力設定
SDG.write('C1:OUTP ON')

プログラムを実行すると下のファンクションジェネレータ画像のように1kHz 1Vp-pでch1から出力されます。

ファンクションジェネレータ

ここからプログラムの内容について解説します。

pvl = pyvisa.ResourceManager()で接続されている機器名を取得し、
SDG = pvl.open_resource("NI-VISA Interactive Controlに記載された文字列")で操作する機器を指定します。

SDG.write('*IDN?')は「*IDN?」というコマンドをファンクションジェネレータへ送信しています。

IDN?コマンドはファンクションジェネレータのIDを返答するようにというコマンドになります。

out = SDG.read()で返答されたIDを受け取りprint(out) で表示しています。

SDG.write('C1:OUTP LOAD,HZ')はファンクションジェネレータの出力インピーダンスを0Ωに設定しています。SDGwrite('C1:OUTP LOAD,50')と記載すると出力インピーダンスが50Ωに設定されます。

SDG.write('C1:BSWV FRQ,1000')は出力周波数を1000Hzに設定しています。1000の部分の数値を変えることで周波数を自由に設定できます。

SDG.write('C1:BSWV AMP,1')は出力電圧を1Vp-pに設定しています。

SDGwrite('C1:OUTP ON')でOUTPUTされます。SDG.write('C1:OUTP OFF')と記述すると出力が切断されます。



コマンド詳細については下記のSIGLENTのページの「SDG Programming Guide」に記載されています。
www.siglent.eu

「SDG Programming Guide」のダウンロードはページの下の方にあります。

siglent_sdgページ