Matlab-Steuerung des Signalgenerators Rigol DG1022
Ein Signalgenerator für die Bastelecke ist schon lange kein unerschwinglicher Traum
mehr. Bei einem Arbiträrgenerator spielen dabei nicht nur die eigentlichen
Geräteparameter, sondern auch die Fernsteuerbarkeit vom PC eine wichtige Rolle
für die praktische Verwendbarkeit. Im folgenden wird der
Arbitrary Waveform Generator Rigol DG1022 und seine Fernsteuerung über
Matlab beschrieben.
Frontansicht des DG1022 — Leider ist die Bedienung nicht immer besonders
komfortabel, aber man kommt intuitiv an sein Ziel, ohne wiederholt die
Bedienungsanleitung konsultieren zu müssen.
(Zum Vergrößern auf das Bild klicken)
Mein letzter Versuch, einen Universal-Funktionsgenerator für alle
Anwendungsfälle zu erwerben, ist leider fehlgeschlagen: Zwar hat sich das Gerät
selbst als ausgezeichnet in Bezug auf Bedienkomfort, Funktionsumfang und
Preis-Leistungs-Verhältnis erwiesen, leider aber auch als nicht besonders gut
über den PC fernsteuerbar herausgestellt. (Den vollständigen Bericht findet man
hier.)
Beim zweiten Versuch wurde deshalb explizit sichergestellt, daß eine
Standard-Software-Schnittstelle zur PC-Fernsteuerung vorhanden ist. Der
Arbitrary Waveform Generator Rigol DG1022 bietet im Vergleich zum
UTG2064 von Uni-Trend nicht ganz so
rosige Geräteparameter, und der Bedienkomfort ist leider auch nicht vergleichbar.
Dafür ist er ein Stück billiger und bietet eine VISA-Schnittstelle von National
Instruments. Letztere kann mithilfe der Instrument Control Toolbox von Matlab
angesprochen werden. Nach aktuellem Stand (Matlab 2014A) wird allerdings kein
Rigol-Funktionsgenerator direkt von Matlab unterstützt. Deshalb wird an dieser Stelle
eine Matlab-Anbindung des Geräts vorgestellt — die Implementierung sollte sich
aber auch 1:1 für Python übernehmen lassen.
Der Signalgenerator
Bei der folgenden Übersicht handelt es sich nicht um einen kompletten Testbericht,
sondern nur um eine Liste von Punkten, die aus dem Datenblatt nicht ohne weiteres
hervorgehen:
-
Beim Einschalten des Netzschalters an der Rückseite blitzen die
LCD-Hintergrundbeleuchtung und alle LEDs des Geräts kurz
und sehr hell auf.
-
Der Start des Geräts dauert recht lange.
Rückansicht des DG1022 — Hier finden sich Netzschalter,
USB-Anschluß, Trigger Aus- und Eingang und der Eingang für die
Modulation.
(Zum Vergrößern auf das Bild klicken)
-
Nach dem Ausschalten mit dem Taster an der Frontseite signalisiert das
Gerät mit einem beständigen, langsamen Blinken, daß es
mitnichten vollständig ausgeschaltet ist.
-
Alle Signalausgänge haben Bezug auf Ground-Potenzial.
-
Das Gerät hat keinen Lüfter eingebaut und die Tastentöne
lassen sich ausschalten. Damit ist es im Betrieb (wenn gewünscht)
völlig lautlos.
-
Es existiert ein umfangreiches programming manual für die
Rigol-1000er-Serie[1].
(Es gibt ältere Varianten dieses Manuals mit der Bezeichnung
„DG1022 programming manual” bei Online-Händlern zum
Download. Das ältere Manual enthält einen nervigen Fehler und
ihm fehlt die Beschreibung der Frequenzzähler-Funktionen. Hier ist
das auf der beiliegenden CD vorhandene Manual von 2014 zu bevorzugen.)
-
Kanal 2 des Signalgenerators scheint keine Signalformen aus dem
Speicher VOLATILE erzeugen zu können. Für die
Benutzung einer eigenen Signalform unter Kanal 2 muß diese im
nichtflüchtigen Speicher abgelegt werden. Fernerhin scheint
Kanal 2 auch keine Signalformen anzeigen zu können, die noch nie
von Kanal 1 angezeigt wurden.
-
Obwohl Kanal 2 nur eine Auflösung von 1024 Datenpunkten hat, hat
er keinerlei Probleme, Signalformen mit 4096 Datenpunkten zu lesen.
Sollte in Kanal 1 dagegen eine Signalform mit mehr als 1024
Datenpunkten geladen sein und anschließend eine Signalform mit
weniger Datenpunkten geladen werden, wird die alte Signalform nicht
komplett überschrieben, sondern eine Mischung aus alter und neuer
Signalform erzeugt. Das gilt auch für den
VOLATILE-Speicherplatz, wenn dieser zuvor gelöscht wurde.
Deshalb bietet es sich an, grundsächlich nur Signalformen mit 4096
Datenpunkten zu verwenden.
Ist auf beiden Kanälen die selbe Signalform geladen (hier absichtlich mit
einem kleinen Peak auf dem Low-Pegel) und beide auf die Phasenlage 0°
eingestellt, bedeutet das nicht, daß die Signale phasengleich sind.
(Zum Vergrößern auf das Bild klicken)
-
Kanal 1 und 2 scheinen unterschiedliche, freilaufende Taktgeber zu
haben. Das führt zu dem anfangs ungewohnten Verhalten, daß
gleiche Frequenz und gleiche Phasenlage auf beiden Kanälen
eingestellt nicht zwangsläufig bedeutet, daß beide
Signalverläufe deckungsgleich sind. Wird ein fester Bezug der
Phasenlagen der beiden Kanälen zueinander gefordert, ist dies
mit „Align Phase” auch explizit einzustellen. In diesem
Modus scheinen beide Kanäle auf einen gemeinsamen Taktgeber
geschaltet zu werden: Jedenfalls ist auch über Stunden keine
Phasendrift zwischen den beiden Kanälen mehr feststellbar.
Rigol UltraWave
Die mitgelieferte Software „UltraWave” dient dazu, Signalformen zu erzeugen
(„malen”) und auf das Gerät zu laden oder aus dem Speicher des
Geräts auszulesen. UltraWave kann allerdings Signalformen nur auf Kanal CH1 ausgeben
und verfügt nicht über nennenswerte Fernsteuerfunktionen. Eingebaute
Signalformen lassen sich damit auch nicht aus dem Gerät auslesen.
Hat man kein Bedürfnis, Signalformen per Maus zu malen oder zusammenzuklicken, kann
auf diese Software verzichtet werden. Sie kann übrigens auch auf einem virtuellen PC
(VMware) problemlos getestet werden.
Rigol Ultra Sigma
Die ebenfalls mitgelieferte Software „Ultra Sigma” ist von Rigol und dient dem
Zweck, das Gerät per SCPI-Kommandos fernzusteuern. Leider scheint sie (zumindest auf
einem 64-Bit-Windows-System) alles andere als zuverlässig zu sein: Der
Signalgenerator wird nicht immer erkannt. Das Gerät selbst merkt, daß es per
USB ferngesteuert wird, Ultra Sigma zeigt es allerdings nicht als verbundenes Gerät
an.
Eigene Signalformen
Das Binärformat, mit dem der Funktionsgenerator seine Signalverläufe auf USB
speichert, hat die Endung *.rdf und besteht einfach aus den rohen DAC-Werten
zwischen 0 und 16383 im uint16-Format mit 0x8000 verODERt. Eine Datei
ist immer 8192 Bytes groß. Ist die Signalform kürzer als 4096 Samples, wird das
vorletzte Sample mit 0xC000 als Endmarkierung verODERt. Am Ende wird bis
4096 Doppelbytes mit 0x0000 aufgefüllt.
Damit lassen sich Funktionsverläufe mit nahezu jeder Numerik-Software problemlos
erzeugen und per USB-Stick auf das Gerät bringen. Für Matlab sind die
entsprechenden Funktionen unter den Namen DG1022.writerdf und
DG1022.readrdf implementiert (siehe Downloads).
Die Matlab-Anbindung
Alle Bemerkungen beziehen sich auf ein Rigol DG1022 mit der Firmware-Version
00.03.00.11.00.02.12 und die Matlab-Release 2014A.
Voraussetzungen
-
Rigol DG1022, DG1022A
-
Matlab mit Instrument Control Toolbox
-
NI VISA Runtime 5.4
-
Rigol Ultra Sigma-Anwendung (Version 00.01.05.02)
SCPI-/Matlab-Fernsteuerung
-
Zwischen der obengenannten Software „Ultra Sigma” und der
Matlab Instrument Control Toolbox scheint es Wechselwirkungen
zu geben:
-
In den (seltenen) Fällen, in denen das Gerä unter
Ultra Sigmal korrekt erkannt wird und ansprechbar ist
(überprüft werden kann das z.B. mit dem SCPI-Kommando
*IDN?), funktioniert unter Matlab der
query-Befehl der Instrument Control Toolbox.
-
Funktioniert der query-Befehl unter Matlab nicht,
äußert sich dies in timeouts ohne
Fehlermeldung.
-
Die Matlab-Befehle fprintf und fscanf dieser
Toolbox funktionieren davon unbeeinflußt — auch
ohne die Installation von Ultra Sigma.
-
Für das Rigol DG1022 sind keine IVI-Treiber
verfügbar[2].
Der Quick-Control Function Generator (Matlab-Befehl:
fgen), der auf eine Steuerung per
IVI-Treiber angewiesen ist, funktioniert deshalb mit diesem
Signalgenerator nicht.
-
Mit dem Matlab Instrument Driver Editor (midedit)
lassen sich Instrumenten-Treiber (*.mdd-Treiber) entwickeln.
Wird dabei die eingebaute SCPI-Kommunikation genutzt, läßt
sich der query-Befehl nicht vermeiden. Vermeiden ließe
er sich daduch, daß im Matlab Instrument Driver Editor
alles auf der Basis der Matlab-Scriptsprache implementiert würde.
Muß allerdings die komplette Ansteuerung ohnehin in Matlab
implementiert werden, ist die Implementierung einer eigenen Klasse
deutlich komfortabler als die Nutzung des Instrument Driver
Editors. Daher erfolgt die Fernsteuerung des Rigol DG1022 nicht
über einen mdd-Treiber, sondern
-
entweder direkt per SCPI-Kommandos über die
VISA-Schnittstelle oder
-
über eine eigene Instrumenten-Klasse, die die
SCPI-Kommandos über die VISA-Schnittstelle kapselt.
Zu beiden Varianten gibt es Beispiele in den
Downloads. (Für die dritte Variante, der
Erzeugung der Signalform als Datei auf einem USB-Stick für die
direkte Steuerung am Gerät gibt es ebenfall ein Beispiel.) Mit der
daraus folgenden Einschränkung — auf das Test &
Measurement Tool (tmtool) von MathWorks verzichten zu
müssen — kann ich sehr gut leben.
Implementierungsdetails der Matlab-SCPI-Fernsteuerung
-
Der Funktionsgenerator verfügt über kein Self-Test-Kommando.
-
Für die VISA-Fernsteuerung gibt es keinen Timeout. Mit dem
Bedienpaneel kann die Steuerung allerdings jederzeit mit dem Taster
Local/View übernommen werden.
-
Es ist unbedingt das neuere DG1000 series programming manual
aus dem Januar 2014 zu bevorzugen, das auf der CD beiliegt. Das
ältere DG1022 programming manual von 2008, das es bei
vielen Versendern zum download gibt, enthät einige Diskrepanzen
zum Verhalten des Geräts:
-
Das SCPI-Kommando DISP? wird vom Gerät nicht
unterstützt (Antwort: Timeout, keine Fehlermeldung).
-
Im älteren Manual fehlten die Kommandos für
den eingebauten Frequenzzähler.
-
Nach gegenwärtigem Stand können nur Funktionsverläufe,
deren String-Repräsentation in den Ausgangspuffer des
Visa-Treibers paßt, an das Gerät gesendet werden.
Hintergrund ist, daß es derzeit nicht möglich ist,
String-Bruchstücke ohne Terminierung an die VISA-Schnittstelle
zu senden. Praktisch ist dies allerdings kaum eine Einschränkung,
da die längste sinnvolle Zeichenkette
„DATA:DAC VOLATILE,<4094 Datenpunkte als String>
LF” in einen Ausgangspuffer mit 24596 Bytes paßt .
Links
DL1DOW
German Amateur Radio Station