Schneider Electric SoMachine - TcpUdpCommunication Mode d'emploi
Ajouter à Mes manuels155 Des pages
▼
Scroll to page 2
of
155
SoMachine EIO0000002255 06/2017 SoMachine TcpUdpCommunication Guide de la bibliothèque EIO0000002255.02 06/2017 www.schneider-electric.com Le présent document comprend des descriptions générales et/ou des caractéristiques techniques des produits mentionnés. Il ne peut pas être utilisé pour définir ou déterminer l'adéquation ou la fiabilité de ces produits pour des applications utilisateur spécifiques. Il incombe à chaque utilisateur ou intégrateur de réaliser l'analyse de risques complète et appropriée, l'évaluation et le test des produits pour ce qui est de l'application à utiliser et de l'exécution de cette application. Ni la société Schneider Electric ni aucune de ses sociétés affiliées ou filiales ne peuvent être tenues pour responsables de la mauvaise utilisation des informations contenues dans le présent document. Si vous avez des suggestions, des améliorations ou des corrections à apporter à cette publication, veuillez nous en informer. Aucune partie de ce document ne peut être reproduite sous quelque forme ou par quelque moyen que ce soit, électronique, mécanique ou photocopie, sans autorisation préalable de Schneider Electric. Toutes les réglementations de sécurité pertinentes locales doivent être observées lors de l'installation et de l'utilisation de ce produit. Pour des raisons de sécurité et afin de garantir la conformité aux données système documentées, seul le fabricant est habilité à effectuer des réparations sur les composants. Lorsque des équipements sont utilisés pour des applications présentant des exigences techniques de sécurité, suivez les instructions appropriées. La non-utilisation du logiciel Schneider Electric ou d'un logiciel approuvé avec nos produits matériels peut entraîner des blessures, des dommages ou un fonctionnement incorrect. Le non-respect de cette consigne peut entraîner des lésions corporelles ou des dommages matériels. © 2017 Schneider Electric. Tous droits réservés. 2 EIO0000002255 06/2017 Table des matières Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . . Partie I Informations générales . . . . . . . . . . . . . . . . . . . . . . . Chapitre 1 Informations spécifiques de sécurité . . . . . . . . . . . . . . . Qualification du Personnel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Informations relatives au produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 2 Présentation de la bibliothèque . . . . . . . . . . . . . . . . . . . Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Partie II Énumérations et Structures . . . . . . . . . . . . . . . . . . . Chapitre 3 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ET_Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ET_State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 4 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ST_ClientConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ST_DefaultSocketOptionsTCPClient . . . . . . . . . . . . . . . . . . . . ST_DefaultSocketOptionsTCPServer . . . . . . . . . . . . . . . . . . . . ST_DefaultSocketOptionsUDPPeer . . . . . . . . . . . . . . . . . . . . . . ST_DnsAdressInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Partie III Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 5 Liste des paramètres globaux. . . . . . . . . . . . . . . . . . . . . GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 6 Liste de variables globales . . . . . . . . . . . . . . . . . . . . . . . GVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Partie IV Unités d'organisation de programme (POU) . . . . . . . Chapitre 7 Blocs fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Communication TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Méthodes de FB_TCPClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode Close . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode Connect . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode GetBoundIPAddress . . . . . . . . . . . . . . FB_TCPClient - Méthode GetBoundPort. . . . . . . . . . . . . . . . . . . . EIO0000002255 06/2017 7 11 15 17 18 18 19 21 21 27 29 30 33 35 36 37 38 39 40 41 43 43 45 45 47 49 50 52 53 55 56 57 58 59 3 FB_TCPClient - Méthode Peek . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode Receive . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode ReceiveOutOfBand. . . . . . . . . . . . . . . . FB_TCPClient - Méthode ResetByteCounters . . . . . . . . . . . . . . FB_TCPClient - Méthode ResetResult . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode SendOutOfBand . . . . . . . . . . . . . . . . . . . FB_TCPClient - Méthode Shutdown . . . . . . . . . . . . . . . . . . . . . . . . Propriétés de FB_TCPClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Méthodes de FB_TCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode Accept . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode CheckClients . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode Close . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode DisconnectAll . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode DisconnectClient. . . . . . . . . . . . . . . . FB_TCPServer - Méthode GetBoundIPAddress . . . . . . . . . . . . . . FB_TCPServer - Méthode GetBoundPort . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode PeekFromFirstAvailableClient. . . FB_TCPServer - Méthode PeekFromSpecificClient . . . . . . . . . FB_TCPServer - Méthode ReceiveFromFirstAvailableClient FB_TCPServer - Méthode ReceiveFromSpecificClient . . . . . . FB_TCPServer - Méthode ReceiveOutOfBandFromFirstAvailableClient . . . . . . . . . . . . FB_TCPServer - Méthode ReceiveOutOfBandFromSpecificClient . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode ResetByteCounters . . . . . . . . . . . . . . FB_TCPServer - Méthode ResetResult . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode SendOutOfBandToAll . . . . . . . . . . . . . FB_TCPServer - Méthode SendOutOfBandToSpecificClient . FB_TCPServer - Méthode SendToAll . . . . . . . . . . . . . . . . . . . . . . . FB_TCPServer - Méthode SendToSpecificClient . . . . . . . . . . . Propriétés de FB_TCPServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Communication UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Méthodes de FB_UDPPeer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 60 61 64 66 66 67 71 72 73 75 77 78 79 80 81 82 83 84 85 86 88 90 92 94 96 98 98 99 100 102 103 105 107 108 109 111 EIO0000002255 06/2017 FB_UDPPeer - Méthode Bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode Close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode GetBoundIPAddress . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode GetBoundPort . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode JoinMulticastGroup . . . . . . . . . . . . . . . FB_UDPPeer - Méthode LeaveMulticastGroup . . . . . . . . . . . . . . FB_UDPPeer - Méthode Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode ReceiveFrom . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode ResetByteCounters . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode ResetResult . . . . . . . . . . . . . . . . . . . . . . . FB_UDPPeer - Méthode SendTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . Propriétés de FB_UDPPeer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FB_DnsClient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 8 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 Types de données (EnumToStringConverters) . . . . . . . . . . . . . . . . . . FC_EtResultToString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_EtStateToString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_GetSubNetBroadcastAddr. . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_InetAddrDWORDtoString. . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_InetAddrStringtoDWORD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_IsMulticastIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_IsValidIP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_ReadSTRING. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_WriteSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Utils (Byteorder). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_Read<Data type> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FC_Write<Data type> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glossaire Index EIO0000002255 06/2017 ......................................... ......................................... 112 114 115 115 117 118 119 120 122 122 123 124 126 126 129 130 131 132 133 134 135 136 137 138 139 141 143 144 146 149 153 5 6 EIO0000002255 06/2017 Consignes de sécurité Informations importantes AVIS Lisez attentivement ces instructions et examinez le matériel pour vous familiariser avec l'appareil avant de tenter de l'installer, de le faire fonctionner, de le réparer ou d'assurer sa maintenance. Les messages spéciaux suivants que vous trouverez dans cette documentation ou sur l'appareil ont pour but de vous mettre en garde contre des risques potentiels ou d'attirer votre attention sur des informations qui clarifient ou simplifient une procédure. EIO0000002255 06/2017 7 REMARQUE IMPORTANTE L'installation, l'utilisation, la réparation et la maintenance des équipements électriques doivent être assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité quant aux conséquences de l'utilisation de ce matériel. Une personne qualifiée est une personne disposant de compétences et de connaissances dans le domaine de la construction, du fonctionnement et de l'installation des équipements électriques, et ayant suivi une formation en sécurité leur permettant d'identifier et d'éviter les risques encourus. AVANT DE COMMENCER N'utilisez pas ce produit sur les machines non pourvues de protection efficace du point de fonctionnement. L'absence de ce type de protection sur une machine présente un risque de blessures graves pour l'opérateur. AVERTISSEMENT EQUIPEMENT NON PROTEGE N'utilisez pas ce logiciel ni les automatismes associés sur des appareils non équipés de protection du point de fonctionnement. N'accédez pas aux machines pendant leur fonctionnement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Cet automatisme et le logiciel associé permettent de commander des processus industriels divers. Le type ou le modèle d'automatisme approprié pour chaque application dépendra de facteurs tels que la fonction de commande requise, le degré de protection exigé, les méthodes de production, des conditions inhabituelles, la législation, etc. Dans certaines applications, plusieurs processeurs seront nécessaires, notamment lorsque la redondance de sauvegarde est requise. Vous seul, en tant que constructeur de machine ou intégrateur de système, pouvez connaître toutes les conditions et facteurs présents lors de la configuration, de l'exploitation et de la maintenance de la machine, et êtes donc en mesure de déterminer les équipements automatisés, ainsi que les sécurités et verrouillages associés qui peuvent être utilisés correctement. Lors du choix de l'automatisme et du système de commande, ainsi que du logiciel associé pour une application particulière, vous devez respecter les normes et réglementations locales et nationales en vigueur. Le document National Safety Council's Accident Prevention Manual (reconnu aux Etats-Unis) fournit également de nombreuses informations utiles. Dans certaines applications, telles que les machines d'emballage, une protection supplémentaire, comme celle du point de fonctionnement, doit être fournie pour l'opérateur. Elle est nécessaire si les mains ou d'autres parties du corps de l'opérateur peuvent entrer dans la zone de point de pincement ou d'autres zones dangereuses, risquant ainsi de provoquer des blessures graves. Les produits logiciels seuls, ne peuvent en aucun cas protéger les opérateurs contre d'éventuelles blessures. C'est pourquoi le logiciel ne doit pas remplacer la protection de point de fonctionnement ou s'y substituer. 8 EIO0000002255 06/2017 Avant de mettre l'équipement en service, assurez-vous que les dispositifs de sécurité et de verrouillage mécaniques et/ou électriques appropriés liés à la protection du point de fonctionnement ont été installés et sont opérationnels. Tous les dispositifs de sécurité et de verrouillage liés à la protection du point de fonctionnement doivent être coordonnés avec la programmation des équipements et logiciels d'automatisation associés. NOTE : La coordination des dispositifs de sécurité et de verrouillage mécaniques/électriques du point de fonctionnement n'entre pas dans le cadre de cette bibliothèque de blocs fonction, du Guide utilisateur système ou de toute autre mise en œuvre référencée dans la documentation. DEMARRAGE ET TEST Avant toute utilisation de l'équipement de commande électrique et des automatismes en vue d'un fonctionnement normal après installation, un technicien qualifié doit procéder à un test de démarrage afin de vérifier que l'équipement fonctionne correctement. Il est essentiel de planifier une telle vérification et d'accorder suffisamment de temps pour la réalisation de ce test dans sa totalité. AVERTISSEMENT RISQUES INHERENTS AU FONCTIONNEMENT DE L'EQUIPEMENT Assurez-vous que toutes les procédures d'installation et de configuration ont été respectées. Avant de réaliser les tests de fonctionnement, retirez tous les blocs ou autres cales temporaires utilisés pour le transport de tous les dispositifs composant le système. Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Effectuez tous les tests de démarrage recommandés dans la documentation de l'équipement. Conservez toute la documentation de l'équipement pour référence ultérieure. Les tests logiciels doivent être réalisés à la fois en environnement simulé et réel. Vérifiez que le système entier est exempt de tout court-circuit et mise à la terre temporaire non installée conformément aux réglementations locales (conformément au National Electrical Code des Etats-Unis, par exemple). Si des tests diélectriques sont nécessaires, suivez les recommandations figurant dans la documentation de l'équipement afin d'éviter de l'endommager accidentellement. Avant de mettre l'équipement sous tension : Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. Fermez le capot du boîtier de l'équipement. Retirez toutes les mises à la terre temporaires des câbles d'alimentation entrants. Effectuez tous les tests de démarrage recommandés par le fabricant. EIO0000002255 06/2017 9 FONCTIONNEMENT ET REGLAGES Les précautions suivantes sont extraites du document NEMA Standards Publication ICS 7.1-1995 (la version anglaise prévaut) : Malgré le soin apporté à la conception et à la fabrication de l'équipement ou au choix et à l'évaluation des composants, des risques subsistent en cas d'utilisation inappropriée de l'équipement. Il arrive parfois que l'équipement soit déréglé accidentellement, entraînant ainsi un fonctionnement non satisfaisant ou non sécurisé. Respectez toujours les instructions du fabricant pour effectuer les réglages fonctionnels. Les personnes ayant accès à ces réglages doivent connaître les instructions du fabricant de l'équipement et les machines utilisées avec l'équipement électrique. Seuls ces réglages fonctionnels, requis par l'opérateur, doivent lui être accessibles. L'accès aux autres commandes doit être limité afin d'empêcher les changements non autorisés des caractéristiques de fonctionnement. 10 EIO0000002255 06/2017 A propos de ce manuel Présentation Objectif du document Ce document décrit la bibliothèque TcpUdpCommunication. La bibliothèque offre les principales fonctionnalités nécessaires à la mise en œuvre de procotoles de communication réseau par sockets reposant sur un client et un serveur TCP (Transmission Control Protocol), ou de protocoles UDP (User Datagram Protocol) pour la diffusion et la multidiffusion, par exemple (si pris en charge par la plate-forme). Seules les communications IPv4 via les ports Ethernet du contrôleur sont prises en charge. La bibliothèque TcpUdpCommunication utilise des fonctions et des ressources système qui sont prises en charge sur certaines plates-formes de contrôleur disponibles dans SoMachine. Les contrôleurs pris en charge sont les suivants : Modicon M251 Logic Controller Modicon M241 Logic Controller (doit être équipé d'une interface Ethernet, soit avec Ethernet intégré, soit avec le module d'extension TM4ES4) Modicon M258 Logic Controller Modicon LMC058 Motion Controller Modicon LMC078 Motion Controller EIO0000002255 06/2017 11 Champ d'application Ce document a été actualisé pour le lancement de SoMachine V4.3. Les caractéristiques techniques des équipements décrits dans ce document sont également fournies en ligne. Pour accéder à ces informations en ligne : Etape Action 1 Accédez à la page d'accueil de Schneider Electric www.schneider-electric.com. 2 Dans la zone Search, saisissez la référence d'un produit ou le nom d'une gamme de produits. N'insérez pas d'espaces dans la référence ou la gamme de produits. Pour obtenir des informations sur un ensemble de modules similaires, utilisez des astérisques (*). 3 Si vous avez saisi une référence, accédez aux résultats de recherche Fiches produit et cliquez sur la référence qui vous intéresse. Si vous avez saisi une gamme de produits, accédez aux résultats de recherche Product Ranges et cliquez sur la gamme de produits qui vous intéresse. 4 Si plusieurs références s'affichent dans les résultats de recherche Products, cliquez sur la référence qui vous intéresse. 5 Selon la taille de l'écran, vous serez peut-être amené à faire défiler la page pour consulter la fiche technique. 6 Pour enregistrer ou imprimer une fiche technique au format .pdf, cliquez sur Download XXX product datasheet. Les caractéristiques présentées dans ce manuel devraient être identiques à celles fournies en ligne. Toutefois, en application de notre politique d'amélioration continue, nous pouvons être amenés à réviser le contenu du document afin de le rendre plus clair et plus précis. Si vous constatez une différence entre le manuel et les informations fournies en ligne, utilisez ces dernières en priorité. 12 EIO0000002255 06/2017 Terminologie utilisée dans les normes Les termes techniques, la terminologie, les symboles et les descriptions correspondantes employés dans ce manuel ou figurant dans ou sur les produits proviennent généralement des normes internationales. Dans les domaines des systèmes de sécurité fonctionnelle, des variateurs et de l'automatisme en général, les termes employés sont sécurité, fonction de sécurité, état sécurisé, défaut, réinitialisation du défaut, dysfonctionnement, panne, erreur, message d'erreur, dangereux, etc. Entre autres, les normes concernées sont les suivantes : Norme Description EN 61131-2:2007 Automates programmables - Partie 2 : exigences et essais des équipements ISO 13849-1:2008 Sécurité des machines - Parties des systèmes de commande relatives à la sécurité Principes généraux de conception EN 61496-1:2013 Sécurité des machines - Équipements de protection électro-sensibles Partie 1 : prescriptions générales et essais ISO 12100:2010 Sécurité des machines - Principes généraux de conception - Appréciation du risque et réduction du risque EN 60204-1:2006 Sécurité des machines - Équipement électrique des machines - Partie 1 : règles générales EN 1088:2008 ISO 14119:2013 Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs - Principes de conception et de choix ISO 13850:2006 Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception EN/IEC 62061:2005 Sécurité des machines - Sécurité fonctionnelle des systèmes de commande électrique, électronique et électronique programmable relatifs à la sécurité IEC 61508-1:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences générales IEC 61508-2:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences pour les systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité IEC 61508-3:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences concernant les logiciels IEC 61784-3:2008 Communications numériques pour les systèmes de mesure et de commande Bus de terrain de sécurité fonctionnelle 2006/42/EC Directive Machines 2014/30/EU Directive sur la compatibilité électromagnétique 2014/35/EU Directive sur les basses tensions EIO0000002255 06/2017 13 De plus, des termes peuvent être utilisés dans le présent document car ils proviennent d'autres normes telles que : Norme Description Série IEC 60034 Machines électriques rotatives Série IEC 61800 Entraînements électriques de puissance à vitesse variable Série IEC 61158 Communications numériques pour les systèmes de mesure et de commande Bus de terrain utilisés dans les systèmes de commande industriels Enfin, le terme zone de fonctionnement utilisé dans le contexte de la description de dangers spécifiques a la même signification que les termes zone dangereuse ou zone de danger employés dans la directive Machines (2006/42/EC) et la norme ISO 12100:2010. NOTE : Les normes susmentionnées peuvent s'appliquer ou pas aux produits cités dans la présente documentation. Pour plus d'informations sur chacune des normes applicables aux produits décrits dans le présent document, consultez les tableaux de caractéristiques de ces références de produit. 14 EIO0000002255 06/2017 SoMachine Informations générales EIO0000002255 06/2017 Partie I Informations générales Informations générales Contenu de cette partie Cette partie contient les chapitres suivants : Chapitre Titre du chapitre Page 1 Informations spécifiques de sécurité 17 2 Présentation de la bibliothèque 21 EIO0000002255 06/2017 15 Informations générales 16 EIO0000002255 06/2017 SoMachine Informations spécifiques de sécurité EIO0000002255 06/2017 Chapitre 1 Informations spécifiques de sécurité Informations spécifiques de sécurité Présentation Cette rubrique contient les informations permettant de travailler avec la bibliothèque TcpUdpCommunication. Le personnel qualifié amené à travailler avec la bibliothèque TcpUdpCommunication doit lire et respecter ces informations. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Qualification du Personnel 18 Instructions d'utilisation 18 Informations relatives au produit 19 EIO0000002255 06/2017 17 Informations spécifiques de sécurité Qualification du Personnel Présentation L’installation, l’utilisation, la réparation et la maintenance des équipements électriques doivent être assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité quant aux conséquences de l’utilisation de ce matériel. Une personne qualifiée est une personne disposant de compétences et de connaissances dans le domaine de la construction et du fonctionnement des équipements électriques et installations et ayant bénéficié d'une formation de sécurité afin de reconnaître et d’éviter les risques encourus. La personne qualifiée doit être capable de détecter d'éventuels dangers qui pourraient découler du paramétrage, de modifications des valeurs de paramétrage et plus généralement des équipements mécaniques, électriques ou électroniques. La personne qualifiée doit connaître les normes, dispositions et régulations liées à la prévention des accidents de travail, et doit les observer lors de la conception et de l'implémentation du système. Instructions d'utilisation Présentation Ce produit est une bibliothèque à utiliser avec un système de commande et des servoamplificateurs. La bibliothèque n'est conçue qu'en vue d'une utilisation telle que décrite dans la présente documentation, appliquée au secteur industriel. Observez en permanence les instructions applicables liées à la sécurité, les conditions spécifiques et les données techniques. Réalisez une analyse des risques en rapport avec l'utilisation spécifique avant d'utiliser ce produit. Prenez les mesures de sécurité qui découlent des résultats. Étant donné que ce produit est utilisé au sein d'un système qui l'englobe, vous devez vous assurer de la sécurité du personnel par le biais du concept de ce système global (le concept de machine, par exemple). Aucune autre utilisation n'est prévue. Toute autre utilisation pourrait être dangereuse. L’installation, l’utilisation, la réparation et la maintenance des appareils et équipements électriques doivent être assurées par du personnel qualifié uniquement. 18 EIO0000002255 06/2017 Informations spécifiques de sécurité Informations relatives au produit Informations relatives au produit AVERTISSEMENT PERTE DE CONTROLE Le concepteur d'un système de commande doit envisager les modes de défaillance possibles des chemins de commande et, pour certaines fonctions de commande critiques, prévoir un moyen d'atteindre un état sécurisé en cas de défaillance d'un chemin, et après cette défaillance. Par exemple, l'arrêt d'urgence, l'arrêt en cas de surcourse, la coupure de courant et le redémarrage sont des fonctions de commande cruciales. Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de commande critiques. Les chemins de commande système peuvent inclure les liaisons de communication. Soyez particulièrement attentif aux implications des retards de transmission imprévus ou des pannes de liaison. Respectez toutes les réglementations de prévention des accidents ainsi que les consignes de sécurité locales.1 Chaque implémentation de cet équipement doit être testée individuellement et entièrement pour s'assurer du fonctionnement correct avant la mise en service. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 1 Pour plus d'informations, consultez le document NEMA ICS 1.1 (dernière édition), « Safety Guidelines for the Application, Installation, and Maintenance of Solid State Control » (Directives de sécurité pour l'application, l'installation et la maintenance de commande statique) et le document NEMA ICS 7.1 (dernière édition), « Safety Standards for Construction and Guide for Selection, Installation, and Operation of Adjustable-Speed Drive Systems » (Normes de sécurité relatives à la construction et manuel de sélection, installation et opération de variateurs de vitesse) ou son équivalent en vigueur dans votre pays. Avant de tenter de fournir une solution (machine ou processus) pour une application spécifique en utilisant les POU trouvés dans la bibliothèque, vous devez tenir compte de la réalisation et de l'exécution des bonnes pratiques. La liste non exhaustive de ces pratiques liées à cette bibliothèque inclut l'analyse des risques, la sécurité fonctionnelle, la compatibilité des composants, les tests et la validation du système. EIO0000002255 06/2017 19 Informations spécifiques de sécurité AVERTISSEMENT MAUVAISE UTILISATION DES POU Effectuez une analyse de la sécurité de l'application et des appareils installés. Assurez-vous que les POU sont compatibles avec les appareils du système et n'ont pas d'effets inattendus sur le bon fonctionnement du système. Utilisez les paramètres appropriés, notamment les valeurs limites, et observez l'usure de la machine et son comportement à l'arrêt. Vérifiez que les capteurs et déclencheurs sont compatibles avec les POU sélectionnés. Testez de manière approfondie toutes les fonctions durant la vérification et la mise en service dans tous les modes de fonctionnement. Indiquez des méthodes indépendantes pour les fonctions de commande critiques (arrêt d'urgence, conditions de dépassement des valeurs limites, etc.) en fonction d'une analyse de la sécurité, des règles correspondantes et des réglementations. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Les transferts incomplets, qu'il s'agisse de fichiers de données, d'application et/ou de micrologiciel, peuvent avoir des conséquences graves sur votre machine ou votre contrôleur. En cas coupure de courant (volontaire ou non) ou d'interruption de la communication pendant un transfert de fichier, votre machine peut devenir inopérante ou votre application peut tenter d'utiliser un fichier de données endommagé. Si une interruption survient, relancez le transfert. Veillez à inclure l'impact des fichiers de données endommagés dans votre analyse des risques. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L'EQUIPEMENT, PERTE DE DONNEES OU FICHIER ENDOMMAGE N'interrompez pas un transfert de données en cours. Si le transfert est interrompu pour une raison quelconque, relancez-le. Ne mettez pas votre machine en service tant que le transfert de fichier n'est pas terminé, sauf si vous avez pris en compte les fichiers endommagés dans votre analyse des risques et si vous avez mis en place des mesures appropriées pour prévenir les conséquences potentiellement graves dues à des échecs de transfert. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 20 EIO0000002255 06/2017 SoMachine Description EIO0000002255 06/2017 Chapitre 2 Présentation de la bibliothèque Présentation de la bibliothèque Informations générales Présentation de la bibliothèque La bibliothèque offre les principales fonctionnalités nécessaires à la mise en œuvre de protocoles de communication réseau par sockets reposant sur un client et un serveur TCP(Transmission Control Protocol), ou UDP (User Datagram Protocol) pour la diffusion et la multidiffusion, par exemple (si pris en charge par la plate-forme). Seules les communications IPv4 via les ports Ethernet du contrôleur sont prises en charge. Vous devez mettre en place le protocole d'application utilisé sur le site distant (qui correspond à du matériel, comme des lecteurs de code-barres, des caméras, des robots industriels, ou à des systèmes informatiques exécutant des logiciels de type serveur de bases de données, par exemple). L'interface utilisateur de la bibliothèque est dérivée de mises en œuvre de sockets de type BSD semblables à celles servant pour la programmation d'applications de communication sous UNIX ou Microsoft Windows. Les principales fonctions utilisées sont les suivantes : Open/Bind/Connect pour initialiser la communication Accept pour accepter les connexions TCP entrantes en cas de recours à un serveur TCP Close / Disconnect / Shutdown pour terminer la communication Send/SendTo pour transmettre des données aux systèmes distants Receive/ReceiveFrom pour traiter les données envoyées par les systèmes distants SocketOptions pour définir le comportement de la communication au bas niveau EIO0000002255 06/2017 21 Description Pour cette bibliothèque, nous avons privilégié une approche orientée objets dans l'optique d'obtenir un programme d'application parfaitement ordonné. Par conséquent, les fonctions présentées ci-dessus sont disponibles en tant que méthodes et propriétés des blocs fonction correspondants décrits au chapitre Unités d'organisation de programme (POU) (voir page 47). Caractéristique Valeur Titre de la bibliothèque TcpUdpCommunication Société Schneider Electric Catégorie Communication Composant Core Repository Espace de noms par défaut TCPUDP Attribut du modèle de langage qualified-access-only (voir SoMachine, Fonctions et Bibliothèque post-compatible Oui (FCL (voir SoMachine, Fonctions et bibliothèques - Guide de l'utilisateur)) bibliothèques - Guide de l'utilisateur) NOTE : Cette bibliothèque est paramétrée en Uniquement accès qualifié . Cela signifie que l'on ne peut accéder aux POU, aux structures de données, aux énumérations, et aux constantes qu'en utilisant l'espace de nom de la bibliothèque. L'espace de noms par défaut de la bibliothèque est TCPUDP. Exemple de projet Le projet d'exemple TcpUdpCommunicationExample.project est fourni avec la bibliothèque. Le projet d'exemple montre comment mettre en oeuvre un échange de données entre deux contrôleurs via le réseau Ethernet en utilisant la bibliothèque TcpUdpCommunication. Le projet d'exemple est installé sur votre PC avec le logiciel SoMachine. Pour ouvrir le projet d'exemple, procédez comme suit : Etape 22 Action 1 Lancez SoMachine Central sur le PC en double cliquant sur l'icône située sur le bureau. 2 Sur l'écran SoMachine Central Mise en route, cliquez sur le bouton Centre d'aide en haut à droite. 3 Cliquez sur le bouton Exemples. 4 Double-cliquez sur l'icône du dossier Communication. 5 Double-cliquez sur l'icône du dossier TcpUdpCommunication. 6 Double-cliquez sur l'icône du projet TcpUdpCommunicationExample.project. Résultat : une copie du projet d'exemple s'ouvre dans une nouvelle instance de SoMachine. EIO0000002255 06/2017 Description Remarques générales Seules les adresses IP de type IPv4 sont prises en charge pour les fonctions de communication fournies avec cette bibliothèque. Les bibliothèques TcpUdpCommunication (Schneider Electric) et CAA Net Base Services (CAA Technical Workgroup) utilisent les mêmes ressources système sur le contrôleur. Leur utilisation simultanée dans la même application peut perturber le fonctionnement du contrôleur. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT N'utilisez pas la bibliothèque TcpUdpCommunication (Schneider Electric) avec la bibliothèque CAA Net Base Services (CAA Technical Workgroup) simultanément dans la même application. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Remarques relatives à la cybersécurité Les fonctions de cette bibliothèque ne prennent pas en charge les connexions sécurisées de type TLS (Transport Layer Security) ou SSL (Secure Socket Layer). Comme les e-mails ne sont pas chiffrés, cette communication requiert un serveur de messagerie spécifique. La communication ne peut s'effectuer qu'au sein de votre réseau industriel, isolé des autres réseaux de votre entreprise et protégé d'Internet. NOTE : Schneider Electric respecte les bonnes pratiques de l'industrie, en vigueur dans le développement et la mise en œuvre des systèmes de contrôle. Cette approche, dite de « défense en profondeur », permet de sécuriser les systèmes de contrôle industriels. Elle place les contrôleurs derrière des pare-feu pour restreindre leur accès aux seuls personnels et protocoles autorisés. EIO0000002255 06/2017 23 Description AVERTISSEMENT ACCES NON AUTHENTIFIE ET EXPLOITATION PAR CONSEQUENT NON AUTORISEE DES MACHINES Estimez si votre environnement ou vos machines sont connecté(e)s à votre infrastructure vitale et, le cas échéant, prenez les mesures nécessaires de prévention, basées sur le principe de défense en profondeur, avant de connecter le système d'automatisme à un réseau quelconque. Limitez au strict nécessaire le nombre d'équipements connectés à un réseau. Isolez votre réseau industriel des autres réseaux au sein de votre société. Protégez chaque réseau contre les accès non autorisés à l'aide d'un pare-feu, d'un VPN ou d'autres mesures de sécurité éprouvées. Surveillez les activités au sein de votre système. Empêchez tout accès direct ou liaison directe aux équipements sensibles par des utilisateurs non autorisés ou des actions non authentifiées. Préparez un plan de récupération intégrant la sauvegarde des informations de votre système et de votre processus. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Présentation des POU 24 Bloc fonction Utilisation FB_TCPClient (voir page 53) Met en œuvre un client TCP, qui se connecte à un serveur TCP pour pouvoir échanger des données. FB_TCPServer (voir page 75) Met en œuvre un serveur TCP, qui écoute et traite les connexions client entrantes sur un port déterminé. FB_UDPPeer (voir page 109) Met en œuvre un homologue UDP, qui désigne un point de sortie pour l'envoi et la réception de messages via le protocole UDP. EIO0000002255 06/2017 Description Présentation des structures dans l'interface propre au module Structure Utilisation ST_ClientConnection (voir page 36) Contient des informations sur les clients connectés au serveur. ST_DefaultSocketOptionsTCPClient Contient des informations sur les options de socket à définir automatiquement ou à modifier lorsqu'une nouvelle connexion est établie. (voir page 37) ST_DefaultSocketOptionsTCPServer (voir page 38) Contient des informations sur les options de socket à définir automatiquement ou à modifier lorsqu'une nouvelle instance de serveur est ouverte. ST_DefaultSocketOptionsUDPPeerST_Defaul Contient des informations sur les options de socket à tSocketOptionsUDPPeer (voir page 39) définir automatiquement ou à modifier lorsqu'une nouvelle instance d'homologue est ouverte. Présentation des énumérations Énumération Utilisation ET_Result (voir page 30) Contient les valeurs possibles qui donnent les résultats des opérations exécutées par le bloc fonction. ET_State (voir page 33) Contient les valeurs possibles qui indiquent l'état des blocs fonction. EIO0000002255 06/2017 25 Description 26 EIO0000002255 06/2017 SoMachine Énumérations et Structures EIO0000002255 06/2017 Partie II Énumérations et Structures Énumérations et Structures Contenu de cette partie Cette partie contient les chapitres suivants : Chapitre Titre du chapitre Page 3 Énumérations 29 4 Structures 35 EIO0000002255 06/2017 27 Énumérations et Structures 28 EIO0000002255 06/2017 SoMachine Énumérations EIO0000002255 06/2017 Chapitre 3 Énumérations Énumérations Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page ET_Result 30 ET_State 33 EIO0000002255 06/2017 29 Énumérations ET_Result Présentation Type : Énumération Disponible à partir de la version : V1.0.9.0 Description L'énumération ET_Result contient les valeurs possibles qui donnent les résultats des opérations exécutées par le bloc fonction. Éléments d'énumération Les valeurs 0 à 99 sont utilisées pour indiquer le résultat des opérations exécutées par les blocs fonction FB_TcpClient, FB_TcpServer et FB_UdpPeer. Nom Valeur Description Ok 0 L'opération a abouti. Failed 1 L'opération n'a pas abouti. NotReady 10 L'opération demandée ne peut pas être exécutée dans l'état en cours ou la propriété Result était différente de Ok avant l'appel de la fonction. NotSupported 11 L'opération demandée n'est pas prise en charge par ce contrôleur. AddressInUse 12 L'adresse de port demandée est déjà utilisée. AddressNotAvailable 13 L'adresse IP demandée n'est pas disponible car elle n'est configurée sur aucune interface Ethernet. InputOutOfRange 20 La valeur se situe hors de la plage valide. ReceiveBufferSizeOutOfRa nge 21 La valeur de l'entrée indiquant la taille du tampon de réception se situe hors de la plage valide. NumBytesToSendOutOfRange 22 La valeur de l'entrée indiquant le nombre d'octets à envoyer se situe hors de la plage valide. FillLevelOutOfRange 23 La valeur de l'entrée indiquant le niveau de remplissage du tampon se situe hors de la plage valide. TooMuchOOBData 24 La quantité de données demandée dépasse la limite maximale autorisée (égale à 1 octet de données OutOfBand). InvalidBufferAddress 25 L'adresse du tampon n'est pas valide. InvalidIP 26 L'adresse IP indiquée n'est pas valide. InvalidMulticastIP 27 L'adresse IP indiquée n'est pas valide ou n'est pas comprise dans la plage d'adresses multidiffusion. 30 EIO0000002255 06/2017 Énumérations Nom Valeur Description NoSuchClient 28 Le client indiqué n'a pas pu être trouvé, car il n'est pas connecté au serveur TCP. ClosedByPeer 40 L'opération demandée ne peut pas être exécutée, car la connexion a déjà été fermée par le site distant. ConnectionTimedOut 41 Le délai d'établissement d'une connexion a expiré, car le système distant n'est pas disponible ou ne répond pas à la requête. ConnectionRefused 42 La tentative d'établissement d'une connexion a échoué, car elle a été refusée par le système distant. NotEnoughResources 50 L'opération demandée n'a pas pu être exécutée, car le nombre de ressources internes disponibles pouvant être configurées est insuffisant. Réduisez la quantité de données par appel. SocketManagementListTooS mall 51 Le socket n'a pas pu être ouvert, car la taille de la liste interne de gestion des sockets est insuffisante. Fermez un socket déjà ouvert ou augmentez la valeur de Gc_uiSocketManagementListSize dans la liste de paramètres globaux (GPL). ClientListTooSmall 52 Le serveur TCP ne peut plus accepter d'autres clients. Déconnectez un client ou augmentez la valeur de Gc_uiTCPServerMaxConnections dans la liste de paramètres globaux (GPL). SendToAllSizeTooSmall 53 Le nombre d'octets à envoyer dépasse la limite autorisée. Réduisez la quantité de données à envoyer ou augmentez la valeur de Gc_udiTCPServerMaxSendToAllSize dans la liste de paramètres globaux (GPL). BufferFull 54 Le tampon d'envoi de la pile TCP est plein, aucune donnée ne peut être copiée. Augmentez la taille du tampon d'envoi en utilisant l'option de socket correspondante ou effectuez à nouveau l'envoi ultérieurement. Les valeurs 1001 à 1100 indiquent l'état du bloc fonction FB_DnsClient. Si la valeur q_xError du bloc fonction est FALSE, l'un des messages d'état suivants est fourni via q_etResult. Nom Valeur Description Disabled 1001 Le bloc fonction est désactivé. Initializing 1002 Le bloc fonction est en cours d'initialisation. Disabling 1003 Le bloc fonction est désactivé. Ready 1004 Le bloc fonction est prêt. SendDnsQuery 1010 Le bloc fonction envoie la requête au serveur DNS. WaitForDnsAnswer 1012 Le bloc fonction attend la réponse de Serveur DNS. AnalyzeDnsAnswer 1014 Le bloc fonction analyse la réponse. EIO0000002255 06/2017 31 Énumérations Les valeurs 1500 à 1600 indiquent les opérations exécutées par le bloc fonction FB_DnsClient. Si le paramètre q_xError du bloc fonction a pour valeur TRUE, le paramètre q_etResult affiche l'un des messages d'erreur suivants. Nom Valeur InvalidDnsServerIP 1500 Description L'adresse IP définie du serveur DNS n'est pas valide. NOTE : i_sDnsServerIP doit avoir une valeur autre que de type null et avoir le format correct. InvalidDomainName 1502 Aucun domaine ou le domaine indiqué n'est pas valide. OpenSocketFailed 1506 Une erreur a été détectée lors de l'ouverture d'un socket UDP. SendDnsQueryFailed 1508 Une erreur a été détectée lors de l'envoi de la requête au serveur DNS. BufferSizeTooSmall 1510 La taille de la mémoire tampon définie par GPL.Gc_udiDnsBufferSize est insuffisante. ReceiveDnsAnswerFailed 1512 Une erreur a été détectée lors de la réception des données du serveur DNS. InvalidDnsAnswer 1514 La réponse DNS du serveur n'est pas valide. InvalidNumberOfIPs 1516 La valeur du paramètre GPL.Gc_udiDnsNumberOfIPs ne peut pas être 0. DnsResolutionFailed 1518 Le serveur DNS n'a pas pu résoudre le nom de domaine demandé. InternalError 1525 Erreur interne DnsServerError 1526 La réponse du serveur DNS contient un code d'erreur. Consultez la sortie q_sResultMsg de FB_DnsClient. InvalidDnsTimeOut 1527 La valeur du paramètre GPL.Gc_timDnsTimeOut ne peut pas être 0. Utilisé par 32 FB_Dns_Client FB_TCPClient FB_TCPServer FB_UDPPeer FC_EtResultToString EIO0000002255 06/2017 Énumérations ET_State Présentation Type : Énumération Disponible à partir de la version : V1.0.4.0 Description L'énumération ET_State contient les valeurs possibles qui indiquent l'état des blocs fonction. Éléments de l'énumération Nom Valeur Description Idle 0 Etat par défaut, prêt pour l'opération Connect (FB_TCPClient) ou Open (FB_TCPServer et FB_UDPPeer). Connecting 10 Une tentative de connexion est en cours, mais aucun résultat n'a été renvoyé pour l'instant. Connected 11 La connexion a été établie et le transfert de données est possible. Shutdown 12 La connexion a été fermée par le site distant et aucune donnée supplémentaire ne peut être envoyée. Listening 20 Le serveur a démarré et attend des connexions entrantes. Opened 30 Le socket UDP est ouvert, mais n'est pas encore lié à un port local. Il est possible d'envoyer des messages ou de lier le socket à un port. Bound 31 Le socket UDP est lié à un port local. Il est possible d'envoyer et de recevoir des messages. Utilisé par FB_TCPClient FB_TCPServer FB_UDPPeer FC_EtStateToString EIO0000002255 06/2017 33 Énumérations 34 EIO0000002255 06/2017 SoMachine Structures EIO0000002255 06/2017 Chapitre 4 Structures Structures Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page ST_ClientConnection 36 ST_DefaultSocketOptionsTCPClient 37 ST_DefaultSocketOptionsTCPServer 38 ST_DefaultSocketOptionsUDPPeer 39 ST_DnsAdressInfo 40 EIO0000002255 06/2017 35 Structures ST_ClientConnection Présentation Type : Structure Disponible à partir de la version : V1.0.4.0 Hérite de : - Description La structure ST_ClientConnection contient des informations sur les clients connectés au serveur. Éléments de la structure Nom Type de données Description sClientIP STRING(15) Adresse IP du client connecté. uiClientPort UINT Numéro de port du client connecté. udiBytesAvailableToRead UDINT Nombre d'octets pouvant être lus à partir du client. uliTotalBytesReceived ULINT Nombre total d'octets reçus du client. uliTotalBytesSent ULINT Nombre total d'octets envoyés au client. Utilisé par 36 FB_TCPServer EIO0000002255 06/2017 Structures ST_DefaultSocketOptionsTCPClient Présentation Type : Structure Disponible à partir de la version : V1.0.4.0 Hérite de : - Description La structure ST_DefaultSocketOptionsTCPClient contient des informations sur les options de socket à définir automatiquement ou à modifier lorsqu'une nouvelle connexion est établie. Reportez-vous à la description de la propriété pour en savoir plus sur les différentes options de socket disponibles. Éléments de la structure Nom Type de données Valeur par défaut Description xModifyKeepAlive BOOL TRUE Si TRUE, définit l'option de socket KeepAlive sur la valeur xKeepAliveValue. xKeepAliveValue BOOL TRUE Valeur à appliquer à l'option de socket KeepAlive. xModifyNoDelay BOOL FALSE Si TRUE, définit l'option de socket NoDelay sur la valeur xNoDelayValue. xNoDelayValue BOOL TRUE Valeur à appliquer à l'option de socket NoDelay. xModifySendBufferSize BOOL FALSE Si TRUE, définit l'option de socket SendBufferSize sur la valeur udiSendBufferSizeValue. udiSendBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket SendBufferSize. xModifyReceiveBufferSize BOOL FALSE Si TRUE, définit l'option de socket ReceiveBufferSize sur la valeur udiReceiveBufferSizeValue. udiReceiveBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket ReceiveBufferSize. xModifyOutOfBandInline BOOL FALSE Si TRUE, définit l'option de socket OutOfBandInline sur la valeur xOutOfBandInlineValue. xOutOfBandInlineValue BOOL TRUE Valeur à appliquer à l'option de socket OutOfBandInline. EIO0000002255 06/2017 37 Structures Utilisé par FB_TCPClient ST_DefaultSocketOptionsTCPServer Présentation Type : Structure Disponible à partir de la version : V1.0.8.0 Hérite de : - Description La structure ST_DefaultSocketOptionsTCPServer contient des informations sur les options de socket à définir automatiquement ou à modifier lorsqu'une nouvelle instance de serveur est ouverte. Éléments de la structure Nom Type de Valeur par Description données défaut xModifyKeepAlive BOOL TRUE Si TRUE, définit l'option de socket KeepAlive sur la valeur xKeepAliveValue. xKeepAliveValue BOOL TRUE Valeur à appliquer à l'option de socket KeepAlive. xModifyReuseAddress BOOL TRUE Si TRUE, définit l'option de socket ReuseAddress sur la valeur xReuseAddressValue. xReuseAddressValue BOOL TRUE Valeur à appliquer à l'option de socket ReuseAddress. xModifySendBufferSize BOOL FALSE Si TRUE, définit l'option de socket SendBufferSize sur la valeur udiSendBufferSizeValue. udiSendBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket SendBufferSize. xModifyReceiveBufferSize BOOL FALSE Si TRUE, définit l'option de socket ReceiveBufferSize sur la valeur udiReceiveBufferSizeValue. udiReceiveBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket ReceiveBufferSize. Utilisé par 38 FB_TCPServer EIO0000002255 06/2017 Structures ST_DefaultSocketOptionsUDPPeer Présentation Type : Structure Disponible à partir de la version : V1.0.4.0 Hérite de : - Description La structure ST_DefaultSocketOptionsUDPPeer contient des informations sur les options de socket à définir automatiquement ou à modifier lorsqu'une nouvelle instance d'homologue est ouverte. Éléments de la structure Nom Type de données Valeur par défaut Description xModifySendBufferSize BOOL FALSE Si TRUE, définit l'option de socket SendBufferSize sur la valeur udiSendBufferSizeValue. udiSendBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket SendBufferSize. xModifyReceiveBufferSize BOOL FALSE Si TRUE, définit l'option de socket ReceiveBufferSize sur la valeur udiReceiveBufferSizeValue. udiReceiveBufferSizeValue UDINT 10 000 Valeur à appliquer à l'option de socket ReceiveBufferSize. xModifyBroadcast BOOL TRUE Si TRUE, définit l'option de socket Broadcast sur la valeur xBroadcastValue. xBroadcastValue BOOL TRUE Valeur à appliquer à l'option de socket Broadcast. xModifyMulticastDefaultInterface BOOL FALSE Si TRUE, définit l'option de socket MulticastDefaultInterface sur la valeur sMulticastDefaultInterfaceValue. sMulticastDefaultInterfaceValue STRING (15) '' (chaîne vide) Valeur à appliquer à l'option de socket MulticastDefaultInterface. EIO0000002255 06/2017 39 Structures Nom Type de données Valeur par défaut Description xModifyMulticastDefaultTimeToLive BOOL FALSE Si TRUE, définit l'option de socket MulticastDefaultTimeToLive sur la valeur siMulticastDefaultTimeToLiveValu e. siMulticastDefaultTimeToLiveValue SINT 16 Valeur à appliquer à l'option de socket MulticastDefaultTimeToLive. xModifyMulticastLoopback BOOL FALSE Si TRUE, définit l'option de socket MulticastLoopback sur la valeur xMulticastLoopbackValue. xMulticastLoopbackValue BOOL FALSE Valeur à appliquer à l'option de socket MulticastLoopback. Utilisé par FB_UDPPeer ST_DnsAdressInfo Présentation Type : Structure Disponible à partir de la version : V1.0.4.0 Hérite de : - Description La structure ST_DnsAddressInfo contient des informations sur le nom de domaine résolu, reçu du Serveur DNS. Éléments de la structure 40 Nom Type de données Description sIpAddress STRING(15) Adresse IP du nom de domaine résolu. dwTTL DWORD Durée de vie de l'adresse IP. (Durée en secondes de mise en cache de l'adresse IP.) EIO0000002255 06/2017 SoMachine Variables globales EIO0000002255 06/2017 Partie III Variables globales Variables globales Contenu de cette partie Cette partie contient les chapitres suivants : Chapitre Titre du chapitre Page 5 Liste des paramètres globaux 43 6 Liste de variables globales 45 EIO0000002255 06/2017 41 Variables globales 42 EIO0000002255 06/2017 SoMachine Liste des paramètres globaux EIO0000002255 06/2017 Chapitre 5 Liste des paramètres globaux Liste des paramètres globaux GPL Présentation Type : Paramètres globaux Disponible à partir de la version : V1.0.4.0 Description La liste de paramètres globaux (GPL) contient les paramètres globaux de la bibliothèque TcpUdpCommunication. Les paramètres sont modifiables dans la fenêtre info de la bibliothèque dans le Gestionnaire de bibliothèques. Paramètres globaux Variable Type de données Valeur Description Gc_uiTCPServerMaxConnections UINT 30 Nombre maximal de connexions pouvant être gérées par une instance de FB_TCPServer. Gc_uiTCPServerMaxBacklog UINT 5 Nombre maximal de connexions entrantes (mais pas encore acceptées) pouvant être gérées par une instance de FB_TCPServer. 2 000 Nombre maximal d'octets à envoyer à l'aide de la méthode SendToAll. Gc_udiTCPServerMaxSendToAllSize UDINT Gc_uiSocketManagementListSize UINT 200 Nombre maximal de sockets pris en charge par la bibliothèque (correspondant à la somme des sockets UDP, client TCP et serveur TCP). Gc_uiDnsBufferSize UINT 512 Taille (en octets) du tampon d'envoi et de réception utilisé par FB_DnsClient. NOTE : Toute diminution de la valeur par défaut peut générer le message d'erreur ET_Result.BufferSizeTooSmall. Gc_timDnsTimeOut TIME T#10s Délai d'attente de réponse de Serveur DNS Gc_uiDnsNumberOfIPs UINT 1 Nombre d'adresses IP à renvoyer de Serveur DNS. EIO0000002255 06/2017 43 Liste des paramètres globaux 44 EIO0000002255 06/2017 SoMachine Liste de variables globales EIO0000002255 06/2017 Chapitre 6 Liste de variables globales Liste de variables globales GVL Présentation Type : Variables globales Disponible à partir de la version : V1.0.4.0 Description La liste des variables globales contient les variables globales de la bibliothèque TcpUdpCommunication. Les variables globales sont automatiquement utilisées par les blocs fonction correspondants. Variables globales Variable Type de données G_stDefaultSocketOptionsTCPClie nt ST_DefaultSocketOptionsTCPClien Options de socket définies par t défaut en cas d'initialisation d'une connexion client TCP. G_stDefaultSocketOptionsTCPServ er ST_DefaultSocketOptionsTCPServ Options de socket définies par er défaut en cas d'initialisation d'un socket serveur TCP. G_stDefaultSocketOptionsUDPPeer ST_DefaultSocketOptionsUDPPeer Options de socket définies par défaut en cas d'initialisation d'un socket UDP. EIO0000002255 06/2017 Description 45 Liste de variables globales Exemple de code Cet exemple de code montre comment modifier l'option de socket par défaut pour l'implémentation du client TCP. Dans cet exemple, la taille par défaut du tampon de réception est définie à 10 000 octets. Cette valeur par défaut est appliquée à chaque nouvelle connexion tant que la variable xModifyReceiveBufferSize est TRUE. IF NOT xInitDone THEN // Permettre l'utilisation d'options de socket par défaut définies par l'utilisateur TCPUDP.GVL.G_stDefaultSocketOptionsTCPClient.xModifyReceiveBufferSiz e := TRUE; // Définir les valeurs des options de socket par défaut TCPUDP.GVL.G_stDefaultSocketOptionsTCPClient.udiReceiveBufferSizeVal ue := 10000; xInitDone := TRUE; END_IF // Connexion au serveur IF (fbTcpClient.State = TCPUDP.ET_State.Idle) AND xConnect THEN xConnectDone := fbTcpClient.Connect(i_sServerIP:= '192.168.100.11', i_uiServerPort:= 12345); IF NOT xConnectDone THEN ; // Traitement des erreurs END_IF xConnect :=FALSE; END_IF NOTE : Indépendamment des options de socket par défaut, il est possible de modifier les options de chaque socket ouvert. Pour modifier les options de socket, utilisez la Propriété correspondante de l'instance de bloc fonction concernée. 46 EIO0000002255 06/2017 SoMachine Unités d'organisation de programme (POU) EIO0000002255 06/2017 Partie IV Unités d'organisation de programme (POU) Unités d'organisation de programme (POU) Contenu de cette partie Cette partie contient les chapitres suivants : Chapitre Titre du chapitre 7 Blocs fonction 8 Fonctions EIO0000002255 06/2017 Page 49 129 47 Unités d'organisation de programme (POU) 48 EIO0000002255 06/2017 SoMachine Blocs fonction EIO0000002255 06/2017 Chapitre 7 Blocs fonction Blocs fonction Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 7.1 TCP 50 7.2 UDP 107 7.3 Utils 126 EIO0000002255 06/2017 49 Blocs fonction Sous-chapitre 7.1 TCP TCP Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 50 Page Communication TCP 52 FB_TCPClient 53 Méthodes de FB_TCPClient 55 FB_TCPClient - Méthode Close 56 FB_TCPClient - Méthode Connect 57 FB_TCPClient - Méthode GetBoundIPAddress 58 FB_TCPClient - Méthode GetBoundPort 59 FB_TCPClient - Méthode Peek 60 FB_TCPClient - Méthode Receive 61 FB_TCPClient - Méthode ReceiveOutOfBand 64 FB_TCPClient - Méthode ResetByteCounters 66 FB_TCPClient - Méthode ResetResult 66 FB_TCPClient - Méthode Send 67 FB_TCPClient - Méthode SendOutOfBand 71 FB_TCPClient - Méthode Shutdown 72 Propriétés de FB_TCPClient 73 FB_TCPServer 75 Méthodes de FB_TCPServer 77 FB_TCPServer - Méthode Accept 78 FB_TCPServer - Méthode CheckClients 79 FB_TCPServer - Méthode Close 80 FB_TCPServer - Méthode DisconnectAll 81 FB_TCPServer - Méthode DisconnectClient 82 FB_TCPServer - Méthode GetBoundIPAddress 83 FB_TCPServer - Méthode GetBoundPort 84 FB_TCPServer - Méthode Open 85 EIO0000002255 06/2017 Blocs fonction Sujet Page FB_TCPServer - Méthode PeekFromFirstAvailableClient 86 FB_TCPServer - Méthode PeekFromSpecificClient 88 FB_TCPServer - Méthode ReceiveFromFirstAvailableClient 90 FB_TCPServer - Méthode ReceiveFromSpecificClient 92 FB_TCPServer - Méthode ReceiveOutOfBandFromFirstAvailableClient 94 FB_TCPServer - Méthode ReceiveOutOfBandFromSpecificClient 96 FB_TCPServer - Méthode ResetByteCounters 98 FB_TCPServer - Méthode ResetResult 98 FB_TCPServer - Méthode SendOutOfBandToAll 99 FB_TCPServer - Méthode SendOutOfBandToSpecificClient 100 FB_TCPServer - Méthode SendToAll 102 FB_TCPServer - Méthode SendToSpecificClient 103 Propriétés de FB_TCPServer 105 EIO0000002255 06/2017 51 Blocs fonction Communication TCP Présentation Les connexions TCP assurent des transferts de données fiables et par flux entre plusieurs systèmes. L'un des système joue le rôle de serveur : il écoute les connexions entrantes sur un port TCP défini et les accepte. Les autres font office de clients et se connectent au serveur sur le port TCP indiqué. Le transfert de données peut s'effectuer dans les deux sens une fois la connexion établie. Le protocole TCP permet de s'assurer que les paquets sont transmis dans le bon ordre, et que les paquets éventuellement perdus sont détectés et renvoyés. 52 EIO0000002255 06/2017 Blocs fonction FB_TCPClient Présentation Type : Bloc fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Se connecter à un serveur TCP pour permettre l'échange de données Description fonctionnelle La méthode Connect est généralement appelée en premier. L'adresse IP du serveur et le port TCP auquel se connecter sont indiqués. L'étape suivante consiste à récupérer la valeur de la propriété State, de façon cyclique, jusqu'à ce qu'elle soit différente de Connecting. Un état autre que Connected signifie que la connexion n'a pas pu être établie. Vous pouvez alors déterminer la cause du problème d'après la valeur de la propriété Result. La méthode Close doit être appelée avant toute nouvelle tentative de connexion. Une fois à l'état Connected et la valeur de IsWritable sur TRUE, il est possible d'échanger des données à l'aide des méthodes Send et Receive. Les propriétés IsReadable et BytesAvailableToRead permettent de savoir si des données sont prêtes à être lues. Lorsque la connexion a été fermée par le site distant (comme indiqué par la valeur de la propriété PeerHasDisconnected), la valeur de IsReadable est TRUE, même si aucun octet ne peut être lu en réalité. EIO0000002255 06/2017 53 Blocs fonction Les méthodes Peek et Receive peuvent être utilisées de la même manière. La seule différence est que lors d'un appel de Peek, les données du tampon de réception de TCP sont conservées et peuvent être lues plusieurs fois. Cette méthode permet de déterminer si la quantité de données reçues est suffisante pour permettre le traitement, au cas où la longueur ne peut être calculée avant la mise à disposition effective des données et où, par conséquent, la valeur de BytesAvailableToRead ne permet pas de procéder au traitement. Si les données entrantes sont suffisantes pour pouvoir être traitées correctement, utilisez la méthode Receive pour supprimer les données du tampon de réception afin de laisser de la place aux nouvelles données entrantes. Pour détecter une déconnexion du site distant, consultez la valeur de la propriété PeerHasDisconnected. La valeur de State passe automatiquement à Shutdown lorsque la connexion est fermée par le serveur. Dans ce cas, les données non traitées restantes peuvent être lues, mais il est impossible d'envoyer de nouvelles données. Pour fermer une connexion comme il se doit, appelez la méthode Shutdown. La connexion passe alors à l'état Shutdown, ce qui permet aux données entrantes d'être lues. Par contre, il est impossible d'envoyer d'autres données. Lorsque les données entrantes ont été lues, traitées ou ne sont pas pertinentes, la méthode Close peut être appelée, mettant ainsi fin à la connexion. L'échec du traitement d'une méthode est indiqué dans la valeur de la propriété Result. La valeur de Result doit être vérifiée après chaque appel de méthode. La méthode ResetResult permet de réinitialiser le résultat sur Ok. NOTE : Toutes les méthodes sont bloquées tant que la valeur de la propriété Result est différente de Ok. Dans ce cas, un appel de méthode est annulé, sans modification des informations de la propriété Result. Interface Le bloc fonction n'a ni entrées, ni sorties. Il remplit sa fonction par le biais de méthodes et de propriétés. Vous n'avez pas à l'appeler directement dans l'application. 54 EIO0000002255 06/2017 Blocs fonction Performances Lorsque le traitement correct est conditionné par la mise à disposition d'une quantité suffisante de données, l'application peut suivre deux approches : La méthode Peek sert à copier les données disponibles dans un tampon vide fourni par l'application. Ces dernières peuvent ensuite être utilisées pour déterminer s'il y a suffisamment de données dans le tampon. Si tel est le cas, la méthode Receive permet de déplacer les données du tampon de réception du système vers l'application, où elles seront traitées. La méthode Receive est la seule appelée, toujours sur le même tampon fourni par l'application et en précisant le niveau de remplissage du tampon. Résultat : les données ne sont copiées qu'une fois. L'application peut évaluer si les données sont suffisantes et les traiter par un seul appel de méthode (car elles figurent déjà dans le tampon utilisé par l'application). La seconde approche est recommandée puisqu'elle évite de copier plusieurs fois les données en mémoire. Méthodes de FB_TCPClient Présentation Close (voir page 56) Connect (voir page 57) GetBoundIPAddress (voir page 58) GetBoundPort (voir page 59) Peek (voir page 60) Receive (voir page 61) ReceiveOutOfBand (voir page 64) ResetByteCounters (voir page 66) ResetResult (voir page 66) Send (voir page 67) SendOutOfBand (voir page 71) Shutdown (voir page 72) EIO0000002255 06/2017 55 Blocs fonction FB_TCPClient - Méthode Close Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Fermer le socket Description fonctionnelle Ferme le socket, en ignorant éventuellement les données du tampon de réception. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Transition d'état du client Etape 56 Description 1 Etat initial : Connected 2 Appel de fonction 3 Etat : Idle EIO0000002255 06/2017 Blocs fonction FB_TCPClient - Méthode Connect Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Etablir une connexion avec un serveur TCP Description fonctionnelle Etablit une connexion à un serveur TCP. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. NOTE : La valeur de retour de cette fonction indique uniquement si la connexion peut être initialisée avec succès. L'état de la connexion doit être vérifié en utilisant la propriété Etat. Transition d'état du client Etape Description 1 Etat initial : Idle 2 Appel de fonction 3 Etat : Connecting Interface Entrée Type de données Plage valide Description i_sServerIP STRING(15) - Adresse IP du serveur auquel se connecter. i_uiServerPort UINT 1…65 535 Port TCP du serveur auquel se connecter. EIO0000002255 06/2017 57 Blocs fonction FB_TCPClient - Méthode GetBoundIPAddress Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer l'adresse IP de liaison Description fonctionnelle Cette fonction permet d'obtenir l'adresse IP liée au socket. Si la valeur de retour est une chaîne vide (''), l'adresse IP ne peut pas être obtenue. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. 58 EIO0000002255 06/2017 Blocs fonction FB_TCPClient - Méthode GetBoundPort Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer le port de liaison Description fonctionnelle Cette fonction permet d'obtenir le port lié au socket. Si la valeur de retour est 0, le numéro de port ne peut pas être obtenu. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. EIO0000002255 06/2017 59 Blocs fonction FB_TCPClient - Méthode Peek Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception, sans les supprimer Description fonctionnelle Lit les données enregistrées dans le tampon de réception, sans les supprimer du tampon après leur lecture. La méthode Peek peut être utilisée si le traitement correct requiert la disponibilité d'une certaine quantité de données et si cette quantité peut être déterminée d'après une partie des données (un champ de longueur, par exemple). Dans ce cas, les données peuvent être copiées dans l'application par un appel de la méthode Receive. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER BY BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. 60 EIO0000002255 06/2017 Blocs fonction FB_TCPClient - Méthode Receive Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception et les supprimer Description fonctionnelle Lit les données enregistrées dans le tampon de réception et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon où écrire les données reçues. i_udiReceiveBufferSize UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. EIO0000002255 06/2017 61 Blocs fonction In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. Méthodes de réception Les méthodes de réception des données, fournies par les blocs fonction FB_TCPClient et FB_TCPServer dans cette bibliothèque fournissent le paramètre d'entrée/sortie iq_udiFillLevel. Ce paramètre détermine le décalage du tampon, donc là où les données doivent être écrites. A chaque exécution de la fonction, la valeur est mise à jour en ajoutant le nombre d'octets écrits à la valeur d'origine. Si des données sont reçues dans plusieurs paquets, mais doivent être stockées dans un tampon et traitées ultérieurement ensemble, la fonction de réception respective peut être appelée à nouveau sans modification du paramètre iq_udiFillLevel du dernier appel de fonction. La différence de la taille du tampon de réception (i_udiReceiveBufferSize) et le niveau de remplissage permettent de déterminer le nombre maximal d'octets à lire. 62 EIO0000002255 06/2017 Blocs fonction Exemple d'appel de fonction Les graphiques suivants représentent le contenu du tampon et la modification du paramètre iq_udiFillLevel pour deux appels de fonction, pour lesquels la fonction a été correctement exécutée à chaque fois. Etape Description 1 Avant le premier appel de la fonction, le pointeur est défini sur le premier index du tampon. Le niveau de remplissage est défini sur 0. Le paramètre i_udiReceiveBufferSize indique la taille absolue du tampon en octets. 2 A chaque appel de fonction, le tampon est effacé à partir du début du niveau de remplissage. Lors du premier appel de fonction dans cet exemple, les données disponibles ont été déplacées de la pile TCP vers le tampon. Le niveau de remplissage est mis à jour par la fonction et indique le nombre d'octets lus dans le tampon. Dès que la pile TCP a de l'espace mémoire disponible, le site distant en est informé et envoie le paquet de données suivant. Le second appel de fonction est exécuté sans modification des paramètres d'entrée. EIO0000002255 06/2017 Illustration 63 Blocs fonction Etape 3 Description Illustration Lors du second appel de fonction, les données disponibles sont déplacées à nouveau de la pile TCP vers le tampon. Le niveau de remplissage est mis à jour par la fonction. La valeur est alors égale à la valeur de i_udiReceiveBufferSize. Cela signifie que le tampon de réception est plein. Un autre appel de fonction serait annulé avec le résultat FillLevelOutOfRange. Enfin, si le tampon de réception est plein, vous devez traiter les données et mettre à jour le niveau de remplissage du tampon en conséquence. Limites de données par appel de fonction Selon le contrôleur, la quantité de données à déplacer dans un appel de fonction de l'une des méthodes Receive ou Send est limitée. Contrôleur Nombre d'octets qui peuvent être déplacés en même temps* M258, LMC058, M241, M251 2048 octets LMC078 > 10 000 000 octets (limité par la mémoire de l'application) *Valeur maximale de la différence entre la taille du tampon et le niveau de remplissage. FB_TCPClient - Méthode ReceiveOutOfBand Présentation 64 Type : Méthode Disponible à partir de la version : V1.0.4.0 EIO0000002255 06/2017 Blocs fonction Tâche Lire les données OutOfBand enregistrées dans le tampon de réception et les supprimer Description fonctionnelle Lit les données OutOfBand enregistrées dans le tampon de réception et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. EIO0000002255 06/2017 65 Blocs fonction FB_TCPClient - Méthode ResetByteCounters Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Remettre à zéro les compteurs du nombre total d'octets reçus et envoyés Description fonctionnelle Remet à zéro les compteurs du nombre total d'octets reçus et envoyés. Ne renvoie aucune valeur. FB_TCPClient - Méthode ResetResult Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Réinitialiser les valeurs de la propriété Result sur Ok Description fonctionnelle Réinitialise les valeurs de la propriété Result sur Ok. Ne renvoie aucune valeur. 66 EIO0000002255 06/2017 Blocs fonction FB_TCPClient - Méthode Send Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Transmettre des données à l'homologue Description fonctionnelle Transmet des données à l'homologue. Les données sont lues depuis le tampon fourni par l'application. Renvoie le nombre d'octets envoyés au site distant UDINT. Pour plus d'informations sur les méthodes d'envoi, consultez la section Méthode d'envoi (voir page 68). Interface Entrée Type de données Plage valide Description i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application, avant l'opération. Réglez ce niveau sur la quantité de données à envoyer. Comme la quantité de données correctement envoyées sera soustraite (et supprimée du tampon fourni par l'application), le niveau sera supérieur à 0 après l'opération si les données n'ont été envoyées que partiellement. EIO0000002255 06/2017 67 Blocs fonction Méthodes d'envoi Les méthodes d'envoi des données, fournies par les blocs fonction FB_TCPClient et FB_TCPServer dans cette bibliothèque fournissent le paramètre d'entrée/sortie iq_udiFillLevel. Ce paramètre détermine le nombre d'octets dans le tampon qui ne sont pas encore envoyés. A chaque exécution de la fonction, la valeur est mise à jour en retirant le nombre d'octets écrits de la valeur d'origine. De plus, les octets conservés dans le tampon sont copiés dans la zone supérieure de ce dernier (les données sont envoyées à partir de l'adresse de début i_pbySendBuffer). Si le niveau de remplissage est 0 après l'appel de fonction, toutes les données ont été envoyées et le contenu du tampon reste inchangé. Si des données n'ont pas été copiées complètement dans la pile TCP du contrôleur dans un appel de fonction, la fonction d'envoi respective peut être appelée à nouveau sans modification du paramètre iq_udiFillLevel du dernier appel de fonction et sans déplacement des données dans le tampon. Exemple d'appel de fonction Les graphiques suivants représentent le contenu du tampon et la modification du paramètre iq_udiFillLevel pour deux appels de fonction, pour lesquels la fonction a été correctement exécutée à chaque fois. Etape 1 68 Description Illustration Avant le premier appel de la fonction, le pointeur est défini sur le premier index du tampon. Le niveau de remplissage est défini sur le nombre d'octets à envoyer. Dans l'exemple représenté, le tampon de la pile TCP est vide et sa taille est inférieure au tampon d'envoi de l'application. EIO0000002255 06/2017 Blocs fonction Etape Description 2 Lors du premier appel de fonction, la quantité maximale de données (taille de la pile TCP) a été copiée du tampon d'envoi de l'application dans la pile TCP. Les données restant dans le tampon d'envoi de l'application ont été copiées par la fonction dans la zone supérieure du tampon. Le paramètre iq_udiFillLevel a été mis à jour par la fonction et indique le nombre d'octets qui n'ont pas pu être envoyés. Le second appel de fonction est exécuté sans modification des paramètres. Pendant ce temps, la pile TCP a envoyé les données au site distant, libérant de l'espace dans son tampon. 3 Lors du deuxième appel de fonction, les données restant dans le tampon d'envoi de l'application ont été copiées dans la pile TCP. Le paramètre iq_udiFillLevel a été mis à jour par la fonction et indique 0. Le contenu du tampon d'envoi reste inchangé. Un autre appel de fonction serait annulé avec le résultat FillLevelOutOfRange. Illustration Même si la fonction vous permet d'envoyer des données dans différents appels de fonction, veillez bien au rapport équilibré entre : Tampon d'envoi de l'application et tampon d'envoi du socket TCP Tampon d'envoi local et tampon d'envoi du site distant. Intervalle d'envoi de l'application et temps de traitement du site distant. Pour modifier la taille du tampon d'envoi, utilisez les propriétés correspondantes du bloc fonction ou réglez les paramètres par défaut à l'aide des variables globales dans TCPUDP.GVL (consultez la section GVL (voir page 45)). EIO0000002255 06/2017 69 Blocs fonction Limites de données par appel de fonction Selon le contrôleur, la quantité de données à copier dans un appel de fonction de l'une des deux méthodes (Receive ou Send) est limitée. Contrôleur Nombre d'octets qui peuvent être copiés en même temps* M258, LMC058, M241, M251 2048 octets LMC078 > 10 000 000 octets (limité par la mémoire de l'application) *Valeur maximale de la différence entre la taille du tampon et le niveau de remplissage. Cas particulier - Aucune donnée envoyée Si la valeur de retour de la méthode indique 0, aucune donnée n'est envoyée et le résultat du bloc fonction associé est différent de Ok. Vérifiez le résultat avec la méthode Result de l'instance du bloc fonction, après chaque appel de fonction. Si le résultat indique BufferFull, vous devez le réinitialiser et essayer d'envoyer les données à nouveau lors du cycle de programme suivant, si toutes n'ont pas été envoyées. Si le résultat BufferFull est identique, optimisez le paramètre d'application : Augmentez la taille du tampon du socket Augmentez la taille du tampon de réception du socket sur le site distant Adaptez le cycle d'envoi du temps au temps de traitement du site distant. 70 EIO0000002255 06/2017 Blocs fonction FB_TCPClient - Méthode SendOutOfBand Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Transmettre des données à l'homologue, au format OutOfBand Description fonctionnelle Transmet des données à l'homologue, au format OutOfBand. Les données sont lues depuis le tampon fourni par l'application. Renvoie le nombre d'octets envoyés au site distant UDINT. Pour plus d'informations sur les méthodes d'envoi, consultez la section Méthode d'envoi (voir page 68). Interface Entrée Type de données Plage valide Description i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1 Niveau de remplissage du tampon fourni par l'application, avant l'opération. Réglez cette valeur sur 1. Cette valeur sera conservée après l'opération si les données n'ont été envoyées que partiellement. EIO0000002255 06/2017 71 Blocs fonction FB_TCPClient - Méthode Shutdown Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Envoyer une demande de fin de connexion au serveur Description fonctionnelle Envoie une demande de fin de connexion au serveur. Les données entrantes peuvent encore être lues, mais il est impossible d'envoyer de nouvelles données. Une fois les données entrantes reçues et traitées, appelez la méthode Close. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. 72 EIO0000002255 06/2017 Blocs fonction Propriétés de FB_TCPClient Présentation Nom Type de données Accès Description BytesAvailableToRead UDINT Lecture Indique le nombre d'octets dans le tampon de réception qui peuvent être lus à l'aide de la méthode Receive. (Plage : 0 à 2 147 483 647) IsReadable BOOL Lecture Indique que des données pas encore traitées par la méthode Receive ont été reçues. IsWritable BOOL Lecture Indique que l'état de la connexion permet l'envoi de données au serveur. PeerHasDisconnected BOOL Lecture Indique que la connexion a été fermée par le site distant. Dans ce cas, la méthode Shutdown est automatiquement appelée et l'état passe à Shutdown. Result ET_Result Lecture Indique le résultat du dernier appel de méthode. Si le résultat est différent de Ok, la valeur n'est pas remplacée et aucune méthode n'est appelée. State ET_State Lecture Indique l'état du socket. TotalBytesReceived ULINT Lecture Indique le nombre total d'octets reçus. (Plage : 1 à 2641) TotalBytesSent ULINT Lecture Indique le nombre total d'octets envoyés. (Plage : 1 à 264-1) SockOpt_KeepAlive BOOL Lecture/ écriture Si la valeur est TRUE, la pile TCP doit envoyer régulièrement des paquets vides pour vérifier que le site distant est joignable. Si ce n'est plus le cas, la connexion passe à l'état Shutdown. NOTE : Dans la plupart des cas, définissez cette option de façon à détecter si le site distant est déconnecté (mise hors tension ou câble débranché). NOTE : Une fois désactivée pour le serveur, l'option de socket KeepAlive ne peut pas être activée pour les clients connectés. SockOpt_NoDelay BOOL Lecture/ écriture Si TRUE, la pile TCP doit envoyer les données sans attendre un paquet complet. Cette option peut réduire le débit, mais elle améliore la latence, un critère important en environnement industriel. SockOpt_OutOfBandInline BOOL Lecture/ écriture Si TRUE, la pile TCP doit envoyer les données OutOfBand avec le flux de données standard. EIO0000002255 06/2017 73 Blocs fonction Nom Type de données Accès Description SockOpt_ReceiveBufferSize UDINT Lecture/ écriture Permet de définir ou d'obtenir la taille du tampon de réception de la pile. Cette valeur doit toujours être supérieure à la quantité de données reçues pendant un transfert, pour éviter de perdre des données. (Plage : 1 à 2 147 483 647) SockOpt_SendBufferSize UDINT Lecture/ écriture Permet de définir ou d'obtenir la taille du tampon d'envoi de la pile. Cette valeur doit toujours être supérieure à la quantité de données envoyées pendant un transfert. (Plage : 1 à 2 147 483 647) 74 EIO0000002255 06/2017 Blocs fonction FB_TCPServer Présentation Type : Bloc fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Le serveur TCP écoute et traite les connexions client entrantes sur un port déterminé. Dès qu'une connexion a été acceptée, il est possible de recevoir des données de la part des clients, et d'en envoyer vers un client spécifique ou vers tous les clients. Description fonctionnelle La méthode Open est généralement appelée en premier. Un numéro de port TCP et, éventuellement, l'adresse IP d'une interface sur laquelle écouter sont indiqués. Si l'opération aboutit, le serveur est prêt à accepter des connexions entrantes, comme indiqué par la propriété IsNewConnectionAvailable. Cette propriété doit être vérifiée de façon cyclique par l'application. Si sa valeur est TRUE, la méthode Accept doit être appelée. L'adresse IP et le port d'origine de la connexion sont alors renvoyés. À l'aide d'un programme, vous pouvez ensuite décider de maintenir ou non la connexion. La propriété NumberOfConnectedClients permet de vérifier le nombre de clients connectés. Pour savoir si un client a envoyé des données au serveur et si celles-ci peuvent être lues, utilisez les propriétés BytesAvailableToReadFirstAvailableClient et BytesAvailableToReadTotal. Cette dernière correspond à la somme des données disponibles provenant des clients, tandis que la première renvoie seulement le nombre d'octets à lire à partir du premier client contenant des données disponibles. Avec les méthodes ReceiveFromFirstAvailableClient et PeekFromFirstAvailableClient, il est possible de lire les données de ce client sans connaître son adresse IP ni son port. Tant que la méthode n'est pas appelée, l'application ne permet pas de savoir à partir de quel client les données sont lues. L'adresse IP et le port du client sont donc fournies comme sorties des méthodes. Sauf mention contraire dans la présente description, le principe de fonctionnement des méthodes FB_TCPServer est identique à celui de FB_TCPClient (voir page 53). EIO0000002255 06/2017 75 Blocs fonction La méthode SendToSpecificClient peut être utilisée pour répondre directement à un client après réception des données via la méthode ReceiveFromFirstAvailableClient. Dans ce cas, l'application doit fournir l'adresse IP et le port d'un client connecté au serveur TCP. Le principe est ensuite le même qu'avec la méthode Send de FB_TCPClient. Pour envoyer des données à tous les clients connectés, utilisez la méthode SendToAll. Avec la méthode SendToAll, une erreur du client met fin à la transmission vers ce dernier et le nombre d'octets envoyés est retourné. Par la suite, vous pouvez déterminer si tous les octets ont été envoyés à l'ensemble des clients en comparant la somme des octets envoyés et la quantité de données à envoyer multipliée par le nombre de clients. Lorsque le serveur TCP est à l'état Listening, l'instance du bloc fonction ou la méthode CheckClients doit être appelée de façon cyclique pour déterminer si un client a fermé la connexion. Il est aussi possible de récupérer la propriété NumberOfConnectedClients. En cas de déconnexion par un client et s'il n'y a plus aucune donnée à lire de cette connexion client, celleci est fermée et libérée pour permettre une nouvelle connexion entrante. Sinon, la connexion reste disponible jusqu'à ce que toutes les données aient été lues ou que la méthode DisconnectClient soit appelée pour la connexion. Les données pas encore traitées sont alors ignorées. L'échec du traitement d'une méthode est indiqué dans la valeur de la propriété Result. La valeur de Result doit être vérifiée après chaque appel de méthode. La méthode ResetResult permet de réinitialiser le résultat sur Ok. NOTE : Toutes les méthodes sont bloquées tant que la valeur de la propriété Result est différente de Ok. Dans ce cas, un appel de méthode est annulé, sans modification des informations de la propriété Result. Interface Le bloc fonction n'a ni entrées, ni sorties. Il remplit sa fonction par le biais de méthodes et de propriétés. Par contre, il doit être appelé à chaque cycle lorsque l'état Listening est activé, de manière à détecter d'éventuelles déconnexions des clients connectés. Une autre solution consiste à appeler la méthode CheckClients de façon cyclique ou à récupérer la valeur de propriété NumberOfConnectedClients. Dans les trois cas, le principe revient à vérifier que des clients sont encore connectés ou ont fermé la connexion. 76 EIO0000002255 06/2017 Blocs fonction Méthodes de FB_TCPServer Présentation Accept (voir page 78) CheckClients (voir page 79) Close (voir page 80) DisconnectAll (voir page 81) DisconnectClient (voir page 82) GetBoundIPAddress (voir page 83) GetBoundPort (voir page 84) Open (voir page 85) PeekFromFirstAvailableClient (voir page 86) PeekFromSpecificClient (voir page 88) ReceiveFromFirstAvailableClient (voir page 90) ReceiveFromSpecificClient (voir page 92) ReceiveOutOfBandFromFirstAvailableClient (voir page 94) ReceiveOutOfBandFromSpecificClient (voir page 96) ResetByteCounters (voir page 98) ResetResult (voir page 98) SendOutOfBandToAll (voir page 99) SendOutOfBandToSpecificClient (voir page 100) SendToAll (voir page 102) SendToSpecificClient (voir page 103) EIO0000002255 06/2017 77 Blocs fonction FB_TCPServer - Méthode Accept Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Accepter une connexion entrante, la rendant ainsi disponible pour le transfert de données Description fonctionnelle Accepte une connexion entrante, ce qui la rend disponible pour le transfert de données. L'adresse IP de la source et le port d'origine de la connexion sont disponibles comme sorties. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Gestion du backlog La pile TCP accepte immédiatement les connexions entrantes et les conserve dans le backlog. Pour le client, il s'agit d'une connexion normale et il peut envoyer des données au serveur. Par conséquent, il est possible d'accepter une connexion qui a été déjà fermée par le client. Les données reçues de ce client sont encore disponibles tant que les données n'ont pas été lues en utilisant l'une des méthodes de réception, la connexion demeure enregistrée dans la propriété ConnectedClients. Dès que toutes les données d'une connexion cliente ont été lues à l'aide d'une méthode Receive, cette connexion disparaît de la liste fournie par la propriété ConnectedClients. Le nombre de connexions conservées par le backlog peut être défini dans le GPL de cette bibliothèque avec le paramètre Gc_uiTCPServerMaxBacklog (voir Variables globales (voir page 41) 78 EIO0000002255 06/2017 Blocs fonction Interface Sortie Type de données Plage valide Description q_sClientIP STRING(15) - Adresse IP du client acceptée, codée sous forme de chaîne. q_dwClientIP DWORD - Adresse IP du client sous la forme DWORD. Chaque octet représente un chiffre de l'adresse IPv4. q_uiClientPort UINT 1…65 535 Port source à partir duquel le client se connecte. FB_TCPServer - Méthode CheckClients Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Vérifier les connexions client en cas de déconnexions déclenchées par un client Description fonctionnelle Vérifie les connexions client en cas de déconnexions déclenchées par un client et ferme la connexion s'il n'y a plus aucune donnée non lue sur le client déconnecté. Ne renvoie aucune valeur. EIO0000002255 06/2017 79 Blocs fonction FB_TCPServer - Méthode Close Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Déconnecter les clients et fermer le socket serveur Description fonctionnelle Déconnecte les clients et ferme le socket serveur, en ignorant éventuellement les données des tampons de réception du client. Le serveur n'écoute plus les nouvelles connexions. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Transition d'état du client Etape 80 Description 1 Etat initial : Listening 2 Appel de fonction 3 Etat : Idle EIO0000002255 06/2017 Blocs fonction FB_TCPServer - Méthode DisconnectAll Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Déconnecter les clients connectés Description fonctionnelle Déconnecte les clients connectés et continue d'écouter les nouvelles connexions entrantes. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. EIO0000002255 06/2017 81 Blocs fonction FB_TCPServer - Méthode DisconnectClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Déconnecter un client spécifique Description fonctionnelle Déconnecte un client particulier. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client à déconnecter. i_uiClientPort UINT 1…65 535 Port source du client à déconnecter. 82 EIO0000002255 06/2017 Blocs fonction FB_TCPServer - Méthode GetBoundIPAddress Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer l'adresse IP de liaison Description fonctionnelle Cette fonction permet d'obtenir l'adresse IP liée au socket. Si la valeur de retour est une chaîne vide (''), l'adresse IP ne peut pas être obtenue. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. EIO0000002255 06/2017 83 Blocs fonction FB_TCPServer - Méthode GetBoundPort Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer le port de liaison Description fonctionnelle Cette fonction permet d'obtenir le port lié au socket. Si la valeur de retour est 0, le numéro de port ne peut pas être obtenu. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. 84 EIO0000002255 06/2017 Blocs fonction FB_TCPServer - Méthode Open Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Ouvrir le socket serveur Description fonctionnelle Ouvre le socket serveur et démarre l'écoute des connexions entrantes. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Transition d'état du serveur Etape Description 1 Etat initial : Idle 2 Appel de fonction 3 Etat : Listening Interface Entrée Type de données Plage valide Description i_sInterfaceIP STRING(15) - Adresse IP de l'interface à lier. Si vide ou égale à 0.0.0.0, le serveur est disponible sur toutes les interfaces. i_uiServerPort UINT 1…65 535 Port TCP sur lequel écouter. EIO0000002255 06/2017 85 Blocs fonction FB_TCPServer - Méthode PeekFromFirstAvailableClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues Description fonctionnelle Lit les données enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues, sans les supprimer du tampon après leur lecture. La méthode Peek peut être utilisée si le traitement correct requiert la disponibilité d'une certaine quantité de données et si cette quantité peut être déterminée d'après une partie des données (un champ de longueur, par exemple). Dans ce cas, les données peuvent être copiées dans l'application par un appel de la méthode Receive. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. 86 EIO0000002255 06/2017 Blocs fonction Sortie Type de données Plage valide Description q_sClientIP STRING(15) - Adresse IP du client d'où proviennent les données. q_dwClientIP DWORD - Adresse IP du client sous la forme DWORD. Chaque octet représente un chiffre de l'adresse IPv4. q_uiClientPort UINT - Port source d'où proviennent les données. EIO0000002255 06/2017 87 Blocs fonction FB_TCPServer - Méthode PeekFromSpecificClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception du client identifié par une adresse IP et un port source Description fonctionnelle Lit les données enregistrées dans le tampon de réception du client identifié par l'adresse IP et le port source, sans les supprimer du tampon après leur lecture. La méthode Peek peut être utilisée si le traitement correct requiert la disponibilité d'une certaine quantité de données et si cette quantité peut être déterminée d'après une partie des données (un champ de longueur, par exemple). Dans ce cas, les données peuvent être copiées dans l'application par un appel de la méthode Receive. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client connecté à partir duquel les données doivent être lues. i_uiClientPort UINT 1…65 535 Port source du client connecté à partir duquel les données doivent être lues. i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. 88 EIO0000002255 06/2017 Blocs fonction Entrée Type de données Plage valide Description i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. EIO0000002255 06/2017 89 Blocs fonction FB_TCPServer - Méthode ReceiveFromFirstAvailableClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues et les supprimer du tampon si aucune erreur n'a été détectée pendant leur lecture Description fonctionnelle Lit les données enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. 90 EIO0000002255 06/2017 Blocs fonction In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. Sortie Type de données Plage valide Description q_sClientIP STRING(15) - Adresse IP du client d'où proviennent les données. q_dwClientIP DWORD - Adresse IP du client sous la forme DWORD. Chaque octet représente un chiffre de l'adresse IPv4. q_uiClientPort UINT - Port source d'où proviennent les données. EIO0000002255 06/2017 91 Blocs fonction FB_TCPServer - Méthode ReceiveFromSpecificClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception du client identifié par une adresse IP et un port source et les supprimer du tampon si aucune erreur n'a été détectée pendant leur lecture Description fonctionnelle Lit les données enregistrées dans le tampon de réception du client identifié par une adresse IP et un port source et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client connecté à partir duquel les données doivent être lues. i_uiClientPort UINT 1…65 535 Port source du client connecté à partir duquel les données doivent être lues. i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. 92 EIO0000002255 06/2017 Blocs fonction Entrée Type de données Plage valide Description i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. EIO0000002255 06/2017 93 Blocs fonction FB_TCPServer - Méthode ReceiveOutOfBandFromFirstAvailableClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données OutOfBand enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues Description fonctionnelle Lit les données OutOfBand enregistrées dans le tampon de réception du premier client qui contient des données pouvant être lues et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. 94 EIO0000002255 06/2017 Blocs fonction In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. Sortie Type de données Plage valide Description q_sClientIP STRING(15) - Adresse IP du client d'où proviennent les données. q_dwClientIP DWORD - Adresse IP du client sous la forme DWORD. Chaque octet représente un chiffre de l'adresse IPv4. q_uiClientPort UINT - Port source d'où proviennent les données. EIO0000002255 06/2017 95 Blocs fonction FB_TCPServer - Méthode ReceiveOutOfBandFromSpecificClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données OutOfBand enregistrées dans le tampon de réception du client identifié par une adresse IP et un port source Description fonctionnelle Lit les données OutOfBand enregistrées dans le tampon de réception du client identifié par une adresse IP et un port source et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Pour plus d'informations sur les méthodes de réception, consultez la section Méthode de réception (voir page 62). Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client connecté à partir duquel les données doivent être lues. i_uiClientPort UINT 1…65 535 Port source du client connecté à partir duquel les données doivent être lues. i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. 96 EIO0000002255 06/2017 Blocs fonction Entrée Type de données Plage valide Description i_udiReceiveBufferSi ze UDINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF en association avec le tampon cible pour déterminer la valeur de i_udiReceiveBufferSize. In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application avant l'opération (les données sont écrites à partir de ce point) et niveau de remplissage après l'écriture des octets reçus dans le tampon. EIO0000002255 06/2017 97 Blocs fonction FB_TCPServer - Méthode ResetByteCounters Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Remettre à zéro les compteurs du nombre total d'octets reçus et envoyés Description fonctionnelle Remet à zéro les compteurs du nombre total d'octets reçus et envoyés. Ne renvoie aucune valeur. FB_TCPServer - Méthode ResetResult Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Réinitialiser les valeurs de la propriété Result sur Ok Description fonctionnelle Réinitialise les valeurs de la propriété Result sur Ok. Ne renvoie aucune valeur. 98 EIO0000002255 06/2017 Blocs fonction FB_TCPServer - Méthode SendOutOfBandToAll Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Envoyer des données OutOfBand aux clients connectés Description fonctionnelle Envoie des données OutOfBand aux clients connectés. Les erreurs éventuellement détectées au niveau des clients sont ignorées. Renvoie la somme des octets envoyés, au format UDINT. Si celle-ci est égale au nombre de clients connectés multiplié par la quantité de données à envoyer, cela signifie que les données ont bien été transmises aux clients. NOTE : Pour savoir si une erreur a été détectée au niveau d'un client, utilisez ensuite la méthode SendOutOfBandToSpecificClient. Vous pouvez récupérer le tableau des clients connectés avec la propriété ConnectedClients et transmettre le message à chacun des clients connectés. Interface Entrée Type de données Plage valide Description i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. i_udiNumBytesToSend UDINT 1 Nombre d'octets à envoyer dans le tampon. Réglez cette valeur sur 1. EIO0000002255 06/2017 99 Blocs fonction FB_TCPServer - Méthode SendOutOfBandToSpecificClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Envoyer des données OutOfBand seulement à un client particulier, identifié par une adresse IP et un port Description fonctionnelle Envoie des données OutOfBand seulement à un client particulier, identifié par une adresse IP et un port. Renvoie le nombre d'octets envoyés au site distant UDINT. Pour plus d'informations sur les méthodes d'envoi, consultez la section Méthode d'envoi (voir page 68). Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client connecté auquel les données doivent être envoyées. i_uiClientPort UINT 1…65 535 Port source du client connecté auquel les données doivent être envoyées. i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. 100 EIO0000002255 06/2017 Blocs fonction In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1 Niveau de remplissage du tampon fourni par l'application, avant l'opération. Réglez cette valeur sur 1. Cette valeur sera conservée après l'opération si les données n'ont été envoyées que partiellement. EIO0000002255 06/2017 101 Blocs fonction FB_TCPServer - Méthode SendToAll Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Envoyer des données aux clients connectés Description fonctionnelle Envoie des données aux clients connectés. Les erreurs éventuellement détectées au niveau des clients sont ignorées. Renvoie la somme des octets envoyés, au format UDINT. Si celle-ci est égale au nombre de clients connectés multiplié par la quantité de données à envoyer, cela signifie que les données ont bien été transmises aux clients. NOTE : Pour savoir si une erreur a été détectée au niveau d'un client, utilisez ensuite la méthode SendToSpecificClient. Vous pouvez récupérer le tableau des clients connectés avec la propriété ConnectedClients et transmettre le message à chacun des clients connectés. Interface Entrée Type de données Plage valide Description i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. i_udiNumBytesToSend UDINT 1…2 147 483 647 Nombre d'octets à envoyer dans le tampon. 102 EIO0000002255 06/2017 Blocs fonction FB_TCPServer - Méthode SendToSpecificClient Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Envoyer des données seulement à un client particulier, identifié par une adresse IP et un port Description fonctionnelle Envoie des données seulement à un client particulier, identifié par une adresse IP et un port. Renvoie le nombre d'octets envoyés au site distant UDINT. Pour plus d'informations sur les méthodes d'envoi, consultez la section Méthode d'envoi (voir page 68). Interface Entrée Type de données Plage valide Description i_sClientIP STRING(15) - Adresse IP du client connecté auquel les données doivent être envoyées. i_uiClientPort UINT 1…65 535 Port source du client connecté auquel les données doivent être envoyées. i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. EIO0000002255 06/2017 103 Blocs fonction In_Out Type de données Plage valide Description iq_udiFillLevel UDINT 1…2 147 483 647 Niveau de remplissage du tampon fourni par l'application, avant l'opération. Réglez ce niveau sur la quantité de données à envoyer. Comme la quantité de données correctement envoyées sera soustraite (et supprimée du tampon fourni par l'application), le niveau sera supérieur à 0 après l'opération si les données n'ont été envoyées que partiellement. 104 EIO0000002255 06/2017 Blocs fonction Propriétés de FB_TCPServer Présentation Nom Type de données Accès Description BytesAvailableToReadFirstA vailableClient UDINT Lecture Indique le nombre d'octets pouvant être lus sur le premier client contenant des données. (Plage : 0 à 2 147 483 647) BytesAvailableToReadTotal UDINT Lecture Indique le nombre total (la somme) des octets pouvant être lus sur les clients connectés. (Plage : 0 à 2 147 483 647) ConnectedClients ARRAY [1..GPL. Lecture Gc_uiTCPServerM axConnections] OF ST_ClientConnecti on Renvoie un tableau contenant des informations sur les clients connectés. Consultez ST_ClientConnection (voir page 36). IsDataAvailable BOOL Lecture Indique si des données peuvent être lues sur un client au moins. IsNewConnectionAvailable BOOL Lecture Indique si une nouvelle connexion entrante est en attente d'acceptation. NumberOfConnectedClients UINT Lecture Renvoie le nombre de clients connectés (y compris ceux déconnectés, mais qui disposent de données à lire). (Plage : 0 à GPL.Gc_uiTCPServerMaxConnections) Result ET_Result Lecture Indique le résultat du dernier appel de méthode. Si le résultat est différent de Ok, la valeur n'est pas remplacée et aucune méthode n'est appelée. State ET_State Lecture Indique l'état du socket. TotalBytesReceived ULINT Lecture Indique le nombre total d'octets reçus. (Plage : 1 à 264-1) TotalBytesSent ULINT Lecture Indique le nombre total d'octets envoyés. (Plage : 1 à 264-1) EIO0000002255 06/2017 105 Blocs fonction Nom Type de données Accès SockOpt_KeepAlive BOOL Lecture/écrit Si la valeur est TRUE, la pile TCP doit ure envoyer régulièrement des paquets vides pour vérifier que le site distant est joignable. Si ce n'est plus le cas, la connexion passe à l'état Shutdown. Description NOTE : Dans la plupart des cas, définissez cette option de façon à détecter si le site distant est déconnecté (mise hors tension ou câble débranché). NOTE : Une fois désactivée pour le serveur, l'option de socket KeepAlive ne peut pas être activée pour les clients connectés. SockOpt_ReuseAddress BOOL Lecture/écrit Si TRUE, permet d'ouvrir un serveur même ure si le port est toujours lié mais n'est pas utilisé activement par une autre ressource. SockOpt_ReceiveBufferSize UDINT Lecture/écrit Permet de définir ou d'obtenir la taille du ure tampon de réception de la pile. Cette valeur doit toujours être supérieure à la quantité de données reçues pendant un transfert, pour éviter de perdre des données. (Plage : 1 à 2 147 483 647) SockOpt_SendBufferSize UDINT Lecture/écrit Permet de définir ou d'obtenir la taille du ure tampon d'envoi de la pile. Cette valeur doit toujours être supérieure à la quantité de données envoyées pendant un transfert. (Plage : 1 à 2 147 483 647) 106 EIO0000002255 06/2017 Blocs fonction Sous-chapitre 7.2 UDP UDP Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Communication UDP 108 FB_UDPPeer 109 Méthodes de FB_UDPPeer 111 FB_UDPPeer - Méthode Bind 112 FB_UDPPeer - Méthode Close 114 FB_UDPPeer - Méthode GetBoundIPAddress 115 FB_UDPPeer - Méthode GetBoundPort 115 FB_UDPPeer - Méthode JoinMulticastGroup 117 FB_UDPPeer - Méthode LeaveMulticastGroup 118 FB_UDPPeer - Méthode Open 119 FB_UDPPeer - Méthode ReceiveFrom 120 FB_UDPPeer - Méthode ResetByteCounters 122 FB_UDPPeer - Méthode ResetResult 122 FB_UDPPeer - Méthode SendTo 123 Propriétés de FB_UDPPeer 124 EIO0000002255 06/2017 107 Blocs fonction Communication UDP Présentation Le protocole UDP permet l'échange de données de type message entre deux systèmes ou plus, qui sont considérés comme des homologues. Les exigences en termes de connexion sont moindres. Un système peut envoyer un message à un autre homologue (monodiffusion), à plusieurs homologues (multidiffusion) ou aux homologues du même sous-réseau (diffusion). NOTE : Aucune connexion de bout en bout dédiée n'est configurée avec le protocole UDP. Les homologues communiquent en transmettant des informations de manière unidirectionnelle, d'une source vers une destination. Il est impossible de vérifier si un message a effectivement atteint l'homologue de destination ou si des informations ont été perdues en chemin. Le protocole UDP ne prévoit pas d'options d'acquittement, de retransmission ni de timeout. 108 EIO0000002255 06/2017 Blocs fonction FB_UDPPeer Présentation Type : Bloc fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Désigner un point de sortie pour l'envoi et la réception de messages via le protocole UDP Description fonctionnelle La méthode Open est généralement appelée en premier. Si elle aboutit, des messages peuvent être envoyés. Si vous prévoyez d'écouter un port particulier, la méthode Bind doit être utilisée pour lier le socket à ce port et éventuellement à une interface Ethernet particulière. Si les messages doivent être reçus sur toutes les interfaces Ethernet disponibles et si l'interface sortante doit être utilisée automatiquement, définissez l'entrée d'interface de la méthode sur une chaîne vide ou sur 0.0.0.0. Pour envoyer des données à d'autres homologues, utilisez la méthode Send. Lors du premier envoi à partir d'un socket non lié, celui-ci est automatiquement lié, ce qui permet ensuite l'utilisation de la méthode Receive. L'adresse IP et le port liés au socket peuvent être demandés à l'aide des propriétés BoundIPAddress et BoundPort (si cette possibilité est prise en charge lors de l'exécution). Les propriétés IsReadable et BytesAvailableToRead permettent de savoir si des données sont prêtes à être lues. Pour les deux méthodes Send et Receive, l'application doit fournir un tampon contenant les données reçues via la méthode Received et les données à envoyer pour Send. Aucune opération préalable n'est nécessaire pour envoyer ou recevoir des diffusions. Un groupe de multidiffusion ne peut recevoir des messages de multidiffusion que si vous le reliez. Cela explique pourquoi les méthodes JoinMulticastGroup et LeaveMulticastGroup sont fournies. EIO0000002255 06/2017 109 Blocs fonction Si vous prévoyez d'envoyer des paquets de multi-diffusion UDP à l'aide du bloc fonction FB_UDPPeer, attribuez à la propriété SockOpt_MulticastDefaultInterface l'adresse IP de l'interface depuis laquelle envoyer des paquets. Ceci doit être effectué après l'appel de la méthode Open et avant le premier appel de la méthode SendTo. NOTE : En définissant l'interface par défaut pour les packages multi-diffusion avec la valeur de la propriété SockOpt_MulticastDefaultInterface, vous évitez que les packages soient envoyés à tout réseau disponible. La méthode Close peut servir à bloquer tout nouveau transfert de données et à fermer le socket. L'échec du traitement d'une méthode est indiqué dans la valeur de la propriété Result. La valeur de Result doit être vérifiée après chaque appel de méthode. La méthode ResetResult permet de réinitialiser le résultat sur Ok. NOTE : Toutes les méthodes sont bloquées tant que la valeur de la propriété Result est différente de Ok. Dans ce cas, un appel de méthode est annulé, sans modification des informations de la propriété Result. Interface Le bloc fonction n'a ni entrées, ni sorties. Il remplit sa fonction par le biais de méthodes et de propriétés. Vous n'avez pas à l'appeler directement dans l'application. 110 EIO0000002255 06/2017 Blocs fonction Méthodes de FB_UDPPeer Présentation Bind (voir page 112) Close (voir page 114) GetBoundIPAddress (voir page 115) GetBoundPort (voir page 115) JoinMulticastGroup (voir page 117) LeaveMulticastGroup (voir page 118) Open (voir page 119) ReceiveFrom (voir page 120) ResetByteCounters (voir page 122) ResetResult (voir page 122) SendTo (voir page 123) EIO0000002255 06/2017 111 Blocs fonction FB_UDPPeer - Méthode Bind Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Configurer les homologues UDP ouverts pour une adresse IP et un port locaux spécifiques Description fonctionnelle Configure les homologues UDP ouverts pour une adresse IP et un port locaux spécifiques comme sources d'envoi et de réception des messages. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. NOTE : Le socket est automatiquement lié à un port disponible, lorsque les données sont envoyées depuis un socket non lié. Transition d'état de l'homologue Etape Description 1 Etat initial : Opened 2 Appel de fonction 3 Etat : Bound Interface Entrée Type de données Plage valide Description i_sLocalIP STRING(15) - Adresse IP de l'interface à lier. Si sa valeur est une chaîne vide ou 0.0.0.0, l'homologue écoute toutes les interfaces. 112 EIO0000002255 06/2017 Blocs fonction Entrée Type de données Plage valide Description i_uiLocalPort UINT 1…65 535 Port UDP à lier. EIO0000002255 06/2017 113 Blocs fonction FB_UDPPeer - Méthode Close Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Fermer le socket Description fonctionnelle Ferme le socket, en ignorant éventuellement les données du tampon de réception. Les groupes de multidiffusion reliés sont automatiquement abandonnés. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Transition d'état de l'homologue Etape 114 Description 1 Etat initial : Opened ou Bound 2 Appel de fonction 3 Etat : Idle EIO0000002255 06/2017 Blocs fonction FB_UDPPeer - Méthode GetBoundIPAddress Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer l'adresse IP de liaison Description fonctionnelle Cette fonction permet d'obtenir l'adresse IP liée au socket. Si la valeur de retour est une chaîne vide (''), l'adresse IP ne peut pas être obtenue. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. FB_UDPPeer - Méthode GetBoundPort Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Renvoyer le port de liaison EIO0000002255 06/2017 115 Blocs fonction Description fonctionnelle Cette fonction permet d'obtenir le port lié au socket. Si la valeur de retour est 0, le numéro de port ne peut pas être obtenu. Cette fonction est prise en charge sur les plates-formes où la bibliothèque SysSocket version 3.5.6.0 ou ultérieure est installée. 116 EIO0000002255 06/2017 Blocs fonction FB_UDPPeer - Méthode JoinMulticastGroup Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Relier un groupe de multidiffusion pour la réception de messages Description fonctionnelle Relie un groupe de multidiffusion pour la réception de messages envoyés à cette adresse de groupe, en envoyant un message IGMP (Internet Group Management Protocol) AddMembership. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Interface Entrée Type de données Plage valide Description i_sInterfaceIP STRING(15) - Adresse IP de l'interface sur laquelle le groupe de multidiffusion doit être relié. i_sGroupIP STRING(15) - Adresse de multidiffusion du groupe à relier. EIO0000002255 06/2017 117 Blocs fonction FB_UDPPeer - Méthode LeaveMulticastGroup Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Quitter un groupe multidiffusion. Description fonctionnelle Quitter un groupe multi-diffusion en envoyant un message DropMembership IGMP. Une fois le groupe multi-diffusion abandonné, les messages envoyés à l'adresse de ce groupe ne sont plus reçus. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. Interface 118 Entrée Type de données Plage valide Description i_sInterfaceIP STRING(15) - Adresse IP de l'interface sur laquelle le groupe de multidiffusion doit être abandonné. i_sGroupIP STRING(15) - Adresse de multidiffusion du groupe à abandonner. EIO0000002255 06/2017 Blocs fonction FB_UDPPeer - Méthode Open Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Initialiser et ouvrir les homologues UDP Description fonctionnelle Initialise et ouvre l'homologue UDP. La valeur renvoyée est TRUE, si l'exécution de la fonction a abouti. Evaluez la propriété Result, si la valeur de retour est FALSE. NOTE : Si vous prévoyez l'écoute sur un port particulier, la méthode Bind doit être utilisée après la méthode Open pour lier le socket ouvert. Transition d'état de l'homologue Etape Description 1 Etat initial : Idle 2 Appel de fonction 3 Etat : Opened EIO0000002255 06/2017 119 Blocs fonction FB_UDPPeer - Méthode ReceiveFrom Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Lire les données enregistrées dans le tampon de réception Description fonctionnelle Lit les données enregistrées dans le tampon de réception et les supprime du tampon si aucune erreur n'a été détectée pendant leur lecture. Un seul message est lu tout au plus, peu importe la quantité de données à lire et la taille du tampon fourni par l'application. Renvoie le nombre d'octets écrits dans le tampon fourni par l'application, au format UDINT. Interface Entrée Type de données Plage valide Description i_pbyReceiveBuffer POINTER TO BYTE - Adresse de départ du tampon à partir de laquelle les données reçues doivent être écrites. i_udiReceiveBufferSize UINT 1…2 147 483 647 Nombre maximal d'octets pouvant être enregistrés dans le tampon. Sortie Type de données Plage valide Description q_xDataReceived BOOL - Indique si un message a été reçu. 120 EIO0000002255 06/2017 Blocs fonction Sortie Type de données Plage valide Description q_sPeerIP STRING(15) - Adresse IP source de l'homologue d'où provient le message, au format STRING. q_dwPeerIP DWORD - L'adresse IP de l'homologue (expéditeur) sous la forme DWORD. Chaque octet représente un chiffre de l'adresse IPv4. q_uiPeerPort UINT - Port source d'où provient le message. EIO0000002255 06/2017 121 Blocs fonction FB_UDPPeer - Méthode ResetByteCounters Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Remettre à zéro les compteurs du nombre total d'octets reçus et envoyés Description fonctionnelle Remet à zéro les compteurs du nombre total d'octets reçus et envoyés. Ne renvoie aucune valeur. FB_UDPPeer - Méthode ResetResult Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Réinitialiser les valeurs de la propriété Result sur Ok Description fonctionnelle Réinitialise les valeurs de la propriété Result sur Ok. Ne renvoie aucune valeur. 122 EIO0000002255 06/2017 Blocs fonction FB_UDPPeer - Méthode SendTo Présentation Type : Méthode Disponible à partir de la version : V1.0.4.0 Tâche Transmettre un message Description fonctionnelle Transmet un message. Les données sont lues depuis le tampon fourni par l'application. Cette méthode permet d'envoyer des messages de diffusion, de multidiffusion et de monodiffusion. Le socket est automatiquement lié à un port disponible, si ce n'était pas déjà le cas. Renvoie le nombre d'octets envoyés, au format UDINT. Interface Entrée Type de données Plage valide Description i_sPeerIP STRING(15) - Adresse de destination du message. i_uiPeerPort UINT - Port de destination du message. i_pbySendBuffer POINTER TO BYTE - Adresse de départ du tampon contenant les données à envoyer. i_udiNumBytesToSend UDINT 1…2 147 483 647 Nombre d'octets à envoyer à partir du tampon fourni par l'application. EIO0000002255 06/2017 123 Blocs fonction Propriétés de FB_UDPPeer Présentation Nom Type de données Accès Description BytesAvailableToRead UDINT Lecture Indique le nombre d'octets dans le tampon de réception qui peuvent être lus à l'aide de la méthode Receive. (Plage : 0 à 2 147 483 647) IsReadable BOOL Lecture Indique que des données pas encore traitées par la méthode Receive ont été reçues. IsWritable BOOL Lecture Indique que l'état de la connexion permet l'envoi de données au serveur. Result ET_Result Lecture Indique le résultat du dernier appel de méthode. Si le résultat est différent de Ok, la valeur n'est pas remplacée et aucune méthode n'est appelée. State ET_State Lecture Indique l'état du socket. TotalBytesReceived ULINT Lecture Indique le nombre total d'octets reçus. (Plage : 1 à 264-1) TotalBytesSent ULINT Lecture Indique le nombre total d'octets envoyés. (Plage : 1 à 264-1) SockOpt_Broadcast BOOL Lecture/écrit Permet d'envoyer des paquets de ure diffusion via le socket UDP. Si FALSE, la méthode Send renvoie un message d'erreur lors de l'envoi de messages de diffusion UDP. SockOpt_MulticastDefaultI nterface STRING(15)] Lecture/écrit Permet de définir l'adresse IP de ure l'interface permettant d'envoyer les messages de multidiffusion lorsqu'aucune action n'a déclenché la liaison du socket. SockOpt_MulticastLoopback BOOL Lecture/écrit Si TRUE, les messages de ure multidiffusion envoyés sont également copiés dans le tampon de réception, comme s'ils provenaient d'un homologue UDP externe. 124 EIO0000002255 06/2017 Blocs fonction Nom Type de données Accès SockOpt_MulticastTTL SINT Lecture/écrit Indique la durée de vie (TTL) des ure messages de multidiffusion envoyés. Cette valeur a une incidence sur l'espace vers lequel les packages sont acheminés. (Plage : 0 à 255) SockOpt_ReceiveBufferSize UDINT Lecture/écrit Définit la taille du tampon de ure réception de la pile UDP. Cette valeur doit toujours être supérieure à la quantité de données reçues pendant un transfert, pour éviter de perdre des données. (Plage : 1 à 2 147 483 647) SockOpt_SendBufferSize UDINT Lecture/écrit Définit la taille du tampon d'envoi de ure la pile UDP. Cette valeur doit toujours être supérieure à la quantité de données envoyées pendant un transfert, pour éviter d'éventuelles erreurs. (Plage : 1 à 2 147 483 647) EIO0000002255 06/2017 Description 125 Blocs fonction Sous-chapitre 7.3 Utils Utils FB_DnsClient Présentation Type : Bloc fonction Disponible à partir de la version : V1.1.0.0 Tâche Communique avec le serveur Serveur DNS défini pour demander la résolution d'un nom de domaine en adresse IPv4. Description fonctionnelle Ce bloc fonction permet de communiquer avec un Serveur DNS (conformément à RFC1035) afin d'obtenir l'adresse IPv4 enregistrée correspondant au nom de domaine défini. Par conséquent, un socket UDP est ouvert et une demande DNS est envoyée au serveur, qui est défini par les entrées i_sDnsServerIp et i_uiDnsServerPort. Lorsqu'une réponse est reçue du serveur ou que le délai expire, le socket est à nouveau fermé. NOTE : Le bloc fonction prend en charge les réponses autoritaires et récursives fournies par le serveur DNS. Si le server a résolu le nom de domaine et que la réponse a été reçue correctement, l'adresse IPv4 résolue et la durée de vie correspondante (TTL) sont disponibles sur la sortie q_astDnsAddressInfo. Pour limiter le trafic réseau, la valeur TTL peut servir à mettre en cache les adresses résolues. NOTE : Actualisez le cache IP en fonction des informations fournies par TTL. 126 EIO0000002255 06/2017 Blocs fonction La communication avec Serveur DNS requiert plusieurs cycles du programme. L'état du bloc fonction est indiqué par les sorties q_xBusy, q_xError et q_xDone. Tant que le bloc fonction est exécuté, la sortie q_xBusy est TRUE. La sortie q_xDone est TRUE lorsque le bloc fonction s'est exécuté correctement. Les messages d'état et informations de diagnostic sont fournis à l'aide des sorties q_xError (TRUE si une erreur a été détectée), q_etResult et q_etResultMsg. Pour acquitter les erreurs détectées, désactivez et réactivez le bloc fonction pour pouvoir effectuer une nouvelle tentative de résolution du nom de domaine. EIO0000002255 06/2017 127 Blocs fonction Interface 128 Entrée Type de données Description i_xEnable BOOL Activation et initialisation du bloc fonction. i_xExecute BOOL Sur un front montant de cette entrée, la requête DNS est envoyée au serveur DNS. i_sDnsServerIP STRING(15) Indique l'adresse IP du serveur DNS externe. i_uiDnsServerPort UINT Indique le port Serveur DNS externe. Si la broche n'est pas attribuée, la valeur par défaut 53 est utilisée. i_sDomainName STRING(255) Nom de domaine à résoudre.(Seuls les symboles ASCII sont pris en charge) Sortie Type de données Description q_xActive BOOL Si le bloc fonction est actif, cette sortie est TRUE. q_xReady BOOL Indique TRUE si le bloc fonction est prêt à recevoir une commande d'exécution. q_xBusy BOOL Si cette sortie est TRUE, le bloc fonction est en cours d'exécution. q_xDone BOOL Si cette sortie est TRUE, l'exécution s'est effectuée correctement. q_xError BOOL Si cette sortie est TRUE, une erreur a été détectée. Pour plus d'informations, reportez-vous à q_etResult et q_etResultMsg. q_etResult ET_Result Fournit des informations de diagnostic et d'état sous la forme d'une valeur numérique. q_sResultMsg STRING(80) Fournit des informations de diagnostic et d'état sous la forme d'un message textuel. q_uiNumberOfIpAddresses UINT Nombre d'adresses IP renvoyées par le Serveur DNS. q_astDnsAddressInfo ARRAY La structure contient des [0..GPL.Gc_uiDnsNumberOfIPs-1] informations sur le nom de domaine OF ST_DnsAddressInfo résolu, reçu de la part du serveur DNS. EIO0000002255 06/2017 SoMachine Fonctions EIO0000002255 06/2017 Chapitre 8 Fonctions Fonctions Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 8.1 Types de données (EnumToStringConverters) 130 8.2 Utils 133 8.3 Utils (Byteorder) 143 EIO0000002255 06/2017 129 Fonctions Sous-chapitre 8.1 Types de données (EnumToStringConverters) Types de données (EnumToStringConverters) Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 130 Page FC_EtResultToString 131 FC_EtStateToString 132 EIO0000002255 06/2017 Fonctions FC_EtResultToString Présentation Type : Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : – Met en œuvre : – Tâche Convertir un élément d'énumération de type ET_Result en une variable de type STRING. Description fonctionnelle La fonction FC_EtResultToString permet de convertir un élément d'énumération de type ET_Result en une variable de type STRING. Interface Entrée Type de données Description i_etResult ET_Result Énumération avec le résultat. Valeur retournée Type de données Description STRING(80) ET_Result converti en texte. EIO0000002255 06/2017 131 Fonctions FC_EtStateToString Présentation Type : Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Convertir un élément d'énumération de type ET_State en une variable de type STRING. Description fonctionnelle La fonction FC_EtStateToString permet de convertir un élément d'énumération de type ET_State en une variable de type STRING. Interface Entrée Type de données Description i_etState ET_State Enumération correspondant à l'état actuel. Valeur retournée 132 Type de données Description STRING(80) ET_State converti en texte. EIO0000002255 06/2017 Fonctions Sous-chapitre 8.2 Utils Utils Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page FC_GetSubNetBroadcastAddr 134 FC_InetAddrDWORDtoString 135 FC_InetAddrStringtoDWORD 136 FC_IsMulticastIP 137 FC_IsValidIP 138 FC_ReadSTRING 139 FC_WriteSTRING 141 EIO0000002255 06/2017 133 Fonctions FC_GetSubNetBroadcastAddr Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Calculer l'adresse de diffusion d'un sous-réseau Description fonctionnelle Calcule l'adresse IP de diffusion d'un sous-réseau d'après une adresse IP et un masque de sousréseau particulier. Les paquets envoyés à cette adresse IP de diffusion sont reçus par les équipements de ce sous-réseau. Utilisez une adresse IP de diffusion de sous-réseau au lieu d'une adresse IP de diffusion (255.255.255.255). Interface Entrée Type de données Description i_sIPInSubnet STRING(15) Adresse IPv4 du sous-réseau. i_sSubnetMask STRING(15) Masque de sous-réseau. Valeur retournée 134 Type de données Description STRING(15) Adresse IP de diffusion du sous-réseau. EIO0000002255 06/2017 Fonctions FC_InetAddrDWORDtoString Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Convertir l'adresse IPv4 DWORD au format STRING Description fonctionnelle Convertit une adresse IP DWORD au format STRING. Interface Entrée Type de données Description i_dwAddress DWORD Adresse IPv4, au format DWORD. Valeur retournée Type de données Description STRING(15) Adresse IPv4, au format STRING. EIO0000002255 06/2017 135 Fonctions FC_InetAddrStringtoDWORD Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Convertir l'adresse IPv4 STRING au format DWORD Description fonctionnelle Convertit une adresse IPv4 STRING au format DWORD. Interface Entrée Type de données Description i_sAddress STRING(15) Adresse IPv4, au format STRING. Valeur retournée 136 Type de données Description DWORD Adresse IPv4, au format DWORD. EIO0000002255 06/2017 Fonctions FC_IsMulticastIP Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Déterminer si l'adresse IPv4 indiquée se situe dans la plage de multidiffusion Description fonctionnelle Détermine si l'adresse IPv4 indiquée se situe dans la plage d'adresses de multidiffusion (de 224.0.0.0 à 239.255.255.255), conformément aux directives RFC 5771. Interface Entrée Type de données Description i_sIP STRING(15) Adresse IPv4. Valeur retournée Type de données Description BOOL TRUE si l'adresse est une adresse de multidiffusion, FALSE dans le cas contraire. EIO0000002255 06/2017 137 Fonctions FC_IsValidIP Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Déterminer si la chaîne indiquée est une adresse IPv4 valide Description fonctionnelle Détermine si la chaîne indiquée est une adresse IPv4 valide. Interface Entrée Type de données Description i_sIP STRING(15) Chaîne à vérifier. Valeur retournée 138 Type de données Description BOOL TRUE si la chaîne est une adresse IPv4 valide, FALSE dans le cas contraire. EIO0000002255 06/2017 Fonctions FC_ReadSTRING Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Copiez les caractères enregistrés dans un type de données en variable de type STRING. Description fonctionnelle Avec l'utilisation de cette fonction, les caractères ASCII reçus peuvent être copiés depuis le tampon de réception dans une variable de type STRING. La source de données de tout type de données est transmis à la fonction en utilisant un pointeur via l'entrée i_pbyBuffer. La destination des données, la variable de type STRING, est transmise à la fonction en utilisant un pointeur via l'entrée i_psString. Le nombre maximal de caractères à copier est déterminé via l'entrée i_uiMaxLength. L'entrée i_xStopAtZero permet de déterminer si la fonction doit copier tous les octets définis par i_uiMaxLength ou si la copie doit s'arrêter au premier caractère NUL (16#0) détecté. Notez que le caractère NUL marque la fin de la valeur d'une variable de type STRING. Si aucun caractère NUL n'est détecté jusqu'à ce que le nombre maximal de caractères soit copié ou que l'entrée i_xStopAtZero soit FALSE, la fonction écrit le caractère NUL dans le nème octet de la mémoire de destination. n = i_uiMaxLength +1. Cela signifie que la valeur maximale de i_uiMaxLength est égale à la taille de la mémoire de destination - 1. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF avec la mémoire de destination pour déterminer la valeur de i_uiMaxLength. EIO0000002255 06/2017 139 Fonctions Exemple de code Exemple de code pour l'utilisation de FC_ReadSTRING dans le texte structuré : // Copier les données dans une variable de type STRING TCPUDP.FC_ReadSTRING( i_pbyBuffer i_psString := ADR(abyReceiveBuffer), := ADR(sData), i_uiMaxLength := SIZEOF(sData)-1, i_xStopAtZero := TRUE); Interface Entrée Type de données Description i_pbyBuffer POINTER TO BYTE Pointeur sur adresse mémoire à copier (de la source) i_psString POINTER TO STRING Pointeur sur adresse mémoire à copier (sur destination, variable de type STRING) i_uiMaxLength UINT Nombre maximal d'octets à copier. i_xStopAtZero BOOL Si la valeur est TRUE, la copie s'arrête lorsque le premier caractère NUL (16#0) est détecté. Si la valeur est FALSE, le nombre d'octets définis avec i_uiMaxLength et un caractère NUL sont écrits dans la mémoire de destination. Valeur retournée 140 Type de données Description UINT Nombre d'octets écrits dans la mémoire de destination. EIO0000002255 06/2017 Fonctions FC_WriteSTRING Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Tâche Copiez les caractères enregistrés dans une variable de type STRING dans un tampon de tout type de données. Description fonctionnelle Avec l'utilisation de cette fonction, la valeur d'une variable de type STRING peut être facilement copiée dans le tampon d'envoi de tout type de données. La source des données, la variable de type STRING, est transmise en utilisant un pointeur via l'entrée i_psString. La destination des données, un tampon de tout type de données, est transmis à la fonction en utilisant un pointeur via l'entrée i_pbyBuffer. Le nombre maximal de caractères à copier est déterminé via l'entrée i_uiMaxLength. Si la longueur de la valeur de la variable de type STRING est inférieure à la valeur de i_uiMaxLength, la fonction arrête la copie lorsque le premier caractère NUL (16#0) est détecté. Notez que le caractère NUL marque la fin de la valeur d'une variable de type STRING. Si la longueur est supérieure à la valeur de i_uiMaxLength, le nombre maximal d'octets est copié et le dernier octet est remplacé par 16#0 dans le tampon. NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur à la mémoire, utilisez l'opérateur arithmétique SIZEOF avec le tampon cible pour déterminer la valeur de i_uiMaxLength. EIO0000002255 06/2017 141 Fonctions Exemple de code Exemple de code pour l'utilisation de FC_WriteSTRING dans le texte structuré : // Copier la valeur de la variable de type STRING dans le tampon TCPUDP.FC_WriteSTRING( i_pbyBuffer i_psString := ADR(abySendBuffer), := ADR(sData), i_uiMaxLength := SIZEOF(abySendBuffer); Interface Entrée Type de données Description i_pbyBuffer POINTER TO BYTE Pointeur sur adresse mémoire à copier dans la mémoire de destination. i_psString POINTER TO STRING Pointeur sur adresse mémoire à copier (de la variable source de type STRING). i_uiMaxLength UINT Nombre maximal d'octets à copier. Valeur retournée 142 Type de données Description UINT Nombre d'octets écrits dans la mémoire de destination. EIO0000002255 06/2017 Fonctions Sous-chapitre 8.3 Utils (Byteorder) Utils (Byteorder) Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page FC_Read<Data type> 144 FC_Write<Data type> 146 EIO0000002255 06/2017 143 Fonctions FC_Read<Data type> Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Exemple de fonction FC_ReadDINT Tâche Lire une valeur dans un tampon, la convertir dans l'ordre des octets du contrôleur, puis la renvoyer au format de type de données spécial Description fonctionnelle Lit la valeur dans un tampon, dans l'ordre des octets du réseau, la convertit dans l'ordre des octets du contrôleur, puis la renvoie au format de type de données spécial <Data type>. 144 EIO0000002255 06/2017 Fonctions Fonctions disponibles Les fonctions disponibles pour les différents types de données sont les suivantes : Fonction Type de données FC_ReadDINT DINT FC_ReadINT INT FC_ReadSINT SINT FC_ReadUDINT UDINT FC_ReadUINT UINT FC_ReadUSINT USINT Interface Entrée Type de données Description i_pbyBuffer POINTER TO BYTE Adresse de départ du tampon à lire. Valeur retournée Type de données Description <Data type> (voir tableau ci-dessus) Valeur au format <Data type>. EIO0000002255 06/2017 145 Fonctions FC_Write<Data type> Présentation Type Fonction Disponible à partir de la version : V1.0.4.0 Hérite de : - Met en œuvre : - Exemple de fonction FC_WriteDINT Tâche Ecrire la valeur (au format de type de données spécial) dans le tampon, en respectant l'ordre des octets du réseau Description fonctionnelle Ecrit la valeur au format <Data type> spécial dans le tampon, en respectant l'ordre des octets du réseau, et renvoie TRUE si l'opération a abouti. Fonctions disponibles Les fonctions disponibles pour les différents types de données sont les suivantes : 146 Fonction Type de données FC_WriteDINT DINT FC_WriteINT INT FC_WriteSINT SINT FC_WriteUDINT UDINT FC_WriteUINT UINT FC_WriteUSINT USINT EIO0000002255 06/2017 Fonctions Interface Entrée Type de données Description i_pbyBuffer POINTER TO BYTE Adresse de départ du tampon à partir de laquelle la valeur doit être écrite. i_<Data type>Value (Exemple : i_diValue pour FC_WriteDINT) <Data type> (voir tableau cidessus) Valeur au format de type de données spécial. Valeur retournée Type de données Description BOOL TRUE si l'opération a abouti. EIO0000002255 06/2017 147 Fonctions 148 EIO0000002255 06/2017 SoMachine Glossaire EIO0000002255 06/2017 Glossaire A adresse L'adresse d'un système correspond généralement à l'adresse IP (192.168.5.45, par exemple). Dans le cas d'un serveur, d'un client ou d'un homologue, elle inclut aussi le numéro de port (192.168.5.45:5548, par exemple). adresse IP L'adresse IP de IPv4 (Internet Protocol version 4) est une valeur de 4 octets permettant d'identifier les équipements connectés à un réseau IP. application Programme comprenant des données de configuration, des symboles et de la documentation. B broadcast Voir "unicast". BSD Berkeley Software Distribution bus d'extension Bus de communication électronique entre des modules d'E/S d'extension et un contrôleur. C client Composante d'une application de communications. La partie initialement active établit une connexion (TCP) ou envoie des données au serveur. configuration Agencement et interconnexions des composants matériels au sein d'un système, ainsi que les paramètres matériels et logiciels qui déterminent les caractéristiques de fonctionnement du système. contrôleur Automatise des processus industriels. On parle également de contrôleur logique programmable (PLC) ou de contrôleur programmable. EIO0000002255 06/2017 149 Glossaire D DNS Abréviation de Domain Name System. E E/S Entrée/sortie Ethernet Technologie de couche physique et de liaison de données pour les réseaux locaux (LAN), également appelée IEE 802.3. La technologie Ethernet est la plus répandue pour les réseaux locaux. Chaque contrôleur PacDrive possède un port Ethernet. La norme Ethernet définit les couches 1 et 2 de la communication. Il existe une multitude de protocoles réseau au-dessus d'Ethernet, mais seul le protocole IP est utilisé. H homologue Autre système impliqué dans la communication. Ce terme est utilisé lorsque le rôle de l'autre système (serveur ou client) n'a pas d'importance. I IGMP IP Internet Group Management Protocol. Protocole de communications utilisé par les hôtes et les routeurs adjacents sur les réseaux IPv4 pour définir l'appartenance au groupe de multidiffusion. Internet Protocol. Situé sous TCP et UDP, ce protocole sert pour le transport de données sur l'ensemble du réseau. Branche de la famille de protocoles TCP/IP, qui gère les adresses Internet des équipements, achemine les messages sortants et reconnaît les messages entrants. 150 EIO0000002255 06/2017 Glossaire M monodiffusion/diffusion/multidiffusion (unicast/broadcast/multicast) La communication de type monodiffusion (Unicast) cible un système comme destination. En monodiffusion (unicast), vous avez le choix entre le protocole TCP ou UDP. La communication de type diffusion (Broadcast) cible tous les systèmes appartenant à un même sous-réseau. Tout comme en multidiffusion (multicast), seul le protocole UDP peut être utilisé. La communication de type multidiffusion (Multicast) cible des systèmes spécifiques qui doivent être reliés à un groupe multicast particulier avant de recevoir des paquets destinés à ce groupe. multicast Voir "unicast". P paquet et datagramme Au niveau du réseau, le terme "paquet" désigne les paquets de données qui sont transmis à ce niveau. Dans le contexte du protocole UDP, les deux termes "paquet" et "datagramme" sont synonymes. port/numéro de port Souvent désigné par le terme "port", le numéro de port est un nombre compris entre 1 et 65 535. Combiné à une adresse IP, il désigne le point de sortie d'une communication. Un socket est systématiquement connecté à un numéro de port. Etant donné que les sockets sont utilisés par les blocs fonction de communication TCP/UDP qui, à leur tour, sont utilisés par un programme, le numéro de port identifie un programme, un serveur ou un client exécuté sur un contrôleur. Lorsque vous communiquez avec <adresse IP d'un contrôleur>:<numéro de port> (<IP of a controller>:<Port number>), vous communiquez en fait avec un programme qui s'est luimême connecté à ce numéro de port. (Le programme a configuré son bloc fonction de communication de manière à se connecter à ce numéro de port.) programme Composant d'une application constitué de code source compilé qu'il est possible d'installer dans la mémoire d'un contrôleur logique. EIO0000002255 06/2017 151 Glossaire S serveur socket Composante d'une application de communications. Au départ, le serveur est passif. Il attend que des clients initialisent une communication. Le serveur s'exécute sur un numéro de port défini ; son adresse est connue des clients. Ressource utilisée en interne par la communication TCP/UDP pour permettre l'accès aux fonctions de communications au niveau du micrologiciel. T TCP TTL TCP (Transmission Control Protocol) est un protocole de transmission employé dans les réseaux IP. Le TTL (Time to live), également appelé « limite de sauts », est un mécanisme qui limite la portée ou la durée de vie des données dans un ordinateur ou un réseau. Dans le protocole IP (Internet Protocol), TTL peut se présenter comme un compteur ou un horodatage associé ou intégré aux données. Une fois le nombre d'événements atteint ou le temps imparti aux événements écoulé, les données sont refusées. Dans le DNS, le TTL empêche un paquet de données de circuler indéfiniment. U UDP 152 UDP (User Datagram Protocol) est un protocole de transmission employé dans les réseaux IP. EIO0000002255 06/2017 SoMachine Index EIO0000002255 06/2017 Index E EnumToStringConverters, 130 ET_Result, 30 AddressInUse, 30 AddressNotAvailable, 30 AnalyzeDnsAnswer, 31 BufferFull, 31 BufferSizeTooSmall, 32 ClientListTooSmall, 31 ET_REsult ClosedByPeer, 31 ET_Result ConnectionRefused, 31 ConnectionTimedOut, 31 Disabled, 31 Disabling, 31 DnsResolutionFailed, 32 DnsServerError, 32 Failed, 30 FillLevelOutOfRange, 30 Initialing, 31 InputOutOfRange, 30 InternalError, 32 InvalidBufferAddress, 30 InvalidDnsAnswer, 32 InvalidDnsServerIP, 32 InvalidDnsTimeOut, 32 InvalidDomainName, 32 InvalidIP, 30 InvalidMulticastIP, 30 InvalidNumberOfIPs, 32 ET_REsult NoSuchClient, 31 EIO0000002255 06/2017 ET_Result NotEnoughResources, 31 NotReady, 30 NotSupported, 30 NumBytesToSendOutOfRange, 30 Ok, 30 OpenSocketFailed, 32 Ready, 31 ReceiveBufferSizeOutOfRange, 30 ReceiveDnsAnswerFailed, 32 SendDnsQuery, 31 SendDnsQueryFailed, 32 SendToAllSizeTooSmall, 31 SocketManagementListTooSmall, 31 TooMuchOOBData, 30 WaitForDnsAnswer, 31 ET_State, 33 Bound, 33 Connected, 33 Connecting, 33 Idle, 33 Listening, 33 Opened, 33 Shutdown, 33 F FB_DnsClient, 126 FB_TCPClient, 53 FB_TCPServer, 75 FB_UDPPeer, 109 FC_EtResultToString, 131 FC_EtStateToString, 132 FC_GetSubNetBroadcastAddr, 134 FC_InetAddrDWORDtoString, 135 FC_InetAddrStringtoDWORD, 136 FC_IsMulticastIP, 137 FC_IsValidIP, 138 FC_ReadDINT, 144 FC_ReadINT, 144 FC_ReadSINT, 144 153 Index FC_ReadSTRING, 139 FC_ReadUDINT, 144 FC_ReadUINT, 144 FC_ReadUSINT, 144 FC_WriteDINT, 146 FC_WriteINT, 146 FC_WriteSINT, 146 FC_WriteSTRING, 141 FC_WriteUDINT, 146 FC_WriteUINT, 146 FC_WriteUSINT, 146 G GPL TcpUdpCommunication, 43 GVL TcpUdpCommunication, 45 M méthode Accept, 78 Bind, 112 CheckClients, 79 Close, 56, 80, 114 Connect, 57 DisconnectAll, 81 DisconnectClient, 82 GetBoundIPAddress, 58, 83, 115 GetBoundPort, 59, 84, 115 JoinMulticastGroup, 117 LeaveMulticastGroup, 118 Open, 85, 119 Peek, 60 PeekFromFirstAvailableClient, 86 PeekFromSpecificClient, 88 Receive, 61 ReceiveFrom, 120 ReceiveFromFirstAvailableClient, 90 ReceiveFromSpecificClient, 92 ReceiveOutOfBand, 64 ReceiveOutOfBandFromFirstAvailableClient, 94 ReceiveOutOfBandFromSpecificClient, 154 96 ResetByteCounters, 66, 98, 122 ResetResult, 66, 98, 122 Send, 67 SendOutOfBand, 71 SendOutOfBandToAll, 99 SendOutOfBandToSpecificClient, 100 SendTo, 123 SendToAll, 102 SendToSpecificClient, 103 Shutdown, 72 Q qualification du personnel, 18 S ST_ClientConnection, 36 ST_DefaultSocketOptionsTCPClient, 37 ST_DefaultSocketOptionsTCPServer, 38 ST_DefaultSocketOptionsUDPPeer, 39 T TcpUdpCommunication, 21 GPL, 43 GVL, 45 EIO0000002255 06/2017 Index EIO0000002255 06/2017 155