RS232を介してHP33120AでSCPIを使用する方法


9

古いヒューレットパッカード33120A関数発生器(Agilent 33120Aと同じタイプである必要があります)があり、MCU(ATMega)で制御したいと思います。ジェネレータにはRS232があり、SCPIコマンドを使用します。

RXおよびTXラインのみを使用して、MAX232でシンプルなRS232からTTLへのコンバーターを作成しました。よるユーザーズガイド(第4章、セクションDTR / DSRハンドシェイクプロトコル)Iが接続されていない論理TRUE(負電圧)とDTRにDSRを結びました。この構成では、ハードウェアハンドシェイクを無効にする必要があります。

これで、コンバーターをMCUまたはコンピューターに接続できます。最初の実験では、コンピューターと次のPythonスクリプトを使用しました。

import serial, sys, time

if __name__ == '__main__':
        if len(sys.argv) < 2:
                print 'Usage: %s <serial_port>' % sys.argv[0]
                sys.exit(1)

        s = serial.Serial(port=sys.argv[1], baudrate=2400, bytesize=8, parity='N', stopbits=2, timeout=None, xonxoff=0, rtscts=0)

        time.sleep(0.5)
        s.write('\n*CLS\n')
        time.sleep(0.5)
        s.write('SYST:REM\n')
        time.sleep(0.5)
        s.write('APPL:SIN 30E+3, 0.1\n')


        s.close()

これは問題なく動作します。ジェネレーターは期待通りに出力を30kHzに設定しました。問題は、ジェネレーターからの応答を読み取ろうとしたときです。たとえば、これはデバイス名を返すはずです:

        s.write('*IDN?\n')
        print s.realine()

応答がジェネレーターの出力バッファーに格納されることは確かですが、実際にはデータは送信されません。

バッファからのデータ送信をトリガーするコマンドはありますか?または、ハードウェアハンドシェイクを有効にする必要がありますか?

この発電機を持っている人はいますか?RS232およびSCPIで使用しますか?


私はこの質問に答えることはできませんが、答えに興味があるので、あなたは私の賛成票を持っています
Andy aka

送信していないことをどのようにして確認しますか?そこにそれを読み取るためのコードはありません。端末プログラムまたはシリアルポートモニターを試しましたか?それともオシロスコープ?
Jeanne Pindar 2013年

私が持っているSaleaeロジックをアナライザ conectedへのRX / TXピンとPythonスクリプトでは、そこにあるs.readline()関数は(私はあなたに感謝し、私の質問を編集しました)。
vasco 2013年


コンピュータで、シリアルバッファリングをオフにし、シリアルバッファサイズをゼロに設定します。readlineは無期限にブロックされていますか?(それはあなたが説明したものからのものでなければなりません)
デビッド2013

回答:


3

RSI経由のSCPIをデバッグする最も簡単な方法は、既存のシリアルインターフェイスでターミナルプログラムを使用することです。コマンドを入力して、何が返されるかを確認してください。端末では、ボーレート、ハンドシェイク、エコー、終了の文字を、その間にある不明なシリアル通信ライブラリに依存することなく、かなり簡単に操作できます(入力内容は送信内容、受信内容は表示内容です)。

* IDN?特別なトリガーや応答のプロンプトは必要ありません。コマンドがサポートされている場合(マニュアルによると)、終了文字が正しい(以前のPythonの作業が成功したため、正しいと思われる)場合、およびハンドシェイクが正しい場合、機器は次のように即座に応答します。識別文字列。

計測器が何を期待して何を返すかを正確に把握したら、Pythonスクリプトを簡単に作成できます。


1
私のための有用な情報ミスターグルマン+1。OPに何が起こりましたか?
Andy別名

1

後でですが...

DSRを正の電圧に接続してみてください。33120Aが応答するのは、負の電圧に接続する代わりにこれを実行した場合のみです。

RealTermをFTDI USB-RS232コンバーターと一緒に使用し、CTS(PC)をDSR(33120a)に接続しますが、通信中にRealTermを介してCTSの電圧を管理(および保持)します(プログラムでそれを行うオプションがあります)。

よろしく。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.