Los comandos estándar para instrumentos programables ( SCPI ; a menudo pronunciado "skippy") definen un estándar de sintaxis y comandos para usar en el control de dispositivos de prueba y medición programables, como equipos de prueba automáticos y equipos de prueba electrónicos . [3]
SCPI se definió como una capa adicional sobre la especificación IEEE 488.2-1987 "Códigos estándar, formatos, protocolos y comandos comunes". [4] El estándar especifica una sintaxis común , una estructura de comandos y formatos de datos que se utilizarán con todos los instrumentos. Introdujo comandos genéricos (como CONFigure
y MEASure
) que se podrían utilizar con cualquier instrumento. Estos comandos se agrupan en subsistemas. SCPI también define varias clases de instrumentos. Por ejemplo, cualquier fuente de alimentación controlable implementaría la misma DCPSUPPLY
clase de funcionalidad base. Las clases de instrumentos especifican qué subsistemas implementan, así como cualquier característica específica del instrumento.
El enlace de comunicaciones de hardware físico (capa física) no está definido por SCPI. [5] Si bien se creó originalmente para el bus IEEE-488.1 (GPIB), [5] SCPI también se puede utilizar con RS-232 , RS-422 , RS-485 , USB , Ethernet , VXIbus , HiSLIP , etc. [5]
Los comandos SCPI son cadenas de texto ASCII [5] que se envían al instrumento a través de la capa física. [5] Los comandos son una serie de una o más palabras clave, muchas de las cuales toman parámetros. En la especificación, las palabras clave se escriben de la siguiente manera CONFigure
: Se puede utilizar la palabra clave completa o se puede abreviar a solo la parte en mayúsculas. Las respuestas a los comandos de consulta suelen ser cadenas ASCII. Sin embargo, para datos masivos, se pueden utilizar formatos binarios. [3]
La especificación SCPI consta de cuatro volúmenes: Volumen 1: "Sintaxis y estilo", Volumen 2: "Referencia de comandos", Volumen 3: "Formato de intercambio de datos", Volumen 4: "Clases de instrumentos". La especificación se publicó originalmente como manuales impresos no libres, y luego como un archivo PDF libre que incluye los cuatro volúmenes. [3]
SCPI , que se lanzó por primera vez en 1990, [3] [6] se originó como una capa adicional para IEEE-488 . IEEE-488.1 especificaba el bus físico y eléctrico, y IEEE-488.2 especificaba el protocolo y el formato de datos, pero ninguno especificaba los comandos del instrumento. Diferentes fabricantes, e incluso diferentes modelos, del mismo tipo de instrumento utilizarían diferentes conjuntos de comandos. SCPI creó un estándar que podría ser común para todos los fabricantes y modelos. Requiere el uso de los formatos de datos IEEE-488.2, pero no obliga al bus IEEE-488.1. [7]
En 2002-2003, el Consorcio SCPI votó para convertirse en parte de la Fundación IVI (Instrumentos Virtuales Intercambiables). [7]
En 1987, el IEEE introdujo la especificación IEEE 488.2-1987 " Códigos estándar, formatos, protocolos y comandos comunes ", que luego fue revisada en 1992 como IEEE 488.2-1992 . [8]
Aunque el IEEE 488.2 proporcionaba una sintaxis independiente del dispositivo, todavía no existía un estándar para los comandos específicos de cada instrumento. Los comandos para controlar la misma clase de instrumento, por ejemplo, multímetros, variaban entre fabricantes e incluso modelos. La Fuerza Aérea de los Estados Unidos [9] y, posteriormente, Hewlett-Packard, reconocieron este problema. En 1989, HP desarrolló su lenguaje TML [10], que fue el precursor de SCPI.
La IEC desarrolló sus propios estándares en paralelo con el IEEE, con IEC 60625-2-1993 (IEC 625). En 2004, IEEE e IEC combinaron sus respectivos estándares en un estándar IEEE/IEC de "doble logotipo" IEC 60488-2-2004 , Parte 2: Códigos, formatos, protocolos y comandos comunes , [11] que reemplaza a IEEE 488.2-1992 e IEC 60625-2-1993. [12]
Los comandos SCPI a un instrumento pueden realizar una operación de configuración (por ejemplo, encender una fuente de alimentación) o una operación de consulta (por ejemplo, leer un voltaje). Las consultas se emiten a un instrumento añadiendo un signo de interrogación al final de un comando. Algunos comandos se pueden utilizar tanto para configurar como para realizar consultas a un instrumento. Por ejemplo, el modo de adquisición de datos de un instrumento se puede configurar mediante el ACQuire:MODe
comando o se puede realizar una consulta mediante el ACQuire:MODe?
comando. Algunos comandos pueden configurar y realizar consultas a un instrumento a la vez. Por ejemplo, el *CAL?
comando ejecuta una rutina de autocalibración en algún equipo y luego devuelve los resultados de la calibración.
Los comandos similares se agrupan en una jerarquía o estructura de "árbol". [3] Por ejemplo, cualquier instrucción para leer una medición de un instrumento comenzará con " MEASure
". Los subcomandos específicos dentro de la jerarquía se anidan con un :
carácter de dos puntos ( ). Por ejemplo, el comando para "Medir un voltaje de CC" tomaría la forma MEASure:VOLTage:DC?
, y el comando para "Medir una corriente de CA" tomaría la forma MEASure:CURRent:AC?
.
:Medida :Voltaje :¿CORRIENTE CONTINUA? :¿C.A? :Actual :¿CORRIENTE CONTINUA? :¿C.A? ...
Aunque la sintaxis de comando anterior muestra comandos en mayúsculas y minúsculas, SCPI no distingue entre mayúsculas y minúsculas .
VOLTage
, todas las siguientes son representaciones válidas: VOLTAGE
, voltage
, Voltage
, VoLtAgE
.La sintaxis del comando muestra algunos caracteres en una combinación de mayúsculas y minúsculas. Abreviar el comando para enviar solo mayúsculas tiene el mismo significado que enviar el comando en mayúsculas y minúsculas. [3]
SYSTem:COMMunicate:SERial:BAUD 2400
” establecería una interfaz de comunicaciones serial RS-232 a 2400 bit/s . Esto también podría abreviarse como “ SYST:COMM:SER:BAUD 2400
”. El comando de consulta “ SYSTem:COMMunicate:SERial:BAUD?
” o “ SYST:COMM:SER:BAUD?
” indicaría al instrumento que informe su velocidad en baudios actual.Los únicos comandos válidos son la forma corta y la forma larga de cada comando, todas las demás variaciones de subconjuntos son inválidas.
COMM
(forma corta) y COMMUNICATE
(forma larga) son válidos, pero los subconjuntos COM
, COMMUN
, COMMUNIC
no son válidos, y las letras adjuntas tampoco son válidas, como COMMUNICATED
.Se pueden emitir varios comandos a un instrumento en una sola cadena. Están formados por comandos simples separados por un carácter de punto y coma ( ;
).
MEASure:VOLTage:DC?;:MEASure:CURRent:AC?
.Los comandos simples que comienzan con dos puntos ( :
) se interpretan con respecto a la raíz del árbol de comandos. De lo contrario, hacen referencia implícita al último nodo del comando anterior (a menos que ya comiencen con un asterisco). Por ejemplo,
:FUENTE:FRECUENCIA:INICIO 100;PARADA 200
es una abreviatura del mensaje
:FUENTE:FRECUENCIA:INICIO 100;:FUENTE:FRECUENCIA:PARADA 200
Algunos comandos aceptan o requieren uno o más argumentos adicionales. Los argumentos se dan después del comando y se separan del comando mediante un espacio. [11] Por ejemplo, el comando para establecer el modo de disparo de un instrumento en "normal" se puede dar como " TRIGger:MODe NORMal
". Aquí, la palabra " NORMal
" se utiliza como argumento del TRIGger:MODe
comando " ". Cuando se proporcionan múltiples argumentos, los argumentos se escriben como una lista separada por comas. Por ejemplo, un comando de consulta que realiza una medición de voltios de CA en un multímetro digital, utilizando el rango de medición de 10 VRMS del medidor y mostrando el valor de voltaje medido con 4-1/2 dígitos de resolución, se escribiría como " MEASure:VOLTage:AC? 10,4
".
Para los comandos que aceptan argumentos enteros , los valores pueden especificarse en múltiples formatos de números de computadora : decimal, hexadecimal, octal, binario. Los últimos tres formatos están definidos por IEEE 488.2, [11] en el que se basa SCPI. [3] Los números decimales ( raíz 10) no tienen prefijo, los números hexadecimales (raíz 16) tienen prefijo o , los números octales (raíz 8) tienen o , y los números binarios (raíz 2) tienen o . Los dígitos hexadecimales pueden usar letras mayúsculas (ABCDEF), letras minúsculas (abcdef), o letras mayúsculas y minúsculas (aBcDeF). Para octal, se eligió la letra " Q " en lugar de la letra " O " para minimizar la confusión visual con el número " 0 " (cero). [11]#H
#h
#Q
#q
#B
#b
Los siguientes ejemplos de argumentos son numéricamente equivalentes:
26
#H1A
o#h1a
#Q32
o#q32
#B11010
o#b11010
Dado que SCPI se definió como una capa adicional sobre la especificación IEEE 488.2, un dispositivo compatible con SCPI también debería reconocer varios comandos 488.2. [3] Estos comandos también pueden conocerse extraoficialmente como comandos de asterisco (o comandos de estrella), porque todos comienzan con el carácter de asterisco *
.
Según la sección 4.1.1 del Volumen 1 de SCPI, todos los dispositivos SCPI deben implementar los siguientes comandos 488.2. [3] En el mundo real, algunos dispositivos de gama baja pueden solo admitir un subconjunto de estos comandos 488.2, o incluso pueden aceptar los comandos pero no realizar ninguna operación. Un usuario debe consultar el manual oficial del programador de cada dispositivo antes de asumir que todos estos comandos 488.2 son compatibles.
*CLS
*ESE
*ESE?
*ESR?
*IDN?
*OPC
*OPC?
*RST
*SRE
*SRE?
*STB?
*TST?
*WAI
De acuerdo con la sección 4.1.2 del Volumen 1 de SCPI, todos los demás comandos 488.2 no enumerados anteriormente se consideran opcionales y no son requeridos por SCPI. [3]
*AAD
*CAL?
*DDT
*DDT?
*DLF
*DMC
*EMC
*EMC?
*GMC?
*IST?
*LMC?
*LRN?
*OPT?
*PCB
*PMC
*PRE
*PRE?
*PSC
*PSC?
*PUD
*PUD?
*RCL
*RDT
*RDT?
*SAV
*TRG
*RMC
*SDS
En 1990, la especificación IEEE 488.2 incluyó el documento Comandos estándar para instrumentación programable (SCPI).