AVEVA PI

Referenz zum Treiber AVEVA PI: PI Web API über HTTPS, Anmeldung über Bearer-Token oder Basic, Adressierung über AF- und PI-Punkte, Lesen und Schreiben.

Als Markdown ansehen

Der Treiber AVEVA PI liest und schreibt ein AVEVA PI System über die PI Web API, die REST-Schnittstelle dieses Systems (JSON über HTTP). Er ist ein Treiber im Client-Betrieb, Ganter Lab verbindet sich mit dem Dienst PI Web API, und der Übertragungsweg ist standardmäßig HTTPS: Der Treiber legt die Anmeldedaten des Geräts jeder Anfrage bei, eine unverschlüsselte Verbindung würde sie also veröffentlichen. Einfaches HTTP gibt es nur als ausdrückliche Wahl je Gerät.

Ein Tag adressiert ein AF-Attribut, einen PI-Punkt oder einen rohen Datenstrom der PI Web API und liest dessen Momentanwert (snapshot).

Verbindungsfelder

Feld Was es ist Format Standard
Host Hostname oder IP-Adresse des Servers mit der PI Web API. Eine Adresse kann vollständig eingefügt werden (https://pi-host/piwebapi): https:// oder http:// davor stellt die Übertragung weiter unten passend ein und entfällt, ein Port geht in das Portfeld und der Pfad in den Ressourcenpfad. Hostname oder IP leer
Port Der TCP-Port des Dienstes. Ein neues Gerät lässt ihn leer, und ein leeres Feld bedeutet den Port, auf dem der gewählte Übertragungsweg antwortet, 443 über HTTPS und 80 im Klartext: Das Feld zeigt diesen Port grau und folgt der Wahl des Übertragungswegs; ein mit 0 gespeichertes Gerät liest sich genauso. 1 bis 65535 oder leer leer
Ressourcenpfad Der Wurzelpfad des Dienstes, der an die Autorität angehängt wird. Leer oder ein bloßes / bedeutet die übliche Wurzel der PI Web API, piwebapi. Jeder andere Pfad ist der Pfad, den der Treiber öffnet, genau wie eingetippt: Ein Dienst, der hinter einem Reverse Proxy unter /pi veröffentlicht ist, wird unter /pi erreicht, und nichts wird daran angehängt. Schreiben Sie den ganzen Pfad, den ein Browser bräuchte, piwebapi eingeschlossen, wo der Dienst dort noch antwortet. Pfadtext leer (= piwebapi)
Über einfaches HTTP senden Stuft dieses eine Gerät von HTTPS auf unverschlüsseltes HTTP herunter. Aus bedeutet HTTPS, den üblichen Übertragungsweg der PI Web API. Der Bereich nennt die Folge: Über einfaches HTTP werden Bearer-Token oder Passwort bei jeder Anfrage unverschlüsselt gesendet. Verwenden Sie es nur für eine PI Web API, die auf keinem anderen Weg antwortet. ein / aus aus
Benutzername Konto für die Anmeldung über HTTP Basic, nur verwendet, wenn kein Bearer-Token gesetzt ist. Leer (und ohne Token) lässt die Anfragen anonym. Freitext leer
Passwort Das Passwort zum Benutzernamen. Im Ruhezustand je Windows-Benutzer geschützt; ein unter einem anderen Windows-Konto eingegebenes Geheimnis erscheint als unlesbar und muss neu eingegeben werden. Freitext leer
Bearer-Token Ein Token, das bei jeder Anfrage als Authorization: Bearer … gesendet wird. Ist es gesetzt, gewinnt es gegen das Paar aus Benutzername und Passwort. Im Ruhezustand ebenso geschützt. Text des Tokens leer

Beim Verbinden prüft der Treiber die Wurzel des Dienstes (HEAD, mit Ausweichen auf GET). Über HTTPS wird das TLS-Zertifikat des Dienstes angenommen, wenn Windows ihm vertraut oder wenn Sie genau dieses Zertifikat unter Anlagenzugriff auf der Seite dieses Treibers freigegeben haben. Das Abfrageintervall ist einstellbar: Der Standard des Geräts (1000 ms) gilt für jedes Tag, das keinen eigenen nennt.

PI Web API vorbereiten

Der Treiber meldet sich mit Benutzername und Passwort über HTTP Basic an oder mit einem Bearer-Token. Die PI Web API kommt mit Kerberos als einziger Authentifizierungsmethode, und der Treiber spricht kein Kerberos. Ein frisch installierter Dienst weist die Station deshalb meist ab, bis auf dem Server der PI Web API einer dieser Wege eingerichtet ist:

Weg Wo er eingestellt wird Danach
Basic-Authentifizierung PI Web API Admin Utility, Seite Authentication Options: Häkchen bei Basic setzen und übernehmen. Oder PI System Explorer, Datenbank Configuration, das Element System Configuration unter OSIsoft > PI Web API > Name der Instanz: Basic im Attribut AuthenticationMethods ergänzen und die Änderung einchecken. Den Dienst der PI Web API neu starten. Benutzername und Passwort auf der Karte Verbindung des Geräts enthalten ein Windows-Konto, das das PI System annimmt; ein Domänenkonto schreibt man DOMÄNE\benutzer
Bearer-Token PI Web API mit dem AVEVA Identity Manager eingerichtet (Bearer-Authentifizierung) Das Token kommt in das Feld Bearer-Token des Geräts

Antwortet der Dienst mit 401, ohne Basic anzubieten, sagt die Seite des Geräts das mit diesen Schritten, anstelle des englischen Fehlers des Treibers; bietet er Basic an und weist das Konto ab, das das Gerät gesendet hat, sagt die Seite, dass Benutzername oder Passwort abgelehnt wurden, und verweist auf die Karte Verbindung. Jeder dieser Hinweise verschwindet von selbst, sobald der Dienst antwortet. Das Protokoll und der Agent lesen dieselben Schritte. Ein Bearer-Token, das der Dienst ablehnt, wird mit den eigenen Worten des Treibers gesagt.

Adressierung der Tags

Das Feld PI-Pfad des Tags nimmt vier Formen an:

Form Sieht aus wie Wie sie aufgelöst wird
Pfad eines AF-Attributs \\AFServer\Database\Element\SubElement\|Attribute Einmal über attributes?path=… nachgeschlagen, um die WebId des Attributs zu erhalten
Pfad eines PI-Punkts \\PIServer\TagName Einmal über points?path=… nachgeschlagen, um die WebId des Punkts zu erhalten
WebId Die undurchsichtige Zeichenkette der WebId selbst Unmittelbar verwendet (erkannt als langes Zeichen ohne \, \| oder /)
Relative URL streams/{webId}/value, streamsets/…, attributes?…, points?… Unverändert unter der Wurzel des Dienstes gesendet

Nachschlagevorgänge für Pfade werden 12 Stunden zwischengespeichert, das zyklische Lesen im eingeschwungenen Zustand wiederholt sie also nicht. Bei den ersten drei Formen holt der Lesevorgang per GET den Momentanwert des Datenstroms (streams/{webId}/value) und entnimmt das JSON-Feld Value; eine relative URL wird wortgetreu gelesen, richten Sie sie also auf einen Endpunkt, der mit einem Wertdokument antwortet. Das Ergebnis wird in den erklärten Datentyp des Tags gewandelt.

Das eigene Urteil des Archivs über den Abtastwert wird mitgelesen. Ein Wert, den das Archiv als nicht gut, als fraglich oder als ersetzt kennzeichnet (eine von Hand eingetragene statt gemessene Zahl), ist kein Messwert der Anlage und wird deshalb auch nicht als solcher veröffentlicht: Das Tag geht auf schlechte Qualität, und der Grund sagt, welcher der drei Fälle es war. Dasselbe geschieht, wenn die Antwort keinen Wert trägt oder mit einem digitalen Zustand statt eines einzelnen Werts antwortet, wobei dann der Name des Zustands Teil des Grundes ist. An ihrer Stelle wird nichts erfunden, und kein Dokument kommt an, als wäre es die Messung.

Ein Lesevorgang, den die PI Web API ablehnt (ein Status außerhalb des Erfolgsbereichs, etwa ein Konto ohne Leserecht am Punkt), geht ebenfalls auf schlechte Qualität, und der Grund nennt den Status und das, was der Dienst dazu gesagt hat (HTTP 403 Forbidden: …). Ein Pfad, den der Dienst nicht kennt, sagt das und nennt den Pfad. Eine leere Adresse, eine Adresse in keiner der vier Formen und eine Antwort, die sich nicht als der erklärte Typ lesen lässt, geben den Grund ebenfalls an. Ein Dienst, der gar nicht antwortet, ist die Verbindung des Geräts, die ausfällt: Das Gerät meldet es und verbindet sich neu, und seine Tags verweisen auf das Gerät.

Beispiele:

  • \\PI-SRV01\FURNACE.TEMP: ein klassischer PI-Punkt.
  • \\AF-SRV\Plant\Line 3\Furnace|Temperature: ein AF-Attribut.
  • streams/F1DPmNQx2kqBk0qbIVMoxAVBJw/value: eine rohe URL eines Datenstroms, nützlich, wenn Sie die WebId schon aus einem anderen Werkzeug haben.

Schreiben

Tags mit einer schreibbaren Zugriffsart schreiben über den Endpunkt für Datenströme der PI Web API: ein POST von {"Timestamp":"*","Value":…} (der Zeitstempel * bedeutet jetzt) an streams/{webId}/value. Der Schreibvorgang braucht eine auflösbare WebId, er funktioniert also für Tags, die über einen AF-Pfad, einen PI-Punktpfad, eine WebId und ebenso über eine relative URL streams/… adressiert sind: Die WebId wird aus dieser URL gelesen, und der Schreibvorgang landet am Wert-Endpunkt dieses Datenstroms, gleich welche Unterressource für das Lesen (etwa recorded) die Adresse dahinter trug. Drei relative Formen werden abgelehnt, weil jede mit einem Dokument statt mit dem Wert eines Datenstroms antwortet und ein Schreibvorgang die falsche Ressource adressieren würde: streamsets/…, attributes?… und points?…. Die Ablehnung nennt die angenommenen Formen. Ob der Schreibvorgang ankommt, hängt außerdem davon ab, dass die PI Web API für Schreibvorgänge eingerichtet ist und das Konto Schreibrecht am Punkt hat. Ein Schreibvorgang, den die PI Web API ablehnt, wird mit dem Status und dem beantwortet, was der Dienst dazu gesagt hat (etwa HTTP 403 Forbidden: …), und wer den Wert geschrieben hat, liest den Grund.

Der Wert, den Sie in das Schreibfeld des Tags tippen, ist der technische Wert; die Umrechnungsstufen des Tags werden rückwärts durchlaufen, bevor der Rohwert auf den Bus geht, wie auf der Seite Connector beschrieben.

Unterstützte Datentypen

Boolean, Int32, Int64, Float, Double und String. Numerische PI-Punkte sind üblicherweise Float oder Double. Ein digitaler Zustand ist kein einzelner Wert, ein Punkt, der mit einem antwortet, liest also schlechte Qualität und nennt den Zustand, gleich welchen Typ das Tag erklärt.

Befehle

Über das Lesen und Schreiben von Punkten hinaus lässt sich ein Endpunkt der PI Web API bitten, etwas zu tun, und welche Anfragen er annimmt, ist die Sache des Dienstes selbst. Erklären Sie jede am Gerät, auf der Karte Befehle seiner Seite: einen Namen, die relative URL, an die sie unter der Wurzel des Dienstes per POST gesendet wird, und wahlweise den Namen des einen Werts, den sie nimmt und der als Rumpf der Anfrage mitreist. Der Befehl Ausführen in der Zeile sendet sie und meldet, was der Dienst geantwortet hat; der Befehl wird außerdem zu einer Methode am Gerät im eigenen OPC UA-Adressraum dieser Station. Eine Anfrage, die der Dienst ablehnt, wird mit dem Status und dem beantwortet, was der Dienst dazu gesagt hat, in denselben Worten wie bei einem abgelehnten Schreibvorgang.

Gerätesuche

Die Schaltfläche Geräte suchen liest einen Dienst. Tragen Sie seine Adresse und das AF-Element, bei dem der Durchlauf beginnt, auf der Karte Suchbereich auf der Seite des Treibers ein, getrennt durch ein #: https://pi-host/piwebapi#\\AF-SRV\Plant\Line 3. Der Suchlauf löst dieses Element auf, durchläuft jedes Element darunter und bietet das Gerät mit einem Punkt je Attribut an, jeder über seinen eigenen Datenstrom adressiert. Der Suchlauf liest den Dienst ohne Anmeldedaten, weil er läuft, bevor es das Gerät gibt, das sie hielte, eine PI Web API, die jede Anfrage anmeldepflichtig macht, antwortet also nichts, und das Gerät wird stattdessen von Hand angelegt: Legen Sie den Dienst über seinen Host an und die Tags über ihre AF- oder PI-Pfade, wie es der Ablauf zum Hinzufügen eines Geräts auf der Seite Connector beschreibt.

Die Seite eines PI-Geräts zeigt kein Tags suchen: Der Durchlauf beginnt an einem AF-Element, das das Gerät nicht hält, deshalb kommen die Punkte eines Geräts aus diesem Suchlauf oder werden von Hand angelegt (siehe Die Tags eines Geräts suchen).

Anlagenzugriff

Eine PI Web API, deren Port kein Zertifikat zugewiesen ist, erzeugt und verwendet ein eigenes selbstsigniertes Zertifikat, für das keine in Windows installierte Wurzel bürgt. Diese Wurzel muss auf diesem Rechner nicht installiert werden. Die erste Verbindung wird abgewiesen, das Gerät zeigt im Baum und auf seiner Seite Wartet auf Freigabe des Zertifikats, deren Schaltfläche Zertifikat prüfen diese Karte auf dem Zertifikat öffnet, und das Zertifikat wartet unter Anlagenzugriff am Ende der Seite des AVEVA PI-Treibers, derselben Karte wie auf der Seite des OPC UA-Treibers, bis Sie entscheiden:

Gruppe Was sie zeigt Was Sie tun können
Wartet auf Freigabe Jedes abgewiesene Zertifikat unter dem Namen, den es behauptet: sein SHA-256-Fingerabdruck, die Adresse, unter der es angetroffen wurde, wann es zuletzt versucht wurde und wie oft, und seine Details (Antragsteller, Aussteller, Domänennamen, Gültigkeitsdaten). Das Zertifikat, das Zertifikat prüfen eines Geräts geöffnet hat, ist als Zur Prüfung ausgewählt markiert. Freigeben nimmt das Zertifikat ab dem nächsten Verbindungsversuch an. Sperren weist es weiter ab, ohne es hier erneut aufzuführen. Alle ausstehenden Zertifikate verwerfen leert die Liste, ohne etwas freizugeben oder zu sperren.
Freigegebene Anlagen Die Zertifikate, die Sie freigegeben oder importiert haben, mit der Angabe, wer wann entschieden hat, und der Adresse, unter der jedes zuletzt angetroffen wurde. Freigabe zurücknehmen schließt die Verbindung und bringt das Zertifikat in die Liste zurück. Zertifikat importieren gibt eine öffentliche Zertifikatsdatei, die Sie bereits haben (.der, .cer, .crt oder .pem), vor der ersten Verbindung frei.
Gesperrte Anlagen Die Zertifikate, die Sie gesperrt haben. Ein gesperrtes Zertifikat wird abgewiesen, auch wenn Windows ihm vertraut. Entsperren bringt das Zertifikat in die Liste zurück, ohne es freizugeben.

Prüfen Sie den Fingerabdruck mit derjenigen Person, die den PI-Server betreut, bevor Sie das Zertifikat freigeben. Eine Freigabe nimmt genau dieses Zertifikat an und kein anderes, und nur innerhalb seiner Gültigkeitsdaten; sie steht für die Wurzel ein, die Windows fehlt, und für den Namen, den das Zertifikat trägt, sodass sich eine PI Web API, die über ihre IP-Adresse angewählt wird, verbindet, obwohl sein Zertifikat einen anderen Namen trägt, und sonst wird am Zertifikat nichts gelockert. Antwortet die Anlage an einer Adresse, deren Zertifikat Sie freigegeben haben, mit einem anderen (ein erneuertes Zertifikat, ein anderes an den Port gebundenes Zertifikat), hört das Lesen auf, das neue wartet hier, und die Station meldet "Zertifikat geändert: <Name>" mit einer Schaltfläche Prüfen. Ein Zertifikat, dem Windows bereits vertraut, wird wie bisher angenommen und erscheint hier nie; nichts wird automatisch freigegeben.

Der eigene Fehlschlag des Treibers nennt den Grund statt eines namenlosen TLS-Fehlers: "Das Zertifikat dieser Anlage (die ersten 16 Zeichen des Fingerabdrucks) wartet unter Anlagenzugriff auf der Seite des AVEVA PI-Treibers auf Ihre Freigabe. Das Lesen beginnt, sobald Sie es freigeben." Ein gesperrtes liest "…ist an dieser Station gesperrt. Prüfen Sie es unter Anlagenzugriff auf der Seite des AVEVA PI-Treibers." Ein Zertifikat außerhalb seiner Gültigkeitsdaten, widerrufen oder mit gebrochener Signatur wird mit diesem Grund abgewiesen und nie aufgeführt, weil keine Freigabe es einwandfrei macht. Eine Gerätesuche auf dem Dienst über die Karte Suchbereich trifft auf dieselben Entscheidungen: Ein unbekanntes Zertifikat beendet die Suche mit diesem Satz und wartet hier.

Die Entscheidungen liegen im Datenordner der Station unter ua\pki\aveva-pi und überstehen einen Neustart. Die Befehle werden nur einer Rolle gezeichnet, die den Connector konfigurieren darf, und sie wirken nur im eigenen Fenster der Station: Ein Browser auf einem anderen Gerät liest die Karte, ohne sie zu ändern, und kein Werkzeug eines Agenten gibt ein Zertifikat frei (connector_browse meldet das wartende Gerät mit awaitingCertificate). Die Liste hält bis zu 100 Zertifikate, die auf Freigabe warten; ist sie voll, wird ein neues weiter abgewiesen, aber nicht aufgeführt, und die Karte sagt das.