Private Website

Zurück zu Messinstrumente.

Skript

ACHTUNG

Die Skriptfunktion ist noch in Entwicklung, einiges funktioniert noch nicht.

Vorhandene Funktionen:

Fehlende Funktionen:

Beispielskript:

// Beispielskript mit vorhandenen Funktionen.
instrument $DS1000Z usbtmc 1AB1 04CE // Instrument öffnen.
instrument $MSO2000 vxi 192.168.1.39 // Instrument öffnen.
$DS1000Z                             // Instrument auswählen.

#screencopy set :DISP:DATA? ON,OFF,BMP24                   // Konstante.
#file set "E:\Screencopy - /F /O /Y-/M-/D /H/N/S-/Z.bmp" // Konstante, die Anführungszeichen bleiben erhalten.
#runs set 5                                                // Konstante.

image screencopy1  // Variable.
data screencopy2   // Variable.
integer counter    // Variable.
counter set 0      // Zuweisung an Variable.

label loop     // Sprungmarke.

function scpi write :STOP                 // SCPI-Kommando senden.
function wait 100                         // Warte 100 ms.

screencopy1 function screencopy           // Eine Bildschirmkopie einlesen.
screencopy1 function save #file           // Die Bildschirmkopie im PNG-Format speichern.

screencopy2 function scpi read #screencopy // SCPI-Kommando senden, empfangen und zuweisen.
screencopy2 function remove block last 1   // Das SCPI-Blockformat entfernen, und am Ende das Terminierungszeichen.
screencopy2 function save #file            // Die Bildschirmkopie im empfangenen BMP-Format speichern.

function scpi write :RUN                  // SCPI-Kommando senden.

function wait 0     // Warte auf Bestätigung, Schaltfläche 'Ausführen' betätigen.

counter add 1       // Die Variable um 1 erhöhen.
counter equal #runs // Vergleich mit 5.
false goto loop     // Bedingter Sprung zu Label nach Vergleich.
// Ende nach 5 Durchläufen.

 


Einführung

Ein Skript führt einfache Anweisungen aus, um ein oder mehrere Instrumente zu steuern. Es können Daten an die Instrumente gesendet, und auch Daten empfangen werden. Die empfangenen Daten können mit Anweisungen angezeigt und gespeichert werden.

Beispielskript:

// Bildschirmkopie automatisch vom RTB2000 einlesen
// wenn im Single-Modus ein Trigger aufgetreten ist.

instrument usbtmc 0AAD 01D6
//instrument vxi 192.168.1.54

#trigger set :TRIG:A:MODE NORM
#single set :SINGle
#complete set COMP
string state
image screen

function scpi write #trigger

label single
function scpi write #single

label checkcomp
function wait 100
state function scpi read :ACQ:STAT?
state equal #complete
false goto checkcomp

screen function screencopy
//screen function view // Funktion fehlt noch.
screen function save "E:\Screencopy /O /Y/M/D-/H/N/S.png"

goto single

Weitere Beispielskripte sind im Verzeichnis 'Script' vorhanden, und in der Hilfe online: Hilfe:Skript.


Allgemein

Die Groß- und Kleinschreibung wird ignoriert. Die Skriptzeilen werden vor der Verarbeitung, von führenden oder nachfolgenden Leerzeichen, Tabulatoren und Zeilenende bereinigt. Kommentare werden komplett bis zum Zeilenende entfernt. Skriptzeilen können nicht über mehrere Zeilen umgebrochen werden. Alle Anweisungen müssen in einer Zeile stehen. Leerzeichen innerhalb von Name für Konstanten, Variablen, Instrumenten, usw. sind nicht möglich. Alles in Anführungszeichen wird nicht verändert. Variablen vom Typ float, werden beim Konvertieren zu Text bzw. string, in der lokalen Schreibweise verwendet. Der Dezimalpunkt ist dann ein Komma oder Punkt, je nach Landeseinstellung im System.


include - Skript einbinden

Nicht vorhanden.


// - Kommentar

Ein Kommentar beginnt mit einen doppelten Schrägstrich. Alles nach den Schrägstrichen wird bis zum Zeilenende ignoriert.

Beispiele:

// Das ist ein Kommentar.
instrument com1 // Kommentar.
function scpi read :SYSTem:ECHO? "Kein // Kommentar"

