Làm cách nào để sử dụng SCPI trên HP33120A qua RS232?


9

Tôi có bộ tạo chức năng Hewlet Packard 33120A cũ (nó phải cùng loại với Agilent 33120A ) và tôi muốn điều khiển nó bằng MCU (ATMega). Trình tạo có RS232 và sử dụng các lệnh SCPI.

Tôi đã thực hiện bộ chuyển đổi RS232 sang TTL đơn giản với MAX 232, chỉ với các dòng RX và TX. Theo Hướng dẫn sử dụng (chương 4, phần Giao thức bắt tay DTR / DSR) Tôi đã gắn DSR với logic TRUE (điện áp âm) và DTR không được kết nối. Cấu hình này nên vô hiệu hóa bắt tay phần cứng.

Bây giờ, tôi có thể kết nối bộ chuyển đổi với MCU hoặc với máy tính. Đối với thử nghiệm đầu tiên của tôi, tôi đã sử dụng máy tính và tập lệnh Python này:

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

Điều này hoạt động mà không có bất kỳ vấn đề. Máy phát đặt đầu ra 30kHz như mong đợi. Vấn đề là, khi tôi cố gắng đọc một số phản hồi từ trình tạo. Ví dụ: điều này sẽ trả về tên thiết bị:

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

Tôi khá chắc chắn rằng phản hồi được lưu trữ trong bộ đệm đầu ra của trình tạo nhưng không có dữ liệu nào thực sự được truyền đi.

Có lệnh nào để kích hoạt truyền dữ liệu từ bộ đệm không? Hoặc tôi cần kích hoạt bắt tay phần cứng?

Có ai có máy phát điện này không? Bạn có sử dụng nó với RS232 và SCPI không?


Tôi không thể trả lời câu hỏi này nhưng tôi quan tâm đến câu trả lời vì vậy bạn đã có phiếu bầu của tôi
Andy aka

Làm thế nào để bạn biết nó không truyền? Bạn không có bất kỳ mã nào để đọc nó. Bạn đã thử một chương trình thiết bị đầu cuối hoặc một màn hình cổng nối tiếp? Hay một máy hiện sóng?
Jeanne Pindar

Tôi có bộ phân tích logic Saleae được kết nối với các chân RX / TX và trong tập lệnh Python, có s.readline()chức năng (tôi đã chỉnh sửa câu hỏi của mình, cảm ơn bạn).
vasco

Có thể là một câu hỏi liên quan: stackoverflow.com/questions/1093598/ từ
Szymon Bęczkowski

Trên máy tính của bạn, Tắt bộ đệm nối tiếp và đặt kích thước bộ đệm nối tiếp thành 0. Là dòng đọc chặn vô thời hạn? (nên lấy từ những gì bạn đã mô tả)
David

Câu trả lời:


3

Cách dễ nhất để gỡ lỗi SCPI qua RS-232 là sử dụng chương trình đầu cuối với giao diện nối tiếp hiện có của bạn. Chỉ cần gõ lệnh và xem những gì trở lại. Thiết bị đầu cuối cho phép bạn dễ dàng thay đổi tốc độ baud, bắt tay, tiếng vang và chấm dứt mà không cần dựa vào một số thư viện giao tiếp nối tiếp không xác định ở giữa (những gì bạn nhập là những gì bạn gửi, những gì nhận được là những gì được hiển thị).

* IDN? không cần bất kỳ kích hoạt đặc biệt hoặc nhắc nhở để đáp ứng. Nếu lệnh được hỗ trợ (theo hướng dẫn, thì đúng), nếu ký tự kết thúc là chính xác (có vẻ như là do công việc Python trước đó của bạn đã thành công) và nếu bắt tay là chính xác, công cụ sẽ phản hồi ngay lập tức chuỗi nhận dạng.

Khi bạn tìm ra chính xác những gì công cụ mong đợi và trả về, bạn có thể dễ dàng tạo tập lệnh Python của mình.


1
Thông tin hữu ích cho tôi thưa ngài +1. Chuyện gì đã xảy ra với OP?
Andy aka

1

Sau này nhưng ...

Cố gắng buộc DSR với điện áp dương. Chiếc 33120A của tôi chỉ đáp ứng nếu tôi làm điều đó thay cho điện áp âm.

Tôi sử dụng RealTerm với bộ chuyển đổi USB-RS232 FTDI và gắn CTS (PC) với DSR (33120a) nhưng quản lý (và giữ) điện áp của CTS thông qua RealTerm trong quá trình liên lạc (Có một tùy chọn để thực hiện điều đó trong chương trình).

Trân trọng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.