# OPC UA-Server

> Der OPC UA-Server, den die Station im eigenen Prozess betreibt: seine Zeile im Ordner Server, das Ein- und Ausschalten, Neu starten und Verbindung testen, die Karte Zustand mit dem Endpunkt und sechs Anzeigen, die zwei Prüfungen, die eine Sitzung durchläuft, und was ein entfernter Browser nicht darf.

Die Station ist ein OPC UA-Server. Er läuft im Prozess der Anwendung und liefert die Tags, Logic-Variablen, Alarme und Gerätebefehle, die auf seiner Karte [Bereitgestellte Knoten](connector-opcua-served-nodes) stehen, unter `opc.tcp://<network name>:4840/UA/GanterLab` (mit `localhost` als Alternative auf demselben Rechner), wobei der Name der ist, der unter **Netzwerkname** in der [Konfiguration](connector-opcua-configuration) steht, oder der eigene Name dieses Rechners, solange das Feld leer ist. Ein OPC UA-Client im Netzwerk liest sie dort und darf in die Zeilen schreiben, die auf Lesen und schreiben stehen; ein Schreiben geht durch denselben Schreibtrichter der Logic wie jedes andere, sodass die Sperren der Quelle und die Ablehnungen der Runtime dafür gelten. Der Server veröffentlicht, was der Connector liest, und liest selbst nichts: ihn auszuschalten, oder ein Port, den beim Start ein anderes Programm hält, stoppt nur den Server, und der Connector, die Logic und die Aufzeichnungen laufen weiter.

Seine Zeile ist die erste unter dem Ordner Server des Connectors, und sein Bereich sagt unter dem Titel, was er ist: "Stellt die Tags, Logic-Variablen, Alarme und Gerätebefehle, die Sie auflisten, den OPC UA-Clients bereit, die sie lesen und schreiben: SCADA- und MES-Systeme, Historians, andere Stationen. Er nimmt Verbindungen an und baut selbst nie eine auf." Der Bereich trägt vier Karten, **Zustand**, **Konfiguration**, **Clientzugriff** und **Bereitgestellte Knoten**; Connector anzeigen liest sie, und Connector konfigurieren ändert sie. Solange **Bereitgestellte Knoten** keine Zeilen hat, stellt der Server nichts von der Station bereit.

## Ein oder aus {#on-or-off}

Der Server hat einen eigenen Schalter, und auf einer neuen Station ist er ausgeschaltet: Port 4840 bleibt zu, bis jemand den Server einschaltet. Einmal eingeschaltet, startet er jedes Mal mit der Anwendung und dient weiter, während das Fenster im Infobereich verborgen ist, bis jemand ihn ausschaltet. Eine Station, die von einer Version ohne den Schalter aktualisiert wird, behält, was ihre Clients hatten: ein Server, der Sitzungen annahm, bleibt eingeschaltet, und einer, dessen Client-Authentifizierung auf Deaktiviert stand und so jede Sitzung abwies, wird ausgeschaltet. Ein Agent legt denselben Schalter mit `server_start` und `server_stop` um (siehe [Werkzeuge des Agenten](agent-tools)).

## Der Kopf {#the-header}

Der Kopf des Bereichs trägt einen Punkt und den Zustand des Servers, in den Worten, die seine Zeile zeigt:

| Zustand | Punkt | Wann |
| --- | --- | --- |
| "Ausgeschaltet" | Grau | Der Schalter steht auf aus, was auch sonst geschieht. |
| "Lauscht auf Port 4840" | Grün | Der Server ist eingeschaltet, und sein Adressraum lebt. Die Zeile fügt die verbundenen Clients an: "Kein Client verbunden", "1 Client verbunden", "3 Clients verbunden". |
| "Startet…" | Gelb | Zwischen einem Start und diesem Moment, und solange der Connector, den er veröffentlicht, hochfährt. |
| "Konnte nicht starten" | Rot | Der Server ist eingeschaltet, und sein letzter Start schlug fehl, meist weil ein anderes Programm den Port hält. Die Karte Zustand nennt den Grund unter dem Endpunkt. |
| "Connector gestoppt" | Grau | Der Server ist eingeschaltet, aber die Runtime des Connectors läuft nicht. |

