¿Cómo usar SCPI en HP33120A a través de RS232?

9

Tengo el antiguo generador de funciones Hewlet Packard 33120A (debería ser del mismo tipo que Agilent 33120A ) y me gustaría controlarlo con MCU (ATMega). El generador tiene RS232 y usa comandos SCPI.

Hice un simple convertidor de RS232 a TTL con MAX232, solo con líneas RX y TX. De acuerdo con la Guía del usuario (capítulo 4, sección DTR / DSR Handshake Protocol), relacioné el DSR con la lógica VERDADERO (voltaje negativo) y el DTR no está conectado. Esta configuración debería deshabilitar el protocolo de enlace de hardware.

Ahora, puedo conectar el convertidor a MCU o computadora. Para mi primer experimento utilicé la computadora y este script de 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()

Esto funciona sin ningún problema. El generador estableció su salida a 30kHz como se esperaba. El problema es que cuando intento leer alguna respuesta del generador. Por ejemplo, esto debería devolver el nombre del dispositivo:

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

Estoy bastante seguro de que la respuesta se almacena en el búfer de salida del generador, pero en realidad no se transmiten datos.

¿Hay algún comando para activar la transmisión de datos desde el búfer? ¿O necesito habilitar el apretón de manos de hardware?

¿Hay alguien que tenga este generador? ¿Lo usas con RS232 y SCPI?

vasco
fuente
No puedo responder a esta pregunta, pero estoy interesado en las respuestas, así que tienes mi voto
positivo
¿Cómo sabes que no está transmitiendo? No tienes ningún código allí para leerlo. ¿Has probado un programa de terminal o un monitor de puerto serie? O un osciloscopio?
Jeanne Pindar
Tengo el analizador lógico Saleae conectado a los pines RX / TX y en el script Python, hay una s.readline()función (edité mi pregunta, gracias).
vasco
Posiblemente una pregunta relacionada: stackoverflow.com/questions/1093598/…
Szymon Bęczkowski
En su computadora, desactive el almacenamiento en búfer en serie y configure el tamaño del búfer en serie en cero. ¿La línea de lectura se bloquea indefinidamente? (debe ser de lo que ha descrito)
david

Respuestas:

3

La forma más fácil de depurar SCPI sobre RS-232 es utilizar un programa de terminal con su interfaz serial existente. Simplemente escriba el comando y vea qué regresa. El terminal le permite manipular con bastante facilidad los caracteres de velocidad de transmisión, apretón de manos, eco y terminación sin depender de una biblioteca de comunicación serial desconocida en el medio (lo que escribe es lo que envía, lo que se recibe es lo que se muestra).

* IDN? no necesita ningún disparador especial o solicitud de respuesta. Si el comando es compatible (de acuerdo con el manual, lo es), si el carácter de terminación es correcto (lo que parece ser, ya que su trabajo anterior de Python tuvo algún éxito) y si el apretón de manos es correcto, el instrumento debe responder inmediatamente con La cadena de identificación.

Una vez que descubra exactamente lo que el instrumento espera y devuelve, puede crear su script Python con facilidad.

Adam Lawrence
fuente
1
Información útil para mí señor guruman +1. ¿Qué pasó con el OP?
Andy alias
1

Es mas tarde pero ...

Intente vincular DSR a voltaje positivo. Mi 33120A solo responde si lo hago en lugar de estar conectado a un voltaje negativo.

Uso RealTerm con un convertidor FTDI USB-RS232 y conecto CTS (PC) a DSR (33120a) pero gestiono (y mantengo) el voltaje de CTS a través de RealTerm durante las comunicaciones (hay una opción para hacerlo en el programa).

Saludos.

jm sc
fuente