Saya memiliki generator fungsi Hewlet Packard 33120A lama (harus sama dengan Agilent 33120A ) dan saya ingin mengendalikannya dengan MCU (ATMega). Generator memiliki RS232 dan menggunakan perintah SCPI.
Saya membuat RS232 to TTL converter sederhana dengan MAX232, hanya dengan jalur RX dan TX. Menurut panduan Pengguna (bab 4, bagian DTR / DSR Handshake Protocol) saya mengikat DSR ke logika TRUE (tegangan negatif) dan DTR tidak terhubung. Konfigurasi ini harus menonaktifkan jabat tangan perangkat keras.
Sekarang, saya dapat menghubungkan konverter ke MCU atau ke komputer. Untuk percobaan pertama saya, saya menggunakan komputer dan skrip Python ini:
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()
Ini berfungsi tanpa masalah. Generator menetapkan output ke 30kHz seperti yang diharapkan. Masalahnya adalah, ketika saya mencoba membaca beberapa respons dari generator. Misalnya, ini harus mengembalikan nama perangkat:
s.write('*IDN?\n')
print s.realine()
Saya cukup yakin responsnya disimpan dalam buffer output generator tetapi tidak ada data yang benar-benar dikirim.
Apakah ada perintah untuk memicu pengiriman data dari buffer? Atau apakah saya perlu mengaktifkan jabat tangan perangkat keras?
Adakah yang punya generator ini? Apakah Anda menggunakannya dengan RS232 dan SCPI?
sumber
s.readline()
fungsi (saya mengedit pertanyaan saya, terima kasih).Jawaban:
Cara termudah untuk men-debug SCPI melalui RS-232 adalah dengan menggunakan program terminal dengan antarmuka serial yang ada. Cukup ketik perintah dan lihat apa yang muncul kembali. Terminal memungkinkan Anda untuk dengan mudah mengutak-atik baud rate, jabat tangan, gema dan karakter terminasi tanpa bergantung pada beberapa perpustakaan komunikasi serial yang tidak dikenal di antaranya (apa yang Anda ketik adalah apa yang Anda kirim, apa yang diterima adalah apa yang ditampilkan).
* IDN? tidak memerlukan pemicu atau prompt khusus untuk respons. Jika perintah didukung (sesuai dengan manual, itu benar), jika karakter terminasi benar (yang tampaknya, karena pekerjaan Python Anda sebelumnya berhasil) dan jika jabat tangan benar, instrumen harus segera merespons dengan string identifikasi.
Setelah Anda mengetahui dengan tepat apa yang diharapkan dan dikembalikan instrumen, Anda kemudian dapat membuat skrip Python Anda dengan mudah.
sumber
Ini nanti tapi ...
Cobalah untuk mengikat DSR ke voltase positif. 33120A saya hanya merespons jika saya melakukan itu di tempat yang terikat pada tegangan negatif.
Saya menggunakan RealTerm dengan konverter FTDI USB-RS232, dan melampirkan CTS (PC) ke DSR (33120a) tetapi mengelola (dan menahan) tegangan CTS melalui RealTerm selama komunikasi (Ada pilihan untuk melakukan itu dalam program).
Salam.
sumber