# - Konstante

Eine Konstante beginnt mit dem Nummernzeichen '#'. Für den eigentlichen Namen gibt es keine Einschränkungen. Ein Wert wird der Konstante mit dem Schlüsselwort 'set' zugewiesen. Alles nach dem 'set' bis zum Zeilenende wird der Konstante zugewiesen. Konstanten mit demselben Namen, können nur einmal im Skript erstellt werden. Wird die Konstante in einer Zeile ohne Zuweisung mit 'set' verwendet, wird sie durch ihren zugewiesenen Wert ersetzt. Konstanten innerhalb von Anführungszeichen werden nicht ersetzt.

Wird das Nummernzeichen verwendet, ohne das eine entsprechende Konstante existiert, gibt es keine Fehlermeldung. Das Nummernzeichen kann z.B. innerhalb eines SCPI-Kommandos verwendet werden.

Beispiele:

// Eine Konstante erstellen für das Öffnen eines Instruments.
// Die Konstante kann z.B. in den globalen Konstanten erstellt werden.
#$rtb set instrument $rtb vxi 192.168.1.55 1024 192.168.1.37 // Ein Instrument öffnen, und den Namen '$rtb' zuweisen.

#$rtb // Instrument öffnen. Die Konstante wird durch ihren Wert 'instrument $rtb vxi 192...' ersetzt.

#rst set :SYST:PRESet // Ein SCPI-Kommdo definieren.
function scpi write #rst // Die Konstante #rst wird durch ihren Wert ':SYST:PRESet' ersetzt.
#rst set *RST // Ergibt einen Fehler, da die Konstante '#rst' schon im Skript definiert wurde.
function scpi read :SYSTem:ECHO? "#rst" // Die Konstante wird nicht ersetzt.

function scpi write :TEST:DATA #500003,1.5,1.8,9 // Es wird keine erstellte Konstante erkannt, und damit nichts ersetzt.

integer, string, ... set, add, sub, mul, div, crc, ... - Variable

Eine Variable wird erstellt, wenn ein Schlüsselwort für einen Datentyp, gefolgt von einen Variablennamen angegeben wird. Der Variablename darf nicht gleich sein, wie die meisten Schlüsselwörter, ansonst wird eine Fehlermeldung ausgegeben. Für den eigentlichen Namen gibt es keine Einschränkungen. Ein Wert wird der Variable mit dem Schlüsselwort 'set' zugewiesen. Die Zuweisung eines Werts muss in einer eigenen Zeile, nach der Erstellung der Variable erfolgen. Wenn eine Variable mehrmals im Skript, mit dem gleichen Datentyp erstellt wird, gibt es keine Fehlermeldung. Eine Variable mehrmals mit unterschiedlichen Datentyp erstellen, ist nicht erlaubt und es gibt eine Fehlermeldung.

Zu Variablen können Literale oder andere Variablen addiert bzw. hinzugefügt werden. Mit dem Schlüsselwort 'add' kann eine Variable oder ein Literal angegeben werden. Die Regeln für die Addition sind gleich wie für die Zuweisung, wenn die Variablentypen unterschiedlich sind. Variablen vom Typ data können nur zu anderen data Variablen hinzugefügt werden. Typen wie image und waveform sind bei der Addition nicht erlaubt.

Mit Variablen vom Typ integer und float, können Literale oder andere Variablen verrechnet werden. Mit dem Schlüsselwort 'sub', 'mul' oder 'div' kann eine Variable oder ein Literal angegeben werden. Die Regeln für die Berechnungen sind gleich wie für die Zuweisung, wenn die Variablentypen unterschiedlich sind. Es können aber nur Variablen vom Typ integer und float verrechnet werden. Bei allen anderen Typen ist die Berechnung nicht erlaubt. Eine Division durch Null wird ignoriert und löst keinen Fehler aus.

Von Variablen mit dem Typ data, kann mit dem Schlüsselwort 'crc16ccitt' eine Prüfsumme berechnet werden. Die Prüfsumme kann nur einer Variable vom Typ 'integer' zugewiesen werden. Die Prüfsumme kann z.B. für ein Firmware-Update beim R&S RTB2000, mit dem ':DIAG:UPD:TRAN:DATA ...' SCPI-Kommando verwendet werden. Die Variante der Prüfsumme nennt sich auch 'CRC-16/IBM-3740', 'CRC-16/CCITT-FALSE' oder 'CRC-16/CCITT (0xFFFF)'. Ein ASCII-Text von '123456789' ergibt 0x29B1 als Prüfsumme.

