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
SOCKET_READ
Paramètres SOCKET_READ
Paramètre
Type de paramètre
Type de données
Description
Execute
Entrée
BOOL
Activation de l'instruction.
  • TRUE : Front montant détecté, démarre l'instruction à condition que la dernière opération soit terminée.
  • FALSE : Ne démarre pas l'instruction.
Instance
Entrée
UDINT
Copiez à partir du gestionnaire de socket renvoyé depuis une instruction SOCKET_CREATE ou SOCKET_ACCEPT.
  • Pour les types de socket de client UDP et TCP, copiez le gestionnaire de socket renvoyé depuis une instruction SOCKET_CREATE.
  • Pour le type de socket de serveur TCP, copiez le gestionnaire de socket renvoyé depuis une instruction 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 taille du tableau de données doit être >= (Offset + Length).
  • Le tableau de données peut être plus grand que la longueur du socket lu.
La sortie est mise à jour de manière synchrone par l'analyse du programme.
Done
Sortie
BOOL
Indique la fin de l'opération.
  • TRUE : L'opération s'est terminée avec succès.
  • FALSE : L'opération est en cours ou a rencontré une condition d’erreur.
La sortie est mise à jour de manière synchrone par l'analyse du programme.
Busy
Sortie
BOOL
  • TRUE : L'opération n'est pas terminée.
  • FALSE : L'opération est terminée.
La sortie est mise à jour de manière synchrone par l'analyse du programme.
Error
Sortie
BOOL
Indique une erreur.
  • TRUE : Une erreur a été détectée.
  • FALSE : Aucune 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 diagramme de bloc de fonctions SOCKET_READ
Exemple de langage à relais SOCKET_READ
Exemple de schéma à relais SOCKET_READ
Exemple de texte structuré SOCKET_READ
Exemple de texte structuré SOCKET_READ
Résultats - TCP
Résultats - TCP
Résultats - UDP
Résultats - UDP
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal