Schneider Electric SoMachine - TcpUdpCommunication Mode d'emploi

Ajouter à Mes manuels
155 Des pages
Schneider Electric SoMachine - TcpUdpCommunication Mode d'emploi | Fixfr
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

Manuels associés