SCPI instruments

Labormessgeräte, die SCPI sprechen, etwa Multimeter, Netzgeräte, elektronische Lasten und Datenerfassungsgeräte, über TCP, eine serielle Leitung oder USB und GPIB über VISA: wie jedes erreicht wird, die Karte Messgerät, Abfragen und Schreibbefehle, die Suche und zwei durchgerechnete Beispiele.

Als Markdown ansehen

Der Treiber SCPI instruments liest und schreibt Labormessgeräte, die SCPI sprechen, die Befehlssprache der Prüfgeräte nach IEEE 488.2: Multimeter, Netzgeräte, elektronische Lasten, Datenerfassungsgeräte wie das Fluke 1586A Super-DAQ, Kalibratoren, von Keysight, Rigol, Tektronix, Siglent, GW Instek, B&K Precision, Fluke und den anderen. Jedes Tag stellt dem Messgerät eine Abfrage, etwa MEAS:VOLT:DC? oder READ?, und liest seine Antwort; ein Tag, das geschrieben wird, sendet einen Befehl mit dem Wert darin, etwa VOLT 5. Es ist der Austausch, den ein LabVIEW-Programm über VISA führt, auf einem Panel eingerichtet statt in einem Blockdiagramm verdrahtet, und die Werte landen dort, wo die jedes anderen Tags landen: in der Logik, auf Dashboards, in den Läufen eines Prüfstands im Process.

Ein Messgerät wird auf einem von drei Wegen erreicht, der beim Anlegen seines Geräts gewählt wird:

Übertragungsweg Wie das Messgerät erreicht wird Für
TCP (LXI-Socket) Der SCPI-Socket des Messgeräts an dessen Host und Port, 5025 bei den meisten LXI-Messgeräten. Auf diesem Rechner wird nichts installiert. Ein Messgerät mit LAN-Anschluss.
VISA (USB, GPIB, Netzwerk) Über das auf diesem Rechner installierte VISA, über den VISA-Ressourcennamen des Messgeräts. Das Produkt installiert kein VISA: Es verwendet NI-VISA oder die Keysight IO Libraries Suite, wo eines davon installiert ist. Ein Messgerät an USB oder an einer GPIB-Schnittstelle, oder ein Netzwerkmessgerät, das VISA über seinen eigenen Namen erreicht.
Auf einer seriellen Leitung Eine serielle Leitung dieses Treibers, geteilt mit den anderen Messgeräten darauf, eine Anfrage nach der anderen. Ein Messgerät mit RS-232- oder RS-485-Anschluss.

Ein Messgerät auf einer seriellen Leitung hängt unter seiner Leitung, dieser Teil des Baums liest sich also Treiber → Leitung → Gerät → Tag, wie unter Generic serial and TCP. Ein Messgerät, das über TCP oder VISA erreicht wird, liegt unter dem Treiber und kann wie das Gerät jedes anderen Treibers in Ordnern abgelegt werden, Treiber → Ordner → Gerät → Tag. Ein Gerät bleibt auf der Seite, auf der es angelegt wurde: TCP und VISA lassen sich wechseln, aber ein Gerät wechselt nie zwischen einer Leitung und dem Netzwerk.

Die Seite des Treibers

Die Zeile unter der Kopfzeile lautet "Serielle Leitungen tragen die Messgeräte, die sich einen Bus teilen, und die Messgeräte, die über TCP oder VISA erreicht werden, liegen direkt unter dem Treiber. Legen Sie eine Leitung oder ein Gerät an und öffnen Sie es dann, um seine Abfragen anzugeben." und die Seite trägt untereinander:

Teil Was er enthält
Serielle Leitungen Die Leitungen des Treibers, die mit Leitung hinzufügen rechts neben ihrem Titel wachsen: Leitung, Schnittstellenparameter (Port · Baudrate · Format, ohne Zeitlimit, da eine Leitung dieses Treibers keines hat), Geräte, Zustand und die Aktionen Öffnen, Aktivieren, Deaktivieren und Löschen. Leer zeigt sie "Noch keine seriellen Leitungen."
Suchbereich Die Adresse, die Geräte suchen neben den Messgeräten fragt, die VISA auflistet; siehe Gerätesuche. Nur mit Connector konfigurieren gezeichnet.
Geräte Jedes Gerät des Treibers, die auf einer Leitung eingeschlossen, mit den Spalten der Gerätetabelle jedes Treibers, die mit Gerät hinzufügen rechts neben ihrem Titel wächst, das ein TCP-Gerät anlegt. Leer zeigt sie "Noch keine Geräte."

