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 además de la especificación IEEE 488.2-1987 "Códigos estándar, formatos, protocolos y comandos comunes". [4] El estándar especifica una sintaxis , una estructura de comandos y formatos de datos comunes que se utilizarán con todos los instrumentos. Introdujo comandos genéricos (como CONFigure
y MEASure
) que podrían usarse 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 básica. 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 no está definido por SCPI. Si bien se creó originalmente para el bus IEEE-488 .1 (GPIB), SCPI también se puede utilizar con RS-232 , RS-422 , Ethernet , USB , VXIbus , HiSLIP , etc.
Los comandos SCPI son cadenas de texto ASCII que se envían al instrumento a través de la capa física (por ejemplo, IEEE-488.1). 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 están escritas CONFigure
: se puede utilizar la palabra clave completa o se puede abreviar solo a la parte mayúscula. 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". [3] La especificación se publicó originalmente como manuales impresos no gratuitos y luego como un archivo PDF gratuito .
Lanzado por primera vez en 1990, [3] [5] SCPI se originó como una capa adicional para IEEE-488 . IEEE-488.1 especificó el bus físico y eléctrico, y IEEE-488.2 especificó el protocolo y el formato de datos, pero ninguno especificó 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 exige el bus IEEE-488.1. [6]
En 2002-2003, el Consorcio SCPI votó a favor de formar parte de la Fundación IVI (Instrumentos Virtuales Intercambiables). [6]
En 1987, IEEE introdujo la especificación IEEE 488.2-1987 " Códigos, formatos, protocolos y comandos comunes estándar ", que luego fue revisada en 1992 como IEEE 488.2-1992 . [7]
Si bien IEEE 488.2 proporcionaba una sintaxis independiente del dispositivo, todavía no existía un estándar para comandos específicos de instrumentos. Los comandos para controlar la misma clase de instrumento, por ejemplo, multímetros, variarían entre fabricantes e incluso entre modelos. La Fuerza Aérea de los Estados Unidos, [8] y más tarde Hewlett-Packard, reconocieron este problema. En 1989, HP desarrolló su lenguaje TML [9] , que fue el precursor de SCPI.
La IEC desarrolló sus propios estándares en paralelo con la IEEE, con la IEC 60625-2-1993 (IEC 625). En 2004, IEEE e IEC combinaron sus respectivos estándares en un estándar IEEE/IEC de "logotipo dual". IEC 60488-2-2004 , Parte 2: Códigos, formatos, protocolos y comandos comunes , [10] reemplaza a IEEE 488.2-1992 e IEC. 60625-2-1993. [11]
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 envían 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 consultar un instrumento. Por ejemplo, el modo de adquisición de datos de un instrumento podría configurarse mediante el ACQuire:MODe
comando o podría consultarse mediante el ACQuire:MODe?
comando. Algunos comandos pueden configurar y consultar un instrumento a la vez. Por ejemplo, el *CAL?
comando ejecuta una rutina de autocalibración en algunos equipos 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 están anidados 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? ...
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]
Por ejemplo, el comando " SYSTem:COMMunicate:SERial:BAUD 2400
" configuraría una interfaz de comunicaciones serie RS-232 a 2400 bit/s . Alternativamente, esto también podría abreviarse “ 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.
Se pueden emitir varios comandos a un instrumento en una sola cuerda. Están formados por comandos simples separados por un carácter de punto y coma ( ;
). Por ejemplo, el comando "Medir un voltaje de CC y luego medir una corriente de CA" se emitiría como 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, se refieren implícitamente 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 están separados del comando mediante un espacio. [3] Por ejemplo, el comando para configurar el modo de disparo de un instrumento en "normal" puede darse como " TRIGger:MODe NORMal
". Aquí, la palabra " NORMal
" se utiliza como argumento del TRIGger:MODe
comando " ". Cuando se proporcionan varios 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 se pueden especificar en múltiples formatos numéricos de computadora : decimal, hexadecimal, octal, binario. Los últimos tres formatos están definidos por IEEE 488.2, [10] en el que se basa SCPI. [3] Los números decimales ( base 10) no tienen prefijo, los números hexadecimales (base 16) tienen el prefijo o , los números octales (base 8) con o y los números binarios (base 2) con o . Los dígitos hexadecimales pueden utilizar letras mayúsculas (ABCDEF), minúsculas (abcdef) o letras mixtas (aBcDeF). Para octal, se eligió la letra " Q " en lugar de la letra " O " para minimizar la confusión visual con el número " " (cero). [10]#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
En 1990, la especificación IEEE 488.2 incluía el documento Comandos estándar para instrumentación programable (SCPI).