Datentypen:

Spezielle Werte für die Zuweisung mit set oder add:

Die Zuweisung wird wie ein Literal behandelt. Die Werte sind für Variablen mit Typ string gedacht.

Spezielle Werte für die Zuweisung mit set oder add:

Die Zuweisungen sind nur für Variablen mit Typ string und data gültig.

Beispiele:

boolean result // Eine Boolean-Variable mit dem Namen 'result' erstellen.
integer counter // Eine Integer-Variable mit dem Namen 'counter' erstellen.
float volt // Eine Fließkomma-Variable mit dem Namen 'volt' erstellen.
string answer // Eine Zeichenfolge-Variable mit dem Namen 'answer' erstellen.
data setting // Eine Data-Variable mit dem Namen 'setting' erstellen.
image screen // Eine Image-Variable mit dem Namen 'screen' erstellen.

// Werte den oben erstellten Variablen zuweisen:
result set true         // Es kann nur das Schüsselwort 'true' oder 'false' zugewiesen werden.
counter set 5
counter set 5.3         // Die Nachkommastellen werden bei Literalen und Integer-Variablen ignoriert,
                        // es wird der Wert 5 zugewiesen.
counter set $FF         // Hexadezimale Werte beginnen mit '$'.
counter set %1011       // Binäre Werte beginnen mit '%'.
volt set 1.7            // Als Dezimalzeichen muss der Punkt verwendet werden.
answer set "2021 05 20" // Werte für String-Variablen können innerhalb von Anführungszeichen stehen.
answer set 2021 05 20   // Werte für String-Variablen können auch ohne Anführungszeichen zugewiesen werden.
answer set $datetime    // Das aktuelle Datum mit Uhrzeit zuweisen.
result set counter      // Wird einer Boolean-Variable der Wert einer anderen Variable zugewiesen,
                        // wird alles ungleich Null zu 'true', und Null zu 'false'.
counter set volt        // Wird einer Integer-Variable eine Float-Variable zugewiesen, wird der Wert
                        // mathematisch gerundet. 0.5 wird 0, und 0.6 wird 1.
answer set volt         // Wird einer String-Variable der Wert einer anderen Variable zugewiesen,
                        // wird der Wert in eine Zeichenfolge konvertiert.
screen function screencopy // Das Ergebnis der Funktion für eine Bildschirmkopie der Variable 'screen' zuweisen.

counter add 1    // Den Wert 1 addieren.
counter sub 3    // Den Wert 3 subtrahieren.
volt div 2.5     // Den Wert dividieren.
volt mul 2       // Den Wert multiplizieren.
volt sub counter // Subtrahieren von Variablen.
answer add " "   // Ein Leerzeichen hinzufügen.
answer add $date // Das aktuelle Datum hinzufügen.

// Eine Datei einlesen und das SCPI-Blockformat an Anfang einfügen.
setting set $file "E:\Einstellungen\DS1000Z-1.bin"
setting add $block
// Die CRC-16-CCITT Prüfsumme von den Daten berechnen.
integer crc
crc crc16ccitt setting

Regeln für die Zuweisung:


instrument - Instrument öffnen und Einstellungen ändern

Ein Instrument wird mit dem Schlüsselwort 'instrument' geöffnet. Wenn mehrere Instrumente verwendet werden, kann ein Instrumentenname angeben werden. Der Name muss mit dem Dollarzeichen '$' beginnen, ansonst gibt es keine weiteren Einschränkungen. Es wird immer das zuletzt geöffnete Instrument verwendet. Für das wechseln der geöffneten Instrumente, muss der Instrumentenname alleine in einer Zeile angegeben werden. Nach dem optionalen Instrumentennamen, muss die Schnittstelle und zugehörigen Parameter angegeben werden.

USBTMC

USB Test & Measurement Class. Die Vendor- und Product-ID müssen als Hexadezimalwerte ohne Präfix angegeben werden.

instrument [$name] usbtmc VID PID [Seriennummer]

LXI bzw. VXI-11