Die Kopfzeile zählt die Geräte in Klammern, und die Zeile des Treibers im Baum zählt beide Ebenen, sobald eine Leitung existiert ("1 Leitung · 2 Geräte"). Die Leiste des Treibers trägt Geräte suchen. Der Rechtsklick auf die Zeile des Treibers bietet Gerät hinzufügen, Leitung hinzufügen, Neuer Ordner, Aktualisieren und Geräte suchen, dann, nach einem Trenner, Treiber entfernen; im Menü Neu… der Spalte bietet der Eintrag des Treibers Neues Gerät, Neue serielle Leitung und Neuer Ordner, dann seine Leitungen, Ordner und Geräte. Einmal hinzugefügt, steht der Treiber im Baum unter dem Ordner Treiber, mit oder ohne Leitung oder Gerät.

Serielle Leitung

Eine Leitung dieses Treibers ist die unter Serielle Leitungen beschriebene Leitung, mit den Feldern einer Leitung des Treibers Generic serial and TCP. Ihre Seite sagt "Ein physischer serieller Bus: die Porteinstellungen, die seine Instrumente teilen, eine Anfrage nach der anderen." und ihre Karte Physische Leitung enthält Bezeichnung, Serieller Port (mit Aktualisieren), Baudrate und Serielles Format, alle zehn Formate angeboten, sechs mit 8 Bit und vier mit 7 Bit. Sie hat keinen Übertragungsmodus, kein Zeitlimit für die Antwort, keinen Mindestabstand zwischen Transaktionen und keine Karte Einheiten suchen: Jedes Messgerät sagt auf seiner eigenen Karte Messgerät, was seine Nachrichten beendet und wie lange es auf eine Antwort wartet, und ein Messgerät wird an dem unterschieden, was es gefragt wird, nicht an einer Adresse, deshalb hat die Tabelle Geräte der Leitung keine Spalte Unit-ID.

Eine hier angelegte Leitung startet deaktiviert, damit die Porteinstellungen eingegeben werden, bevor sich der Port öffnet; Port, Baudrate und Format ändern sich nur, solange die Leitung deaktiviert ist. Gerät hinzufügen auf der Leitung oder in ihrem Kontextmenü legt ein Gerät dieses Treibers auf dieser Leitung an. Eine Leitung gehört dauerhaft zu dem Treiber, unter dem sie angelegt wurde: Kein Gerät eines anderen Treibers kommt auf sie, und ein Port gehört zu einer Leitung, gleich welchem Treiber die Leitung gehört.

Der Treiber öffnet den Port einmal für alle Messgeräte der Leitung und sendet eine Anfrage nach der anderen, wobei er auf ihre Antwort wartet, bevor er die nächste sendet. Er hält DTR eingeschaltet, solange der Port offen ist, denn ein Messgerät, das seine Ausgabe über DTR und DSR taktet, etwa das Keysight 34401A oder ein Netzgerät E36xx, sendet nichts, solange DTR aus ist. Ein Port, der ausfällt, wird nach einer Pause wieder geöffnet, die sich von 1 Sekunde bis 1 Minute verdoppelt, solange er weiter ausfällt, und jedes Messgerät darauf wird neu eingerichtet, seine Einrichtungsbefehle erneut gesendet, wie bei seiner ersten Verbindung.

Gerät

Verbindung

Feld Bedeutung Standard
Übertragungsweg Ein unter dem Treiber angelegtes Gerät: TCP (LXI-Socket), "Die Station verbindet sich mit dem SCPI-Socket des Messgeräts an dessen Host und Port, 5025 bei den meisten LXI-Messgeräten.", oder VISA (USB, GPIB, Netzwerk), "Die Station öffnet das Messgerät über seinen VISA-Ressourcennamen, mit dem auf diesem Rechner installierten VISA." Beide lassen sich wechseln; ein Gerät auf einer Leitung zeigt stattdessen seine Leitung. TCP (LXI-Socket)
Hostadresse TCP: der Hostname oder die IP-Adresse des Messgeräts. leer
Port TCP: der Port, auf dem das Messgerät SCPI beantwortet, 1 bis 65535. Ein leeres Feld zeigt 5025 in Grau, und das Messgerät wird darauf angewählt. 5025
VISA-Ressource VISA, statt Hostadresse und Port: "Der Name des Messgeräts, wie VISA ihn auflistet, etwa USB00x09570x1A07MY12345678INSTR oder GPIB022INSTR. Geräte suchen trägt ihn ein." Es ist der Name, den NI MAX und Keysight Connection Expert für das Messgerät zeigen. leer
Serielle Leitung · fest Ein Gerät auf einer Leitung: der Name der Leitung über ihrem Port, ihrer Baudrate und ihrem Format, nur lesbar. die Leitung, unter der es hinzugefügt wird

Ein neues Gerät ist ein TCP-Gerät: Es zeigt "Hostadresse noch nicht eingetragen" und wird nicht verbunden, solange es keine Hostadresse hat. Ein VISA-Gerät wählt keinen Host an und wartet nie auf einen. Der Wechsel zu VISA behält Hostadresse und Port für die Rückkehr zu TCP, und der Wechsel zu TCP behält die Ressource. Ein Gerät, mit dem der Treiber nicht arbeiten kann, wird nicht gespeichert, und das Aktionsprotokoll sagt, warum:

