HMS3010, SCPI Programmierung

May 31, 2010 15 Replies

Hallo,



ich versuche gerade einen Spektrum-Analysator HMS3010 vom PC aus über den SCPI-Befehlssatz zu steuern. Die Center-Frequenz soll auf einen bestimmten Wert gesetzt werden, dann soll ein Marker auf das Maximum gesetzt werden, und dann werden Frequenz und Pegel das Markers ausgelesen. Das Ganze in einer Schleife über viele Frequenzen.



Es funktioniert nur dann, wenn ich im Steuerprogramm hinreichend grosse Verzögerungszeiten einbaue. Aber das gefällt mir nicht. Eigentlich müsste doch das Messgerät das Timing vorgeben, und nicht der PC. Aber wie kann ich über SCPI abfragen, wann ein Sweep vollendet wurde und wann das Maximum gefunden wurde?



Gruss Michael


Michael Koch schrieb: > Es funktioniert nur dann, wenn ich im Steuerprogramm hinreichend grosse

Wenn ich mich richtig erinnere konnte mittels STAT abgefragt werden ob der letzte Befehl abgeschlossen ist und das Gerät für eine neue Aktion bereit ist. Ob es eine Art Interrupt gibt weiß ich nicht.

Gruß Martin

Michael Koch schrieb:

Ohne das Gerät zu kennen: Gibt es kein Kommando, um einen einzelnen Sweep auszulösen? Dann müsstest Du eigentlich mit dem Standard-SCPI-Kommando "*OPC?" (OPeration Complete) abfragen können, wann dieses Kommando und damit der Sweep ausgeführt wurden.

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

Hallo Christian,

So ein Kommando habe ich noch nicht gefunden. Den Befehlssatz gibt es hier:

formatting link

Gruss Michael

formatting link

Sollten die das tatsaechlich vergessen haben waere ein Email an Hameg sinnvoll. Vielleicht geht es von hinten durch die Brust, SWE :MODE auf CONT, dann wieder auf SING um ihn anzuhalten. Du koenntest auch versuchen ob der Analyzer einige in diesem Manual nicht dokumentierte (oder vergessene) Befehle wie :RUN und :STOP versteht.

Das Abfragen ob fertig koennte ueber das Statusregister SESR funktionieren. "Operation Complete" (OPC) auslesen und das sollte an sich ja das Ende eines Sweep signalisieren. Da USB und RS232 das SRER Register nicht unterstuetzen und Du vermutlich kein GPIB Interface hast ist das eventuell der einzige Weg.

Irgendwie hat Instek das besser hinbekommen, mein Scope laesst sich komplett fernsteuern, auch Run und Stop. Es macht auch nichts wenn es Befehle waehrend eines langsamen Sweep empfaengt. Wobei der Startbefehl :RUN heisst, nicht :START. Das hatte mich anfangs mal erwischt, als Ingenieur ueberfliegt man Manuals ja hoechstens, wenn ueberhaupt ... :-)

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Michael Koch schrieb:

In der Tat finde ich im Befehlssatz auch kein Kommando, das ausdrücklich dafür da ist. Seltsam. Sollten die etwa eine Möglichkeit vergessen haben, im Single-Sweep-Modus einen Sweep auszulösen?

Du könntest jetzt diverse Kommandos durchprobieren, ob sie (u.U. als Nebenwirkung) einen Sweep starten und ob man dann über "*OPC?" oder "*WAI" synchronisieren kann. So könnte es z.B. von der Bezeichnung her sein, dass ":TRIGGER:SOURCE IMMEDIATE" im Single-Sweep-Modus einen neuen Sweep startet.

Oder Du fragst mal beim Hameg-Support nach.

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

Hallo,

*WAI hatte ich schon probiert, zeigt keinerlei Wirkung.

Das habe ich vorhin schon gemacht. Warten wir mal die Antwort ab. Vielleicht wird der Befehlssatz ja noch erweitert. Das Manual gibt's auch erst seit ein paar Wochen. Die Firmware im HMS3010 ist bislang noch ebensowenig ausgereift wie die dazugehörige EMV-Precompliance-Software.

Gruss Michael

Michael Koch schrieb:

Naja, *WAI wartet ja nur, bis das aktuelle Kommando abgearbeitet ist. D.h. Du brauchst halt schon ein Kommando, das den Sweep auslöst. Hast Du mal Jörgs oder meine Idee ausprobiert?

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x6DA025CA

Hallo Joerg,

Schon geschehen.

Damit scheint der HMS3010 kein Problem zu haben. Die Kommandos bearbeitet er alle sofort und während der Sweep läuft. Das Problem ist ja eher dass er sie _zu schnell_ bearbeitet. Wenn ich keine Zeitverzögerung einbaue, liefert er mir den Pegel und die Frequenz des Markers zurück, bevor er den Marker auf das Maximum gesetzt hat -- obwohl ich den Befehl zum Suchen des Maximums natürlich zuerst gesendet habe. Als vorläufige Lösung werde ich erst mal eine grosszügige Zeitverzögerung in meinem Programm drinlassen.

Gruss Michael

Hallo Christian,

Ich bin mir noch nicht ganz sicher wie gross die zu messenden Pegel sind, aber es könnte sein dass es mit Single Sweep gar nicht geht weil das Signal dann im Rauschen untergeht. D.h. möglicherweise brauche ich mehrere Sweeps und Average, und dann wäre es gar nicht verkehrt wenn der PC das Timing macht. Ich warte erst mal die Antwort von Hameg ab.

Gruss Michael

Michael Koch schrieb:

Auch wenn Du zwischen Peak finden und Markerposition lesen einen *OPC? benutzt?

Hallo Martin,

Also wenn ich nach dem Paek finden ein *OPC? sende und dann auf die Antwort warte, dann ist keinerlei Zeitverzögerung erkennbar und die Messwerte sind alle falsch (bzw. der Marker steht dann offensichtlich noch am linken Bildschirmrand bei der Start-Frequenz).

Gruss Michael

Hallo,

die Antwort von Hameg besagt (sinngemäss und ausschnittsweise) folgendes:

-- Eine Möglichkeit die "Bereitschaft" (oder vielmehr die Frage, ob das Gerät den Sweep abgeschlossen hat) des Geräts abzufragen besteht beim HMS derzeit leider nicht.

-- Es wird empfohlen gewisse Zeitverzögerungen in das Steuerprogramm einzubauen, dafür wurden konkrete Richtwerte angegeben.

-- Es besteht zwar die Möglichkeit den Gerätestatus mittels der Registerabfrage "OPC?" zurückzulesen, der rückgemeldete Status bezieht sich jedoch nicht auf den Sweep des Geräts, sondern auf die Bereitschaft des HMS einen neuen Befehl zu verarbeiten.

-- Dennoch erkennen wir die Notwendigkeit einer solchen Abfrage und denken derzeit darüber nach einen Komfortbefehl für die Abfrage nach dem Sweepstatus in die HMS Serie einzubauen.

Gruss Michael

P.S.

Es gibt einen undokumentierten Befehl, mit dem man einen Single-Sweep auslösen kann:

TRIG:SOFT

Gruss Michael

Aha! Da gibt es vermutlich noch mehr.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

"Bitte tun sie etwa Oel auf die Bremsen, dann quietschen sie auch nicht mehr" :-) ... SCNR

Enttaeuscht mich jetzt von Hameg ein wenig. Sowas haette spaetestens in einem Design Review auffallen muessen. Aber wenigstens wollen sie nachbessern.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required