SCPIスクリプトの例
このスクリプトは、エイリアスを使用してN6705Cパワーアナライザーに接続します。接続のためのdefaultChannelは2に設定されます。デフォルトでは、すべてのコマンドはそのチャンネルにアドレス指定されてデバイスに送信されます。
その後、スクリプトはリピートループを使用して電圧をさまざまな値に設定し、実際に測定された電圧を取得します。最後に、設定された電圧と実際の電圧との間の差についての情報を表示します。
スクリプトはtellブロックを使用して、デバイスと通信するスクリプトの部分を囲みます。これは、resetやsetValueのようなすべてのデバイス関連のコマンドがデバイスに送信されることを意味します。
tellブロック内のSenseTalkコマンドは通常どおり機能し続けます。技術的には、それらもpowerAnalyzerオブジェクトに送信されますが、そのオブジェクトはputやinsertコマンドを実装していないため、コマンドは通常通りエンジンに渡されます。
スクリプトの各行の説明については、スクリプト例の解析セクションを参照してください 。
スクリプト例:
set powerAnalyzer to visaDevice ("N6705CPower")
set powerAnalyzer’s defaultChannel to 2
tell powerAnalyzer
reset
setValue output, on
repeat with testVoltage = 3300 millivolts to 4.4 volts stepping by 100 millivolts
setValue voltage, testVoltage
query "measure voltage"
put value(it) volts into measuredVolts
put ABS(measuredVolts - testVoltage) into difference
convert difference to microvolts
insert difference into allDifferences
put !"Set voltage to [[testVoltage]] Actual measured was [[measuredVolts]] (difference [[difference]])"
end repeat
setValue output, off
end tell
put
put "Differences: " & allDifferences sorted
put
put "Average: " & average of allDifferences
put "Median: " & median of allDifferences
スクリプト例の解析
あなた自身のスクリプトを書くための手助けとして、以下にSCPIスクリプト例のmd 機能についての行ごとの説明を提供します。
set powerAnalyzer to visaDevice ("N6705CPower")
powerAnalyzerをVisaDeviceオブジェクトとして確立します。これは、計器とのすべての通信に使用されます。
set powerAnalyzer’s defaultChannel to 2
デバイスのdefaultChannelを設定すると、setValueまたはquery呼び出しを使用してデバイスに指向されたすべてのコマンドがこのチャンネルを使用します。これにより、これらの関数の使用が簡素化され、効率化されます。必要に応じて、例えばon channel 3のように、個々の呼び出しを別のチャンネルに指向させることもできます。
tell powerAnalyzer
tellブロック内に行を囲むことで、end tell文まで、reset、setValue、queryなどのすべての呼び出しがpowerAnalyzerオブジェクトに向けられ、それを名前付けする必要がなくなります。これによりスクリプトが大幅に簡素化されます。
reset
*RSTリセットコマンドをpowerAnalyzerオブジェクトに送信します。
setValue output, on
チャンネル2の電源出力をオンにするために、スクリプトはOUTPUT SCPIコマンドをパラメータ値onと共にpowerAnalyzerオブジェクトに送信します。
引用符なしの場合、outputという変数がある場合、SenseTalkはその変数の値を使用します。この場合のようにoutputという変数がない場合、代わりに"output"が使用されます。
repeat with testVoltage = 3300 millivolts to 4.4 volts stepping by 100 millivolts
リピートループは、変数testVoltageを3.3ボルト(3,300ミリボルト)から3.4ボルト、3.5ボルト、等から4.4ボルトまでの各値に設定します。このステートメントは、テストおよび計測デバイスを扱うための2つの有用なSenseTalk機能を示しています:
- 単位付き値の使用
- 計算で異なる互換性のある単位を混合する能力。この場合、ボルトとミリボルトです。
setValue voltage, testVoltage
パラメータ値がtestVoltageの現在の値と等しいVOLTAGE SCPIコマンドをpowerAnalyzerオブジェクトに送信します。outputと同様に、単語"voltage"は引用符で表示されることがあります。
query "measure voltage"
MEASURE:VOLTAGE? SCPIコマンドをpowerAnalyzerオブジェクトに送信します。queryは関数としてではなく、コマンドとして呼び出されるため、デバイスから返される測定値は自動的に変数itに格納されます。
put value(it) volts into measuredVolts
このコマンドは2つの重要なことを行います。それはvalue関数を呼び出してそれを単純な数値文字列に変換します。なぜなら、通常デバイスから科学表記のテキスト文字列として返されるからです。例えば:"+1.000000E+01"。
SenseTalkは必要に応じて数字の単純な文字列表現をその数値値に自動的に変換しますが、科学表記の値についてはこれを行いません。
次に、デバイスから返される値が電圧を表すため、ステートメントはvoltsを値の単位として割り当てます。これにより、スクリプトの後続のコマンドはSenseTalkの単位変換と計算能力を活用することができます。また、単位の不整合エラーを防ぐことができます。例えば、ボmd ルトとアンペアを足そうとすると、SenseTalkは例外をスローします。
put ABS(measuredVolts - testVoltage) into difference
測定された電圧と設定電圧の差の絶対値を変数differenceに割り当てます。
convert difference to microvolts
変数differenceをボルトの単位からマイクロボルトに変換します。これは、差が小さいため、この出力に対してより読みやすい形式です。
insert difference into allDifferences
値の差をリストに挿入します。リピートループが終了した後、各testVoltageの測定された差を含むリストになります。
put !"Set voltage to [[testVoltage]] Actual measured was [[measuredVolts]] (difference [[difference]])"
現在のtestVoltageに対するメッセージを表示します。これには以下が表示されます:
- テスト電圧
- 測定電圧
- 2つの測定値の差
文字列の前の!は、文字列内のダブルスクエアブラケット内の各表現がその値に置き換えられることを意味します。
反復を終了します
各testVoltageのリピートループの終了です。
setValue output, off
チャネル2の電源出力をオフにするため、スクリプトはパラメータ値offでOUTPUT SCPIコマンドをpowerAnalyzerオブジェクトに送信します。
end tell
powerAnalyzerオブジェクトへのメッセージ指示のtellブロックの終了です。
put
put "Differences: " & allDifferences sorted
put
put "Average: " & average of allDifferences
put "Median: " & median of allDifferences
これらは、電圧の測定差に関する情報を報告するメッセージを表示します。