Sie geben ein Das Aktionsprotokoll sagt
Einen Port außerhalb von 1 bis 65535 "Geben Sie einen Port von 1 bis 65535 ein, oder lassen Sie das Feld für 5025 leer."
VISA ohne Ressource "Geben Sie die VISA-Ressource des Messgeräts ein, etwa USB00x09570x1A07MY12345678INSTR, oder starten Sie Geräte suchen."
Eine Ressource mit einem Leerzeichen oder einem Zeichen außerhalb von einfachem ASCII "Die VISA-Ressource enthält ein Leerzeichen oder ein Zeichen außerhalb von einfachem ASCII. Geben Sie sie so ein, wie VISA sie auflistet."

Die Base URI, die die Kopfzeile zeigt, ist die Laufzeitadresse: scpi://tcp/<host>:<port>, scpi://visa/<resource> oder scpi://serial/<line id>/<port>/<baud>/<format>, gefolgt vom Endezeichen (term), dem Zeitlimit für die Antwort (timeout), der Schreibbestätigung (check) und den Einrichtungsbefehlen (setup, einer nach dem anderen, getrennt durch %0A). Eine Kopie eines Geräts auf einer Leitung bleibt auf dieser Leitung; eine Kopie eines TCP- oder VISA-Geräts landet auf der Ebene des Treibers selbst.

Die Karte Messgerät

Unter der Karte Verbindung sagt die Karte Messgerät, was das Messgerät ist und wie die Station mit ihm spricht.

Feld Bedeutung Standard
Identität (*IDN?) Nur lesbar: "Was das Messgerät auf *IDN? geantwortet hat, als die Station sich verband: Hersteller, Modell, Seriennummer und Firmware." Es zeigt "Noch nicht beantwortet", bis das Messgerät antwortet, und wieder, sobald das Gerät nicht mehr verbunden ist. Ein Messgerät, das *IDN? nicht beantwortet, wird trotzdem gelesen, ohne Identität.
Endezeichen LF (Zeilenvorschub), CR LF (Wagenrücklauf, Zeilenvorschub) oder CR (Wagenrücklauf): "Beendet jeden gesendeten Befehl und jede gelesene Antwort. LF passt zu fast jedem Messgerät; manche seriellen verwenden CR LF oder CR." LF (Zeilenvorschub)
Zeitlimit für die Antwort (ms) 100 bis 60000: "Wie lange eine Abfrage auf ihre Antwort wartet und ein Schreibvorgang auf die Fehlerwarteschlange des Messgeräts. Eine langsame Messung braucht mehr." 2000
Schreibbestätigung "SCPI bestätigt keinen Befehl, deshalb wird ein Schreibvorgang bestätigt, indem das Messgerät danach gefragt wird." Was jede Wahl sendet, steht unter Schreiben: Fehlerwarteschlange (SYST:ERR?), Keine: bestätigt, sobald gesendet, oder die Fehlerwarteschlange, sobald der Befehl fertig ist, Abschluss, dann Fehlerwarteschlange (*OPC?, SYST:ERR?). Fehlerwarteschlange (SYST:ERR?)
Einrichtungsbefehle Ein Befehl pro Zeile, höchstens 32 mit je höchstens 512 Zeichen: "Werden bei jeder Verbindung der Station gesendet, der Reihe nach, einer pro Zeile, etwa *RST oder CONF:VOLT:DC 10. Fehler, die sie auslösen, stehen im Journal." leer

Jedes Mal, wenn die Station sich mit dem Messgerät verbindet, und jedes Mal, wenn eine serielle Leitung ihren Port wieder öffnet, sendet sie der Reihe nach: *CLS, wenn die Schreibbestätigung die Fehlerwarteschlange liest, die Einrichtungsbefehle, liest dann die Fehlerwarteschlange ins Journal (ein Fehler, den ein Einrichtungsbefehl ausgelöst hat, steht dort und hält das Gerät nicht an) und fragt *IDN?, dessen Antwort das Feld Identität zeigt. Ein Wert, den die Karte nicht annehmen kann, wird nicht gespeichert, und das Aktionsprotokoll sagt, warum: "Das Zeitlimit für die Antwort muss zwischen 100 und 60000 ms liegen.", "Ein Einrichtungsbefehl enthält ein Zeichen außerhalb von einfachem ASCII, etwa ein typografisches Anführungszeichen, das kein Messgerät liest." oder "Senden Sie höchstens 32 Einrichtungsbefehle mit je höchstens 512 Zeichen." SCPI ist einfaches ASCII, deshalb wird ein Befehl, der mit einem typografischen Anführungszeichen oder einem geschützten Leerzeichen aus einem Handbuch kopiert wurde, dort abgelehnt, wo er eingegeben wird, statt an ein Messgerät gesendet zu werden, das ihn nicht lesen kann.

