SCPI instruments

Instrumentos de banco que hablan SCPI, como multímetros, fuentes de alimentación, cargas electrónicas y unidades de adquisición de datos, por TCP, por línea serie, o por USB y GPIB a través de VISA: cómo se alcanza cada uno, la tarjeta Instrumento, consultas y comandos de escritura, el descubrimiento y dos ejemplos completos.

Ver como Markdown

El controlador SCPI instruments lee y escribe instrumentos de banco que hablan SCPI, el lenguaje de comandos de los equipos de prueba IEEE 488.2: multímetros, fuentes de alimentación, cargas electrónicas, unidades de adquisición de datos como el Fluke 1586A Super-DAQ, calibradores, de Keysight, Rigol, Tektronix, Siglent, GW Instek, B&K Precision, Fluke y los demás. Cada tag hace al instrumento una consulta, como MEAS:VOLT:DC? o READ?, y lee su respuesta; un tag que se escribe envía un comando con el valor dentro, como VOLT 5. Es el intercambio que un programa de LabVIEW hace a través de VISA, configurado en un panel en lugar de cableado en un diagrama de bloques, y los valores llegan adonde llegan los de cualquier otro tag: a la Lógica, a los paneles, a las ejecuciones de un banco de pruebas de Process.

Un instrumento se alcanza de una de tres formas, elegida al crear su dispositivo:

Transporte Cómo se alcanza el instrumento Para
TCP (socket LXI) El socket SCPI del instrumento, en su host y su puerto, 5025 en la mayoría de los instrumentos LXI. No se instala nada en este ordenador. Un instrumento con puerto de red.
VISA (USB, GPIB, red) A través del VISA instalado en este ordenador, por el nombre de recurso VISA del instrumento. El producto no instala ningún VISA: usa NI-VISA o Keysight IO Libraries Suite donde uno de ellos esté instalado. Un instrumento en USB o en una interfaz GPIB, o un instrumento de red que VISA alcanza por su propio nombre.
En una línea serie Una línea serie de este controlador, compartida con los demás instrumentos de la línea, una petición cada vez. Un instrumento con puerto RS-232 o RS-485.

Un instrumento en una línea serie cuelga de su línea, así que esa parte del árbol se lee Controlador → Línea → Dispositivo → Tag, como en Generic serial and TCP. Un instrumento alcanzado por TCP o VISA cuelga del controlador y se puede archivar en carpetas como el dispositivo de cualquier otro controlador, Controlador → Carpeta → Dispositivo → Tag. Un dispositivo se queda en el lado en que se creó: TCP y VISA se intercambian, pero un dispositivo nunca pasa de una línea a la red ni de la red a una línea.

La página del controlador

La frase bajo la cabecera dice "Las líneas serie llevan los instrumentos que comparten un bus, y los instrumentos alcanzados por TCP o VISA cuelgan del controlador. Añada una línea o un dispositivo y después ábralo para indicar sus consultas." y la página contiene, una parte bajo la otra:

Parte Qué contiene
Líneas serie Las líneas del controlador, que crecen con Añadir línea, a la derecha de su título: Línea, Tupla física (puerto · baudios · formato, sin tiempo de espera, porque una línea de este controlador no lo tiene), Dispositivos, Estado, y las acciones Abrir, Habilitar, Deshabilitar y Eliminar. Vacía, dice "Todavía no hay líneas serie."
Alcance de la exploración La dirección que Descubrir consulta además de los instrumentos que lista VISA; vea Descubrimiento. Solo se dibuja para Configurar el conector.
Dispositivos Todos los dispositivos del controlador, los de línea incluidos, con las columnas de la tabla de dispositivos de cualquier controlador, que crece con Añadir dispositivo, a la derecha de su título, que crea un dispositivo TCP. Vacía, dice "Todavía no hay dispositivos."

La cabecera cuenta los dispositivos entre paréntesis, y la fila del controlador en el árbol cuenta los dos niveles en cuanto existe una línea ("1 línea · 2 dispositivos"). La barra del controlador lleva Descubrir. El clic derecho sobre la fila del controlador ofrece Añadir dispositivo, Añadir línea, Nueva carpeta, Actualizar y Descubrir, y luego, tras un separador, Quitar el controlador; en el menú Nuevo… de la columna, la entrada del controlador ofrece Nuevo dispositivo, Nueva línea serie y Nueva carpeta, y luego sus líneas, carpetas y dispositivos. Una vez añadido, el controlador queda bajo la carpeta Controladores del árbol, con línea o dispositivo o sin ellos.

Línea serie

Una línea de este controlador es la línea descrita en Líneas serie, con los campos de una línea del controlador Generic serial and TCP. Su página dice "Un bus serie físico: los ajustes de puerto que comparten sus instrumentos, una petición cada vez." y su tarjeta Línea física contiene Nombre, Puerto serie (con Actualizar), Baudios y Formato serie, con los diez formatos ofrecidos, seis de 8 bits y cuatro de 7 bits. No tiene modo de transmisión, tiempo de espera de respuesta, intervalo mínimo entre transacciones ni la tarjeta de descubrimiento de unidades: cada instrumento dice en su propia tarjeta Instrumento qué termina sus mensajes y cuánto espera una respuesta, y un instrumento se distingue por lo que se le pregunta, no por una dirección, así que la tabla Dispositivos de la línea no tiene la columna ID de unidad.

Una línea creada aquí nace deshabilitada, para que los ajustes del puerto se escriban antes de que el puerto se abra; el puerto, los baudios y el formato solo cambian con la línea deshabilitada. Añadir dispositivo en la línea, o en su menú del clic derecho, crea un dispositivo de este controlador en esa línea. Una línea pertenece para siempre al controlador bajo el que se creó: ningún dispositivo de otro controlador entra en ella, y un puerto pertenece a una línea, sea cual sea el controlador de la línea.

El controlador abre el puerto una vez para todos los instrumentos de la línea y envía una petición cada vez, esperando su respuesta antes de la siguiente. Mantiene DTR activo mientras el puerto está abierto, porque un instrumento que marca el ritmo de su salida con DTR y DSR, como el Keysight 34401A o una fuente E36xx, no envía nada con DTR inactivo. Un puerto que falla se reabre tras una pausa que se duplica de 1 segundo hasta 1 minuto mientras sigue fallando, y cada instrumento de la línea se prepara de nuevo, con sus comandos de preparación enviados otra vez, como en su primera conexión.

Dispositivo

Conexión

Campo Significado Por defecto
Transporte Un dispositivo creado bajo el controlador: TCP (socket LXI), "La estación se conecta al socket SCPI del instrumento en su host y su puerto, 5025 en la mayoría de los instrumentos LXI.", o VISA (USB, GPIB, red), "La estación abre el instrumento por su nombre de recurso VISA, a través del VISA instalado en este ordenador." Los dos se intercambian; un dispositivo en una línea muestra su línea en su lugar. TCP (socket LXI)
Host o IP TCP: el nombre de host o la dirección IP del instrumento. vacío
Puerto TCP: el puerto en el que el instrumento responde en SCPI, de 1 a 65535. Una casilla vacía muestra 5025 en gris y el instrumento se llama en ese puerto. 5025
Recurso VISA VISA, en lugar del host y el puerto: "El nombre del instrumento tal como lo lista VISA, como USB00x09570x1A07MY12345678INSTR o GPIB022INSTR. Descubrir lo completa." Es el nombre que NI MAX y Keysight Connection Expert muestran para el instrumento. vacío
Línea serie · fija Un dispositivo en una línea: el nombre de la línea sobre su puerto, sus baudios y su formato, de solo lectura. la línea bajo la que se añade

Un dispositivo nuevo es un dispositivo TCP: dice "Host aún sin indicar" y no se conecta mientras no tenga host. Un dispositivo VISA no llama a ningún host y nunca espera uno. Pasar a VISA guarda el host y el puerto para cuando vuelva el TCP, y pasar a TCP guarda el recurso. Un dispositivo con el que el controlador no puede trabajar no se guarda, y el registro de acciones dice por qué:

Usted escribe El registro de acciones dice
Un puerto fuera de 1 a 65535 "Escriba un puerto de 1 a 65535, o deje la casilla vacía para 5025."
VISA sin recurso "Escriba el recurso VISA del instrumento, como USB00x09570x1A07MY12345678INSTR, o use Descubrir."
Un recurso con un espacio o un carácter fuera del ASCII simple "El recurso VISA contiene un espacio o un carácter fuera del ASCII simple. Escríbalo tal como lo lista VISA."

La Base URI que muestra la cabecera es la dirección de ejecución: scpi://tcp/<host>:<port>, scpi://visa/<resource> o scpi://serial/<line id>/<port>/<baud>/<format>, seguida del terminador (term), del tiempo de espera de respuesta (timeout), de la confirmación de escritura (check) y de los comandos de preparación (setup, uno tras otro, separados por %0A). La copia de un dispositivo en una línea se queda en esa línea; la copia de un dispositivo TCP o VISA va al nivel del propio controlador.

La tarjeta Instrumento

Bajo la tarjeta Conexión, la tarjeta Instrumento dice qué es el instrumento y cómo le habla la estación.

Campo Significado Por defecto
Identidad (*IDN?) De solo lectura: "Lo que el instrumento respondió a *IDN? cuando la estación se conectó: fabricante, modelo, número de serie y firmware." Dice "Todavía sin respuesta" hasta que el instrumento responde, y otra vez en cuanto el dispositivo deja de estar conectado. Un instrumento que no responde a *IDN? se sigue leyendo, sin identidad.
Terminador LF (salto de línea), CR LF (retorno de carro, salto de línea) o CR (retorno de carro): "Cierra cada comando enviado y cada respuesta leída. LF sirve para casi todos los instrumentos; algunos serie usan CR LF o CR." LF (salto de línea)
Tiempo de espera de respuesta (ms) De 100 a 60000: "Cuánto espera una consulta su respuesta, y una escritura la cola de errores del instrumento. Una medición lenta necesita más." 2000
Confirmación de escritura "SCPI no confirma ningún comando, así que una escritura se confirma preguntando al instrumento después." Lo que envía cada opción está en Escritura: Cola de errores (SYST:ERR?), Ninguna: confirmada al enviarse, o la cola de errores una vez terminado el comando, Finalización y luego cola de errores (*OPC?, SYST:ERR?). Cola de errores (SYST:ERR?)
Comandos de preparación Un comando por línea, como máximo 32 de como máximo 512 caracteres cada uno: "Se envían cada vez que la estación se conecta, en orden, uno por línea, como *RST o CONF:VOLT:DC 10. Los errores que causan se anotan en el diario técnico." vacío

Cada vez que la estación se conecta al instrumento, y cada vez que una línea serie reabre su puerto, envía, en orden: *CLS cuando la confirmación de escritura lee la cola de errores, los comandos de preparación, luego lee la cola de errores en el diario técnico (un error que causó un comando de preparación queda anotado allí y no detiene el dispositivo) y pregunta *IDN?, cuya respuesta es lo que muestra el campo Identidad. Un valor que la tarjeta no admite no se guarda, y el registro de acciones dice por qué: "El tiempo de espera de respuesta debe estar entre 100 y 60000 ms.", "Un comando de preparación contiene un carácter fuera del ASCII simple, como una comilla tipográfica, que ningún instrumento lee." o "Envíe como máximo 32 comandos de preparación, de 512 caracteres como máximo cada uno." SCPI es ASCII simple, así que un comando copiado de un manual con una comilla tipográfica o un espacio de no separación se rechaza donde se escribe, en lugar de enviarse a un instrumento que no puede leerlo.

VISA en este ordenador

El producto no trae ningún VISA ni instala ninguno. Un dispositivo VISA abre su instrumento a través de la biblioteca VISA de 64 bits (visa64.dll) que ya está en este ordenador, la que NI-VISA, que instala LabVIEW, y Keysight IO Libraries Suite dejan allí. Solo los dispositivos VISA la necesitan: un instrumento por TCP o por una línea serie se conecta sin ella. La estación comprueba por sí misma si la biblioteca carga, sin esperar a un dispositivo: la primera vez que la página del controlador, la página de un dispositivo VISA o el agente lo preguntan, y otra vez cada 30 segundos mientras falta. Hasta que el Connector ha arrancado, no se sabe si VISA está, y no se dice nada. Mientras falta:

Dónde Qué dice
La página de un dispositivo VISA Un aviso de precaución, "VISA no está instalado en este ordenador", con los pasos de abajo. Sus dos enlaces abren las páginas de NI y de Keysight en el navegador del ordenador.
La página del controlador El mismo aviso, mientras el controlador tiene al menos un dispositivo VISA, con la frase "Hasta la instalación, los dispositivos de este controlador por VISA se quedan sin conexión y conservan su configuración; los que van por TCP o por una línea serie no se ven afectados." Un controlador con solo dispositivos TCP y serie no muestra ninguno.
El último error de un dispositivo VISA Los mismos pasos, en inglés, como se escriben las causas propias del controlador. El dispositivo se queda sin conexión y conserva su configuración.
La lista Transporte Sigue ofreciendo VISA, para que un dispositivo se pueda preparar antes de instalar VISA.
Descubrir Solo consulta el host escrito en la tarjeta Alcance de la exploración, y lo dice con las dos páginas: "VISA no está instalado en este ordenador, así que la exploración no lista por él ningún instrumento USB, GPIB ni de red y solo pregunta a un host escrito. Para listarlos, instale un VISA de 64 bits como administrador", seguido de las direcciones de NI-VISA y de Keysight IO Libraries Suite. La frase se queda en la línea que cierra la exploración.
El agente driver_capabilities da los pasos en prerequisite del controlador Scpi, con installed en false y neededBy nombrando los dispositivos VISA; device_discover dice lo mismo en cut.

Para instalarlo:

  1. Descargue NI-VISA de la página de NI NI-VISA Download, o Keysight IO Libraries Suite de la página de Keysight IO Libraries Suite Downloads.
  2. Cualquiera de los dos sirve, y un ordenador con LabVIEW ya tiene NI-VISA. La página de NI pide iniciar sesión con una cuenta de NI antes de la descarga; la de Keysight enlaza el instalador directamente. Tome el instalador de Windows más reciente: en Windows de 64 bits los dos instalan el VISA de 64 bits, el único que Ganter Lab ve.
  3. Ejecute el instalador como administrador, desde una carpeta de la unidad C: (el de Keysight no instala desde otra unidad), y reinicie el ordenador cuando lo pida.

Un VISA que instaló solo su biblioteca de 32 bits (visa32.dll), como uno hecho para Windows de 32 bits, no se ve: Ganter Lab lee solo la visa64.dll de 64 bits.

Como mucho 30 segundos después de la instalación, el aviso desaparece y los dispositivos VISA se conectan con la configuración que tienen, sin reiniciar Ganter Lab. Un instrumento con puerto de red también se puede alcanzar por TCP, sin VISA.

Direccionamiento del tag

Un tag de este controlador hace una consulta a su instrumento. Su tarjeta Fuente contiene:

Campo Significado Por defecto
Consulta Lo que pregunta el tag, tal como lo escribe el manual de programación del instrumento: MEAS:VOLT:DC?, READ?, SOUR:VOLT?, OUTP?. ASCII simple, como máximo 512 caracteres. Un tag de Solo escritura no pregunta nada y no la necesita. obligatoria
Valor de la respuesta Tags que se leen. "Vacío lee la respuesta completa. Un número lee ese valor de una respuesta separada por comas, contado desde 1, como 3 para el tercer canal de READ?." La casilla muestra "Respuesta completa" mientras está vacía. De 1 a 1000. vacío
Comando de escritura Tags que se escriben: "Lo que envía una escritura, con donde va el valor, como VOLT o CURR . Un Boolean se envía como 1 o 0. En un tag Boolean, un comando sin , como *TRG, se envía al escribir true." obligatorio

Un campo que el acceso del tag no usa no se dibuja, y guarda su valor para cuando vuelva a usarse. Los tipos de datos son Boolean, Int32, Int64, Float, Double y String, Float por defecto. Un tag cuyos campos no pueden funcionar no se guarda, y la página del tag dice qué le falta:

Usted escribe La página del tag dice
Ninguna consulta en un tag que se lee "Escriba la consulta que se le hace al instrumento, como MEAS:VOLT:DC?, o deje el tag en Solo escritura."
Una consulta con una comilla tipográfica u otro carácter fuera del ASCII simple "La consulta contiene un carácter fuera del ASCII simple, como una comilla tipográfica, o tiene más de 512 caracteres."
Un valor de la respuesta mayor que 1000 "El valor de la respuesta se cuenta de 1 a 1000. Déjelo vacío para leer la respuesta completa."
Ningún comando de escritura en un tag que se escribe "Escriba el comando que envía una escritura, como VOLT , o deje el tag en Solo lectura."
Una llave que no es {value} ni {value:FORMAT}, o el valor dos veces "El comando de escritura contiene un carácter fuera del ASCII simple, una llave que no es ni , o el valor dos veces."
Un comando sin {value} en un tag que no es Boolean "Ponga donde va el valor en el comando de escritura. Solo un tag Boolean envía un comando sin él."
Un formato que no da formato a ningún número, o un formato en un tag Boolean o String "El formato tras value: tiene que dar formato a un número, como 0.000 o F2, y solo un tag numérico lo admite."

La línea de solo lectura Dirección de origen (bus) muestra lo que recibe el controlador: ask=READ? para un tag que lee la respuesta completa, ask=READ?&field=3 para su tercer valor, ask=VOLT?&write=VOLT {value} para un tag que se lee y se escribe, y write=*TRG para un tag de Solo escritura.

Lectura

En el intervalo de sondeo del tag, la estación envía la consulta y lee una respuesta, hasta el terminador, dentro del tiempo de espera de respuesta. El texto tomado, la respuesta completa o el valor que indica el tag, se lee como el tipo del tag antes de que las etapas propias del tag lo conviertan, como en cualquier controlador (vea La cadena de valor):

La respuesta contiene Se lee como
+1.23456789E+00, -0.5, 12 Float o Double: el número, con punto como separador decimal sea cual sea el idioma de la estación.
9.91E37 El no-número de SCPI, lo que responde un instrumento cuando no tiene lectura: NaN en un tag Float o Double, del que responde su etapa Lectura no válida; rechazado en un tag Int32 o Int64. 9.9E37, la sobrecarga, sigue siendo ese número.
+1.20000000E+01 Int32 o Int64: 12. Una fracción se rechaza.
1, ON, 0, OFF Boolean: verdadero para 1 y ON, falso para 0 y OFF; también se leen true, false, yes y no.
"Ready, armed" String: los caracteres sin sus comillas, una comilla doble repetida convertida en una sola. Una coma entre las comillas no separa valores.
Situación Qué hace la lectura
Tags de un dispositivo que hacen la misma consulta Comparten una respuesta durante la mitad del intervalo de sondeo más corto entre ellos, así que los tags que leen cada canal de un READ? multicanal cuestan una sola medición. Una escritura olvida toda respuesta guardada.
Ninguna respuesta dentro del tiempo de espera de respuesta Una lectura fallida. Cuando el dispositivo lee su cola de errores, la estación pregunta entonces SYST:ERR?, así que una consulta mal escrita falla con la entrada del propio instrumento, como -113,"Undefined header", en su motivo. La política del tag para un dispositivo que no respondió decide qué muestra.
Una respuesta con menos valores que el número del tag Una lectura fallida, que dice cuántos valores tiene la respuesta.
Un texto que el tipo del tag no puede contener Una lectura fallida, que nombra el texto.

Escritura

Una escritura pasa por el mismo embudo que la de cualquier otro controlador: la casilla de escritura toma el valor de ingeniería, y las etapas de conversión se invierten antes de enviar el valor en bruto (vea Connector). El comando es el comando de escritura con el valor donde está {value}: un número en cultura invariante, el texto más corto que vuelve a leerse como el mismo número, o con el formato de {value:FORMAT} según un formato numérico de .NET (CURR {value:0.000} envía 1,5 como CURR 1.500); un Boolean como 1 o 0, que admite todo parámetro Boolean de SCPI; un texto tal cual, con el comando llevando las comillas que necesita (DISP:TEXT "{value}"). El no-número y el infinito se rechazan antes de enviar nada. En un tag Boolean, un comando sin {value}, como *TRG, se envía al escribir true, y escribir false se rechaza.

Confirmación de escritura Qué se envía Qué informa la escritura
Cola de errores (SYST:ERR?) *CLS, el comando, SYST:ERR? Hecha cuando la cola responde sin error (0 o +0,"No error"). Cualquier otra entrada rechaza la escritura con las palabras del propio instrumento, como -222,"Data out of range". Ninguna respuesta es falta de respuesta: no se sabe si el instrumento tomó el valor.
Finalización y luego cola de errores (*OPC?, SYST:ERR?) *CLS, el comando, *OPC?, SYST:ERR? Lo mismo, una vez que el instrumento terminó el comando: para una salida que se estabiliza o un relé que conmuta.
Ninguna: confirmada al enviarse Solo el comando Hecha en cuanto se envía, para un instrumento sin cola de errores. Una consulta sin respuesta se informa entonces sin el error del instrumento.

Las escrituras esperan su turno en la cola del dispositivo con las lecturas: en una línea comparten la petición única de cada vez de la línea, por TCP y VISA la conexión propia del dispositivo.

Descubrimiento

La página del controlador lleva una tarjeta Alcance de la exploración con una casilla opcional, "Dirección de un instrumento para un sondeo TCP, p. ej. 192.168.0.20 o 192.168.0.20:5025 (vacío = los instrumentos que lista VISA)". Descubrir hace entonces dos preguntas, una tras otra:

Pregunta Cuándo Qué ofrece
Cada recurso de instrumento que lista VISA, en USB, GPIB o en la red, abierto por turno y preguntado con *IDN?. La línea de progreso nombra cada uno: "Preguntando a USB00x09570x1A07MY12345678INSTR qué instrumento es…". Cuando VISA está instalado en este ordenador. Sin él, la exploración lo dice, con dónde descargar VISA, y la frase se queda en la línea que cierra la exploración (VISA en este ordenador). Cada instrumento que responde, como dispositivo VISA con su recurso completado.
*IDN? por TCP al host de la casilla, en su puerto o en 5025: "Preguntando a 192.168.0.20:5025 qué instrumento es…". Solo cuando la casilla contiene una dirección. El instrumento, como dispositivo TCP en ese host y ese puerto.

Cada instrumento tiene 1,5 segundos para responder, y el que no responde no se ofrece. Un candidato recibe el nombre del fabricante y el modelo que respondió (Keysight Technologies 34461A), lleva todos los valores por defecto de la tarjeta Instrumento y ningún tag, porque un instrumento no publica la lista de sus consultas: "No se informó de ningún tag. Añada el dispositivo para configurar sus tags en el editor." Un candidato VISA cuyo recurso ya tiene un dispositivo del controlador se marca como ya configurado y ofrece Abrir en lugar de Añadir; un instrumento encontrado por TCP nunca se empareja, porque un host es solo donde se alcanza un instrumento. VISA lista cada puerto serie del ordenador como un recurso (ASRL3::INSTR), haya algo conectado o no, y preguntar escribiría en lo que hubiera: la exploración los deja fuera, y un instrumento serie va en una línea serie de este controlador. Un recurso serie escrito a mano en un dispositivo VISA se sigue abriendo. Lo que en la casilla no es un host se rechaza bajo ella, y Descubrir se pone gris: "Una exploración SCPI pide al instrumento escrito aquí que se identifique sobre TCP: su dirección IP o su nombre, con el puerto si hace falta (por ejemplo 192.168.0.20 o 192.168.0.20:5025). Déjelo vacío para preguntar solo a los instrumentos que lista VISA." El resto del comportamiento de la exploración está en Descubrimiento.

Ejemplo: un multímetro por TCP

Un Keysight 34461A en la red responde en SCPI en su socket LXI, puerto 5025. Para leer su tensión continua:

  1. En la página del controlador, Añadir dispositivo; llámelo DMM, deje TCP (socket LXI), escriba Host o IP 192.168.0.20 y deje Puerto 5025.
  2. En la tarjeta Instrumento deje LF (salto de línea), un Tiempo de espera de respuesta (ms) de 2000 y Cola de errores (SYST:ERR?), y escriba dos Comandos de preparación, *RST y luego CONF:VOLT:DC 10: el multímetro se reinicia y se pone en voltios de continua en su rango de 10 V cada vez que la estación se conecta.
  3. Una vez conectado, el campo Identidad muestra lo que respondió el multímetro, como Keysight Technologies,34461A,MY53212345,A.02.14-02.40-02.14-00.49-02-01.
  4. Añadir tag; llámelo Voltage, Double, Solo lectura, con la Consulta READ?, el Valor de la respuesta vacío y la Unidad V. READ? toma una medición en la función configurada y la responde.

La Base URI queda scpi://tcp/192.168.0.20:5025?term=lf&timeout=2000&check=errorqueue&setup=*RST%0ACONF:VOLT:DC 10. Un agente hace lo mismo con dos llamadas a herramientas:

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