RPC/VXI Netzwerkverbindung, die meisten LXI-Instrumente sollten damit funktionieren. Wird der VXI-Port nicht angegeben, oder stattdessen 0 (Null), wird der Port beim Öffnen von dem Instrument abgefragt, dafür wird der RPC-UDP-Port 111 verwendet. Sind mehrere Netzwerkkarten im PC vorhanden, kann die IP-Adresse der gewünschten Karte zuletzt angegeben werden. Ansonst wird versucht die passende Netzwerkkarte automatisch zu ermitteln.

instrument [$name] vxi IP-Adresse [VXI-Port [IP-Adresse der Netzwerkkarte]]

RawTCP

Raw-TCP Netzwerkverbindung ohne Protokoll. Sind mehrere Netzwerkkarten im PC vorhanden, kann die IP-Adresse der gewünschten Karte zuletzt angegeben werden. Ansonst wird die IP-Adresse der ersten Netzwerkkarte verwendet.

instrument [$name] rawtcp IP-Adresse Port [IP-Adresse der Netzwerkkarte]

Seriell

Serieller RS232-Anschluß oder virtueller COM-Port über eine USB-Verbindung.

instrument [$name] serial Portnummer [Baudrate [Datenbits [Stoppbits [Parität [Flusskontrolle]]]]]

Parameter:

Standardwerte sind: 9600 8 1 None None

Beispiele:

instrument $rtb vxi 192.168.1.54 // Ein Instrument mit dem Namen '$rtb' über die VXI-Netzwerkverbindung öffnen.
instrument rawtcp 192.168.1.55 5025 // Ein Instrument über die Raw-TCP-Netzwerkverbindung öffnen.
instrument $picotest usbtmc 164E 0DAD // Ein Instrument mit dem Namen '$picotest' über die USBTMC-Verbindung öffnen.
instrument serial com2 115200 8 1.5 even none none // Ein Instrument über den seriellen Anschluß öffnen.
instrument $hm2008 serial com3 // Ein Instrument mit den Namen '$hm2008' über den seriellen Anschluß öffnen.

Wenn ein Instrument im Programm über das Auswahlfenster geöffnet wird, ist im Log-Fenster eine Ausgabe mit den 'instrument ...'-Angaben zu finden.

Weitere Einstellungen der Instrumente können mit dem Instrumentennamen und dem Schlüsselwort 'set' vorgenommen werden.

Einstellungen:

$name set timeout 2000   // Setzt die Wartezeit in Millisekunden, wie lange auf eine Antwort vom Instrument gewartet wird.
                         // Wird 0 (Null) oder keine Zeit angegeben, wird ein Standardwert für die Wartezeit verwendet.
                         // Schnittstelle: alle
$name set termchar 0A,0D // Setzt ein oder mehrere Terminierungszeichen, die am Ende der übertragenen Daten vorhanden sind.
                         // Wird kein Zeichen angegeben, wird beim Empfang der Daten nur die Wartezeit verwendet.
                         // Die Zeichen müssen als hexadezimale Werte angegeben werden.
                         // Schnittstelle: RawTCP, Serial
$name set local          // Entsperrt das Instrument für die lokale Bedienung.
                         // Schnittstelle: vxi
$name set remote         // Sperrt das Instrument für die entfernte Bedienung.
                         // Schnittstelle: vxi
$name set wait scpi 200  // Wartezeit die zwischen den einzelnen SCPI-Kommandos gewartet wird. Die Angabe ist in Millisekunden.
                         // Schnittstelle: alle
$name set wait stbmav    // Beim Einlesen der Daten vom Instrument, warten bis die Daten bereitstehen. Es wird gewartet bis
                         // das MAV-Bit im Statusbyte gesetzt wird.
                         // Schnittstelle: usbtmc
$name set wait srq       // Beim Einlesen der Daten vom Instrument, warten bis die Daten bereitstehen.
                         // Es wird auf den Service Request-Interrupt gewartet.
                         // Schnittstelle: usbtmc
$name set wait           // Ohne Parameter wird nicht mehr auf das Bereitstehen der Daten gewartet, die Option wird gelöscht.

Beispiel - wait stbmav:

