# Standard Commands for Programmable Instruments

Standard Commands for Programmable Instruments (SCPI; deutsch Standardbefehle für programmierbare Instrumente) ist ein standardisierter Befehlssatz, der zur Steuerung und Programmierung von Messgeräten verwendet wird. Die Befehle werden oft als „skippy“-Befehle bezeichnet. Die zugrundeliegende physikalische Kommunikationsschicht wird von SCPI nicht vorgeschrieben. Die Daten können über verschiedene Bussysteme wie GPIB, RS232, USB, VXI oder LXI übertragen werden.
Die SCPI-Befehle werden in Form von ASCII-Text übertragen und können mit jeder Programmiersprache in jeder Entwicklungsumgebung generiert werden. Es muss allerdings ein Zugang aus der Programmiersprache zum jeweiligen Bussystem vorhanden sein, um die Befehle absenden und Ergebnisse empfangen zu können.
Eine erste Standardisierung fand 1987 als Teil des IEEE 488.2-1987 Standards statt. Dieser legte neben anderen Dingen eine Reihe von grundsätzlichen Verwaltungsbefehlen für Geräte mit GPIB-Bus fest. Diese beginnen alle mit einem '*'. SCPI übernahm diese, generalisierte und erweiterte sie. Im Jahr 1992 wurde SCPI erstmals standardisiert und seitdem gelegentlich erweitert und verbessert, letztmals 1999. Standardisiert ist sowohl der grundsätzliche Aufbau von SCPI-Befehlen, diverse allgemeine Befehle als auch die Befehle für einige spezielle Klassen von Geräten.
Grund für die Einführung von SCPI war der Befehls-Wildwuchs trotz IEEE 488.2 bei den verschiedenen Messgeräteherstellern und der daraus resultierende Aufwand für Einarbeitung und Gerätewechsel. Der SCPI-Standard hält Hersteller moderner Geräte allerdings nicht davon ab, eine große Anzahl eigener Kommandos zu implementieren, die vom Aufbau her SCPI entsprechen, aber weit über die standardisierten Befehle für die entsprechenden Geräteklassen hinausgehen. Solange die Befehle grundsätzlich dem Aufbau von SCPI-Befehlen entsprechen, werden diese auch als SCPI-Befehle bezeichnet.
Verlassen kann man sich mit sehr großer Wahrscheinlichkeit nur darauf, dass bei einem Gerät mit SCPI oder SCPI-ähnlichen Befehlen der Befehl *IDN? vorhanden ist. Dieser fragt den Hersteller, die Modellnummer, Seriennummer und Software-Version eines Gerätes ab. Obwohl dieser Befehl und die Antwort standardisiert ist, gibt es auch hier Geräte die auf *IDN? mit einer unstandardisierten Antwort reagieren. Im Allgemeinen ist die Antwort aber ausreichend, um zumindest den Typ eines Gerätes und damit den Befehlssatz zu identifizieren, den es versteht.
Das SCPI Consortium wurde 2003 in die IVI Foundation eingegliedert. Die SCPI-Weiterentwicklung findet dadurch in einem größeren Rahmen statt.

## Beispiele

* Mit dem Befehl SYSTem:COMMunicate:SERial:BAUD 2400 kann die Baudrate einer RS232-Schnittstelle auf 2400 bit/s eingestellt werden. Der Befehl kann zu SYST:COMM:SER:BAUD 2400 abgekürzt werden.
* Mit dem Befehl SYSTem:COMMunicate:SERial:BAUD? kann die momentan eingestellte Baudrate einer RS232-Schnittstelle abgefragt werden. Der Befehl kann zu SYST:COMM:SER:BAUD? abgekürzt werden.

## Weblinks & Referenzen

* ↑ SCPI-Spezifikation von 1999 (PDF, engl.; 4,2 MB)
* Offizielle Website der IVI Foundation (engl.)
* Integration into the IVI Foundation (engl.)