VISA auf diesem Rechner

Das Produkt bringt kein VISA mit und installiert keines. Ein VISA-Gerät öffnet sein Messgerät über die 64-Bit-VISA-Bibliothek (visa64.dll), die schon auf diesem Rechner ist und die NI-VISA, das LabVIEW installiert, und die Keysight IO Libraries Suite beide dort ablegen. Nur VISA-Geräte brauchen sie: Ein Messgerät über TCP oder an einer seriellen Leitung verbindet sich ohne sie. Die Station prüft selbst, ob sich die Bibliothek laden lässt, ohne auf ein Gerät zu warten: beim ersten Mal, wenn die Seite des Treibers, die Seite eines VISA-Geräts oder der Agent fragt, und danach alle 30 Sekunden, solange sie fehlt. Bis der Connector gestartet ist, ist nicht bekannt, ob VISA da ist, und es wird nichts dazu gesagt. Solange es fehlt:

Wo Was dort steht
Die Seite eines VISA-Geräts Ein Warnhinweis, "VISA ist auf diesem Rechner nicht installiert", mit den Schritten unten. Seine zwei Links öffnen die Seiten von NI und Keysight im Browser des Rechners.
Die Seite des Treibers Derselbe Hinweis, solange der Treiber mindestens ein VISA-Gerät hat, mit dem Satz "Bis zur Installation bleiben die VISA-Geräte dieses Treibers getrennt und behalten ihre Konfiguration; die Geräte über TCP oder an einer seriellen Leitung sind nicht betroffen." Ein Treiber nur mit TCP- und seriellen Geräten zeigt keinen.
Der letzte Fehler eines VISA-Geräts Dieselben Schritte, auf Englisch, wie die eigenen Ursachen des Treibers geschrieben sind. Das Gerät bleibt offline und behält seine Konfiguration.
Die Liste Übertragungsweg Bietet VISA weiter an, damit ein Gerät vorbereitet werden kann, bevor VISA installiert ist.
Geräte suchen Fragt nur den Host, der in der Karte Suchbereich eingegeben ist, und sagt es mit den zwei Seiten: "VISA ist auf diesem Rechner nicht installiert, deshalb listet der Suchlauf darüber kein USB-, GPIB- oder Netzwerk-Messgerät auf und fragt nur einen eingegebenen Host. Um sie aufzulisten, installieren Sie ein 64-Bit-VISA als Administrator", gefolgt von den Adressen von NI-VISA und der Keysight IO Libraries Suite. Der Satz bleibt in der Zeile, die den Suchlauf abschließt.
Der Agent driver_capabilities gibt die Schritte unter prerequisite des Scpi-Treibers, mit installed false und neededBy, das die VISA-Geräte nennt; device_discover sagt dasselbe in cut.

So wird es installiert:

  1. Laden Sie NI-VISA von der NI-Seite NI-VISA Download herunter, oder die Keysight IO Libraries Suite von der Keysight-Seite IO Libraries Suite Downloads.
  2. Beide funktionieren, und ein Rechner mit LabVIEW hat NI-VISA bereits. Die NI-Seite verlangt vor dem Download, dass Sie sich mit einem NI-Konto anmelden; die Keysight-Seite verlinkt das Installationsprogramm direkt. Nehmen Sie das neueste Windows-Installationsprogramm: Unter 64-Bit-Windows installieren beide das 64-Bit-VISA, das einzige, das Ganter Lab sieht.
  3. Führen Sie das Installationsprogramm als Administrator aus einem Ordner auf Laufwerk C: aus (das von Keysight installiert nicht von einem anderen Laufwerk) und starten Sie den Rechner neu, wenn es danach fragt.

Ein VISA, das nur seine 32-Bit-Bibliothek (visa32.dll) installiert hat, etwa eines für 32-Bit-Windows, wird nicht gesehen: Ganter Lab liest nur die 64-Bit-Bibliothek visa64.dll.

Spätestens 30 Sekunden nach der Installation verschwindet der Hinweis, und die VISA-Geräte verbinden sich mit ihrer bestehenden Konfiguration, ohne dass Ganter Lab neu gestartet wird. Ein Messgerät mit Netzwerkanschluss lässt sich auch ohne VISA über TCP erreichen.

Adressierung des Tags

Ein Tag dieses Treibers stellt seinem Messgerät eine Abfrage. Seine Karte Quelle enthält:

Feld Bedeutung Standard
Abfrage Was das Tag fragt, so wie das Programmierhandbuch des Messgeräts es schreibt: MEAS:VOLT:DC?, READ?, SOUR:VOLT?, OUTP?. Einfaches ASCII, höchstens 512 Zeichen. Ein Tag Nur schreiben fragt nichts und braucht keine. erforderlich
Wert in der Antwort Tags, die gelesen werden. "Leer liest die ganze Antwort. Eine Zahl liest diesen Wert einer kommagetrennten Antwort, ab 1 gezählt, etwa 3 für den dritten Kanal von READ?." Das Feld zeigt "Ganze Antwort", solange es leer ist. 1 bis 1000. leer
Schreibbefehl Tags, die geschrieben werden: "Was ein Schreibvorgang sendet, mit an der Stelle des Werts, etwa VOLT oder CURR . Ein Boolean wird als 1 oder 0 gesendet. Bei einem Boolean-Tag wird ein Befehl ohne , etwa *TRG, beim Schreiben von true gesendet." erforderlich

Ein Feld, das der Zugriff des Tags nicht nutzt, wird nicht gezeichnet und behält seinen Wert für den Fall, dass er wieder genutzt wird. Die Datentypen sind Boolean, Int32, Int64, Float, Double und String, standardmäßig Float. Ein Tag, dessen Felder nicht funktionieren können, wird nicht gespeichert, und die Seite des Tags sagt, was fehlt:

Sie geben ein Die Seite des Tags sagt
Keine Abfrage bei einem Tag, das gelesen wird "Geben Sie die Abfrage ein, die dem Messgerät gestellt wird, etwa MEAS:VOLT:DC?, oder machen Sie das Tag zu Nur schreiben."
Eine Abfrage mit einem typografischen Anführungszeichen oder einem anderen Zeichen außerhalb von einfachem ASCII "Die Abfrage enthält ein Zeichen außerhalb von einfachem ASCII, etwa ein typografisches Anführungszeichen, oder ist länger als 512 Zeichen."
Einen Wert in der Antwort über 1000 "Der Wert in der Antwort wird von 1 bis 1000 gezählt. Lassen Sie das Feld leer, um die ganze Antwort zu lesen."
Keinen Schreibbefehl bei einem Tag, das geschrieben wird "Geben Sie den Befehl ein, den ein Schreibvorgang sendet, etwa VOLT , oder machen Sie das Tag zu Nur lesen."
Eine Klammer, die nicht {value} oder {value:FORMAT} ist, oder den Wert zweimal "Der Schreibbefehl enthält ein Zeichen außerhalb von einfachem ASCII, eine Klammer, die nicht oder ist, oder den Wert zweimal."
Einen Befehl ohne {value} bei einem Tag, das kein Boolean ist "Setzen Sie an die Stelle des Werts im Schreibbefehl. Nur ein Boolean-Tag sendet ohne ihn einen Befehl."
Ein Format, das keine Zahl formatiert, oder ein Format bei einem Boolean- oder String-Tag "Das Format nach value: muss eine Zahl formatieren, etwa 0.000 oder F2, und nur ein numerisches Tag nimmt eines."

Die nur lesbare Zeile Quelladresse (Bus) zeigt, was der Treiber erhält: ask=READ? für ein Tag, das die ganze Antwort liest, ask=READ?&field=3 für ihren dritten Wert, ask=VOLT?&write=VOLT {value} für ein Tag, das gelesen und geschrieben wird, und write=*TRG für ein Tag Nur schreiben.

Lesen

Im Abfrageintervall des Tags sendet die Station die Abfrage und liest eine Antwort, bis zum Endezeichen, innerhalb des Zeitlimits für die Antwort. Der entnommene Text, die ganze Antwort oder der Wert, den das Tag benennt, wird als Typ des Tags gelesen, bevor die eigenen Stufen des Tags ihn umrechnen, wie bei jedem Treiber (siehe Die Wertepipeline):

Die Antwort enthält Gelesen als
+1.23456789E+00, -0.5, 12 Float oder Double: die Zahl, mit einem Punkt als Dezimaltrennzeichen, gleich in welcher Sprache die Station arbeitet.
9.91E37 Das Nicht-eine-Zahl von SCPI, was ein Messgerät antwortet, wenn es keinen Messwert hat: NaN bei einem Float- oder Double-Tag, wofür seine Stufe Ungültiger Messwert einsteht; bei einem Int32- oder Int64-Tag abgelehnt. 9.9E37, die Übersteuerung, bleibt diese Zahl.
+1.20000000E+01 Int32 oder Int64: 12. Ein Bruch wird abgelehnt.
1, ON, 0, OFF Boolean: wahr für 1 und ON, falsch für 0 und OFF; true, false, yes und no werden ebenfalls gelesen.
"Ready, armed" String: die Zeichen ohne ihre Anführungszeichen, ein verdoppeltes Anführungszeichen einfach. Ein Komma innerhalb der Anführungszeichen trennt keine Werte.
Situation Was das Lesen tut
Tags eines Geräts, die dieselbe Abfrage stellen Sie teilen sich eine Antwort für die Hälfte des kürzesten Abfrageintervalls unter ihnen, sodass die Tags, die jeden Kanal eines mehrkanaligen READ? lesen, eine Messung kosten. Ein Schreibvorgang vergisst jede gehaltene Antwort.
Keine Antwort innerhalb des Zeitlimits für die Antwort Ein fehlgeschlagener Lesevorgang. Wenn das Gerät die Fehlerwarteschlange liest, fragt die Station dann SYST:ERR?, sodass eine falsch geschriebene Abfrage mit dem eigenen Eintrag des Messgeräts scheitert, etwa -113,"Undefined header", in ihrem Grund. Die Richtlinie des Tags für ein Gerät, das nicht geantwortet hat, entscheidet, was es zeigt.
Eine Antwort mit weniger Werten als die Nummer des Tags Ein fehlgeschlagener Lesevorgang, der sagt, wie viele Werte die Antwort hat.
Ein Text, den der Typ des Tags nicht fassen kann Ein fehlgeschlagener Lesevorgang, der den Text nennt.

