AVEVA PI

Referencia del driver AVEVA PI: la PI Web API sobre HTTPS, autenticación por token de portador o Basic, direccionamiento por AF y por punto PI, lecturas y escrituras.

Ver como Markdown

El driver AVEVA PI lee y escribe un PI System de AVEVA a través de la PI Web API, la interfaz REST del sistema (JSON sobre HTTP). Es un driver en modo cliente (Ganter Lab se conecta al servicio de la PI Web API) y el transporte es HTTPS de forma predeterminada: el driver pone las credenciales del dispositivo en cada petición que hace, así que una conexión sin cifrar las publicaría. El HTTP sin cifrar existe solo como una elección explícita por dispositivo.

Un tag direcciona un atributo de AF, un punto PI o un flujo crudo de la PI Web API, y lee su valor de instantánea (el actual).

Los campos de conexión

Campo Qué es Formato Valor inicial
Host o IP El nombre de host o la dirección IP del servidor de la PI Web API. Se puede pegar una dirección completa (https://pi-host/piwebapi): https:// o http:// adelante ajusta el transporte de más abajo y se descarta, un puerto pasa al campo del puerto y la ruta a la ruta del recurso. Nombre de host o IP vacío
Puerto El puerto TCP del servicio. Un dispositivo nuevo lo deja vacío, y un campo vacío significa el puerto en el que contesta el transporte elegido, 443 sobre HTTPS y 80 sin cifrar: el campo muestra ese puerto en gris y sigue la elección del transporte, que es también como se lee un dispositivo guardado con 0. de 1 a 65535, o vacío vacío
Ruta del recurso La ruta raíz del servicio que se agrega a la autoridad. En blanco, o una / sola, significa la raíz estándar de la PI Web API, piwebapi. Cualquier otra ruta es la ruta que abre el driver, exactamente como se escribió: un servicio publicado detrás de un proxy inverso en /pi se alcanza en /pi, y no se le agrega nada. Escriba la ruta completa que necesitaría un navegador, con piwebapi incluido donde el servicio siga contestando ahí. texto de ruta en blanco (= piwebapi)
Enviar por HTTP sin cifrar Baja este dispositivo, y solo este, de HTTPS a HTTP en claro. Apagado significa HTTPS, el transporte normal de la PI Web API. El panel declara la consecuencia: en HTTP sin cifrar, el token de portador o la contraseña se envían sin cifrar en cada petición. Úselo solo con una PI Web API que no conteste por ningún otro transporte. encendido / apagado apagado
Nombre de usuario La cuenta para la autenticación HTTP Basic, usada solo cuando no hay ningún token de portador puesto. Vacío (y sin token) deja las peticiones anónimas. Texto libre vacío
Contraseña La contraseña que va con el nombre de usuario. Protegida en reposo por usuario de Windows; un secreto capturado en otra cuenta de Windows se muestra como ilegible y hay que volver a ingresarlo. Texto libre vacía
Token de portador Un token que se envía como Authorization: Bearer … en cada petición. Cuando está puesto, gana sobre el par de nombre de usuario y contraseña. Se protege en reposo de la misma manera. Texto del token vacío

Al conectarse, el driver verifica la raíz del servicio (con HEAD, y cayendo en GET). Sobre HTTPS, el certificado TLS del servicio se acepta cuando Windows confía en él, o cuando usted aprobó ese mismo certificado en Acceso a los equipos, en la página de este driver. El intervalo de sondeo es configurable: el valor predeterminado del dispositivo (1000 ms) vale para todo tag que no declare el suyo.

Preparar la PI Web API

El driver inicia sesión con usuario y contraseña mediante HTTP Basic, o con un token de portador. La PI Web API viene con Kerberos como único método de autenticación, y el driver no habla Kerberos, así que un servicio recién instalado suele rechazar la estación hasta que se hace una de estas cosas en el servidor de la PI Web API:

Vía Dónde se ajusta Después
Autenticación Basic PI Web API Admin Utility, página Authentication Options: marque Basic y aplique. O PI System Explorer, base de datos Configuration, el elemento System Configuration bajo OSIsoft > PI Web API > el nombre de la instancia: agregue Basic al atributo AuthenticationMethods y registre el cambio con check in. Reinicie el servicio de la PI Web API. Nombre de usuario y Contraseña en la tarjeta Conexión del dispositivo llevan una cuenta de Windows que el PI System acepte; una cuenta de dominio se escribe DOMINIO\usuario
Token de portador PI Web API configurada con AVEVA Identity Manager (autenticación Bearer) El token va en la casilla Token de portador del dispositivo

Cuando el servicio responde 401 sin ofrecer Basic, la página del dispositivo lo dice, con estos pasos, en lugar del error en inglés del driver; cuando ofrece Basic y rechaza la cuenta que envió el dispositivo, la página dice que se rechazó el usuario o la contraseña y señala la tarjeta Conexión. Cualquiera de los dos avisos desaparece solo en cuanto el servicio responde. El registro y el agente leen los mismos pasos. Un token de portador que el servicio rechaza se dice con las palabras del propio driver.

El direccionamiento del tag

El campo Ruta PI del tag acepta cuatro formas:

Forma Se ve así Cómo se resuelve
Ruta de atributo de AF \\AFServer\BaseDeDatos\Elemento\SubElemento\|Atributo Se consulta una vez por attributes?path=… para obtener el WebId del atributo
Ruta de punto PI \\ServidorPI\NombreDeTag Se consulta una vez por points?path=… para obtener el WebId del punto
WebId La cadena opaca del WebId misma Se usa directamente (se reconoce como un token largo sin \, \| ni /)
URL relativa streams/{webId}/value, streamsets/…, attributes?…, points?… Se envía tal cual bajo la raíz del servicio

Las consultas de ruta se guardan en caché 12 horas, así que el sondeo en régimen permanente no las repite. Para las tres primeras formas, la lectura hace GET del valor de instantánea del flujo (streams/{webId}/value) y saca el campo Value del JSON; una URL relativa se lee literalmente, así que apúntela a un endpoint que conteste con un documento de valor. El resultado se convierte al tipo de dato declarado del tag.

El veredicto propio del archivo histórico sobre la muestra se lee junto con ella. Un valor que el archivo marca como no bueno, como cuestionable o como sustituido (un número capturado a mano en lugar de medido) no es una lectura del equipo, así que no se publica como tal: el tag pasa a mala calidad y el motivo dice cuál de los tres fue. Lo mismo pasa cuando la respuesta no trae ningún valor, o cuando contesta con un estado digital en lugar de un valor único, y en ese caso el nombre del estado forma parte del motivo. Nada se inventa en su lugar, y ningún documento llega como si fuera la medición.

Una lectura que la PI Web API rechaza (un estado fuera del rango de éxito, como una cuenta sin acceso de lectura al punto) también pasa a mala calidad, y el motivo nombra el estado y lo que el servicio dijo con él (HTTP 403 Forbidden: …). Una ruta que el servicio no conoce lo dice, nombrando la ruta. Una dirección vacía, una dirección en ninguna de las cuatro formas y una respuesta que no se lee como el tipo declarado también dan el motivo. Un servicio que no contesta nada es la conexión del dispositivo fallando: el dispositivo lo reporta y se reconecta, y sus tags apuntan a él.

Ejemplos:

  • \\PI-SRV01\FURNACE.TEMP, un punto PI clásico.
  • \\AF-SRV\Plant\Line 3\Furnace|Temperature, un atributo de AF.
  • streams/F1DPmNQx2kqBk0qbIVMoxAVBJw/value, una URL de flujo cruda, útil cuando usted ya tiene el WebId de otra herramienta.

Las escrituras

Los tags con un modo de acceso escribible escriben por el endpoint de flujo de la PI Web API: un POST de {"Timestamp":"*","Value":…} (la marca de tiempo * significa ahora) a streams/{webId}/value. La escritura necesita un WebId resoluble, así que funciona para los tags direccionados por ruta de AF, por ruta de punto PI, por WebId y también por una URL relativa streams/…: el WebId se saca de esa URL y la escritura aterriza en el endpoint de valor de ese flujo, sea cual sea el subrecurso del lado de lectura (recorded, por ejemplo) que llevara la dirección más allá. Tres formas relativas se rechazan, porque cada una contesta con un documento en lugar de con el valor de un flujo y una escritura direccionaría el recurso equivocado: streamsets/…, attributes?… y points?…. El rechazo nombra las formas aceptadas. Que la escritura aterrice depende además de que la PI Web API esté configurada para escrituras y de que la cuenta tenga acceso de escritura al punto. Una escritura que la PI Web API rechaza se contesta con el estado y lo que el servicio dijo con él (por ejemplo HTTP 403 Forbidden: …), y quien escribió el valor lee el motivo.

El valor que usted escribe en la caja de escritura del tag es el valor de ingeniería; las etapas de conversión del tag se deshacen antes de que el valor bruto salga al bus, como se describe en la página del Connector.

Los tipos de dato admitidos

Boolean, Int32, Int64, Float, Double y String. Los puntos PI numéricos suelen ser Float o Double. Un estado digital no es un valor único, así que un punto que contesta con uno se lee con mala calidad nombrando el estado, sea cual sea el tipo que declare el tag.

Comandos

Más allá de leer y escribir puntos, a un endpoint de la PI Web API se le puede pedir que haga algo, y qué peticiones acepta es asunto del propio servicio. Declare cada una en el dispositivo, en la tarjeta Comandos de su página: un nombre, la URL relativa a la que se le hace POST bajo la raíz del servicio y, opcionalmente, el nombre del único valor que toma, que viaja como el cuerpo de la petición. El verbo Ejecutar de la fila lo envía y reporta qué contestó el servicio; el comando se convierte además en un método del dispositivo dentro del espacio de direcciones OPC UA propio de esta estación. Una petición que el servicio rechaza se contesta con el estado y lo que el servicio dijo con él, con las mismas palabras que las de una escritura rechazada.

El descubrimiento

El botón Descubrir lee un solo servicio. Ponga su dirección y el elemento AF desde el que empieza el recorrido en la tarjeta Alcance del escaneo de la página del driver, separados por un #: https://pi-host/piwebapi#\\AF-SRV\Plant\Line 3. El escaneo resuelve ese elemento, recorre todos los elementos que hay debajo, y ofrece el dispositivo con un punto por atributo, cada uno direccionado por su propio flujo. El escaneo lee el servicio sin credenciales, porque corre antes de que exista el dispositivo que las tendría, así que una PI Web API que autentica cada petición no contesta nada y el dispositivo se agrega a mano en su lugar: agregue el servicio por su host y agregue los tags por sus rutas de AF o de PI, como describe el flujo para agregar un dispositivo de la página del Connector.

La página de un dispositivo PI no muestra Descubrir tags: el recorrido empieza en un elemento AF, que el dispositivo no guarda, así que los puntos de un dispositivo vienen de este escaneo o se agregan a mano (vea Descubrir los tags de un dispositivo).

Acceso a los equipos

Una PI Web API cuyo puerto no tiene ningún certificado asignado crea y usa un certificado autofirmado propio, que ninguna raíz instalada en Windows avala. No hace falta instalar esa raíz en este ordenador. La primera conexión se rechaza, el dispositivo dice Esperando la aprobación del certificado en el árbol y en su página, cuyo botón Revisar el certificado abre esta tarjeta sobre el certificado, y el certificado espera en Acceso a los equipos, al final de la página del driver AVEVA PI, la misma tarjeta que lleva la página del driver OPC UA, hasta que usted decida:

Grupo Qué muestra Qué puede hacer
A la espera de aprobación Cada certificado rechazado, con el nombre que declara: su huella digital SHA-256, la dirección en la que se encontró, cuándo lo intentó por última vez y cuántas veces, y sus detalles (sujeto, emisor, nombres de dominio, fechas de validez). El que abrió Revisar el certificado de un dispositivo aparece marcado como Seleccionado para revisión. Aprobar acepta el certificado desde el siguiente intento de conexión. Bloquear lo sigue rechazando sin volver a listarlo aquí. Descartar todos los certificados pendientes vacía la lista sin aprobar ni bloquear nada.
Equipos aprobados Los certificados que usted aprobó o importó, con quién decidió y cuándo, y la dirección en la que se encontró cada uno por última vez. Retirar la aprobación cierra la conexión y devuelve el certificado a la lista. Importar certificado aprueba un archivo de certificado público que ya tenga (.der, .cer, .crt o .pem) antes de la primera conexión.
Equipos bloqueados Los certificados que usted bloqueó. Un certificado bloqueado se rechaza aunque Windows confíe en él. Desbloquear devuelve el certificado a la lista, sin aprobarlo.

Verifique la huella digital con quien administra el servidor PI antes de aprobar el certificado. Una aprobación acepta ese certificado y ningún otro, y solo dentro de sus fechas de validez; sustituye a la raíz que falta en Windows y al nombre que lleva el certificado, así que una PI Web API a la que se llama por su dirección IP se conecta aunque su certificado lleve otro nombre, y nada más del certificado se relaja. Cuando el equipo responde en una dirección cuyo certificado usted aprobó con otro distinto (un certificado renovado, otro certificado vinculado al puerto), la lectura se detiene, el nuevo espera aquí y la estación avisa "Certificado cambiado: <nombre>" con un botón Revisar. Un certificado en el que Windows ya confía se acepta como antes y nunca aparece aquí; nada se aprueba automáticamente.

El propio fallo del driver dice el motivo en lugar de un error de TLS sin nombre: "El certificado de este equipo (los primeros 16 caracteres de la huella digital) espera su aprobación en Acceso a los equipos, en la página del driver AVEVA PI. La lectura empieza en cuanto lo apruebe." Uno bloqueado dice "…está bloqueado en esta estación. Revíselo en Acceso a los equipos, en la página del driver AVEVA PI." Un certificado fuera de sus fechas de validez, revocado o con la firma rota se rechaza con ese motivo y nunca se lista, porque ninguna aprobación lo vuelve válido. Un escaneo del servicio desde la tarjeta Alcance del escaneo se encuentra con las mismas decisiones: un certificado desconocido termina el escaneo con esa frase y espera aquí.

Las decisiones se guardan en la carpeta de datos de la estación, en ua\pki\aveva-pi, y sobreviven a un reinicio. Los verbos solo se dibujan para un rol que puede configurar el Connector, y solo actúan en la ventana de la propia estación: un navegador en otro dispositivo lee la tarjeta sin cambiarla, y ninguna herramienta de agente aprueba un certificado (connector_browse indica el dispositivo en espera con awaitingCertificate). La lista guarda hasta 100 certificados a la espera de aprobación; cuando está llena, uno nuevo se sigue rechazando pero no se lista, y la tarjeta lo dice.