# Serveur OPC UA

> Le serveur OPC UA que la station exécute dans son processus : sa ligne dans le dossier Serveurs, sa mise en marche et son arrêt, Redémarrer et Tester la connexion, la carte État avec l'endpoint et six compteurs, les deux contrôles qu'une session traverse, et ce qu'un navigateur distant ne peut pas faire.

La station est un serveur OPC UA. Il tourne dans le processus de l'application et sert les tags, variables Logic, alarmes et commandes d'équipement de sa carte [Nœuds servis](connector-opcua-served-nodes) à `opc.tcp://<network name>:4840/UA/GanterLab` (avec `localhost` comme alternative sur la même machine), où le nom est celui écrit dans **Nom de réseau** sur [Paramétrage](connector-opcua-configuration), ou celui de cet ordinateur tant que ce champ est vide. Un client OPC UA du réseau les y lit et peut écrire dans les lignes marquées en lecture et écriture; une écriture traverse le même entonnoir d'écriture de Logic que toute autre, donc les verrous de source et les refus du runtime s'y appliquent. Le serveur publie ce que lit le Connector et ne lit rien lui-même : l'arrêter, ou un port qu'un autre programme tient quand il démarre, n'arrête que le serveur, et le Connector, Logic et les enregistrements continuent.

Sa ligne est la première sous le dossier Serveurs du Connector, et son volet dit ce qu'il est sous le titre : « Sert les tags, variables Logic, alarmes et commandes d'équipement que vous listez aux clients OPC UA qui les lisent et les écrivent : systèmes SCADA et MES, historiens, autres stations. Il reçoit les connexions et n'en ouvre jamais. » Le volet porte quatre cartes, **État**, **Paramétrage**, **Accès des clients** et **Nœuds servis**; Voir Connector les lit et Configurer Connector les modifie. Tant que **Nœuds servis** n'a pas de lignes, le serveur ne sert rien de la station.

## En marche ou arrêté {#on-or-off}

Le serveur a son propre interrupteur, et il est arrêté sur une nouvelle station : le port 4840 reste fermé tant que personne ne met le serveur en marche. Une fois en marche, il démarre avec l'application à chaque fois, et continue de servir pendant que la fenêtre est cachée dans la zone de notification, jusqu'à ce que quelqu'un l'arrête. Une station mise à jour depuis une version sans l'interrupteur garde ce qu'avaient ses clients : un serveur qui acceptait des sessions reste en marche, et un serveur dont l'authentification des clients était sur Désactivée, qui refusait toute session, est arrêté. Un agent actionne le même interrupteur avec `server_start` et `server_stop` (voir [Outils de l'agent](agent-tools)).

## L'en-tête {#the-header}

L'en-tête du volet porte un point et l'état du serveur, dans les mots qu'affiche sa ligne :

| État | Point | Quand |
| --- | --- | --- |
| « Arrêté » | Gris | L'interrupteur est sur arrêt, quoi qu'il se passe par ailleurs. |
| « À l'écoute sur le port 4840 » | Vert | Le serveur est en marche et son espace d'adressage est vivant. La ligne ajoute les clients connectés : « Aucun client connecté », « 1 client connecté », « 3 clients connectés ». |
| « En démarrage… » | Ambre | Entre un démarrage et ce moment, et pendant que le Connector qu'il publie démarre. |
| « Démarrage impossible » | Rouge | Le serveur est en marche et son dernier démarrage a échoué, typiquement parce qu'un autre programme tient le port. La carte État en dit la raison sous l'endpoint. |
| « Connector arrêté » | Gris | Le serveur est en marche, mais le runtime du Connector ne tourne pas. |