float Volt
instrument $picotest usbtmc 164E 0DAD // Ein Instrument mit dem Namen '$picotest' über die USBTMC-Verbindung öffnen.
$picotest set wait stbmav             // Warten bis Daten bereitstehen beim Einlesen.
Volt function scpi read :INIT;:FETCH? // Es wird gewartet bis die Messung fertig ist, und dann den Wert eingelesen.

Beispiel - wait srq:

float Volt
instrument $picotest usbtmc 164E 0DAD // Ein Instrument mit dem Namen '$picotest' über die USBTMC-Verbindung öffnen.
$picotest set wait srq                // Warten bis Daten bereitstehen beim Einlesen.
function scpi write *CLS              // Statusbytes löschen.
function scpi write *ESE 0;*SRE 16    // Bits für den Service Request setzten.
Volt function scpi read :INIT;:FETCH? // Es wird gewartet bis die Messung fertig ist, und dann den Wert eingelesen.
function scpi write *SRE 0

label, goto - Sprungmarke

Es kann eine Sprungmarke, mit dem Schlüsselwort 'label' und einem nachfolgenden Labelnamen, erstellt werden. Für den Labelnamen gibt es keine Einschränkungen. Mit dem Schlüsselwort bzw. Anweisung 'goto', und einem nachfolgenden Labelnamen, kann zu der Zeile gesprungen werden, wo die Sprungmarke erstellt wurde. Die 'goto'-Anweisung kann auch nach den Anweisungen 'true' oder 'false' verwendet werden. Wenn eine Sprungmarke mehrmals mit dem gleichen Namen erstellt wird, gibt es eine Fehlermeldung.

Beispiele:

label loop // Sprungmarke mit dem Namen 'loop'.
goto loop // Es wird zu der Zeile mit der Sprungmarke 'loop' gesprungen.
true goto loop // Nach einem Vergleich mit dem Ergebnis 'true', wird zur Sprungmarke 'loop' gesprungen.

equal, greater, less, true, false - Vergleich einer Variable

Variablen können mit den Schlüsselwörtern 'equal', 'greater' und 'less', mit Werten oder anderen Variablen verglichen werden. Als Ergebnis wird ein boolscher Wert mit 'true' oder 'false', intern im Skript gespeichert. Es ist immer nur das letzte Ergebnis eines Vergleichs vorhanden. Mit den Schlüsselwörtern 'true' und 'false', kann mit weiteren Anweisungen auf das Ergebnis reagiert werden.

Beispiele:

string state // Variable erstellen.
label loop // Sprungmarke erstellen.
state function scpi read :ACQ:STAT? // Der Variable die Antwort des Instruments zuweisen.
state equal COMP // Die Variable mit dem Wert 'COMP' vergleichen.
false goto loop // Ist die Variable nicht gleich dem Wert 'COMP', ist das Ergebnis 'false' und es wird zum Label 'loop' gesprungen.
... // Ist die Variable gleich dem Wert, ist das Ergebnis 'true'. Da mit 'true' nicht geprüft wurde, geht es mit der nächsten Zeile weiter.

true function scpi write *RST // War das letzte Ergebnis von einem Vergleich 'true', wird das SCPI-Kommando gesendet.

Regeln für den Vergleich von Variablen von dem Typ:


function beep - Hinweiston ausgeben

Mit dem Schlüsselwort 'function' und der Aktion 'beep' und optionalen Parameter, kann ein Hinweiston ausgegeben werden. Die Töne sind dieselben wie sie in der Systemsteuerung unter 'Sound' eingestellt sind.

Parameter:

Beispiele:

function beep       // Es wird ein Standardton ausgegeben.
function beep error // Es wird der Standardton für einen Fehler ausgegeben.

function clipboard - Variablen in die Zwischenablage kopieren

Mit dem Schlüsselwort 'function' und der Aktion 'clipboard' können die Inhalte von Variablen in die Zwischenablage kopiert werden. Variablen vom Typ boolea, integer, float und string werden als Text kopiert und entsprechend konvertiert. Bei data-Variablen wird ein Teil der Daten als Hex- und Ascii-Zeichen formatiert als Text kopiert. Variablen vom Typ image werden als Bild in die Ablage kopiert.

Beispiele:

screen function clipboard // Die Variable screen vom Typ image als Bild kopieren.

function remove - Teile von string oder data Variablen entfernen

Der Inhalt von Variablen mit Typ string oder data, kann um nicht benötigte Teile gekürzt werden. Mit dem Schlüsselwort 'function' und der Aktion 'remove' und weiteren Parametern, können die zu entfernenden Teile bestimmt werden. Das Entfernen wird in der Reihenfolge der angegebenen Parameter durchgeführt.

Parameter:

Beispiele:

data function remove block // Ein vorhandenes Blockformat am Anfang der Daten entfernen.
data function remove first 5 block // Vom Anfang 5 Bytes entfernen, danach ein vorhandenes Blockformat entfernen.
string function remove last 1 // Vom Ende 1 Zeichen entfernen.

function replace - Teile von string oder data Variablen ersetzen

Teile des Inhalts von Variablen mit Typ string oder data, können durch andere Werte ersetzt werden. Mit dem Schlüsselwort 'function' und der Aktion 'replace' und weiteren Parametern, können die zu ersetzenden Teile bestimmt werden. Der erste Parameter gibt den Teil an, der ersetzt werden soll. Der zweite Parameter wird für die Ersetzung verwendet. Soll der gesuchte Teil gelöscht werden, muss dafür ein leerer Text angegeben werden. Der optionale dritte Paramter gibt die Anzahl der Ersetzungen an. Ohne Angabe werden alle Vorkommen des gesuchten Teils ersetzt. Es können Texte oder einzelne hexadezimale Werte angegeben werden. Texte müssen in Anführungszeichen stehen, und die hexadezimalen Werte durch Kommas getrennt werden. Bei Texten wird die Groß- und Kleinschreibung beachtet.

Beispiele:

string function replace "." "," // Alle Punkte durch Kommas ersetzen.
string function replace "DAT2" "" 1 // Den ersten gefundenen Text löschen.
string function replace 0A,0D "" // Den Zeilenumbruch löschen.
data function replace A5,D3,30,00 00,30,D3,A5 1 // Die ersten vier gefundenen Bytes ersetzen.
data function replace "END" 0A,0D // Alle gefundenen Texte ersetzen.

Bei einer String-Variable dürfen keine hexadezimalen Werte mit Null '00' angeben werden.


function save - Speichern einer Variable

Der Wert bzw. Inhalt einer Variablen, kann mit dem Schlüsselwort 'function' und der Aktion 'save', in eine Datei gespeichert werden. Es muss ein Dateipfad inklusive Dateinamen in Anführungszeichen angegeben werden. Je nach Dateityp der Variable sind weitere Parameter möglich. Für den Dateipfad und Parameter gibt es keine bestimmte Reihenfolge bei der Angabe. Im Dateinamen können Platzhalter angegeben werden, die durch ihren entsprechenden Wert beim Speichern ersetzt werden. Es können auch Variablen als Platzhalter verwendet werden.

Variablen vom Typ 'image' werden im PNG-Format gespeichert. Die Erweiterung '.png' wird automatisch an den Dateinamen angehängt bzw. ersetzt eine vorhandene Erweiterung.

Vorhandene Dateien werden ohne Nachfrage überschrieben.

Parameter:

Beispiele:

// Den Inhalt der Variable 'screen', vom Datentyp 'image', als PNG-Datei speichern.
screen function save "T:\Test\Messung.png"

// Platzhalter für Datum und Uhrzeit verwenden.
screen function save "T:\Messung /Y-/M-/D /H/N/S-/Z.png"

// Eine Integer-Variable als Text mit Zeilenumbruch speichern.
intval function save asc "T:\value.txt" eol

// Eine Integer-Variable als Text mit Zeilenumbruch der Datei hinzufügen.
intval function save add asc "T:\value.txt" eol

// Den Platzhalter im Dateinamen mit dem Inhalt der Variable ersetzen.
daten function save "T:\Record Nr /$counter.dat"

Platzhalter im Dateipfad:

/$... - Inhalt der angegebenen Variable verwenden.
/F - Herstellername.
/O - Modelbezeichnung.
/Y - vierstellige Jahreszahl.
/M - zweistellige Monatszahl.
/D - zweistellige Tageszahl.
/H - zweistellige Stundenzahl.
/N - zweistellige Minutenzahl.
/S - zweistellige Sekundenzahl.
/Z - dreistellige Millisekundenzahl.


function scpi - Senden und Empfangen eines SCPI-Kommandos

Mit dem Schlüsselwort 'function' und der Aktion 'scpi', können SCPI-Kommandos an das Instrument gesendet, und die Antwort eingelesen werden. Für die Aktion 'scpi' gibt es zwei Parameter, 'write' für senden, und 'read' für senden und empfangen. Danach folgen die SCPI-Kommandos ohne weitere Einschränkungen. Um die Antwortdaten vom Instrument zu speichern, muss am Anfang der gesamten Anweisung ein Variablenname angegeben werden. Die Variable muss vorher mit einem passenden Dateityp erstellt worden sein. SCPI-Kommandos werden ohne Änderung bis zum Zeilenende verwendet.

Es können die Werte von Variablen gesendet werden, wenn der Variablenname mit einem Dollarzeichen gekennzeichnet wird. Es wird geprüft ob ein passender Variablenname nach dem Dollarzeichen vorhanden ist. Die Werte der Variablen werden in einen Text konvertiert, das gilt für boolean, integer, float und string Datentypen.

Bei Variablen vom Typ data wird nur die letzte Variable verwendet. Die Daten werden an das SCPI-Kommando am Ende angehängt. Alle anderen Datentypen werden durch einen leeren Text ersetzt.

Beispiele:

function scpi write *RST // Das SCPI-Kommando '*RST' an das Instrument senden, es wird keine Antwort erwartet.
string idn // Variable für Text erstellen.
idn function scpi read *IDN? // Das Kommando '*IDN?' an das Instrument senden, danach die Antwort einlesen und in der Variabe 'idn' speichern.
function scpi write :HOR:FFT:CENT $Freq // Den Wert der Variable 'Freq' wird als Text konvertiert eingefügt.

// Eine Datei einlesen, das SCPI-Blockformat an Anfang einfügen und senden.
setting set $file "E:\Einstellungen\DS1000Z-1.bin"
setting add $block
function scpi write :SYST:SET $setting

function screencopy - Einlesen einer Bildschirmkopie

Um eine Bildschirmkopie vom Instrument einzulesen, kann das Schlüsselwort 'function' mit der Aktion 'screencopy' verwendet werden. Das Ergebnis muss einer Variable mit dem Datentyp 'image' zugewiesen werden. Wenn das Instrument von dem Programm unterstützt wird, müssen keine weiteren Angaben gemacht werden. Alternativ kann man eine Bildschirmkopie auch mit der Funktion für SCPI-Kommandos einlesen. Die Daten können dann aber nicht direkt angezeigt werden, und müssen einer Variable mit dem Datentyp 'data' zugewiesen werden. Wird keine Variable für die Speicherung der Bildschirmkopie angegeben, werden die Daten verworfen, nachdem sie eingelesen wurden.

Für bestimmte Instrumente können Parameter angegeben werden.

Parameter für HAMEG HM2008:

Beispiele:

image screen // Variable 'screen' mit dem Datentyp 'image' erstellen.
screen function screencopy // Eine Bildschirmkopie vom Instrument einlesen, und der Variable 'screen' zuweisen.
screen function screencopy large bw title // Parameter für bestimmte Instrumente.

function waveform - Einlesen von Messkurven

Messkurven können mit dem Schlüsselwort 'function' und der Aktion 'waveform', sowie weiteren Parametern von unterstützten Instrumenten eingelesen werden. Die eingelesenen Daten können nur einer Variable vom Typ 'waveform' zugewiesen werden.

Die Parameter sind für die verschiedenen Instrumente benannt, können aber für jedes Instrument verwendet werden wenn eine entsprechende Funktion vorhanden ist. Es ist egal ob z.B. 'bus1' oder 'pod1' angegeben wird.

Wenn kein Parameter angegeben wird, werden alle aktiven bzw. sichtbaren analogen, digitalen und Math-Kanäle aus dem Bildschirmspeicher eingelesen. Bei bestimmten Instrumenten, wie z.B. dem Siglent SDS2000X Plus, wird immer aus dem Speicher eingelesen. Alle weiteren Kanäle, wie FFT usw. müssen angegeben werden. Wenn aus dem Speicher gelesen werden soll, wird das Instrument vorher gestoppt.

Wenn die Daten mit mehr als 8 Bit eingelesen werden, muss das Instrument auch vorher entsprechend eingestellt worden sein. Beim z.B. Siglent SDS2000X Plus mit 'Acquire'->'Resolution' auf 10 Bit.