Schreiben

Ein Schreibvorgang läuft durch denselben Trichter wie der jedes anderen Treibers: Das Schreibfeld nimmt den technischen Wert, und die Umrechnungsstufen werden umgekehrt, bevor der Rohwert gesendet wird (siehe Connector). Der Befehl ist der Schreibbefehl mit dem Wert an der Stelle von {value}: eine Zahl in invarianter Kultur, der kürzeste Text, der als dieselbe Zahl zurückgelesen wird, oder formatiert durch {value:FORMAT} mit einem .NET-Zahlenformat (CURR {value:0.000} sendet 1,5 als CURR 1.500); ein Boolean als 1 oder 0, was jeder Boolean-Parameter von SCPI annimmt; ein Text, wie er ist, wobei der Befehl die Anführungszeichen trägt, die er braucht (DISP:TEXT "{value}"). Nicht-eine-Zahl und Unendlich werden abgelehnt, bevor etwas gesendet wird. Bei einem Boolean-Tag wird ein Befehl ohne {value}, etwa *TRG, beim Schreiben von true gesendet, und das Schreiben von false wird abgelehnt.

Schreibbestätigung Was gesendet wird Was der Schreibvorgang meldet
Fehlerwarteschlange (SYST:ERR?) *CLS, der Befehl, SYST:ERR? Erledigt, wenn die Warteschlange keinen Fehler meldet (0 oder +0,"No error"). Jeder andere Eintrag lehnt den Schreibvorgang mit den Worten des Messgeräts ab, etwa -222,"Data out of range". Keine Antwort ist keine Rückmeldung: Ob das Messgerät den Wert angenommen hat, ist nicht bekannt.
Abschluss, dann Fehlerwarteschlange (*OPC?, SYST:ERR?) *CLS, der Befehl, *OPC?, SYST:ERR? Dasselbe, sobald das Messgerät den Befehl ausgeführt hat: für einen Ausgang, der sich einschwingt, oder ein Relais, das schaltet.
Keine: bestätigt, sobald gesendet Nur der Befehl Erledigt, sobald gesendet, für ein Messgerät ohne Fehlerwarteschlange. Eine unbeantwortete Abfrage wird dann ohne den Fehler des Messgeräts gemeldet.

Schreibvorgänge warten mit den Lesevorgängen in der Warteschlange des Geräts: Auf einer Leitung teilen sie die eine Anfrage nach der anderen der Leitung, über TCP und VISA die eigene Verbindung des Geräts.

Gerätesuche

Die Seite des Treibers trägt eine Karte Suchbereich mit einem optionalen Feld, "Adresse eines Messgeräts für eine TCP-Abfrage, z. B. 192.168.0.20 oder 192.168.0.20:5025 (leer = die Messgeräte, die VISA auflistet)". Geräte suchen stellt dann zwei Fragen, eine nach der anderen:

Frage Wann Was sie anbietet
Jede Messgeräteressource, die VISA auflistet, an USB, GPIB oder im Netzwerk, der Reihe nach geöffnet und mit *IDN? gefragt. Die Fortschrittszeile nennt jede: "USB00x09570x1A07MY12345678INSTR wird nach seiner Identität gefragt…". Wenn VISA auf diesem Rechner installiert ist. Ohne VISA sagt der Suchlauf es, mit der Angabe, woher VISA kommt, und der Satz bleibt in der Zeile, die den Suchlauf abschließt (VISA auf diesem Rechner). Jedes Messgerät, das antwortet, als VISA-Gerät mit eingetragener Ressource.
*IDN? über TCP an den Host im Feld, auf seinem Port oder auf 5025: "192.168.0.20:5025 wird nach seiner Identität gefragt…". Nur wenn das Feld eine Adresse enthält. Das Messgerät, als TCP-Gerät an diesem Host und Port.