L'état n'appartient qu'au serveur. Le Connector lit les équipements que le serveur tourne ou non, et la barre d'état et la zone de notification parlent pour le Connector; voir [La zone de notification et la barre d'état](#the-tray-and-the-status-bar).

## Les commandes {#the-commands}

La barre de commandes au-dessus du volet porte les verbes du serveur, comme elle porte ceux du serveur Modbus.

| Commande | Ce qu'elle fait | Grisée quand (situation) | Non dessinée quand (rôle) |
| --- | --- | --- | --- |
| Activer | Met le serveur en marche et le démarre, ce qui sert sa liste; le Connector n'est pas redémarré (quand il ne tourne pas du tout, il est démarré d'abord). La barre d'état affiche « Démarrage du serveur OPC UA… » puis « Serveur OPC UA mis en marche. Écoute sur `<endpoint>`. ». Un démarrage qui échoue laisse le serveur en marche et affichant Démarrage impossible, et le journal des actions en dit la raison : « Erreur du serveur OPC UA : `<la raison>` », ou « Le serveur OPC UA n'a pas pu démarrer. Il n'arrive peut-être pas à ouvrir le port N. Consultez les journaux. » quand le serveur l'a seulement journalisé. | Tant que le serveur est en marche (« Le serveur est déjà en marche. »), tant qu'une autre commande du serveur s'exécute (« Une autre commande du serveur est encore en cours. »), et tant que la station refuse la configuration. | Pour un rôle sans **Configurer Connector**. |
| Désactiver | Arrête le serveur proprement : chaque session cliente se termine et plus rien n'est publié jusqu'à Activer. Le Connector continue de lire les équipements, et Logic et les enregistrements continuent. « Arrêt du serveur OPC UA… » puis « Serveur OPC UA arrêté. » | Tant que le serveur est arrêté (« Le serveur est déjà arrêté. »), et dans les deux mêmes situations. | De même. |
| Redémarrer | Arrête le serveur et le redémarre sur le paramétrage en vigueur; le Connector lit tout du long. « Redémarrage du serveur OPC UA… » puis « Serveur OPC UA redémarré. », ou le texte d'échec ci-dessus. | Tant que le serveur est arrêté (« Le serveur est arrêté : Activer le met en marche. »), et dans les deux mêmes situations. | De même. |
| Tester la connexion | Rapporte ce que la station sait de son propre serveur, sans rien changer : « Le serveur OPC UA n'écoute pas : aucun client ne peut s'y connecter. », « Le serveur OPC UA démarre, il n'est pas encore prêt. », ou « Serveur OPC UA joignable sur `<endpoint>` avec N sessions actives. » C'est une affirmation du processus en cours, pas une sonde sur le réseau. | Jamais. | Jamais. |

La station refuse la configuration tant qu'une unité est en cours (« La configuration est verrouillée tant qu'une unité est en cours. ») et tant que le runtime est arrêté : arrêter le serveur de l'installation est un travail de configuration, pas d'exploitation. Un démarrage qui revient sans erreur est quand même vérifié, parce que la pile OPC UA peut échouer à ouvrir son port et seulement le journaliser, donc le journal des actions rapporte l'échec plutôt qu'un succès.

## La carte État {#the-status-card}

La carte montre l'endpoint qu'un client du réseau appelle, `opc.tcp://<network name>:<port>/UA/GanterLab`, toujours un nom stable et jamais `0.0.0.0` ni une adresse DHCP; l'alternative sur la même machine est sous Adresses de connexion, sur [Accès des clients](connector-opcua-client-access). Tant que le serveur est en marche et n'a pas pu démarrer, la raison figure dans une note de prudence sous l'endpoint. Puis six compteurs, redessinés chaque seconde :

| Compteur | Ce qu'il compte |
| --- | --- |
| Temps de fonctionnement | Le temps écoulé depuis le dernier démarrage du serveur, sous la forme `2h 14m 5s`, `14m 5s` ou `5s`; une marque de manque pendant qu'il est arrêté. Le même instant alimente les points Server.StartTime et Server.Uptime de l'espace d'adressage Logic. |
| Sessions ouvertes | Les sessions clientes que le serveur accepte en ce moment, la liste même que Connectés maintenant montre sur [Accès des clients](connector-opcua-client-access). |
| Équipements | Les équipements configurés dans le [Connector](connector), tous pilotes confondus, activés ou non. |
| Pilotes | Combien de pilotes distincts ces équipements emploient. |
| Erreurs | Les lignes d'erreur du flux de journal de l'hôte de communication (serveur et pilotes). Le flux garde les 500 lignes les plus récentes; le compte passe au rouge quand il n'est pas nul. |
| Avertissements | Les lignes d'avertissement du même flux, en ambre quand elles ne sont pas nulles. Pour un rôle qui détient **Voir les événements**, le nombre est un bouton qui ouvre la fenêtre détachée d'Événements sur le bureau propre à la station (« Ouvrir la fenêtre Événements »); dans un navigateur sur un autre appareil, il est grisé avec « Disponible uniquement sur le bureau local de la station. », et pour un rôle sans la permission, c'est un simple nombre. |

