Utilisation de LabVIEW avec TCP/IP et UDP
- Mise à jour2025-08-27
- Temps de lecture : 7 minute(s)
L'IP (Internet Protocol), l'UDP (User Datagram Protocol) et le TCP (Transmission Control Protocol) sont les outils de communication de base via réseau. Le nom TCP/IP est dérivé des deux protocoles les plus connus de la suite de protocoles Internet : Transmission Control Protocol et Internet Protocol.
Vous pouvez utiliser le protocole TCP/IP pour communiquer sur un réseau unique ou sur plusieurs réseaux interconnectés. Les différents réseaux peuvent être séparés par de grandes distances géographiques. Le protocole TCP/IP envoie des données d'un ordinateur connecté à un réseau ou à Internet à un autre. Comme le protocole TCP/IP est disponible sur la plupart des ordinateurs, il permet de transférer des données entre divers systèmes.
LabVIEW et TCP/IP
Vous pouvez utiliser les protocoles TCP/IP avec LabVIEW sur toutes les plates-formes. LabVIEW comprend des VIs et des fonctions TCP et UDP pour vous permettre de créer des VIs client ou serveur.
IP
Le protocole IP se charge du service de bas-niveau que représente le transfert de données entre ordinateurs. Le protocole IP regroupe les données en composants appelés datagrammes. Un datagramme contient les données et un en-tête qui indique les adresses de source et de destination. Le protocole IP détermine le chemin que le datagramme doit suivre sur le réseau ou Internet, et envoie les données à la destination indiquée.
Le protocole IP ne peut pas garantir que les données seront reçues. En fait, il se peut que le protocole IP délivre les données plusieurs fois si le datagramme est dupliqué à la transmission. En général, les programmes utilisent les protocoles TCP et UDP plutôt qu'IP.
UDP
Le protocole UDP permet une communication simple de bas niveau entre les processus des ordinateurs. Les processus communiquent en envoyant des datagrammes à un ordinateur ou un port de destination. Un port représente l'emplacement où vous envoyez des données. Le protocole IP se charge de la livraison de données entre ordinateurs. Une fois que le datagramme a atteint l'ordinateur de destination, le protocole UDP le transfère à son port de destination. Si le port de destination n'est pas ouvert, le protocole UDP détruit le datagramme. Le protocole UDP a les mêmes problèmes de livraison que le protocole IP.
Utilisez le protocole UDP dans les applications où la fiabilité n'est pas d'une importance capitale. Par exemple, certaines applications transmettent des données informatives à une destination suivant une fréquence suffisante pour que la perte de quelques segments de données ne pose pas de problème.
Utilisation du protocole UDP dans LabVIEW
Contrairement au protocole TCP, le protocole UDP n'est pas basé sur la connexion, de sorte que vous n'avez pas besoin d'établir de connexion à la destination avant d'envoyer ou de recevoir des données. En revanche, vous devez spécifier la destination des données pour chaque datagramme que vous envoyez. Les systèmes d'exploitation ne rapportent pas les erreurs de transmission.
Utilisez la fonction UDP Ouvrir pour ouvrir une interface de connexion UDP sur un port. Le nombre de ports UDP ouverts en même temps dépend du système d'exploitation. La fonction UDP Ouvrir renvoie un refnum de connexion réseau qui identifie de manière unique l'interface de connexion UDP. Utilisez ce refnum de connexion pour faire référence à cette interface de connexion dans les appels ultérieurs du VI.
Utilisez la fonction UDP Écrire pour envoyer des données à une destination et la fonction UDP Lire pour lire ces données. Chaque opération d'écriture requiert une adresse et un port de destination. Chaque opération de lecture contient l'adresse et le port source. Le protocole UDP conserve les octets de datagramme que vous spécifiez pour toutes les commandes que vous envoyez.
La taille des datagrammes UDP varie en fonction de l'environnement de fonctionnement mais a une limite de 65535 octets. National Instruments recommande d'utiliser UDP pour envoyer des datagrammes inférieurs à 1 Ko afin de minimiser le risque de division et de réassemblage du paquet IP sous-jacent lors de la transmission, ce qui augmenterait considérablement le risque de perte de paquet.
Lorsque vous avez fini de communiquer avec un port, utilisez la fonction UDP Fermer pour libérer les ressources système.
UDP multicast
Vous pouvez utiliser les fonctions UDP pour communiquer avec un seul client (unicast) ou avec tous les ordinateurs du sous-réseau par diffusion. Si vous voulez communiquer avec plusieurs ordinateurs particuliers, vous devez configurer les fonctions UDP pour qu'elles se répètent sur la liste de clients. Si vous utilisez cette technique, il y a une duplication du trafic réseau car LabVIEW envoie une copie différente des données à chaque client et maintient une liste des clients qui veulent recevoir les données.
Pour ne pas avoir besoin de maintenir la liste des clients ou d'envoyer plusieurs copies des données à chaque client, utilisez le multicast pour communiquer entre un expéditeur unique et plusieurs clients sur un réseau. Pour recevoir les données diffusées par un expéditeur multicast, tous les clients doivent se joindre à un groupe multicast. L'expéditeur n'a pas besoin de se joindre à un groupe pour envoyer des données. L'expéditeur spécifie une adresse IP multicast qui définit un groupe multicast. Les adresses IP multicast se situent dans la gamme allant de 224.0.0.0 à 239.255.255.255. Lorsqu'un client veut se joindre à un groupe multicast, il souscrit à l'adresse IP multicast du groupe. Une fois souscrit à un groupe multicast, le client reçoit les données envoyées à l'adresse IP multicast.
Pour utiliser le multicast dans LabVIEW, utilisez le VI UDP Multicast - Ouvrir pour ouvrir des connexions capables de lire, d'écrire, ou de lire et écrire des données UDP. Précisez le temps en direct (TTL) pour l'écriture des données, l'adresse multicast pour la lecture des données, et le numéro du port multicast pour la lecture et l'écriture des données. Par défaut, le TTL est 1, ce qui signifie que LabVIEW n'envoie le datagramme qu'au sous-réseau local. Lorsqu'un routeur reçoit un datagramme multicast, il décrémente le TTL du datagramme. Si le TTL est supérieur à 1, le routeur envoie le datagramme aux autres routeurs. Le tableau suivant indique quelle action se produit dans un datagramme multicast quand vous spécifiez une valeur pour le paramètre temps en direct.
| 0 | Le datagramme demeure sur l'ordinateur hôte. |
| 1 | Un datagramme est envoyé à chaque client du même sous-réseau local qui a souscrit à cette adresse IP. Les hubs/répéteurs et les passerelles/commutateurs font suivre le datagramme. Les routeurs ne font pas suivre le datagramme si le TTL est 1. |
| >1 | Le datagramme est envoyé et les routeurs le font suivre par l'intermédiaire de couches TTL-1. |
Reportez-vous aux VIs suivants pour des exemples d'utilisation de connexion multicast UDP :
- UDP Multicast – Receiver VI : labview\examples\Data Communication\Protocols\UDP\UDP Multicast\UDP Multicast.lvproj
- UDP Multicast – Sender VI : labview\examples\Data Communication\Protocols\UDP\UDP Multicast\UDP Multicast.lvproj
TCP
Le protocole TCP assure une transmission fiable sur les réseaux et délivre les données de manière séquentielle sans erreur, sans perte et sans duplication. Le protocole TCP retransmet le datagramme jusqu'à ce qu'il reçoive un accusé de réception.
Utilisation du protocole TCP dans LabVIEW
Le protocole TCP est un protocole basé sur les connexions, ce qui signifie que les sites doivent établir une connexion avant de transférer des données. La transmission des données s'effectue entre un client et un serveur. Le protocole TCP permet d'avoir plusieurs connexions simultanées.
Vous initiez une connexion en attendant une connexion entrante ou en recherchant activement une connexion avec une adresse spécifiée. Pour établir des connexions TCP, vous devez spécifier l'adresse et un port à cette adresse. Les différents ports d'une adresse donnée identifient les différents services à cette adresse.
Utilisez la fonction TCP Ouvrir une connexion pour établir activement une connexion avec une adresse et un port spécifiques. Si la connexion est établie, la fonction renvoie un refnum de connexion réseau qui identifie cette connexion de manière unique. Utilisez ce refnum de connexion pour faire référence à la connexion dans les appels ultérieurs du VI.
Vous pouvez utiliser les techniques suivantes pour attendre une connexion entrante :
- Utilisez le VI TCP Écouter pour créer un récepteur et attendre une connexion TCP acceptée au port spécifié. Si la connexion est établie, le VI renvoie un refnum de connexion, l'adresse et le port du client TCP distant.
- Utilisez la fonction TCP Créer un récepteur pour créer un récepteur et la fonction TCP Attendre un récepteur pour attendre et accepter les nouvelles connexions. La fonction TCP Attendre un récepteur renvoie l'ID de récepteur que vous avez câblé à la fonction. Lorsque vous avez fini d'attendre de nouvelles connexions, utilisez la fonction TCP Fermer la connexion pour fermer un récepteur. Vous ne pouvez pas lire ou écrire dans un récepteur.
La deuxième technique a l'avantage que vous pouvez utiliser la fonction TCP Fermer la connexion pour annuler une opération d'écoute, ce qui est utile si vous écoutez une connexion sans utiliser de timeout mais que vous voulez annuler l'écoute si une autre condition devient vraie. Vous pouvez fermer le VI TCP Écouter à n'importe quel moment.
Lorsque vous établissez une connexion, utilisez les fonctions TCP Lire et TCP Écrire pour lire et écrire des données dans l'application distante.
Utilisez la fonction TCP Fermer la connexion pour fermer la connexion avec l'application distante. Si certaines données n'ont pas encore été lues quand la connexion est fermée, vous risquez de perdre des données. Utilisez un protocole de plus haut niveau pour que votre ordinateur puisse déterminer quand la connexion peut être fermée.
Sélection de TCP ou d'UDP
Le protocole TCP est le meilleur si vous voulez une transmission de données fiable. Le protocole UDP est un protocole sans connexion plus performant, mais la fiabilité de la transmission des données n'est pas garantie.
Timeouts et erreurs
Lorsque vous développez une application réseau, prenez soin de considérer ce qui se passera si quelque chose échoue. Par exemple, si le serveur se bloque, déterminez comment chaque VI client va réagir.
Une solution consiste à vérifier que chaque VI client a un timeout. Si quelque chose n'a pas produit de résultats au bout d'un certain temps, le client continue l'exécution. Lorsque l'exécution reprend, le client peut essayer de rétablir la connexion ou de rapporter l'erreur. Au besoin, le VI client peut fermer l'application.
Exemples de protocoles TCP et UDP
Reportez-vous aux VIs suivants pour consulter des exemples d'utilisation de VIs TCP et UDP :
- labview\examples\Data Communication\Protocols\TCP\Simple TCP\Simple TCP.lvproj
- labview\examples\Data Communication\Protocols\UDP\Simple UDP\Simple UDP.lvproj