SCPI instruments

Instrumentos de bancada que falam SCPI, como multímetros, fontes de alimentação, cargas eletrônicas e unidades de aquisição de dados, por TCP, por linha serial, ou por USB e GPIB através do VISA: como cada um é alcançado, o cartão Instrumento, consultas e comandos de escrita, a descoberta e dois exemplos completos.

Ver como Markdown

O driver SCPI instruments lê e escreve instrumentos de bancada que falam SCPI, a linguagem de comandos dos equipamentos de teste IEEE 488.2: multímetros, fontes de alimentação, cargas eletrônicas, unidades de aquisição de dados como o Fluke 1586A Super-DAQ, calibradores, da Keysight, Rigol, Tektronix, Siglent, GW Instek, B&K Precision, Fluke e dos outros. Cada tag faz ao instrumento uma consulta, como MEAS:VOLT:DC? ou READ?, e lê a resposta; uma tag que é escrita envia um comando com o valor dentro, como VOLT 5. É a troca que um programa LabVIEW faz pelo VISA, montada num painel em vez de ligada num diagrama de blocos, e os valores chegam onde chegam os de toda outra tag: na Lógica, nos dashboards, nas execuções de uma bancada de teste do Process.

Um instrumento é alcançado de uma de três formas, escolhida quando o dispositivo dele é criado:

Transporte Como o instrumento é alcançado Para
TCP (socket LXI) O socket SCPI do instrumento, no host e na porta dele, 5025 na maioria dos instrumentos LXI. Nada é instalado neste computador. Um instrumento com porta de rede.
VISA (USB, GPIB, rede) Pelo VISA instalado neste computador, pelo nome de recurso VISA do instrumento. O produto não instala VISA: usa o NI-VISA ou o Keysight IO Libraries Suite onde um deles estiver instalado. Um instrumento em USB ou numa interface GPIB, ou um instrumento de rede que o VISA alcança pelo próprio nome.
Numa linha serial Uma linha serial deste driver, compartilhada com os outros instrumentos dela, uma requisição por vez. Um instrumento com porta RS-232 ou RS-485.

Um instrumento numa linha serial fica pendurado na linha, então essa parte da árvore fica Driver → Linha → Dispositivo → Tag, como no Generic serial and TCP. Um instrumento alcançado por TCP ou pelo VISA fica sob o driver e pode ser arquivado em pastas como o dispositivo de qualquer outro driver, Driver → Pasta → Dispositivo → Tag. Um dispositivo fica do lado em que foi criado: TCP e VISA trocam entre si, mas um dispositivo nunca passa de uma linha para a rede nem da rede para uma linha.

A página do driver

A frase abaixo do cabeçalho diz "As linhas seriais levam os instrumentos que compartilham um barramento, e os instrumentos alcançados por TCP ou pelo VISA ficam sob o driver. Acrescente uma linha ou um dispositivo e depois abra-o para informar as consultas dele." e a página traz, uma parte abaixo da outra:

Parte O que ela traz
Linhas seriais As linhas do driver, que crescem com Acrescentar linha, à direita do título: Linha, Parâmetros físicos (porta · baud · formato, sem timeout, porque uma linha deste driver não tem), Dispositivos, Estado, e as ações Abrir, Habilitar, Desabilitar e Excluir. Vazia, diz "Nenhuma linha serial ainda."
Escopo da varredura O endereço que o Descobrir consulta além dos instrumentos que o VISA lista; veja Descoberta. Só aparece para Configurar conector.
Dispositivos Todo dispositivo do driver, os de linha incluídos, com as colunas da tabela de dispositivos de qualquer driver, que cresce com Acrescentar dispositivo, à direita do título, que cria um dispositivo TCP. Vazia, diz "Nenhum dispositivo ainda."

O cabeçalho conta os dispositivos entre parênteses, e a linha do driver na árvore conta os dois níveis quando existe uma linha ("1 linha · 2 dispositivos"). A barra do driver traz Descobrir. O menu de contexto da linha do driver oferece Acrescentar dispositivo, Acrescentar linha, Nova pasta, Atualizar e Descobrir, e depois, após um separador, Remover o driver; no menu Novo… da coluna, a entrada do driver oferece Novo dispositivo, Nova linha serial e Nova pasta, e depois as linhas, as pastas e os dispositivos dele. Depois de acrescentado, o driver fica sob a pasta Drivers da árvore, com ou sem linha ou dispositivo.

Linha serial

Uma linha deste driver é a linha descrita em Linhas seriais, com os campos de uma linha do driver Generic serial and TCP. A página dela diz "Um barramento serial físico: os ajustes de porta que os instrumentos dele compartilham, uma requisição por vez." e o cartão Linha física traz Nome, Porta serial (com Atualizar), Velocidade em baud e Formato serial, com os dez formatos oferecidos, seis de 8 bits e quatro de 7 bits. Ela não tem modo de transmissão, timeout de resposta, intervalo mínimo entre transações nem o cartão Descobrir unidades: cada instrumento diz no próprio cartão Instrumento o que encerra as mensagens dele e quanto espera por uma resposta, e um instrumento se distingue pelo que lhe é perguntado, não por um endereço, então a tabela Dispositivos da linha não tem a coluna Unit ID.

Uma linha criada aqui nasce desabilitada, para que os ajustes da porta sejam digitados antes de a porta abrir; a porta, a velocidade e o formato só mudam com a linha desabilitada. Acrescentar dispositivo na linha, ou no menu de contexto dela, cria um dispositivo deste driver nessa linha. Uma linha pertence ao driver sob o qual foi criada, para sempre: nenhum dispositivo de outro driver entra nela, e uma porta pertence a uma linha, seja qual for o driver da linha.

O driver abre a porta uma vez para todos os instrumentos da linha e envia uma requisição por vez, esperando a resposta antes da próxima. Ele mantém o DTR ligado enquanto a porta está aberta, porque um instrumento que cadencia a saída por DTR e DSR, como o Keysight 34401A ou uma fonte E36xx, não envia nada com o DTR desligado. Uma porta que falha é reaberta depois de uma espera que dobra de 1 segundo até 1 minuto enquanto continua falhando, e cada instrumento dela é preparado de novo, com os comandos de preparação enviados outra vez, como na primeira conexão.

Dispositivo

Conexão

Campo Significado Padrão
Transporte Num dispositivo criado sob o driver: TCP (socket LXI), "A estação se conecta ao socket SCPI do instrumento no host e na porta dele, 5025 na maioria dos instrumentos LXI.", ou VISA (USB, GPIB, rede), "A estação abre o instrumento pelo nome de recurso VISA, por meio do VISA instalado neste computador." Os dois trocam entre si; um dispositivo numa linha mostra a linha no lugar. TCP (socket LXI)
Host ou IP TCP: o nome do host ou o endereço IP do instrumento. vazio
Porta TCP: a porta em que o instrumento atende SCPI, de 1 a 65535. Uma caixa vazia mostra 5025 em cinza e o instrumento é chamado nela. 5025
Recurso VISA VISA, no lugar do host e da porta: "O nome do instrumento como o VISA o lista, como USB00x09570x1A07MY12345678INSTR ou GPIB022INSTR. O Descobrir preenche." É o nome que o NI MAX e o Keysight Connection Expert mostram para o instrumento. vazio
Linha serial · fixa Um dispositivo numa linha: o nome da linha sobre a porta, a velocidade e o formato dela, só leitura. a linha sob a qual ele é acrescentado

Um dispositivo novo é um dispositivo TCP: diz "Host ainda não informado" e não é conectado enquanto não tiver um host. Um dispositivo VISA não chama nenhum host e nunca espera por um. Trocar para VISA guarda o host e a porta para quando o TCP voltar, e trocar para TCP guarda o recurso. Um dispositivo com que o driver não consegue trabalhar não é salvo, e o feed diz por quê:

Você digita O feed diz
Uma porta fora de 1 a 65535 "Digite uma porta de 1 a 65535, ou deixe a caixa vazia para 5025."
VISA sem recurso "Digite o recurso VISA do instrumento, como USB00x09570x1A07MY12345678INSTR, ou use Descobrir."
Um recurso com espaço ou caractere fora do ASCII simples "O recurso VISA tem um espaço ou um caractere fora do ASCII simples. Digite-o como o VISA o lista."

A Base URI que o cabeçalho mostra é o endereço de runtime: scpi://tcp/<host>:<port>, scpi://visa/<resource> ou scpi://serial/<line id>/<port>/<baud>/<format>, seguido do terminador (term), do timeout de resposta (timeout), da confirmação de escrita (check) e dos comandos de preparação (setup, um depois do outro, separados por %0A). A cópia de um dispositivo numa linha fica nessa linha; a cópia de um dispositivo TCP ou VISA vai para o nível do próprio driver.

O cartão Instrumento

Abaixo do cartão Conexão, o cartão Instrumento diz o que o instrumento é e como a estação fala com ele.

Campo Significado Padrão
Identidade (*IDN?) Só leitura: "O que o instrumento respondeu a *IDN? quando a estação se conectou: fabricante, modelo, número de série e firmware." Diz "Ainda sem resposta" até o instrumento responder, e de novo quando o dispositivo deixa de estar conectado. Um instrumento que não responde a *IDN? continua sendo lido, sem identidade.
Terminador LF (avanço de linha), CR LF (retorno de carro, avanço de linha) ou CR (retorno de carro): "Encerra cada comando enviado e cada resposta lida. LF serve para quase todo instrumento; alguns seriais usam CR LF ou CR." LF (avanço de linha)
Timeout de resposta (ms) De 100 a 60000: "Quanto tempo uma consulta espera pela resposta, e uma escrita pela fila de erros do instrumento. Uma medição lenta precisa de mais." 2000
Confirmação de escrita "O SCPI não confirma nenhum comando, então uma escrita é confirmada perguntando ao instrumento depois." O que cada escolha envia está em Escrita: Fila de erros (SYST:ERR?), Nenhuma: confirmada ao enviar, ou a fila de erros depois que o comando terminou, Conclusão, depois fila de erros (*OPC?, SYST:ERR?). Fila de erros (SYST:ERR?)
Comandos de preparação Um comando por linha, no máximo 32 de no máximo 512 caracteres cada: "Enviados toda vez que a estação se conecta, em ordem, um por linha, como *RST ou CONF:VOLT:DC 10. Os erros que causam ficam no diário." vazio

Toda vez que a estação se conecta ao instrumento, e toda vez que uma linha serial reabre a porta, ela envia, em ordem: *CLS quando a confirmação de escrita lê a fila de erros, os comandos de preparação, depois lê a fila de erros para o diário (um erro que um comando de preparação causou fica escrito ali e não para o dispositivo) e pergunta *IDN?, cuja resposta o campo Identidade mostra. Um valor que o cartão não aceita não é salvo, e o feed diz por quê: "O timeout de resposta precisa estar entre 100 e 60000 ms.", "Um comando de preparação tem um caractere fora do ASCII simples, como uma aspa tipográfica, que nenhum instrumento lê." ou "Envie no máximo 32 comandos de preparação, de no máximo 512 caracteres cada." O SCPI é ASCII simples, então um comando copiado de um manual com uma aspa tipográfica ou um espaço não separável é recusado onde é digitado, em vez de ser enviado a um instrumento que não consegue lê-lo.

O VISA neste computador

O produto não leva VISA e não instala nenhum. Um dispositivo VISA abre o instrumento pela biblioteca VISA de 64 bits (visa64.dll) que já está neste computador, a que o NI-VISA, que o LabVIEW instala, e o Keysight IO Libraries Suite colocam ali. Só os dispositivos VISA precisam dela: um instrumento em TCP ou numa linha serial se conecta sem ela. A estação confere sozinha se a biblioteca carrega, sem esperar um dispositivo: na primeira vez que a página do driver, a página de um dispositivo VISA ou o agente pergunta, e de novo a cada 30 segundos enquanto ela falta. Até o Connector iniciar, não se sabe se o VISA está ali, e nada é dito. Enquanto ele falta:

Onde O que diz
A página de um dispositivo VISA Um aviso de cautela, "O VISA não está instalado neste computador", com os passos abaixo. Os dois links abrem as páginas da NI e da Keysight no navegador do computador.
A página do driver O mesmo aviso, enquanto o driver tem ao menos um dispositivo VISA, com a frase "Até a instalação, os dispositivos deste driver pelo VISA ficam desconectados e mantêm a configuração que têm; os que estão em TCP ou numa linha serial não são afetados." Um driver só com dispositivos TCP e seriais não mostra nenhum.
O último erro de um dispositivo VISA Os mesmos passos, em inglês, como as causas do próprio driver são escritas. O dispositivo fica desconectado e mantém a configuração.
A lista Transporte Continua oferecendo VISA, para que um dispositivo possa ser preparado antes de o VISA ser instalado.
Descobrir Consulta só o host digitado no cartão Escopo da varredura, e diz isso com as duas páginas: "O VISA não está instalado neste computador, então a varredura não lista por ele nenhum instrumento USB, GPIB ou de rede e só consulta um host digitado. Para listá-los, instale um VISA de 64 bits como administrador", seguido dos endereços do NI-VISA e do Keysight IO Libraries Suite. A frase fica na linha que fecha a varredura.
O agente driver_capabilities dá os passos em prerequisite do driver Scpi, com installed false e neededBy citando os dispositivos VISA; device_discover diz o mesmo em cut.

Para instalar:

  1. Baixe o NI-VISA na página da NI NI-VISA Download, ou o Keysight IO Libraries Suite na página da Keysight IO Libraries Suite Downloads.
  2. Qualquer um dos dois serve, e um computador com LabVIEW já tem o NI-VISA. A página da NI pede para entrar com uma conta NI antes do download; a da Keysight leva direto ao instalador. Pegue o instalador mais recente para Windows: no Windows de 64 bits os dois instalam o VISA de 64 bits, o único que o Ganter Lab enxerga.
  3. Execute o instalador como administrador, a partir de uma pasta da unidade C: (o da Keysight não instala a partir de outra unidade), e reinicie o computador quando ele pedir.

Um VISA que instalou só a biblioteca de 32 bits (visa32.dll), como um feito para Windows de 32 bits, não é visto: o Ganter Lab lê só a visa64.dll de 64 bits.

Em até 30 segundos depois da instalação, o aviso some e os dispositivos VISA se conectam com a configuração que já têm, sem reiniciar o Ganter Lab. Um instrumento com porta de rede também pode ser alcançado por TCP, sem VISA.

Endereçamento da tag

Uma tag deste driver faz uma consulta ao instrumento. O cartão Origem dela traz:

Campo Significado Padrão
Consulta O que a tag pergunta, como o manual de programação do instrumento escreve: MEAS:VOLT:DC?, READ?, SOUR:VOLT?, OUTP?. ASCII simples, no máximo 512 caracteres. Uma tag Somente escrita não pergunta nada e não precisa de consulta. obrigatória
Valor na resposta Tags que são lidas. "Vazio lê a resposta inteira. Um número lê aquele valor de uma resposta separada por vírgulas, contado a partir de 1, como 3 para o terceiro canal de READ?." A caixa diz "Resposta inteira" enquanto está vazia. De 1 a 1000. vazio
Comando de escrita Tags que são escritas: "O que uma escrita envia, com onde vai o valor, como VOLT ou CURR . Um Boolean é enviado como 1 ou 0. Numa tag Boolean, um comando sem , como *TRG, é enviado quando se escreve true." obrigatório

Um campo que o acesso da tag não usa não é desenhado, e guarda o valor para quando for usado. Os tipos de dados são Boolean, Int32, Int64, Float, Double e String, Float por padrão. Uma tag cujos campos não funcionam não é salva, e a página da tag diz o que falta:

Você digita A página da tag diz
Nenhuma consulta numa tag que é lida "Digite a consulta feita ao instrumento, como MEAS:VOLT:DC?, ou deixe a tag como Somente escrita."
Uma consulta com aspa tipográfica ou outro caractere fora do ASCII simples "A consulta tem um caractere fora do ASCII simples, como uma aspa tipográfica, ou passa de 512 caracteres."
Um valor na resposta acima de 1000 "O valor na resposta é contado de 1 a 1000. Deixe vazio para ler a resposta inteira."
Nenhum comando de escrita numa tag que é escrita "Digite o comando que uma escrita envia, como VOLT , ou deixe a tag como Somente leitura."
Uma chave que não é {value} nem {value:FORMAT}, ou o valor duas vezes "O comando de escrita tem um caractere fora do ASCII simples, uma chave que não é nem , ou o valor duas vezes."
Um comando sem {value} numa tag que não é Boolean "Coloque onde vai o valor no comando de escrita. Só uma tag Boolean envia um comando sem ele."
Um formato que não formata número, ou um formato numa tag Boolean ou String "O formato depois de value: precisa formatar um número, como 0.000 ou F2, e só uma tag numérica aceita um."

