# 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 chaque pilote que ce produit connaît, ce que documente la page de chaque 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 d'équipements : 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 sait balayer à la recherche d'équipements, et si la station les scrute ou si l'équipement lui pousse ses données. Ce groupe porte une page par pilote; cette page est ce qu'ils ont en commun.

## Le registre {#the-registry}

L'ensemble des pilotes est fixe : 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 compte 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 en dessous : la colonne porte donc 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.

## Chaque pilote {#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 et 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 ou RS-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 électriques en OCPP (ce sont les bornes qui 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 système AVEVA PI par 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 quelles parties 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 d'un tag | Intervalle 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, Identifiant 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), Identifiant d'unité | typé : classe et numéro de registre | oui | oui | oui (sondage d'identifiants d'unité sur une ligne) |
| OPC UA | Hôte, Port, Chemin de ressource, Nom d'utilisateur, Mot de passe | texte libre : identifiant 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, Identifiant d'équipement | typé : type et instance d'objet | 1 s fixe | oui | oui (Who-Is) |
| OCPP | Identifiant | typé : numéro de connecteur; le nom du tag finit par Meter, Status ou Transaction | poussé 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 | Identifiant 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é applicative) | typé : canal ou décalage, type LPP | poussé par le capteur | non (lecture seule) | non |
| AVEVA PI | Hôte, Port, Chemin de ressource, Transport, Nom d'utilisateur, Mot de passe, Jeton porteur | 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 identifiants 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é 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 réduit 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 l'intervalle configuré : les pages de l'équipement et du tag lui cachent donc le champ Intervalle de scrutation. Là où il dit « lecture seule », le champ Accès n'offre que Lecture seule et le champ d'écriture n'apparaît jamais.

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

La page de chaque pilote parcourt les mêmes sections dans le même ordre : les champs de connexion que montre la carte Équipement et la façon dont ils assemblent l'URI de base; la façon dont 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 offerts; 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, l'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 fonctionnement ne porte pas. Une configuration qui arrive tout de même avec de tels équipements (une sauvegarde restaurée, une configuration venue d'une autre machine) 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 et 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 aucun balayage de découverte ne peut être lancé sous ce pilote.

Quels pilotes un paquet porte est lu 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 : le catalogue se stabilise donc quelques secondes après le lancement et ne bouge plus de la session, même si le Connector est arrêté puis redémarré.

Le code d'un pilote est chargé une seule fois, pour toute la durée d'exécution de l'application. Arrêter puis démarrer la communication reconstruit les équipements en fonctionnement et la liste des pilotes à partir de ce même chargement, et c'est ce qui garde la mémoire de la station stable au fil d'une journée de redémarrages. Conséquence : remplacer les fichiers d'un pilote sur le disque ne prend effet qu'après le redémarrage de l'application elle-même.
