RS232 के माध्यम से HP33120A पर SCPI का उपयोग कैसे करें?


9

मेरे पास पुराने हेवलेट पैकर्ड 33120 ए फंक्शन जनरेटर है (यह एगिलेंट 33120 ए जैसा ही होना चाहिए ) और मैं इसे एमसीयू ( एटीएमएगा ) से नियंत्रित करना चाहूंगा। जनरेटर में RS232 है और SCPI कमांड का उपयोग करता है।

मैंने सरलतम आरएस 232 को टीएक्सएल कनवर्टर के साथ MAX232 के लिए बनाया, सिर्फ आरएक्स और TX लाइनों के साथ। के अनुसार उपयोगकर्ता की गाइड (अध्याय 4, अनुभाग डीटीआर / DSR सहभागिता प्रोटोकॉल) मैं तर्क सही (नकारात्मक वोल्टेज) और डीटीआर के लिए DSR जुड़ा हुआ नहीं है बंधे। यह कॉन्फ़िगरेशन हार्डवेयर हैंडशेक को अक्षम करना चाहिए।

अब, मैं कनवर्टर को MCU या कंप्यूटर से जोड़ सकता हूं। अपने पहले प्रयोग के लिए मैंने कंप्यूटर और इस पायथन स्क्रिप्ट का उपयोग किया:

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 के साथ उपयोग करते हैं?


मैं इस सवाल का जवाब नहीं दे सकता हूं, लेकिन मुझे जवाब में दिलचस्पी है इसलिए आपने मेरा वोट दिया है
एंडी उर्फ

तुम्हें कैसे पता कि यह संचारण नहीं है? इसे पढ़ने के लिए आपके पास कोई कोड नहीं है। क्या आपने टर्मिनल प्रोग्राम या सीरियल पोर्ट मॉनिटर की कोशिश की है? या एक आस्टसीलस्कप?
जिने पिंडर

मेरे पास Saleae लॉजिक एनालाइज़र है जो कि RX / TX पिन से जुड़ा है और पायथन लिपि में, s.readline()फंक्शन है (मैंने अपना प्रश्न संपादित किया, धन्यवाद)।
वास्को

संभवतः एक संबंधित प्रश्न: stackoverflow.com/questions/1093598/…
सिजोनॉन Bkczkowski

अपने कंप्यूटर पर, सीरियल बफ़रिंग बंद करें, और सीरियल बफर साइज़ को शून्य पर सेट करें। क्या रीडलाइन अनिश्चित काल तक अवरुद्ध है? (यह आपके बताए अनुसार से होना चाहिए)
david

जवाबों:


3

RS-232 पर SCPI को डिबग करने का सबसे आसान तरीका अपने मौजूदा सीरियल इंटरफ़ेस के साथ एक टर्मिनल प्रोग्राम का उपयोग करना है। बस कमांड टाइप करें और देखें कि क्या वापस आता है। टर्मिनल आपको बॉड दर, हैंडशेकिंग, इको और समाप्ति वर्णों के साथ कुछ अज्ञात धारावाहिक संचार पुस्तकालय पर भरोसा किए बिना (आप जो टाइप करते हैं, जो प्राप्त किया जाता है, जो दिखाया गया है) दिखाया जाता है।

* आईडीएन? प्रतिक्रिया के लिए किसी विशेष ट्रिगर या संकेत की आवश्यकता नहीं है। यदि कमांड का समर्थन किया जाता है (मैनुअल के अनुसार, यह है), यदि समाप्ति वर्ण सही है (जो ऐसा प्रतीत होता है, क्योंकि आपके पिछले पायथन कार्य में कुछ सफलता मिली थी) और यदि हैंडशेकिंग सही है, तो इंस्ट्रूमेंट को तुरंत जवाब देना चाहिए पहचान स्ट्रिंग।

एक बार जब आप यह पता लगा लेते हैं कि उपकरण क्या अपेक्षा करता है और वापस लौटता है, तो आप आसानी से अपनी पायथन लिपि को तैयार कर सकते हैं।


1
मेरे लिए उपयोगी जानकारी मिस्टर गुरूमन +1। जो कुछ भी ओपी को हुआ?
एंडी उर्फ

1

यह बाद में है लेकिन ...

DSR को पॉजिटिव वोल्टेज से टाई करने की कोशिश करें। मेरा 33120 ए केवल जवाब देता है अगर मैं नकारात्मक वोल्टेज से बंधा हुआ हूं।

मैं एक FTDI USB-RS232 कनवर्टर के साथ RealTerm का उपयोग करता हूं, और CTS (पीसी) को DSR (33120a) के साथ संलग्न करता हूं, लेकिन संचार के दौरान RealTerm के माध्यम से सीटीएस के वोल्टेज का प्रबंधन (और होल्डिंग) करता है (कार्यक्रम में ऐसा करने का एक विकल्प है)।

सादर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.