A linha só leitura Endereço de origem (barramento) mostra o que o driver recebe: ask=READ? para uma tag que lê a resposta inteira, ask=READ?&field=3 para o terceiro valor dela, ask=VOLT?&write=VOLT {value} para uma tag lida e escrita, e write=*TRG para uma tag Somente escrita.

Leitura

No intervalo de polling da tag, a estação envia a consulta e lê uma resposta, até o terminador, dentro do timeout de resposta. O texto tomado, a resposta inteira ou o valor que a tag indica, é lido como o tipo da tag antes de os estágios da própria tag o converterem, como em todo driver (veja O pipeline de valor):

A resposta traz Lida como
+1.23456789E+00, -0.5, 12 Float ou Double: o número, com ponto como separador decimal, seja qual for o idioma da estação.
9.91E37 O não-número do SCPI, o que um instrumento responde quando não tem leitura: NaN numa tag Float ou Double, pelo qual responde o estágio Leitura inválida dela; recusado numa tag Int32 ou Int64. 9.9E37, a sobrecarga, continua sendo esse número.
+1.20000000E+01 Int32 ou Int64: 12. Uma fração é recusada.
1, ON, 0, OFF Boolean: verdadeiro para 1 e ON, falso para 0 e OFF; true, false, yes e no também são lidos.
"Ready, armed" String: os caracteres sem as aspas, uma aspa dobrada virando simples. Uma vírgula dentro das aspas não separa valores.
Situação O que a leitura faz
Tags de um dispositivo que fazem a mesma consulta Compartilham uma resposta por metade do menor intervalo de polling entre elas, então as tags que leem cada canal de um READ? multicanal custam uma medição. Uma escrita esquece toda resposta guardada.
Nenhuma resposta dentro do timeout de resposta Uma leitura falha. Quando o dispositivo lê a fila de erros, a estação pergunta SYST:ERR? em seguida, então uma consulta digitada errado falha com a entrada do próprio instrumento, como -113,"Undefined header", no motivo. A política da tag para um dispositivo que não respondeu decide o que ela mostra.
Uma resposta com menos valores que o número da tag Uma leitura falha, que diz quantos valores a resposta tem.
Um texto que o tipo da tag não comporta Uma leitura falha, que cita o texto.

Escrita

Uma escrita passa pelo mesmo funil que a de qualquer outro driver: a caixa de escrita recebe o valor de engenharia, e os estágios de conversão são invertidos antes de o valor bruto ser enviado (veja Connector). O comando é o comando de escrita com o valor onde está {value}: um número em cultura invariante, o texto mais curto que lê de volta o mesmo número, ou formatado por {value:FORMAT} com um formato numérico do .NET (CURR {value:0.000} envia 1,5 como CURR 1.500); um Boolean como 1 ou 0, que todo parâmetro Boolean do SCPI aceita; um texto como está, com o comando trazendo as aspas de que precisa (DISP:TEXT "{value}"). Não-número e infinito são recusados antes de qualquer envio. Numa tag Boolean, um comando sem {value}, como *TRG, é enviado quando se escreve true, e escrever false é recusado.

Confirmação de escrita O que é enviado O que a escrita informa
Fila de erros (SYST:ERR?) *CLS, o comando, SYST:ERR? Feita quando a fila responde sem erro (0 ou +0,"No error"). Qualquer outra entrada recusa a escrita com as palavras do próprio instrumento, como -222,"Data out of range". Nenhuma resposta é ausência de resposta: não se sabe se o instrumento aceitou o valor.
Conclusão, depois fila de erros (*OPC?, SYST:ERR?) *CLS, o comando, *OPC?, SYST:ERR? O mesmo, depois que o instrumento terminou o comando: para uma saída que se estabiliza ou um relé que comuta.
Nenhuma: confirmada ao enviar Só o comando Feita assim que enviada, para um instrumento sem fila de erros. Uma consulta sem resposta é então informada sem o erro do instrumento.

