# Pilotes

> Ce qu'est un pilote, où les pilotes sont listés et comment l'un d'eux est ajouté à la station, le pilote fixe d'un équipement, le tableau de tous les pilotes que ce produit connaît, ce que documente chaque page de pilote, et la note sur les pilotes qu'un paquet ne porte pas.

Un **pilote** est le protocole que la station emploie pour parler à une famille de matériels : des registres Modbus sur TCP, un serveur OPC UA, un automate Siemens. Chaque équipement de la page Connector appartient à exactement un pilote, et le pilote décide quels champs de connexion l'équipement montre, comment ses tags sont adressés, quels types de donnée ils peuvent porter, s'ils peuvent être écrits, si le pilote peut chercher du matériel, et si la station les scrute ou si le matériel pousse vers elle. Ce groupe porte une page par pilote ; cette page-ci est ce qu'ils ont en commun.

## Le registre {#the-registry}

L'ensemble des pilotes est fixé : il est livré avec l'application et ne peut pas être étendu depuis la page. Le dossier **Pilotes** en haut de l'arborescence de la colonne Communications ouvre le catalogue de ceux que cette installation porte, chacun avec sa description, son nombre d'équipements, son état de santé et **Ajouter un pilote**, ou **Ouvrir** et **Retirer le pilote** une fois ajouté ; le catalogue et ses règles sont sur [La liste des pilotes et la page d'un pilote](connector-drivers).

Chaque pilote que porte le paquet est prêt à servir, sans interrupteur pour le mettre en marche ou à l'arrêt : la station ajoute ceux qu'elle utilise. Sous le dossier Pilotes, l'arborescence liste les pilotes ajoutés, avec ou sans quelque chose dessous, si bien que la colonne porte ce que la station est prête à lire. Un pilote s'ajoute avec **Ajouter un pilote** sur sa ligne du catalogue ou dans le menu Nouveau… de la colonne, et se retire avec **Retirer le pilote** sur sa ligne du catalogue, sur sa propre barre ou dans son menu du clic droit. Retirer ne supprime rien : c'est refusé tant que le pilote porte un équipement, une ligne série, un broker ou un dossier, et un pilote qui en porte un est toujours ajouté. Une station neuve n'a aucun pilote ajouté ; une station mise à jour depuis une version antérieure commence avec les pilotes qu'elle utilise déjà ajoutés.

## Le pilote d'un équipement est fixe {#the-driver-of-a-device-is-fixed}

Vous choisissez le pilote au moment de créer l'équipement : dans le menu Nouveau… de la colonne, l'équipement se crée depuis l'entrée du pilote lui-même, et Ajouter un équipement sur la page d'un pilote crée sous ce pilote. À partir de là, la carte Équipement montre le pilote en texte de lecture seule. Pour faire passer un équipement à un autre protocole, créez un nouvel équipement sous l'autre pilote et supprimez l'ancien ; l'adresse change, donc les références doivent être pointées vers les nouveaux tags par la carte Utilisé par de chaque tag.

## Tous les pilotes {#every-driver}

Les pilotes sont regroupés selon la famille d'équipements qu'ils joignent : les mêmes groupes, dans le même ordre, que dans le catalogue **Pilotes** et l'entrée **Ajouter un pilote** du menu Nouveau… de la colonne.

### Automates {#plcs}

| Pilote | Parle à |
| --- | --- |
| [Beckhoff ADS](driver-beckhoff-ads) | Des automates Beckhoff TwinCAT sur ADS/AMS. |
| [Mitsubishi MC](driver-mitsubishi) | Des automates Mitsubishi par le pilote MELSEC MC. |
| [Omron](driver-omron) | Automates Omron : les CJ, CS et CP par adresse mémoire sur FINS (UDP, TCP ou Host Link sur une ligne série), et les NJ, NX et NY par nom de variable sur EtherNet/IP. |
| [Rockwell EtherNet/IP](driver-rockwell) | Des automates Allen-Bradley / Rockwell sur EtherNet/IP (CIP). |
| [Siemens S7](driver-siemens-s7) | Des automates Siemens S7 par le pilote S7comm. |

### Protocoles industriels {#industrial-protocols}

| Pilote | Parle à |
| --- | --- |
| [BACnet](driver-bacnet) | Des équipements de gestion technique du bâtiment en BACnet/IP. |
| [Generic serial and TCP](driver-generic-serial-tcp) | Des équipements à protocole propre, fait de texte ou d'octets, comme les indicateurs de pesage et les lecteurs de codes-barres, sur une ligne série, en TCP ou en UDP. |
| [Modbus RTU](driver-modbus-rtu) | Des registres Modbus sur une ligne série (RS-485/232), en mode de transmission RTU ou ASCII. |
| [Modbus TCP](driver-modbus-tcp) | Des registres Modbus sur TCP/IP, en trame MBAP ou en trames RTU pour un convertisseur série-Ethernet. Port 502 par défaut. |
| [MQTT](driver-mqtt) | Des équipements qui publient par un broker MQTT externe, en MQTT simple ou en Sparkplug B. |
| [OCPP](driver-ocpp) | Des bornes de recharge de véhicules en OCPP (les bornes se connectent à cette station). |
| [OPC DA](driver-opc-da) | Serveurs OPC Data Access classiques via COM/DCOM, par un processus auxiliaire 32 bits qui leur est propre. |
| [OPC UA](driver-opc-ua) | Un client OPC Unified Architecture sur opc.tcp. |
| [SNMP](driver-snmp) | Équipements réseau qui répondent en SNMP v1, v2c ou v3, comme les onduleurs, les PDU, les commutateurs et les capteurs de salle technique ; avec Redfish pour les serveurs, il couvre la salle technique. |

### Instruments et acquisition {#instruments-and-acquisition}

| Pilote | Parle à |
| --- | --- |
| [Fluke NetDAQ](driver-fluke-netdaq) | Centrales d'acquisition Fluke NetDAQ (2640A, 2645A) et 2680 Series (2680A, 2686A), configurées à partir des tags et lues par la bibliothèque de Fluke dans un processus auxiliaire 32 bits. |
| [NI-DAQmx](driver-ni-daqmx) | Matériel d'acquisition de données de National Instruments (châssis cDAQ et leurs modules, équipements USB et PCI Express) par le NI-DAQmx installé sur cet ordinateur, un échantillon par scrutation. |
| [SCPI instruments](driver-scpi) | Instruments de banc qui parlent SCPI, comme les multimètres, les alimentations et les charges électroniques, sur TCP, sur ligne série, ou en USB et GPIB par VISA. |

### Sans fil {#wireless}

| Pilote | Parle à |
| --- | --- |
| [LoRaWAN](driver-lorawan) | Capteurs LoRaWAN et concentrateurs radio par le serveur de réseau Basics Station intégré. |
| [Matter](driver-matter) | Des équipements domotiques Matter (mise en service par Bluetooth). |

### Web et API {#web-and-apis}

| Pilote | Parle à |
| --- | --- |
| [AVEVA PI](driver-aveva-pi) | Des points d'un AVEVA PI System par la PI Web API, en HTTPS par défaut. |
| [HTTP](driver-http) | Endpoints HTTP et HTTPS génériques scrutés comme des tags, avec un identifiant facultatif. |
| [Redfish](driver-redfish) | L'API REST Redfish du matériel de serveur et de centre de données. |

### Fichiers et bases de données {#files-and-databases}

| Pilote | Parle à |
| --- | --- |
| [Database](driver-database) | Les tables de la base de données d'un système de l'usine (SQL Server, PostgreSQL, MySQL et MariaDB, SQLite, ou toute base de données par son pilote ODBC), chaque tag lisant une cellule par sa table, sa colonne et sa ligne ou exécutant une requête propre ; la cellule ou une commande propre au tag écrite là où un tag le demande. |
| [File](driver-file) | Les fichiers qu'un autre programme écrit dans un dossier local ou réseau (CSV et texte en colonnes, texte libre, JSON, XML), lus un fichier à la fois ou depuis un dossier d'arrivée ; des lignes ou des fichiers entiers écrits pour ce programme là où l'équipement le permet. |

### Tests {#test}

| Pilote | Parle à |
| --- | --- |
| [Simulated](driver-simulated) | Des signaux synthétiques internes à l'application, pour essayer sans matériel. |

Le [serveur Modbus](connector-modbus-server) n'est pas dans ce tableau : ce n'est pas un pilote, mais la station elle-même qui sert ses tags et ses variables Logic aux automates, aux IHM et aux systèmes de gestion technique du bâtiment en Modbus TCP, depuis sa propre ligne sous le dossier Serveurs.

## Ce que les pilotes ont en commun, et là où ils diffèrent {#what-the-drivers-have-in-common-and-where-they-differ}

Le Connector dessine un seul éditeur pour tous les pilotes et laisse le pilote décider des parties qui apparaissent. Ce tableau dit à quoi s'attendre avant d'ouvrir la page d'un pilote :

| Pilote | Champs de connexion sur la page de l'équipement | Adressage des tags | Période de scrutation | Écritures de tag | Découverte |
| --- | --- | --- | --- | --- | --- |
| Simulated | aucun | le nom du tag, plus la forme du signal | oui | oui | oui (son catalogue) |
| Modbus TCP | Hôte, Port, ID d'unité, Format de trame (MBAP ou RTU), Intervalle minimal entre transactions | typé : classe et numéro de registre | oui | oui | oui (balayage d'un hôte ou d'un CIDR) |
| Modbus RTU | Ligne série (fixe ; la ligne fixe le mode de transmission, RTU ou ASCII), ID d'unité | typé : classe et numéro de registre | oui | oui | oui (sondage d'ID d'unité sur une ligne) |
| OPC UA | Hôte, Port, Chemin de ressource, Nom d'utilisateur, Mot de passe | texte libre : ID de nœud | oui | oui | oui (adresse du serveur) |
| OPC DA | Hôte, Serveur / Clé | texte libre : ID d'élément | oui | oui | oui (les serveurs d'un ordinateur) |
| Siemens S7 | Hôte, Châssis / Emplacement | typé : zone, DB, octet, bit | oui | oui | non |
| Rockwell EtherNet/IP | Hôte, Emplacement | texte libre : Tag d'automate, plus un décalage | oui | oui | oui (diffusion) |
| Beckhoff ADS | Hôte, Port, IP locale (AMS) | texte libre : Symbole | oui | oui | non |
| Mitsubishi MC | Hôte, Port | texte libre : Adresse d'équipement | 1 s fixe | oui | non |
| BACnet | Hôte, Port, Numéro d'instance | typé : type d'objet et instance | 1 s fixe | oui | oui (Who-Is) |
| OCPP | Identifiant | typé : numéro de connecteur ; le nom du tag se termine par Meter, Status ou Transaction | poussée par la borne | non (lecture seule) | oui (bornes connectées) |
| Redfish | Hôte, Port, Nom d'utilisateur, Mot de passe | texte libre : Chemin de ressource, plus un pointeur JSON | oui | oui | oui (adresse du service) |
| Matter | ID de nœud (lecture seule) | typé : sortie, cluster et attribut ; les tags viennent de l'équipement | oui | oui (les valeurs que le pilote sait changer) | oui (nœuds mis en service, avec les valeurs que chacun publie) |
| LoRaWAN | Identifiant (DevEUI), Serveur / Clé (clé d'application) | typé : voie ou décalage, type LPP | poussée par le capteur | non (lecture seule) | non |
| AVEVA PI | Hôte, Port, Chemin de ressource, Transport réseau, Nom d'utilisateur, Mot de passe, Jeton bearer | texte libre : Chemin PI | oui | oui | oui (élément AF après l'adresse du service) |
| HTTP | Hôte, Port, Chemin de ressource | texte libre : Chemin | oui | oui | non |
| MQTT | Broker (fixe ; le broker porte l'hôte, le port, le transport et l'identification), Protocole et, en Sparkplug B, les ID de groupe, de nœud de périphérie et d'équipement | texte libre : Topic MQTT, plus un chemin de la valeur dans une charge utile JSON, ou Métrique Sparkplug B | livrée par le broker | oui (sur un topic de commande, ou par une commande Sparkplug B) | oui (écoute sur un broker) |
| Generic serial and TCP | Transport réseau (Client TCP ou Écoute UDP), Hôte, Port, ou la Ligne série (fixe) pour un équipement sur une ligne ; puis les cartes Messages reçus et Somme de contrôle | typé : mode de lecture, requête, filtre des messages et place de la valeur dans le message | oui ; un tag en écoute garde ce que le matériel envoie | oui (un message d'écriture ; pas en UDP) | non |
| Omron | Hôte, Protocole (FINS ou Tags NJ/NX par nom) ; en FINS, le Port et la carte FINS (transport, réseau, nœuds, unité, délai de réponse) ; sur une ligne série, la Ligne série (fixe), l'ID d'unité (le numéro d'unité Host Link) et le délai de réponse | texte libre : Adresse mémoire (FINS) ou Nom de variable (NJ/NX) | oui | oui | oui (un sondage FINS d'un automate, et une diffusion pour les automates NJ/NX) |
| SCPI instruments | Transport réseau (TCP (socket LXI) ou VISA), Hôte et Port ou la Ressource VISA, ou la Ligne série (fixe) pour un équipement sur une ligne ; puis la carte Instrument de mesure (terminateur, délai de réponse, confirmation d'écriture, commandes de préparation) | texte libre : Requête, plus la valeur d'une réponse séparée par des virgules, et une commande d'écriture | oui | oui (une commande d'écriture, confirmée par la file d'erreurs de l'instrument) | oui (les instruments que VISA liste, et un sondage TCP d'un hôte) |
| NI-DAQmx | aucun : à sa place la carte Équipement NI-DAQmx (Nom de l'équipement, et le Produit que NI-DAQmx lit) | typé : Voie physique et Mesure, avec la plage, le câblage, le thermocouple ou les réglages de compteur de la mesure | oui | oui (lignes de sortie numérique et sorties de tension) | oui (chaque équipement que NI MAX connaît, avec ses voies) |
| Fluke NetDAQ | Hôte ; puis la carte Instrument de mesure (Voie de base, Vitesse de balayage) | typé : Type de point (une voie analogique et sa Fonction, une ligne numérique, un relais ou le totalisateur) | oui ; l'instrument balaie au plus court intervalle parmi les tags de l'équipement | oui (lignes numériques et relais, et totalisateur remis à zéro) | non |
| SNMP | Hôte, Port ; puis la carte Agent SNMP (version, community ou utilisateur SNMPv3 et sécurité, délai de réponse, nouvelles tentatives) | texte libre : OID, en chiffres ou par son nom standard | oui | oui (un SET que l'agent accepte ; un objet standard que sa MIB déclare en lecture seule reste en lecture seule) | oui (un parcours des sous-arbres standard d'un agent) |
| File | aucun : à sa place la carte Dossier et fichier (Chemin du dossier, Nom du fichier ou le motif du dossier d'arrivée, Lire depuis, Format du fichier), puis les cartes Texte du fichier et Écriture | typé : ce que lit le tag (une valeur, le fichier entier ou une donnée du fichier) et, pour une valeur, une colonne et une ligne (CSV), une ligne et ses caractères (texte libre) ou un chemin (JSON, XML) | oui | oui (sur un équipement qui autorise l'écriture : une ligne ajoutée, le fichier entier remplacé ou un autre fichier désigné) | oui (un fichier, celui d'un équipement ou un fichier saisi) |
| Database | aucun : à sa place la carte Base de données (Type de base de données, puis Serveur, Port, Nom d'instance et Nom de la base de données, le Fichier de base de données, ou la Source de données ou texte de connexion), puis la carte Connexion à la base (Nom d'utilisateur et Mot de passe, et sur SQL Server la connexion Windows et le Chiffrement) | typé : la façon dont le tag lit (une cellule par Table de la valeur, Colonne de la valeur et Ligne à lire, ou le Texte de sa requête propre) | oui | oui (la cellule qu'il lit, ou sa propre commande d'écriture) | oui (les tables de la base de données d'un équipement) |

Chaque pilote restreint aussi la liste **Type de donnée** qu'un tag propose à ce qu'il sait réellement transporter ; la liste exacte est sur la page du pilote. Là où le tableau dit « 1 s fixe », le pilote ignore la période configurée, si bien que les pages Équipement et Tag lui cachent le champ Période de scrutation. Là où il dit « lecture seule », le champ Accès ne propose que Lecture seule et le champ d'écriture n'apparaît jamais.

## Ce que documente chaque page de pilote {#what-every-driver-page-documents}

Chaque page de pilote parcourt les mêmes sections dans le même ordre : les champs de connexion que montre la carte Équipement et comment ils assemblent l'URI de base ; comment un tag est adressé (les champs typés ou le jeton en texte libre, et l'adresse de bus en lecture seule dont le volet donne un aperçu) ; les types de donnée proposés ; la découverte, quand le pilote en a une ; les écritures, quand le pilote les accepte ; et les particularités du pilote (identifiants, certificats, temporisation, un serveur de réseau que la station fait tourner, un appairage).

## Un pilote que le paquet ne porte pas {#a-driver-the-package-does-not-carry}

Le Connector ne liste ni ne propose jamais un pilote que le paquet en service ne porte pas. Une configuration qui arrive malgré tout avec de tels équipements les conserve : le pilote reste listé, dans le catalogue et sous le dossier Pilotes, tant que ces équipements existent, sa description indique « Pilote absent de ce paquet. », et la page du pilote comme chaque équipement en dessous portent un bandeau qui dit la même chose. Ces équipements restent hors ligne et gardent leurs réglages ; ils peuvent être supprimés, mais pas copiés, et aucun nouvel équipement ni balayage de découverte ne peut être lancé sous ce pilote.

Les pilotes que porte un paquet sont lus dans le registre de pilotes du Connector, qui n'existe qu'une fois le Connector démarré. D'ici là, chaque pilote compte comme présent, si bien que le catalogue se stabilise quelques secondes après le démarrage puis ne bouge plus de la session, même quand le Connector est arrêté puis relancé.

Le code d'un pilote est chargé une fois pour toute la durée de vie de l'application. Arrêter et relancer les communications reconstruit les équipements en service et la liste des pilotes à partir de ce même chargement, et c'est ce qui garde plate la mémoire de la station sur une journée de redémarrages. La conséquence est que remplacer les fichiers d'un pilote sur le disque ne prend effet qu'après un redémarrage de l'application elle-même.