Jedes Messgerät hat 1,5 Sekunden zum Antworten, und eines, das nicht antwortet, wird nicht angeboten. Ein Kandidat wird nach dem Hersteller und dem Modell benannt, die er geantwortet hat (Keysight Technologies 34461A), trägt jeden Standard der Karte Messgerät und keine Tags, denn ein Messgerät veröffentlicht keine Liste seiner Abfragen: "Keine Tags gemeldet. Fügen Sie das Gerät hinzu, um die Tags in seinem Editor einzurichten." Ein VISA-Kandidat, dessen Ressource ein Gerät des Treibers schon hat, wird als bereits eingerichtet markiert und bietet Öffnen statt Hinzufügen; ein über TCP gefundenes Messgerät wird nie zugeordnet, denn ein Host ist nur der Ort, an dem ein Messgerät erreicht wird. VISA listet jeden seriellen Port des Rechners als Ressource auf (ASRL3::INSTR), ob etwas angeschlossen ist oder nicht, und eine Frage würde an das schreiben, was dort hängt: Die Suche lässt sie aus, und ein serielles Messgerät kommt auf eine serielle Leitung dieses Treibers. Eine serielle Ressource, die von Hand in einem VISA-Gerät eingegeben ist, wird trotzdem geöffnet. Etwas im Feld, das kein Host ist, wird darunter abgelehnt, und Geräte suchen wird grau: "Ein SCPI-Suchlauf bittet das hier eingetragene Messgerät über TCP, sich zu erkennen zu geben: seine IP-Adresse oder sein Name, auf Wunsch mit Port (zum Beispiel 192.168.0.20 oder 192.168.0.20:5025). Leer lassen, um nur die Messgeräte zu fragen, die VISA auflistet." Das übrige Verhalten der Suche steht unter Gerätesuche.

Beispiel: ein Multimeter über TCP

Ein Keysight 34461A im Netzwerk beantwortet SCPI auf seinem LXI-Socket, Port 5025. Seine Gleichspannung lesen:

  1. Auf der Seite des Treibers Gerät hinzufügen; nennen Sie es DMM, behalten Sie TCP (LXI-Socket), geben Sie als Hostadresse 192.168.0.20 ein und behalten Sie Port 5025.
  2. Behalten Sie auf der Karte Messgerät LF (Zeilenvorschub), ein Zeitlimit für die Antwort (ms) von 2000 und Fehlerwarteschlange (SYST:ERR?), und geben Sie zwei Einrichtungsbefehle ein, *RST und dann CONF:VOLT:DC 10: Das Messgerät wird zurückgesetzt und bei jeder Verbindung der Station auf Gleichspannung im Bereich 10 V gestellt.
  3. Sobald es verbunden ist, zeigt das Feld Identität, was das Messgerät geantwortet hat, etwa Keysight Technologies,34461A,MY53212345,A.02.14-02.40-02.14-00.49-02-01.
  4. Tag hinzufügen; nennen Sie es Voltage, Double, Nur lesen, mit der Abfrage READ?, dem Wert in der Antwort leer und der Einheit V. READ? nimmt eine Messung in der eingestellten Funktion auf und antwortet mit ihr.

Die Base URI lautet scpi://tcp/192.168.0.20:5025?term=lf&timeout=2000&check=errorqueue&setup=*RST%0ACONF:VOLT:DC 10. Ein Agent tut dasselbe mit zwei Werkzeugaufrufen:

device_upsert driver=Scpi name=DMM transport=Tcp host=192.168.0.20 port=5025 setupCommands='*RST\nCONF:VOLT:DC 10'
tag_upsert device=DMM name=Voltage opcUaType=Double address='READ?' unit=V

Beispiel: ein Netzgerät an RS-232

Ein Keysight E3631A beantwortet SCPI an seinem RS-232-Anschluss, mit 9600 Baud, 8 Datenbits, ohne Parität und mit 2 Stoppbits, und über RS-232 nimmt es Befehle erst an, wenn es in den Fernsteuermodus versetzt ist. Seine Spannung einstellen, seinen Ausgang schalten und seinen Strom lesen:

  1. Leitung hinzufügen auf der Seite des Treibers; nennen Sie sie PSU line, wählen Sie COM4, stellen Sie Baudrate auf 9600 und Serielles Format auf 8N2, dann Aktivieren Sie die Leitung.
  2. Gerät hinzufügen auf der Leitung; nennen Sie es PSU. Stellen Sie auf der Karte Messgerät das Zeitlimit für die Antwort (ms) auf 3000, geben Sie SYST:REM als einzige Zeile der Einrichtungsbefehle ein und stellen Sie die Schreibbestätigung auf Abschluss, dann Fehlerwarteschlange (*OPC?, SYST:ERR?), damit ein Schreibvorgang erst erledigt ist, wenn der Ausgang ihm gefolgt ist.
  3. Tag hinzufügen Setpoint, Double, Lesen und Schreiben, Abfrage VOLT?, Schreibbefehl VOLT {value}.
  4. Tag hinzufügen Output, Boolean, Lesen und Schreiben, Abfrage OUTP?, Schreibbefehl OUTP {value}: Das Schreiben von true sendet OUTP 1, von false OUTP 0, und das Netzgerät beantwortet OUTP? mit 1 oder 0.
  5. Tag hinzufügen MeasuredCurrent, Double, Nur lesen, Abfrage MEAS:CURR?, Einheit A.

