Comment utiliser SCPI sur HP33120A via RS232?


9

J'ai un ancien générateur de fonctions Hewlet Packard 33120A (il devrait être du même type que Agilent 33120A ) et je voudrais le contrôler avec MCU (ATMega). Le générateur a RS232 et utilise des commandes SCPI.

J'ai fait un simple convertisseur RS232 en TTL avec MAX232, juste avec des lignes RX et TX. Selon le guide de l'utilisateur (chapitre 4, section Protocole de prise de contact DTR / DSR), j'ai lié le DSR à la logique TRUE (tension négative) et le DTR n'est pas connecté. Cette configuration devrait désactiver la négociation matérielle.

Maintenant, je peux connecter le convertisseur au MCU ou à l'ordinateur. Pour ma première expérience, j'ai utilisé un ordinateur et ce script 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()

Cela fonctionne sans aucun problème. Le générateur a réglé sa sortie à 30 kHz comme prévu. Le problème est, quand j'essaye de lire une réponse du générateur. Par exemple, cela devrait retourner le nom du périphérique:

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

Je suis presque sûr que la réponse est stockée dans le tampon de sortie du générateur mais aucune donnée n'est réellement transmise.

Existe-t-il une commande pour déclencher la transmission de données à partir du tampon? Ou dois-je activer la négociation matérielle?

Y a-t-il quelqu'un qui a ce générateur? L'utilisez-vous avec RS232 et SCPI?


Je ne peux pas répondre à cette question mais je suis intéressé par les réponses, vous avez donc mon vote
positif

Comment savez-vous qu'il ne transmet pas? Vous n'avez pas de code pour le lire. Avez-vous essayé un programme de terminal ou un moniteur de port série? Ou un oscilloscope?
Jeanne Pindar

J'ai analyseur logique Saleae connecté aux broches RX / TX et dans le script Python, il y a une s.readline()fonction (j'ai édité ma question, merci).
vasco


Sur votre ordinateur, désactivez la mise en mémoire tampon série et définissez la taille de la mémoire tampon série sur zéro. La ligne de lecture se bloque-t-elle indéfiniment? (cela devrait être d'après ce que vous avez décrit)
david

Réponses:


3

La façon la plus simple de déboguer SCPI sur RS-232 est d'utiliser un programme de terminal avec votre interface série existante. Tapez simplement la commande et voyez ce qui revient. Le terminal vous permet de manipuler assez facilement le débit en bauds, la poignée de main, l'écho et les caractères de terminaison sans compter sur une bibliothèque de communication série inconnue entre les deux (ce que vous tapez est ce que vous envoyez, ce qui est reçu est ce qui est affiché).

* IDN? n'a pas besoin de déclencheur spécial ni d'invite de réponse. Si la commande est prise en charge (selon le manuel, elle l'est), si le caractère de terminaison est correct (ce qu'il semble être, puisque votre travail Python précédent a eu un certain succès) et si la négociation est correcte, l'instrument devrait répondre immédiatement avec la chaîne d'identification.

Une fois que vous avez compris exactement ce que l'instrument attend et renvoie, vous pouvez ensuite créer facilement votre script Python.


1
Infos utiles pour moi monsieur guruman +1. Qu'est-il arrivé au PO?
Andy aka

1

C'est plus tard mais ...

Essayez de lier le DSR à une tension positive. Mon 33120A ne répond que si je le fais à la place d'une tension négative.

J'utilise RealTerm avec un convertisseur FTDI USB-RS232 et attache CTS (PC) à DSR (33120a) mais gère (et maintient) la tension de CTS via RealTerm pendant les communications (il y a une option pour le faire dans le programme).

Cordialement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.