SOCKET_READ
L'instruction SOCKET_READ lit les données sur un socket et renvoie le nombre d'octets spécifié. Pour le protocole TCP (Transmission Control Protocol), renvoie des octets jusqu'au nombre requis lorsque des données sont reçues. Pour le protocole UDP (User Datagram Protocol), se termine lorsqu'un datagramme est disponible.
Détails de l'opération :
Le comportement SOCKET_READ suivant peut avoir un impact sur les communications existantes, y compris la communication qui ne concerne pas les sockets :
- Si l'opération SOCKET_READ n'est pas exécutée de manière synchronisée avec l'appareil distant, le contrôleur conserve le paquet reçu de l'appareil distant jusqu'à ce que l'un des événements suivants se produise :
- SOCKET_READ s'exécute.
- Le temps de dépassement du socket expire.
- RST est reçu à partir d'un appareil distant.
- SOCKET_DELETE ou SOCKET_DELETEALL s'exécute.
- Une modification en mode Exécuter est apportée, ce qui supprime toutes les instances de socket créées.
- Le contrôleur passe du mode Exécuter au mode Programme, ce qui supprime toutes les instances de socket créées.
- Le contrôleur passe du mode Exécuter au mode Programme, ce qui efface les informations du compteur de diagnostic du socket et les informations des compteurs individuels.
- Si la valeur des paramètres Length ou Offset est modifiée pendant l'opération SOCKET_READ (BUSY = Vrai) une erreur se produit et le paquet reçu est rejeté.
- L'instruction SOCKET_READ peut renvoyer moins d'octets que le nombre demandé. RxLength contient le nombre d'octets de données reçus. Écrivez des programmes pour vérifier RxLength, puis envoyez des demandes de lecture supplémentaires pour recevoir un message d'application entier.
- En mode Modification en mode Exécuter, tout changement apporté à une entrée SOCKET_READ pendant une opération à l'état BUSY entraîne une erreur, et le paquet reçu est ignoré.
- Les sorties sont mises à jour de manière synchrone par la scrutation du programme.
Langages pris en charge : Diagramme de bloc de fonctions, diagramme de schéma à relais et texte structuré.
Cette instruction s'applique aux contrôleurs
Micro820
L20E, Micro850
L50E et Micro870
L70E.SOCKET_READ

Paramètre | Type de paramètre | Type de données | Description |
|---|---|---|---|
Execute | Entrée | BOOL | Activation de l'instruction.
|
Instance | Entrée | UDINT | Copiez à partir du gestionnaire de socket renvoyé depuis une instruction SOCKET_CREATE ou SOCKET_ACCEPT.
|
Timeout | Entrée | UDINT | Temps dépassé pour SOCKET_READ. Le bloc d'instruction renvoie une erreur si la valeur de temps dépassé est inférieure à la valeur minimale. Plage du paramètre Timeout : 1 000 à 86 400 000 millisecondes. Définissez le délai d’expiration sur 0 pour utiliser la valeur par défaut de 10 000 (10 secondes). |
Length | Entrée | UINT | Définit le nombre d'octets à lire. Vérifiez que RxLength contient le nombre réel d'octets lus. SOCKET_READ peut renvoyer moins d'octets que le nombre demandé. Prend en charge jusqu'à 256 octets. |
Offset | Entrée | UNIT | Décalage dans le tableau de données. Commencez la lecture des données depuis cet emplacement. |
Data | Sortie | USINT[1..1] | Un tableau utilisé pour stocker les données lues à partir de SOCKET_READ.
La sortie est mise à jour de manière synchrone par l'analyse du programme. |
Done | Sortie | BOOL | Indique la fin de l'opération.
La sortie est mise à jour de manière synchrone par l'analyse du programme. |
Busy | Sortie | BOOL |
La sortie est mise à jour de manière synchrone par l'analyse du programme. |
Error | Sortie | BOOL | Indique une erreur.
La sortie est mise à jour de manière synchrone par l'analyse du programme. |
Status | Sortie | SOCK_STATUS | L'état est défini à l'aide du Type de données SOCK_STATUS qui contient les informations sur ErrorID, SubErrorID et StatusBits. La sortie est mise à jour de manière synchrone par l'analyse du programme. |
RxLength | Sortie | UNIT | Contient le nombre d'octets de données reçus. |
UDPAddr | Sortie | Adresse de l'appareil envoyant des données UDP (User Datagram Protocol). Exemple d'adresse UDPAddr 192.168.2.100 et de port 12000 : UDPAddr.IPAddress[0]=192 UDPAddr.IPAddress[1]=168 UDPAddr.IPAddress[2]=2 UDPAddr.IPAddress[3]=100 UDPAddr.Port = 12000 Pour TCP (Transmission Control Protocol), cette structure n'est pas utilisée et ne contient que des 0. La connexion TCP transmet les informations de l'adresse distante. |
Exemples SOCKET_READ
Exemple de diagramme de bloc de fonctions SOCKET_READ

Exemple de langage à relais SOCKET_READ

Exemple de texte structuré SOCKET_READ

Résultats - TCP

Résultats - UDP

Fournir une réponse