RS232 üzerinden HP33120A üzerinde SCPI nasıl kullanılır?


9

Eski Hewlet Packard 33120A fonksiyon üretecim var ( Agilent 33120A ile aynı tipte olmalı ) ve MCU (ATMega) ile kontrol etmek istiyorum. Jeneratör RS232'ye sahiptir ve SCPI komutlarını kullanır.

Sadece RX ve TX hatları ile MAX232 ile basit RS232'den TTL'ye dönüştürücü yaptım. Göre Kullanıcı rehberi (bölüm 4, bölüm DTR / DSR Tokalaşma Protokolü) Ben bağlı değil mantık TRUE (negatif gerilim) ve DTR için DSR bağladılar. Bu yapılandırma, donanım anlaşmasını devre dışı bırakmalıdır.

Şimdi, dönüştürücüyü MCU'ya veya bilgisayara bağlayabilirim. İlk denememde bilgisayar ve bu Python betiği kullandım:

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()

Bu sorunsuz çalışıyor. Jeneratör çıkışını beklendiği gibi 30kHz'e ayarladı. Sorun, jeneratörden bazı yanıtları okumaya çalıştığımda. Örneğin, bu cihazın adını döndürmelidir:

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

Yanıtın jeneratör çıktı tamponunda saklandığından eminim ama aslında hiçbir veri iletilmiyor.

Arabelleğe veri aktarımını tetikleyen herhangi bir komut var mı? Yoksa donanım anlaşmasını etkinleştirmem gerekiyor mu?

Bu jeneratöre sahip olan var mı? RS232 ve SCPI ile mi kullanıyorsunuz?


Bu soruya cevap veremem ama cevaplarla ilgileniyorum, bu yüzden benim oylamam var
Andy aka

İletmediğini nereden biliyorsun? Okumak için orada herhangi bir kod yok. Bir terminal programını veya bir seri port monitörünü denediniz mi? Yoksa bir osiloskop mu?
Jeanne Pindar

RX / TX pinlerine bağlı Saleae mantık analizörü var ve Python betiğinde s.readline()fonksiyon var (sorumu düzenledim, teşekkür ederim).
vasco


Bilgisayarınızda Seri arabelleğe almayı kapatın ve seri arabelleği boyutunu sıfıra ayarlayın. Okuma çizgisi süresiz olarak engelleniyor mu? (tanımladığınız şeyden olmalı)
david

Yanıtlar:


3

SCPI'yi RS-232 üzerinden hata ayıklamanın en kolay yolu, mevcut seri arabiriminizle bir terminal programı kullanmaktır. Sadece komutu yazın ve neyin geri geldiğini görün. Terminal, aralarında bilinmeyen bir seri iletişim kütüphanesine dayanmadan baud hızı, el sıkışma, yankı ve sonlandırma karakterleri ile oldukça kolay bir şekilde çalışmanıza izin verir (ne yazdığınızı, aldığınız şey gösterilen şeydir).

* IDN? herhangi bir özel tetikleyici veya yanıt istemi gerektirmez. Komut destekleniyorsa (kılavuza göre), sonlandırma karakteri doğruysa (önceki Python çalışmanızın bir miktar başarısı olduğu için öyle görünüyorsa) ve el sıkışma doğru ise, cihaz hemen tanımlama dizesi.

Enstrümanın ne beklediğini ve geri döndüğünü tam olarak anladıktan sonra, Python betiğinizi kolaylıkla hazırlayabilirsiniz.


1
Benim için yararlı bilgiler bay guruman +1. OP'ye ne oldu?
Andy aka

1

Daha sonra ama ...

DSR'yi pozitif voltaja bağlamaya çalışın. 33120A'm sadece bunu negatif voltaja bağlı yerine yaparsam cevap verir.

FTT USB-RS232 dönüştürücüsü ile RealTerm kullanıyorum ve DSR'ye (33120a) CTS (PC) ekliyorum ancak iletişim sırasında CTS voltajını RealTerm aracılığıyla yönetiyor (ve tutuyorum) (Programda bunu yapmak için bir seçenek var).

Saygılarımızla.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.