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

9

Tengo un 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 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), vinculé el DSR a la lógica VERDADERO (voltaje negativo) y DTR no está conectado. Esta configuración debería desactivar el protocolo de enlace de hardware.

Ahora, puedo conectar el convertidor a MCU o a la computadora. Para mi primer experimento utilicé 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 protocolo de enlace de hardware?

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

    
pregunta vasco

2 respuestas

3

La forma más sencilla de depurar SCPI sobre RS-232 es usar un programa de terminal con su interfaz serial existente. Simplemente escriba el comando y vea lo que vuelve. El terminal le permite manipular fácilmente con caracteres de velocidad en baudios, reconocimiento, eco y terminación sin depender de alguna biblioteca de comunicación serie 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 desencadenante especial o un mensaje 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 intercambio es correcto, el instrumento debería responder inmediatamente con la cadena de identificación.

Una vez que descubras exactamente lo que espera y devuelve el instrumento, puedes diseñar tu script en Python con facilidad.

    
respondido por el Adam Lawrence
1

Es tarde pero ...

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

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

Saludos.

    
respondido por el jm sc

Lea otras preguntas en las etiquetas