Beim R&S RTB2000 werden zu dem analogen Kanal auch die Envelope-Daten eingelesen, wenn dieser Erfassungsmodus aktiviert ist. Es sind aber immer nur 2 x 1.200 Samples wie am Bildschirm dargestellt.

Unterstützte Instrumente:

Parameter:

Beispiele:

instrument vxi 192.168.1.39 // MIt Instrument verbinden.
waveform channels           // Variable für die Messkurven erstellen.
channels function waveform  // Ohne Parameter alle sichtbaren Kanäle einlesen.

channels function waveform analog // Alle sichtbaren analogen Kanäle einlesen.
channels function waveform ch1 ch3 16 // Kanäle 1 und 3 mit mehr als 8 Bit einlesen.
channels function waveform ch1 logic // Kanal 1 und alle sichtbaren digitalen Kanäle einlesen.
channels function waveform bus1 d12 // Alle sichtbaren digitalen Kanäle von Bus/Pod 1 und D12 einlesen.

function view - Anzeigen einer Variable - Nicht vorhanden

Um den Inhalt von Variablen anzuzeigen, kann das Schlüsselwort 'function' mit der Aktion 'view' verwendet werden. Die Variable mit beliebigen Datentyp muss zuerst angegeben werden, danach die Anweisung. Es können weitere Parameter für eine bestimmte Darstellung und Verhalten des Ansicht- fensters verwendet werden.

Beispiele:

screen function view // Zeigt eine eingelesene Bildschirmkopie an.

function wait - Warte

Mit dem Schlüsselwort 'function' und der Aktion 'wait', kann auf den Ablauf einer Zeit, auf eine Uhrzeit oder auf ein Datum mit Uhrzeit gewartet werden. Mit einer Zeitangabe von 0 (Null) oder mit dem Parameter 'msg', wird ein Hinweis ausgegeben und es wird auf eine Bestätigung gewartet. Im aktuellen Skriptfenster muss dafür die 'Ausführen'-Schaltfläche erneut betätigt werden.

Wird nach 'wait' die Anzahl der Millisekunden angegeben, wird diese Zeit gewartet.

Beispiele:

function wait 1000 // Eine Sekunde lang warten.
function wait 0    // Es wird auf eine Bestätigung gewartet.

Wird nach 'wait' noch der Parameter 'abs' mit der Anzahl der Millisekunden angegeben, wird nur die noch verbleibende Zeit gewartet, die seit dem letzten Aufruf der Skriptzeile vergangen ist. Der Parameter 'abs' ist nur sinnvoll wenn innerhalb einer Schleife gewartet wird.

Beispiele:

integer count
label loop
function wait abs 1000  // Das erstemal wird 1000 Millisekunden lang gewartet,
function wait 700       // danach wird jedesmal nur die noch verbleibende Zeit
count add 1             // auf die 1.000 Millisekunden lang gewartet.
count equal 5           // In diesen Beispiel sind es dann ungefähr 300 Millisekunden.
false goto loop

Wird nach 'wait' noch der Parameter 'time' oder 'date' mit einer Uhrzeit bzw. Datumsangabe angegeben, wird bis zu diesen Zeitpunkt gewartet.

Beispiele:

function wait time 19:24:00            // Warte solange bis die Uhrzeit übereinstimmt.
function wait date 2021-11-09 19:24:00 // Warte solange bis das Datum übereinstimmt.

Wird nach 'wait' noch der Parameter 'msg' mit einer Nachricht angegeben, wird diese Nachricht angezeigt und auf eine Bestätigung gewartet. Es können auch Werte von Variablen angezeigt werden, wenn der Variablenname mit einem Dollarzeichen gekennzeichnet wird. Es wird geprüft ob ein passender Variablenname nach dem Dollarzeichen vorhanden ist. Die Werte der Variablen werden in einen Text konvertiert, das gilt für boolean, integer, float und string Datentypen.

Beispiele:

function wait msg Ausgang 2 aktivieren. // Zeigt die Nachricht an, und wartet auf Bestätigung.
function wait msg Der Zähler ist $counter. // Zeigt die Nachricht mit dem Inhalt von der Variable 'counter' an.

 

Zurück zu Messinstrumente.