As escritas esperam a vez na fila do dispositivo junto com as leituras: numa linha elas compartilham a requisição por vez da linha, por TCP e pelo VISA a conexão própria do dispositivo.

Descoberta

A página do driver traz um cartão Escopo da varredura com uma caixa opcional, "Endereço de um instrumento para uma sondagem TCP, por exemplo 192.168.0.20 ou 192.168.0.20:5025 (vazio = os instrumentos que o VISA lista)". O Descobrir faz então duas perguntas, uma depois da outra:

Pergunta Quando O que oferece
Todo recurso de instrumento que o VISA lista, em USB, GPIB ou na rede, aberto por sua vez e perguntado com *IDN?. A linha de progresso cita cada um: "Perguntando a USB00x09570x1A07MY12345678INSTR qual instrumento é…". Quando o VISA está instalado neste computador. Sem ele, a varredura diz isso, com onde baixar o VISA, e a frase fica na linha que fecha a varredura (O VISA neste computador). Cada instrumento que responde, como um dispositivo VISA com o recurso preenchido.
*IDN? por TCP ao host da caixa, na porta dele ou na 5025: "Perguntando a 192.168.0.20:5025 qual instrumento é…". Só quando a caixa tem um endereço. O instrumento, como um dispositivo TCP nesse host e nessa porta.

Cada instrumento tem 1,5 segundo para responder, e um que não responde não é oferecido. Um candidato recebe o nome do fabricante e do modelo que respondeu (Keysight Technologies 34461A), traz todos os padrões do cartão Instrumento, e nenhuma tag, porque um instrumento não publica a lista das consultas dele: "Nenhuma tag informada. Acrescente o dispositivo para configurar as tags no editor dele." Um candidato VISA cujo recurso um dispositivo do driver já tem é marcado como já configurado e oferece Abrir em vez de Acrescentar; um instrumento achado por TCP nunca é casado, porque um host é só onde um instrumento é alcançado. O VISA lista toda porta serial do computador como recurso (ASRL3::INSTR), com algo ligado ou não, e perguntar escreveria no que estiver nela: a varredura deixa esses de fora, e um instrumento serial vai numa linha serial deste driver. Um recurso serial digitado à mão num dispositivo VISA continua sendo aberto. Algo na caixa que não é um host é recusado abaixo dela, e o Descobrir fica cinza: "Uma varredura SCPI pede ao instrumento escrito aqui que se identifique por TCP: o endereço IP ou o nome dele, com a porta se precisar (por exemplo 192.168.0.20 ou 192.168.0.20:5025). Deixe vazio para perguntar só aos instrumentos que o VISA lista." O resto do comportamento da varredura está em Descoberta.

Exemplo: um multímetro por TCP

Um Keysight 34461A na rede atende SCPI no socket LXI dele, porta 5025. Para ler a tensão DC dele:

  1. Na página do driver, Acrescentar dispositivo; dê o nome DMM, mantenha TCP (socket LXI), digite Host ou IP 192.168.0.20 e mantenha Porta 5025.
  2. No cartão Instrumento, mantenha LF (avanço de linha), um Timeout de resposta (ms) de 2000 e Fila de erros (SYST:ERR?), e digite dois Comandos de preparação, *RST e depois CONF:VOLT:DC 10: o medidor é reiniciado e posto em volts DC na faixa de 10 V toda vez que a estação se conecta.
  3. Uma vez conectado, o campo Identidade mostra o que o medidor respondeu, como Keysight Technologies,34461A,MY53212345,A.02.14-02.40-02.14-00.49-02-01.
  4. Acrescentar tag; dê o nome Voltage, Double, Somente leitura, com a Consulta READ?, o Valor na resposta vazio e a Unidade V. READ? faz uma medição na função configurada e a responde.

A Base URI fica scpi://tcp/192.168.0.20:5025?term=lf&timeout=2000&check=errorqueue&setup=*RST%0ACONF:VOLT:DC 10. Um agente faz o mesmo com duas chamadas de ferramenta:

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