Der Zustand gehört dem Server allein. Der Connector liest die Geräte, ob der Server läuft oder nicht, und die Statusleiste und der Infobereich sprechen für den Connector; siehe [Der Infobereich und die Statusleiste](#the-tray-and-the-status-bar).

## Die Befehle {#the-commands}

Die Befehlsleiste über dem Bereich trägt die Befehle des Servers, wie sie die des Modbus-Servers trägt.

| Befehl | Was er tut | Ausgegraut, wenn (Situation) | Nicht gezeichnet, wenn (Rolle) |
| --- | --- | --- | --- |
| Aktivieren | Schaltet den Server ein und startet ihn, sodass er seine Liste bereitstellt; der Connector wird nicht neu gestartet (läuft er gar nicht, wird er zuerst gestartet). Die Statusleiste zeigt "Der OPC UA-Server wird gestartet…" und dann "OPC UA-Server eingeschaltet. Er lauscht auf `<Endpunkt>`.". Ein Start, der fehlschlägt, lässt den Server eingeschaltet und auf Konnte nicht starten, und das Aktionsprotokoll nennt den Grund: "Fehler des OPC UA-Servers: `<der Grund>`", oder "Der OPC UA-Server konnte nicht gestartet werden. Möglicherweise kann er Port N nicht belegen. Prüfen Sie die Protokolle.", wenn der Server es nur protokolliert hat. | Solange der Server eingeschaltet ist ("Der Server ist bereits eingeschaltet."), solange ein anderer Befehl des Servers läuft ("Ein anderer Serverbefehl läuft noch.") und solange die Station keine Konfiguration annimmt. | Für eine Rolle ohne **Connector konfigurieren**. |
| Deaktivieren | Schaltet den Server aus und stoppt ihn geordnet: jede Client-Sitzung endet, und bis Aktivieren wird nichts veröffentlicht. Der Connector liest die Geräte weiter, und die Logic und die Aufzeichnungen laufen weiter. "Der OPC UA-Server wird gestoppt…", dann "OPC UA-Server ausgeschaltet." | Solange der Server ausgeschaltet ist ("Der Server ist bereits ausgeschaltet."), und in denselben zwei Lagen. | Ebenso. |
| Neu starten | Stoppt den Server und startet ihn mit der geltenden Konfiguration wieder; der Connector liest die ganze Zeit. "Der OPC UA-Server wird neu gestartet…", dann "Der OPC UA-Server wurde neu gestartet." oder der Fehlertext oben. | Solange der Server ausgeschaltet ist ("Der Server ist ausgeschaltet: Aktivieren schaltet ihn ein."), und in denselben zwei Lagen. | Ebenso. |
| Verbindung testen | Meldet, was die Station über ihren eigenen Server weiß, ohne etwas zu ändern: "Der OPC UA-Server lauscht nicht, daher kann sich kein Client verbinden.", "Der OPC UA-Server startet gerade und ist noch nicht bereit." oder "OPC UA-Server unter `<Endpunkt>` erreichbar, mit N aktiven Sitzungen." Es ist eine Aussage des laufenden Prozesses, keine Probe über das Netz. | Nie. | Nie. |

Die Station nimmt keine Konfiguration an, solange eine Einheit läuft ("Die Projektierung ist gesperrt, solange eine Einheit läuft.") und solange die Runtime gestoppt ist: den Server der Anlage zu stoppen ist Arbeit an der Konfiguration, nicht Bedienung. Ein Start, der ohne Fehler zurückkehrt, wird trotzdem geprüft, denn der OPC UA-Stack kann am Belegen seines Ports scheitern und das nur protokollieren, sodass das Aktionsprotokoll den Fehlschlag meldet statt eines Erfolgs.

## Die Karte Zustand {#the-status-card}

Die Karte zeigt den Endpunkt, den ein Client im Netzwerk anwählt, `opc.tcp://<network name>:<port>/UA/GanterLab`, immer ein fester Name und nie `0.0.0.0` oder eine DHCP-Adresse; die Alternative auf demselben Rechner steht unter Verbindungsadressen auf [Client-Zugriff](connector-opcua-client-access). Solange der Server eingeschaltet ist und nicht starten konnte, steht der Grund in einem Hinweis in Vorsichtsfarbe unter dem Endpunkt. Darunter sechs Anzeigen, jede Sekunde neu gezeichnet:

| Anzeige | Was sie zählt |
| --- | --- |
| Betriebszeit | Die Zeit seit dem letzten Start des Servers, als `2h 14m 5s`, `14m 5s` oder `5s`; eine Lücke, solange er gestoppt ist. Derselbe Zeitpunkt speist die Punkte Server.StartTime und Server.Uptime des Adressraums von Logic. |
| Sitzungen | Die Client-Sitzungen, die der Server gerade angenommen hat, dieselbe Liste, die Jetzt verbunden auf [Client-Zugriff](connector-opcua-client-access) zeigt. |
| Geräte | Die im [Connector](connector) eingerichteten Geräte, über alle Treiber hinweg, aktiviert oder nicht. |
| Treiber | Wie viele verschiedene Treiber diese Geräte nutzen. |
| Fehler | Die Fehlerzeilen im Protokollstrom des Hosts der Kommunikation (Server und Treiber). Der Strom hält die jüngsten 500 Zeilen; die Zahl wird rot, sobald sie nicht null ist. |
| Warnungen | Die Warnzeilen desselben Stroms, bernsteinfarben, sobald sie nicht null sind. Für eine Rolle, die **Ereignisse anzeigen** hält, ist die Zahl eine Schaltfläche, die das abgesetzte Fenster Ereignisse auf dem Desktop der Station öffnet ("Das Fenster Ereignisse öffnen"); in einem Browser auf einem anderen Gerät ist sie mit "Nur auf dem lokalen Desktop der Station verfügbar." ausgegraut, und für eine Rolle ohne die Berechtigung ist sie eine schlichte Zahl. |

## Zwei Prüfungen, getrennt gehalten {#two-checks-kept-apart}

Eine OPC UA-Sitzung durchläuft zwei Prüfungen, die dieser Bereich getrennt einstellt. Das **Vertrauen in das Zertifikat**, auf [Client-Zugriff](connector-opcua-client-access), entscheidet, ob eine Anwendung den Server überhaupt erreichen darf: ein unbekanntes Zertifikat wird beim ersten Versuch abgewiesen und zu Ihrer Prüfung aufbewahrt, nichts wird von selbst vertraut, und der Fingerabdruck, nie der Name, den ein Zertifikat behauptet, ist die Identität, die zu prüfen ist. Die **Client-Authentifizierung**, in der [Konfiguration](connector-opcua-configuration), entscheidet danach, wie sich eine vertraute Anwendung anmeldet: anonym, die Vorgabe, oder mit dem einen hinterlegten Benutzernamen und Passwort. Derselbe Gedanke zeigt in die andere Richtung auf der [Seite des OPC UA-Treibers](driver-opc-ua#equipment-access): die Station liest nichts von einer OPC UA-Anlage, deren Zertifikat Sie nicht freigegeben haben.

## Der Infobereich und die Statusleiste {#the-tray-and-the-status-bar}

Den lebenden Zustand des Servers liest man an seiner Zeile und in seinem Bereich. Die Zustandszeile der Statusleiste, das Symbol im Infobereich, sein Tooltip und die Zeile seines Menüs sprechen stattdessen für den [Connector](connector-health), für die Geräte, die er liest, denn ein ausgeschalteter Server kostet kein Lesen und ist nicht das, was jemand, der die Station überwacht, erfahren muss. Der Laufzustand, die Startzeit, die Betriebszeit und die Anzahl der Sitzungen sind auch Punkte des Adressraums der [Logic](logic-from-other-pages), unter ihrer Wurzel Server (Running, StartTime, Uptime, SessionCount), sodass ein Dashboard oder ein Ausdruck sie lesen kann.

Startet die Station mit eingeschaltetem Server und kann der Server seinen Port nicht öffnen, hebt das Fenster die Karte "Der Server konnte nicht gestartet werden" mit **Port 4841 verwenden** und **Connector öffnen**; siehe [Konfiguration](connector-opcua-configuration#when-the-server-cannot-open-its-port-at-start). Jedes Ergebnis eines Befehls hier landet im Aktionsprotokoll der Statusleiste, und jede Ablehnung und jede Entscheidung über ein Zertifikat wird ins Journal geschrieben: die eigenen Protokollzeilen des Servers stehen auf der Registerkarte Konsole der [Ereignisse](events-console), und ihre Zahlen der Fehler und Warnungen sind die letzten zwei Anzeigen der Karte Zustand.

## Was ein entfernter Browser nicht darf {#what-a-remote-browser-may-not-do}

Ein Browser auf einem anderen Gerät mit einer Rolle, die Connector konfigurieren hält, sieht diesen Bereich genau wie das Fenster der Station, und er darf den Server ein- und ausschalten, neu starten und eine Konfiguration übernehmen. Was er nicht darf, ist über Zertifikate entscheiden: Client hinzufügen, Vertrauen, Sperren, Widerrufen, Entsperren, Alle ausstehenden Zertifikate verwerfen, Zertifikat einspielen und die Schaltfläche der Windows-Firewall werden dort mit "Der Clientzugriff lässt sich nur in der Desktop-Anwendung an der Station ändern." abgelehnt, und ein Hinweis auf der Karte sagt es: "Öffnen Sie die Desktop-Anwendung, um den Clientzugriff zu ändern". Der Verweis der Warnungsanzeige auf das abgelöste Fenster Ereignisse ist mit "Nur auf dem lokalen Desktop der Station verfügbar." ausgegraut.

Wo die Zertifikate wohnen: das eigene Anwendungszertifikat des Servers und die Speicher der vertrauten, wartenden und gesperrten Client-Zertifikate liegen unter `ua\pki` in der Datenwurzel der Station, die Speicher der Anlagen unter `ua\pki\southbound`. Sie überstehen Neustarts und sind nicht Teil einer [Sicherung](settings-backups) der Konfiguration.

## Was dieser Bereich nicht tut {#what-this-panel-does-not-do}

Er trennt keine einzelne Sitzung (das tut der Widerruf eines Zertifikats auf Client-Zugriff), er setzt die Zahlen des Protokolls nicht zurück (der Strom ist begrenzt und rollt von selbst), er stoppt das Lesen des Connectors nicht, und er startet die Anwendung nicht neu. Er startet den Server nach einem Fehlschlag nie von selbst wieder: ein fehlgeschlagener Start wird gemeldet und wartet auf Ihr Neu starten oder auf den Port, den Sie auf der Karte wählen. Der Endpunkt wird in der [Konfiguration](connector-opcua-configuration) geändert, und nur, solange der Server nicht lauscht.
