AVEVA PI

Referência do driver AVEVA PI: PI Web API sobre HTTPS, autenticação por token bearer ou Basic, endereçamento de AF e de PI point, leituras e escritas.

Ver como Markdown

O driver AVEVA PI lê e escreve um AVEVA PI System pelo PI Web API, a interface REST do sistema (JSON sobre HTTP). É um driver em modo cliente (o Ganter Lab conecta ao serviço PI Web API) e o transporte é HTTPS por padrão: o driver põe as credenciais do dispositivo em toda requisição que faz, então uma conexão sem criptografia as publicaria. O HTTP simples existe apenas como escolha explícita por dispositivo.

Uma tag endereça um atributo AF, um PI point ou um stream cru do PI Web API, e lê o valor de snapshot (atual) dele.

Campos de conexão

Campo O que é Formato Padrão
Host O nome de host ou endereço IP do servidor PI Web API. Dá para colar o endereço inteiro (https://pi-host/piwebapi): o https:// ou http:// na frente ajusta o transporte mais abaixo e sai, uma porta vai para o campo da porta e o caminho para o caminho do recurso. Nome de host ou IP vazio
Porta A porta TCP do serviço. Um dispositivo novo a deixa vazia, e um campo vazio significa a porta em que o transporte escolhido responde, 443 por HTTPS e 80 em claro: o campo mostra essa porta em cinza e acompanha a escolha do transporte, que é também como se lê um dispositivo salvo com 0. 1 a 65535, ou vazio vazio
Caminho do recurso O caminho da raiz de serviço anexado à autoridade. Em branco, ou uma / sozinha, significa a raiz padrão do PI Web API, piwebapi. Qualquer outro caminho é o caminho que o driver abre, exatamente como digitado: um serviço publicado atrás de um proxy reverso em /pi é alcançado em /pi, e nada é anexado a ele. Escreva o caminho inteiro de que um navegador precisaria, piwebapi incluído onde o serviço ainda responde ali. texto de caminho em branco (= piwebapi)
Enviar por HTTP simples Rebaixa este dispositivo de HTTPS para HTTP em claro. Desmarcado significa HTTPS, o transporte normal do PI Web API. O painel declara a consequência: em HTTP simples, o token bearer ou a senha é enviado sem criptografia em toda requisição. Use isso só num PI Web API que não responde em nenhum outro transporte. ligado / desligado desligado
Usuário Conta para autenticação HTTP Basic, usada só quando nenhum token bearer está definido. Vazio (e sem token) deixa as requisições anônimas. Texto livre vazio
Senha A senha que acompanha o usuário. Protegida em repouso por usuário do Windows; um segredo digitado sob outra conta do Windows aparece como ilegível e precisa ser digitado de novo. Texto livre vazio
Token bearer Um token enviado como Authorization: Bearer … em toda requisição. Quando definido, ele prevalece sobre o par usuário e senha. Protegido em repouso do mesmo jeito. Texto do token vazio

Ao conectar, o driver verifica a raiz de serviço (HEAD, recorrendo a GET). Em HTTPS, o certificado TLS do serviço é aceito quando o Windows confia nele, ou quando você aprovou exatamente esse certificado em Acesso a equipamentos, na página deste driver. O intervalo de leitura é configurável: o padrão do dispositivo (1000 ms) vale para toda tag que não declare o próprio.

Preparar o PI Web API

O driver entra com usuário e senha pelo HTTP Basic, ou com um token bearer. O PI Web API vem com o Kerberos como único método de autenticação, e o driver não fala Kerberos, então um serviço recém-instalado costuma recusar a estação até que uma destas coisas seja feita no servidor do PI Web API:

Caminho Onde se define Depois
Autenticação Basic PI Web API Admin Utility, página Authentication Options: marque Basic e aplique. Ou PI System Explorer, banco Configuration, o elemento System Configuration em OSIsoft > PI Web API > o nome da instância: acrescente Basic ao atributo AuthenticationMethods e faça o check-in da mudança. Reinicie o serviço do PI Web API. Usuário e Senha no cartão Conexão do dispositivo levam uma conta do Windows que o PI System aceite; uma conta de domínio se escreve DOMINIO\usuario
Token bearer PI Web API configurado com o AVEVA Identity Manager (autenticação Bearer) O token vai no campo Token bearer do dispositivo

Quando o serviço responde 401 sem oferecer o Basic, a página do dispositivo diz isso, com estes passos, no lugar do erro em inglês do driver; quando ele oferece o Basic e recusa a conta que o dispositivo enviou, a página diz que o usuário ou a senha foi recusado e aponta o cartão Conexão. Qualquer um dos avisos some sozinho quando o serviço responde. O registro e o agente leem os mesmos passos. Um token bearer que o serviço recusa é dito nas palavras do próprio driver.

Endereçamento da tag

O campo Caminho PI da tag aceita quatro formas:

Forma Se parece com Como é resolvida
Caminho de atributo AF \\AFServer\Database\Element\SubElement\|Attribute Consultado uma vez por attributes?path=… para obter o WebId do atributo
Caminho de PI point \\PIServer\TagName Consultado uma vez por points?path=… para obter o WebId do ponto
WebId A própria cadeia opaca do WebId Usado diretamente (reconhecido como um símbolo longo sem \, \| nem /)
URL relativa streams/{webId}/value, streamsets/…, attributes?…, points?… Enviada como está, sob a raiz de serviço

As consultas de caminho ficam em cache por 12 horas, então a leitura cíclica em regime não as repete. Nas três primeiras formas, a leitura busca com GET o valor de snapshot do stream (streams/{webId}/value) e extrai o campo Value do JSON; uma URL relativa é lida literalmente, então aponte-a para um endpoint que responda com um documento de valor. O resultado é convertido para o tipo de dado declarado da tag.

O veredito do próprio arquivo sobre a amostra é lido junto. Um valor que o arquivo marca como não bom, como questionável ou como substituído (um número digitado à mão, e não medido) não é uma leitura do equipamento, então não é publicado como tal: a tag vai a qualidade ruim e o motivo diz qual dos três casos era. O mesmo acontece quando a resposta não carrega valor, ou responde com um estado digital em vez de um valor único, caso em que o nome do estado faz parte do motivo. Nada é inventado no lugar deles, e nenhum documento chega como se fosse a medição.

Uma leitura que o PI Web API recusa (um status fora da faixa de sucesso, como uma conta sem acesso de leitura ao ponto) também vai a qualidade ruim, e o motivo nomeia o status e o que o serviço disse junto (HTTP 403 Forbidden: …). Um caminho que o serviço não conhece diz isso, nomeando o caminho. Um endereço vazio, um endereço em nenhuma das quatro formas e uma resposta que não se lê como o tipo declarado também dão o motivo. Um serviço que não responde nada é a conexão do dispositivo falhando: o dispositivo relata isso e reconecta, e as tags dele apontam para ele.

Exemplos:

  • \\PI-SRV01\FURNACE.TEMP, um PI point clássico.
  • \\AF-SRV\Plant\Line 3\Furnace|Temperature, um atributo AF.
  • streams/F1DPmNQx2kqBk0qbIVMoxAVBJw/value, uma URL de stream crua, útil quando você já tem o WebId de outra ferramenta.

Escritas

Tags com modo de acesso gravável escrevem pelo endpoint de stream do PI Web API: um POST de {"Timestamp":"*","Value":…} (o carimbo de tempo * significa agora) para streams/{webId}/value. A escrita precisa de um WebId resolvível, então ela funciona em tags endereçadas por caminho AF, por caminho de PI point, por WebId e também por uma URL relativa streams/…: o WebId é lido dessa URL e a escrita cai no endpoint de valor daquele stream, seja qual for o sub-recurso do lado da leitura (recorded, por exemplo) que o endereço carregava depois dele. Três formas relativas são recusadas, porque cada uma responde com um documento em vez de responder com o valor de um stream, e uma escrita endereçaria o recurso errado: streamsets/…, attributes?… e points?…. A recusa nomeia as formas aceitas. Se a escrita chega ou não também depende de o PI Web API estar configurado para escritas e de a conta ter acesso de escrita ao ponto. Uma escrita que o PI Web API recusa recebe como resposta o status e o que o serviço disse junto (por exemplo HTTP 403 Forbidden: …), e quem escreveu o valor lê o motivo.

O valor que você digita na caixa de escrita da tag é o valor de engenharia; os estágios de conversão da tag são revertidos antes de o valor bruto ir para o barramento, como descrito na página Connector.

Tipos de dado suportados

Boolean, Int32, Int64, Float, Double e String. PI points numéricos são tipicamente Float ou Double. Um estado digital não é um valor único, então um ponto que responde com um lê como qualidade ruim nomeando o estado, seja qual for o tipo que a tag declara.

Comandos

Além de ler e escrever pontos, é possível pedir a um endpoint do PI Web API que faça algo, e quais requisições ele aceita é assunto do próprio serviço. Declare cada uma no dispositivo, no cartão Comandos da página dele: um nome, a URL relativa a que ela é enviada por POST sob a raiz de serviço e, opcionalmente, o nome do único valor que ela recebe, que viaja como corpo da requisição. O verbo Executar da linha a envia e relata o que o serviço respondeu; o comando também vira um método no dispositivo, dentro do espaço de endereços OPC UA desta estação. Uma requisição que o serviço recusa recebe como resposta o status e o que o serviço disse junto, com as mesmas palavras de uma escrita recusada.

Descoberta

O botão Descobrir lê um serviço. Ponha o endereço dele e o elemento AF de onde a caminhada começa no cartão Escopo da varredura da página do driver, separados por um #: https://pi-host/piwebapi#\\AF-SRV\Plant\Line 3. A varredura resolve aquele elemento, percorre todo elemento abaixo dele e oferece o dispositivo com um ponto por atributo, cada um endereçado pelo stream dele. A varredura lê o serviço sem credenciais, porque roda antes de existir o dispositivo que as guardaria, então um PI Web API que autentica toda requisição não responde nada e o dispositivo é adicionado à mão: adicione o serviço por host e adicione tags pelos caminhos AF ou PI delas, como o fluxo de adicionar um dispositivo na página Connector descreve.

A página de um dispositivo PI não mostra Descobrir tags: a caminhada começa num elemento AF, que o dispositivo não guarda, então os pontos de um dispositivo vêm desta varredura ou são adicionados à mão (veja Descobrir as tags de um dispositivo).

Acesso a equipamentos

Um PI Web API cuja porta não tem nenhum certificado atribuído cria e usa um certificado autoassinado próprio, que nenhuma raiz instalada no Windows garante. Essa raiz não precisa ser instalada neste computador. A primeira conexão é recusada, o dispositivo mostra Esperando a aprovação do certificado na árvore e na página dele, cujo botão Revisar o certificado abre este cartão no certificado, e o certificado espera em Acesso a equipamentos, no fim da página do driver AVEVA PI, o mesmo cartão que a página do driver OPC UA traz, até você decidir:

Grupo O que lista O que você pode fazer
Esperando aprovação Cada certificado recusado, sob o nome que ele declara: a impressão digital SHA-256, o endereço em que foi encontrado, quando tentou pela última vez e quantas vezes, e os detalhes (titular, emissor, nomes de domínio, datas de validade). O que o Revisar o certificado de um dispositivo abriu fica marcado como Selecionado para revisão. Aprovar aceita o certificado a partir da próxima tentativa de conexão. Bloquear continua recusando-o sem listá-lo aqui de novo. Descartar todos os certificados pendentes esvazia a lista sem aprovar nem bloquear nada.
Equipamentos aprovados Os certificados que você aprovou ou importou, com quem decidiu e quando, e o endereço em que cada um foi encontrado por último. Retirar a aprovação encerra a conexão e devolve o certificado à lista. Importar certificado aprova um arquivo de certificado público que você já tem (.der, .cer, .crt ou .pem) antes da primeira conexão.
Equipamentos bloqueados Os certificados que você bloqueou. Um certificado bloqueado é recusado mesmo que o Windows confie nele. Desbloquear devolve o certificado à lista, sem aprová-lo.

Confira a impressão digital com quem administra o servidor PI antes de aprovar o certificado. Uma aprovação aceita aquele certificado e nenhum outro, e só dentro das datas de validade dele; ela substitui a raiz que falta no Windows e o nome que o certificado traz, então um PI Web API chamado pelo endereço IP conecta mesmo que o certificado dele traga outro nome, e nada mais do certificado é afrouxado. Quando o equipamento responde num endereço cujo certificado você aprovou com outro (um certificado renovado, outro certificado vinculado à porta), a leitura para, o novo espera aqui e a estação avisa "Certificado mudou: <nome>" com um botão Revisar. Um certificado em que o Windows já confia é aceito como antes e nunca aparece aqui; nada é aprovado automaticamente.

A própria falha do driver diz o motivo em vez de um erro de TLS sem nome: "O certificado deste equipamento (os primeiros 16 caracteres da impressão digital) espera a sua aprovação em Acesso a equipamentos, na página do driver AVEVA PI. A leitura começa assim que você aprová-lo." Um bloqueado diz "…está bloqueado nesta estação. Revise-o em Acesso a equipamentos, na página do driver AVEVA PI." Um certificado fora das datas de validade, revogado ou com a assinatura quebrada é recusado com esse motivo e nunca é listado, porque nenhuma aprovação o torna válido. Uma varredura do serviço pelo cartão Escopo da varredura esbarra nas mesmas decisões: um certificado desconhecido encerra a varredura com essa frase e espera aqui.

As decisões ficam na pasta de dados da estação, em ua\pki\aveva-pi, e sobrevivem a um reinício. Os verbos só são desenhados para um papel que pode configurar o Connector, e só agem na janela da própria estação: um navegador em outro aparelho lê o cartão sem mudá-lo, e nenhuma ferramenta de agente aprova um certificado (connector_browse indica o dispositivo em espera com awaitingCertificate). A lista guarda até 100 certificados esperando aprovação; quando está cheia, um novo continua recusado mas não é listado, e o cartão diz isso.