Forum: Mikrocontroller und Digitale Elektronik SCPI-Steuerung Signalgenerator Rigol DG1022


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei, die SCPI-Fernsteuerung meines Signalgenerators 
(Rigol DG1022) kennenzulernen. Ich nutze dabei Matlab mit der Instrument 
Control Toolbox, aber das sollte zur Fragestellung nichts beitragen.

Im "Programming manual" steht, ein Sinalverlauf ("Waveform") könne 
zwischen 1 und 524288 Datenpunkten enthalten. Sende ich jedoch viele 
Punkte per "DATA"-Kommando, z.B. so:
1
DATA:DAC VOLATILE,8192,8393,8594,8795,8995,9196,[..insgesamt 175 Werte ...] LF

so gibt mir der Funktionsgenerator die Fehlermeldung:

'-116,"Program mnemonic too long"'

Die 175 gesendeten Werte sind genau das, was in den Output-Buffer paßt.

Deshalb die Frage: Wie sendet man per SCPI längere Funktionsverläufe?

_Antwort:_ Längere Funktionsverläufe werden genauso gesendet - wichtig 
ist nur, daß alle Werte (als Zeichenkette) in den OutputBuffer passen. 
Die obige Fehlermeldung hat nichts mit einem Überlaufen des 
SCPI-Interpreters des Funktionsgenerators zu tun, sondern nur damit, daß 
ein vorzeitiger Abbruch des Strings als Ende interpretiert wird - und 
der Rest des Strings als neues, wahnsinnig langes Kommando.

Damit lautet die Lösung einfach: Wähle den Output-Buffer groß genug oder 
finde heraus, wie man Zeichenketten ohne Terminator senden kann.

Viele Grüße
W.T.

[Edit: Ich habe es selbst herausbekommen]

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Ich schließe aber direkt eine weitere Frage an:

Es scheint bei dem Gerät nur einen "volatile"-Speicherplatz für eigene 
Signalformen ("waveforms") zu geben. Will ich auf beiden Kanälen ein 
Signal ausgeben, muß ich vermutlich eine davon vorher in den 
"non-volatile"-Speicher schreiben?

Leider finde ich im Datenblatt nichts zu der Anzahl der möglichen 
Schreibzyklen des nichtflüchtigen Speichers. Gibt es dazu Erfahrungen? 
Stellt das in der Praxis überhaupt ein Problem dar? Wie geht man da bei 
anderen Geräten vor?

Viele Grüße
W.T.

von Gunnar (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Stellt das in der Praxis überhaupt ein Problem dar? Wie geht man da bei
> anderen Geräten vor?
Wie oft willst Du denn neu Schreiben?
Steht dazu nichts im Datenblatt?
Mindesten 1000 Schreibzyklen sollten aktuelle Speichertechniken (Flash, 
EEPROM, etc.) mitmachen.

von Walter T. (nicolas)


Lesenswert?

Gunnar schrieb:
> Wie oft willst Du denn neu Schreiben?
> Steht dazu nichts im Datenblatt?

Naja, stünde das in dem dürftigen Datenblatt, gäbe es keinen Anlaß dazu, 
soetwas in einem Internetforum zu fragen.

Wenn ich den nicht-flüchtigen Speicher dazu verwende, für Kanal 2 bei 
jeder ferngesteuerten Messung die Funktionsdaten zu hinterlegen, kommen 
wahrscheinlich ein paar Schreibzyklen zusammen.

Und: Ich bin vermutlich nicht der Erste, der einen Funktionsgenerator 
per SCPI fernsteuert - sonst wäre dieses Feature viel zu teuer. Da 
interessiert es mit natürlich schon, was in diesem Bereich üblich ist.

von Walter T. (nicolas)


Lesenswert?

Das Dingen dazu zu bringen, auf CH2 eine eigene Signalform darzustellen, 
ist wirklich etwas knifflig. Der Apparat scheint der Meinung zu sein, 
daß auf CH2 nichts dargestellt werden kann, was nie auf CH1 gezeigt 
wurde.

Momentan sieht die Prozedur wie folgt aus:
1
FUNC:USER NEGRAMP  % VOLATILE freigeben
2
DATA:DEL VOLATILE
3
DATA:DAC VOLATILE <viele Zahlenwerte fuer CH2>
4
FUNC:USER VOLATILE % Alles auf CH1 darstellen, nicht notwendig, aber egal
5
DATA:DEL CH2_WAVE  % Alte Daten fuer CH2 loeschen
6
DATA:COPY CH2_WAVE % Neue Daten in non-volatile Memory
7
FUNC:USER CH2_WAVE % Daten auf CH1 darstellen (sonst mag CH2 die nicht)
8
FUNC:USER:CH2 CH2_WAVE % Daten auf CH2 darstellen (klappt aber beim ersten Versuch nicht
9
FUNC:USER:CH2 CH2_WAVE % Daten auf CH2 darstellen (klappt beim zweiten Versuch immer)
10
11
DATA:DEL VOLATILE
12
DATA:DAC VOLATILE <viele Zahlenwerte fuer CH1>
13
FUNC:USER VOLATILE % Alles auf CH1 darstellen (endlich)
14
OUTP ON
15
OUTP:CH2 ON
Das dauert natürlich und bei jeder neuen Signalform auf CH2 wird der 
nicht-flüchtige Speicher überschrieben.

Ist das normal, daß das so umständlich ist? Kann jemand mit einem Rigol 
DG1022 oder einem anderen AWG das nachvollziehen?

Viele Grüße
W.T.

: Bearbeitet durch User
von Walter Tarpan (Gast)


Lesenswert?

Hmmm.....wenn ich das heute mit ein paar Stunden Abstand betrachte, ist 
das schon etwas umständlich. Wenn ich sowieso den nichtflüchtigen 
Speicher benutzen muß, kann ich ja direkt mit
1
DATA:DAC CH2_WAVE <viele Zahlenwerte fuer CH2>
in den nichtflüchtigen Speicher schicken, ohne erst VOLATILE für CH1 
überschreiben zu müssen. Ob die Funktion dann immer noch erst von CH1 
aufgerufen werden muß, muß ich heute abend mal ausprobieren.

von Walter T. (nicolas)


Lesenswert?

Für den Fall, daß noch einmal jemand auf diesen Beitrag mit denselben 
Fragen wie ich stößt: Ich habe die Steuerung des Rigol DG1022 per SCPI 
unter Matlab soweit auseinandergedröselt und dokumentiert:

http://www.dl1dow.de/inhalt/selbstbau/signalgenerator_dg1022/index.htm

Viele Grüße
W.T.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.