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. Nombre de host o IP vacío
Puerto El puerto TCP del servicio. Cero significa el valor predeterminado del driver, 443. número de puerto 0 (= 443)
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 tiene que pasar la validación normal de certificados de Windows. El intervalo de sondeo es configurable: el valor predeterminado del dispositivo (1000 ms) vale para todo tag que no declare el suyo.

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 punto de conexión 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.

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 punto de conexión 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 punto de conexión 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.

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.

Los comandos

Más allá de leer y escribir puntos, a un punto de conexión 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.

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.