Ejemplo: una fuente de alimentación por RS-232

Una Keysight E3631A responde en SCPI en su puerto RS-232, a 9600 baudios con 8 bits de datos, sin paridad y 2 bits de parada, y por RS-232 solo acepta comandos una vez puesta en modo remoto. Para ajustar su tensión, conmutar su salida y leer su corriente:

  1. Añadir línea en la página del controlador; llámela PSU line, elija COM4, ponga Baudios en 9600 y Formato serie en 8N2, y después Habilitar la línea.
  2. Añadir dispositivo en la línea; llámelo PSU. En la tarjeta Instrumento ponga el Tiempo de espera de respuesta (ms) en 3000, escriba SYST:REM como única línea de Comandos de preparación y ponga la Confirmación de escritura en Finalización y luego cola de errores (*OPC?, SYST:ERR?), para que una escritura solo quede hecha cuando la salida la haya seguido.
  3. Añadir tag Setpoint, Double, Lectura y escritura, Consulta VOLT?, Comando de escritura VOLT {value}.
  4. Añadir tag Output, Boolean, Lectura y escritura, Consulta OUTP?, Comando de escritura OUTP {value}: escribir true envía OUTP 1, false OUTP 0, y la fuente responde a OUTP? con 1 o 0.
  5. Añadir tag MeasuredCurrent, Double, Solo lectura, Consulta MEAS:CURR?, Unidad A.

La dirección de bus del tag Setpoint es ask=VOLT?&write=VOLT {value}. Una fuente con varias salidas, como esta, actúa sobre la salida que tiene seleccionada; un segundo comando de preparación como INST:SEL P6V la elige. Lo mismo con las herramientas del agente:

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

Herramientas del agente

driver_capabilities describe este controlador bajo scpi: sus tres transportes, si este ordenador tiene VISA (en prerequisite, con cada paso para instalarlo), los terminadores, el tiempo de espera de respuesta, las confirmaciones de escritura, los comandos de preparación, cómo se escriben una consulta y un comando de escritura, cómo se leen las respuestas, el descubrimiento y los dos ejemplos de arriba. device_upsert driver=Scpi toma transport (Tcp, el valor por defecto, Visa, o SerialLine, que serialLineId implica), host y port por TCP, visaResource por VISA, serialLineId para una línea de este controlador, terminator (Lf, CrLf o Cr; también se leen \n, \r\n y \r), responseTimeoutMs (de 100 a 60000), writeCheck (ErrorQueue, CompletionAndErrorQueue o None) y setupCommands (uno por línea, o separados por \n; '' los borra). tag_upsert toma la consulta como address, valueField (de 1 a 1000; 0 u omitido lee la respuesta completa) y writeTemplate ('' lo borra). serial_line_upsert driver=Scpi crea una línea de este controlador, solo con serialPort, baudRate y serialFormat. device_discover driver=Scpi lanza la exploración, con target para el sondeo TCP. Un dispositivo que devuelven las herramientas lleva scpi, con la identidad del instrumento una vez que respondió, y un tag también. Las demás herramientas están en Herramientas del agente.

Límites que conviene conocer

  • Los Fluke NetDAQ 2640A, 2645A, 2680A y 2686A hablan un protocolo propio de Fluke, que no es SCPI: este controlador no los lee. El Fluke 1586A Super-DAQ y el 2638A Hydra Series III hablan SCPI, y él los lee.
  • Las respuestas enviadas como bloque binario IEEE 488.2 (un #, una longitud y bytes en bruto), como una forma de onda o una imagen de la pantalla, no se leen: un tag lee una respuesta escrita como texto.
  • El producto no instala VISA. Sin NI-VISA ni Keysight IO Libraries Suite en este ordenador, los instrumentos USB y GPIB no se alcanzan; los instrumentos TCP y serie sí.
  • La exploración no lista los recursos serie de VISA (ASRL…::INSTR): un instrumento serie va en una línea serie de este controlador.
  • Cada valor se lee por sondeo: el controlador no espera solicitudes de servicio (SRQ) ni el byte de estado.
  • Un dispositivo no se puede mover entre una línea serie y la red, ni a otra línea: créelo donde le corresponde y elimine el antiguo.