1 / 10

VAL3 Ethernet - Sockets

VAL3 Ethernet - Sockets. A partir VAL 3 Version 4.x. Communications avec Sockets. Même type de communication que lignes Série excepté : Basée sur câble Ethernet Communication de type Client – Serveur : multiples machines sur le réseau. c. c. s. Ligne Série RS232 / RS422. s. Sockets

fergus
Télécharger la présentation

VAL3 Ethernet - Sockets

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VAL3 Ethernet - Sockets A partir VAL 3 Version 4.x

  2. Communications avec Sockets • Même type de communication que lignes Série excepté : • Basée sur câble Ethernet • Communication de type Client – Serveur : multiples machines sur le réseau c c s Ligne Série RS232 / RS422 s Sockets Ethernet

  3. Spécifications CS8 • CS8 peut être client et/ou serveur • Possible de déclarer plusieurs clients ET plusieurs serveurs sur une même CS8 ==> 1 CS8 peut communiquer avec plusieurs systèmes • Chaque communication utilise 1 numéro de port • 1 CS8 Serveur peut seulement accepter 1 client ==> pour avoir 1 Serveur CS8 connecté à plusieurs clients nécessaire de définir plusieurs ports • Déclaration de clients et de serveurs est fait dans le tableau de bord

  4. Déclaration de serveurs • Port doit être le même que celui du client • ! Des ports sont réservés pour des protocoles (modbus 502, ftp 21, …) • utilise numéro > 1000 , vérifier que numéro libre • Fin de chaîne : code ASCII du caractère ajouté à la chaîne (messages string) • Temps maxi : délai pour déterminer si la communication est OK Serveur est prêt à recevoir des connexions uniquement lorsque une application qui utilise le socket est en exécution

  5. Déclaration de clients • Port doit être le même que celui du serveur • Adresse du serveur : adresse IP du serveur • Temps maxi : délai pour déterminer si la communication est OK Possible de tester connexion avec le serveur si: Config. ethernet OK + serveur démarré

  6. Lire et écrire sur Sockets • Comme les lignes série • io:Srv1= "Ceci est un message" ou io:Clt1= " Ceci est message" écrit la chaîne sur le port (ajoute le délimiteur de chaîne à la fin du message) • message = io:Srv1 ou message = io:Clt1 lit une chaîne depuis le port (lit tous les caractères jusqu’au délimiteur ou jusqu’à 128 car.) • io:Clt1= 65 ou io:Srv1= 65 écrit 1 car. sur le port (code ASCII) • val=io:Clt1 ou val=io:Srv1 lit 1 car. sur le port • Une erreur d’exécution (60) est générée en cas de « temps maxi » (connexion ou lecture) ou erreur de communication (coupure de ligne, arrêt du socket, tampon de données plein, …)

  7. Instructions SIO • Lire un tableau de num sur la SIO : (non bloquante) • nbcar = sioGet(io:Clt1, ligne) • num nbcar retourne nombre de car. lus sur le port • num ligne est le tableau des caractères lus • Stoppe quand le tableau est plein (dimension du tableau) ou quand le tampon est vide • retourne -1 si connexion a échouée • Écrire un tableau de num sur SIO : (non bloquante) • nbcar = sioSet(io:Clt1, ligne) • num nbcar retourne le nombre de car. écrit sur le port • num ligne est le tableau de caractères à écrire • retourne -1 si la connexion a échouée • Fermer la connexion : • nbcar = clearBuffer(io:Clt1) • Ferme la connexion et retourne le nb de car. supprimés dans nbcar (num)

  8. Gestion du temps maxi • Erreur exécution (60) est générée après le temps maxi pour les instructions : • io:Srv1= "this is a message" ou io:Clt1= "this is a message" • message = io:Srv1 ou message = io:Clt1 • => nécessite une tâche pour gérer les erreurs de comm. • Test de la valeur retournée par instruction après temps maxi : • nbcar = sioGet(io:Clt1, line) -1 pas de connexion • nbcar = sioSet(io:Clt1, line) 0 connexion établie • => pas besoin d’une tâche de gestion • exemple : un client veut savoir quand le serveur est prêt • do • nStatut = sioSet(io:Clt1, nLigne) • until nStatut > -1

  9. Nombre de Clients/serveurs par CS8 • CS8 accepte connexions multiples : 40 sockets • 1 client utilise 1 socket • 1 serveur utilise 1 socket pour lui même + 1 socket le client • 1 serveur peut communiquer avec plusieurs clients sur le même port • size(io:srv1) retourne le nombre de clients connectés • io:srv1[0]="ndjfjsdkjsdfjsfk" pour écrire sur le client 0 • io:srv1[1]="ndjfjsdkjsdfjsfk" pour écrire sur le client 1

  10. Généralités • Sockets utilise une mémoire tampon d’entrées de 8 Ko • Quand pleine, l’envoyeur est notifié, une erreur générée et la connexion est fermée. • Le récepteur n’est pas notifié, peut lire toutes les données de la mémoire tampon, détecte ensuite que la connexion est fermée et une erreur est générée. • En cas d’erreur de connexion, bouton « Test » du tableau de bord peut retourné une erreur dans les 5 secondes sur vraie CS8. • MAIS sur émulateur erreur après 65 secondes • => Sur émulateur faire en premier commande « ping » par la ligne de commande Windows pour tester la connexion.

More Related