## Deux contrôles, tenus à part {#two-checks-kept-apart}

Une session OPC UA traverse deux contrôles que ce volet règle séparément. La **confiance accordée au certificat**, sur [Accès des clients](connector-opcua-client-access), décide si une application peut seulement atteindre le serveur : un certificat inconnu est refusé à sa première tentative et gardé pour votre examen, rien n'est approuvé automatiquement, et l'empreinte, jamais le nom qu'un certificat déclare, est l'identité à vérifier. L'**Authentification des clients**, sur [Paramétrage](connector-opcua-configuration), décide ensuite comment une application de confiance se connecte : de façon anonyme, le réglage par défaut, ou avec l'unique nom d'utilisateur et mot de passe configurés. La même idée pointe dans l'autre sens sur la [page du pilote OPC UA](driver-opc-ua#equipment-access) : la station ne lit rien d'un équipement OPC UA dont vous n'avez pas approuvé le certificat.

## La zone de notification et la barre d'état {#the-tray-and-the-status-bar}

L'état vivant du serveur se lit sur sa ligne et dans son volet. La ligne de santé de la barre d'état, l'icône de la zone de notification, son infobulle et la ligne de son menu parlent plutôt pour le [Connector](connector-health), pour les équipements qu'il lit, parce qu'un serveur arrêté ne coûte aucune lecture et n'est pas ce qu'un opérateur qui surveille la station a besoin d'apprendre. L'indicateur de fonctionnement, l'heure de démarrage, la durée de fonctionnement et le nombre de sessions sont aussi des points de l'espace d'adressage de [Logic](logic-from-other-pages), sous sa racine Server (Running, StartTime, Uptime, SessionCount), si bien qu'un tableau de bord ou une expression peuvent les lire.

Quand la station démarre avec le serveur en marche et que le serveur ne peut pas ouvrir son port, la fenêtre lève la carte « Le serveur n'a pas pu démarrer », avec **Utiliser le port 4841** et **Ouvrir Connector**; voir [Paramétrage](connector-opcua-configuration#when-the-server-cannot-open-its-port-at-start). Chaque résultat d'une commande d'ici se pose dans le journal des actions de la barre d'état, et chaque refus et chaque décision sur un certificat est journalisé : les lignes de journal du serveur lui-même sont sur l'onglet Console des [Événements](events-console), et leurs comptes d'erreurs et d'avertissements sont les deux derniers compteurs de la carte État.

## Ce qu'un navigateur distant ne peut pas faire {#what-a-remote-browser-may-not-do}

Un navigateur sur un autre appareil, avec un rôle qui détient Configurer Connector, voit ce volet exactement comme la fenêtre de la station, et peut mettre le serveur en marche, l'arrêter, le redémarrer et appliquer un paramétrage. Ce qu'il ne peut pas faire, c'est décider des certificats : Ajouter un client, Faire confiance, Bloquer, Révoquer, Débloquer, Écarter tous les certificats en attente, Importer un certificat et le bouton du pare-feu Windows y sont refusés avec « L'accès des clients ne peut être modifié que dans l'application de bureau de la station. », et un bandeau d'information sur la carte le dit : « Ouvrez l'application de bureau pour modifier l'accès des clients ». Le lien du compteur d'avertissements vers la fenêtre Événements détachée est grisé avec « Disponible uniquement sur le bureau local de la station. ».

Où vivent les certificats : le certificat d'application du serveur et les magasins des certificats clients de confiance, en attente et bloqués sont sous `ua\pki` dans la racine de données de la station, les magasins des équipements sous `ua\pki\southbound`. Ils survivent aux redémarrages et ne font pas partie d'une [sauvegarde](settings-backups) de configuration.

## Ce que ce volet ne fait pas {#what-this-panel-does-not-do}

Il ne déconnecte pas une session (révoquer un certificat sur Accès des clients le fait), il ne remet pas à zéro les comptes du journal (le flux est borné et tourne tout seul), il n'arrête pas la lecture du Connector, et il ne redémarre pas l'application. Il ne redémarre jamais le serveur de lui-même après un échec : un démarrage échoué est rapporté et attend votre Redémarrer, ou le port que vous choisissez sur la carte. L'endpoint se change sur [Paramétrage](connector-opcua-configuration), et seulement tant que le serveur n'écoute pas.