Exemplo: uma fonte de alimentação em RS-232

Uma Keysight E3631A atende SCPI na porta RS-232 dela, a 9600 baud com 8 bits de dados, sem paridade e 2 bits de parada, e pelo RS-232 só aceita comandos depois de posta em modo remoto. Para ajustar a tensão, ligar a saída e ler a corrente:

  1. Acrescentar linha na página do driver; dê o nome PSU line, escolha COM4, ajuste Velocidade em baud para 9600 e Formato serial para 8N2, depois Habilitar a linha.
  2. Acrescentar dispositivo na linha; dê o nome PSU. No cartão Instrumento, ajuste o Timeout de resposta (ms) para 3000, digite SYST:REM como a única linha de Comandos de preparação e ajuste a Confirmação de escrita para Conclusão, depois fila de erros (*OPC?, SYST:ERR?), para que uma escrita só seja feita depois que a saída a acompanhou.
  3. Acrescentar tag Setpoint, Double, Leitura e escrita, Consulta VOLT?, Comando de escrita VOLT {value}.
  4. Acrescentar tag Output, Boolean, Leitura e escrita, Consulta OUTP?, Comando de escrita OUTP {value}: escrever true envia OUTP 1, false OUTP 0, e a fonte responde OUTP? com 1 ou 0.
  5. Acrescentar tag MeasuredCurrent, Double, Somente leitura, Consulta MEAS:CURR?, Unidade A.

O endereço de barramento da tag Setpoint é ask=VOLT?&write=VOLT {value}. Uma fonte com várias saídas, como esta, age na saída que tem selecionada; um segundo comando de preparação como INST:SEL P6V a escolhe. O mesmo com as ferramentas do 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

Ferramentas do agente

O driver_capabilities descreve este driver em scpi: os três transportes, se este computador tem VISA (em prerequisite, com cada passo para instalá-lo), os terminadores, o timeout de resposta, as confirmações de escrita, os comandos de preparação, como se escrevem uma consulta e um comando de escrita, como as respostas são lidas, a descoberta e os dois exemplos acima. O device_upsert driver=Scpi aceita transport (Tcp, o padrão, Visa, ou SerialLine, que serialLineId implica), host e port por TCP, visaResource pelo VISA, serialLineId para uma linha deste driver, terminator (Lf, CrLf ou Cr; \n, \r\n e \r também são lidos), responseTimeoutMs (de 100 a 60000), writeCheck (ErrorQueue, CompletionAndErrorQueue ou None) e setupCommands (um por linha, ou separados por \n; '' os apaga). O tag_upsert aceita a consulta como address, valueField (de 1 a 1000; 0 ou omitido lê a resposta inteira) e writeTemplate ('' o apaga). O serial_line_upsert driver=Scpi cria uma linha deste driver, só com serialPort, baudRate e serialFormat. O device_discover driver=Scpi roda a varredura, com target para a sondagem TCP. Um dispositivo que as ferramentas devolvem traz scpi, com a identidade do instrumento depois que ele respondeu, e uma tag também. As outras ferramentas estão em Ferramentas do agente.

Limites que vale conhecer

  • Os Fluke NetDAQ 2640A, 2645A, 2680A e 2686A falam um protocolo próprio da Fluke, que não é SCPI: este driver não os lê. O Fluke 1586A Super-DAQ e o 2638A Hydra Series III falam SCPI, e ele os lê.
  • Respostas enviadas como bloco binário IEEE 488.2 (um #, um comprimento e bytes brutos), como uma forma de onda ou uma imagem da tela, não são lidas: uma tag lê uma resposta escrita como texto.
  • O produto não instala VISA. Sem o NI-VISA ou o Keysight IO Libraries Suite neste computador, os instrumentos USB e GPIB não são alcançados; os instrumentos TCP e seriais são.
  • A varredura não lista os recursos seriais do VISA (ASRL…::INSTR): um instrumento serial vai numa linha serial deste driver.
  • Todo valor é lido por polling: o driver não espera por pedidos de serviço (SRQ) nem pelo byte de status.
  • Um dispositivo não pode ser movido entre uma linha serial e a rede, nem para outra linha: crie-o onde ele pertence e exclua o antigo.