Die Busadresse des Tags Setpoint ist ask=VOLT?&write=VOLT {value}. Ein Netzgerät mit mehreren Ausgängen, wie dieses, wirkt auf den Ausgang, den es ausgewählt hat; ein zweiter Einrichtungsbefehl wie INST:SEL P6V wählt ihn. Dasselbe mit den Werkzeugen des Agenten:

serial_line_upsert driver=Scpi name='PSU line' serialPort=COM4 baudRate=9600 serialFormat=8N2
device_upsert driver=Scpi name=PSU transport=SerialLine serialLineId=<id> responseTimeoutMs=3000 setupCommands='SYST:REM' writeCheck=CompletionAndErrorQueue
tag_upsert device=PSU name=Setpoint opcUaType=Double accessType=ReadAndWrite address='VOLT?' writeTemplate='VOLT {value}'
tag_upsert device=PSU name=Output opcUaType=Boolean accessType=ReadAndWrite address='OUTP?' writeTemplate='OUTP {value}'
tag_upsert device=PSU name=MeasuredCurrent opcUaType=Double address='MEAS:CURR?' unit=A

Agent-Werkzeuge

driver_capabilities beschreibt diesen Treiber unter scpi: seine drei Übertragungswege, ob dieser Rechner VISA hat (unter prerequisite, mit jedem Schritt, es zu installieren), die Endezeichen, das Zeitlimit für die Antwort, die Schreibbestätigungen, die Einrichtungsbefehle, wie eine Abfrage und ein Schreibbefehl geschrieben werden, wie Antworten gelesen werden, die Suche und die beiden Beispiele oben. device_upsert driver=Scpi nimmt transport (Tcp, der Standard, Visa oder SerialLine, das serialLineId mit sich bringt), host und port über TCP, visaResource über VISA, serialLineId für eine Leitung dieses Treibers, terminator (Lf, CrLf oder Cr; \n, \r\n und \r werden ebenfalls gelesen), responseTimeoutMs (100 bis 60000), writeCheck (ErrorQueue, CompletionAndErrorQueue oder None) und setupCommands (einer pro Zeile oder getrennt durch \n; '' leert sie). tag_upsert nimmt die Abfrage als address, valueField (1 bis 1000; 0 oder weggelassen liest die ganze Antwort) und writeTemplate ('' leert ihn). serial_line_upsert driver=Scpi legt eine Leitung dieses Treibers an, nur mit serialPort, baudRate und serialFormat. device_discover driver=Scpi startet die Suche, mit target für die TCP-Abfrage. Ein Gerät, das die Werkzeuge zurückgeben, trägt scpi, mit der Identität des Messgeräts, sobald es geantwortet hat, und ein Tag ebenso. Die übrigen Werkzeuge stehen unter Agent-Werkzeuge.

Grenzen, die man kennen sollte

  • Fluke NetDAQ 2640A, 2645A, 2680A und 2686A sprechen ein eigenes Protokoll von Fluke, das nicht SCPI ist: Dieser Treiber liest sie nicht. Fluke 1586A Super-DAQ und 2638A Hydra Series III sprechen SCPI, und er liest sie.
  • Antworten, die als binärer Block nach IEEE 488.2 gesendet werden (ein #, eine Länge und rohe Bytes), etwa eine Kurvenform oder ein Bildschirmabbild, werden nicht gelesen: Ein Tag liest eine als Text geschriebene Antwort.
  • Das Produkt installiert kein VISA. Ohne NI-VISA oder die Keysight IO Libraries Suite auf diesem Rechner werden USB- und GPIB-Messgeräte nicht erreicht; TCP- und serielle Messgeräte schon.
  • Die Suche listet die seriellen Ressourcen von VISA nicht auf (ASRL…::INSTR): Ein serielles Messgerät kommt auf eine serielle Leitung dieses Treibers.
  • Jeder Wert wird abgefragt: Der Treiber wartet nicht auf Bedienungsanforderungen (SRQ) oder auf das Statusbyte.
  • Ein Gerät lässt sich nicht zwischen einer seriellen Leitung und dem Netzwerk verschieben, auch nicht auf eine andere Leitung: Legen Sie es dort an, wo es hingehört, und löschen Sie das alte.