PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → FINS, OMRON, Socket UDP, Driver
FINS, OMRON, Socket UDP, Driver
Started by Nicolas ROBIN, Feb., 27 2006 3:23 PM - 13 replies
Posted on February, 27 2006 - 3:23 PM
Bonjour,
J'ai un stage de 4 mois à effectuer.

Mon projet consiste à créer un driver sous Windev permettant
de faire communiquer un ordinateur type PC avec un (ou plusieurs) automate(s) OMRON (CJ1 ou CS1) via une carte réseau standard.

En attendant d'avoir un automate CJ1 OMRON, je fais des essais de communication entre 2 postes de type PC. Pour cela, j'utilise les fonctions sockets de Windev.

Le protocole utilisé est le protocole FINS. Je pensais donc m'orienter vers une communication avec les sockets de type UDP. Si vous pouviez me communiquer quelques informations concernant ce type de communication, je vous serais très reconnaissant.
___________

PS: Je ne demande pas forcément des sources complètes mais tout au moins des informations. C'est plus utile pour apprendre.
__________

Merci d'avance pour votre aide.

Nicolas ROBIN
Posted on February, 27 2006 - 5:13 PM
Salut Nicolas,

Dans les exemples, tu trouveras un exemple concernant l'utilisation des sockets. Je me suis inspiré de cet exemple pour réaliser une communication entre PC.

@+, JF
Posted on February, 28 2006 - 7:00 AM
1) il faut utiliser la bonne doc Omron référence W342-E1-09 (sinon galère, j'ai donné merci).

2) utilser l'utilitaire Multiway pour tester les communications et exemples.

3) Utiliser les sockets de type UDP.
// optimisation de la trame de dialogue
Socket.Option=2 <-------------------------------
// ouvre la socket
SI PAS SocketCréeUDP("SocketAutomate", PortAutomate, AutomateAdresseIP) ALORS
.....

Je tiens à disposition la doc, le programme Multiway, ...


Salutations.

Gérard Bonno
Posted on February, 28 2006 - 5:00 PM
Tout d'abord, merci pour l'information. J'avais pris les devants. Et oui, j'ai déjà commencé à éplucher les 2 exemples sur les sockets. Et cela m'a bien aidé à appréhender la méthode pour communiquer sur un réseau. Je suis en train de faire une petite application permettant d'envoyer et recevoir des messages entre 2 ordinateurs via les fonctions socket.
Posted on February, 28 2006 - 5:00 PM
Merci pour l'info. Pour le moment, je suis en train d'établir un cahier des charges de mon projet. Dès que j'orais terminé, je suivrais vos conseils.

Encore merci
Posted on February, 28 2006 - 5:24 PM
Tiens tiens Gérard, tu vas rire. J'avais déjà cette doc OMRON (en couleur en plus).Cela ne fait qu'une semaine que j'ai commencé et je n'ai aucune connaissance en la matière pour le moment alors je suis dans une phase de recherche et de test pour un bon petit moment. En tout cas, c'est sûr, vos informations me seront d'une grande aide.

merci
Posted on March, 01 2006 - 11:57 AM
Bonjour,

j'ai discuté un peu de la solution que tu propose avec un informaticien avec lequel je travaille et on se pause plusieurs questions.Entre autre, tu parles de "Socket.Option=2" pour optimiser la trame de dialogue. C'est-à-dire? En quoi l'optimise-t-on? A quoi correspond l'option 2? Est-ce en rapport avec la fonction "SocketChangeTransmissionMode()"?

Pour qu'elles raisons utiliser le protocole UDP et pas TCP. Aparemment, le protocole UDP est plus simple à gérer du fait qu'il ne gère pas les connexions et qu'il se contente de créer un socket sur les machines du réseau (PC et automates), d'écrire des trames et de les lire. Mais là, un problème semble apparaître. Supposons qu'il y ait une déconnexion sur le réseau (cable débranché par exemple). Comment le driver le gèrera? Il serait utille d'avoir un retour d'info nous le signalant pour effectuer une reconnexion. Y a-t-il un moyen efficace pour palier à ce problème? Si oui, lequel?

Merci pour toutes ses informations.
Posted on March, 02 2006 - 9:14 AM
Bonjour,

j'ai eu une proposition de solution sur un autre forum pour gérer les éventuelles déconnexion du réseau.

Avec le protocole UDP, il faudrait effectuer un échange en continu entre les 2 modules (PC et automate) afin dedétecter une éventuelle coupure réseau.

Je vais me pencher sur la question, je pense qu'il faudra utiliser un timer ou un thread.
Posted on March, 03 2006 - 10:22 AM
Je suis de retour de déplacement.
Réponse plus tard dans la journée.
Merci
Posted on March, 06 2006 - 10:37 AM
Bonjour,

il y a du nouveau.
La communication entre 2 PCs fonctionne. J'ai créé une petite appli qui permet d'envoyer une trame a 1 poste qui l'affichera instantanément. et ce second poste peut en faire autant. Je gère cela avec des sockets UDP.

Seulement un petit problème persiste: j'utilise une trace pour
Posted on March, 07 2006 - 2:07 PM
Lors de mes tests entre 2 PCs, les processeurs sont trop solicité. Pour palier à ce problème, j'ai ajouter un ThreadPause à la fin de ma procédure d'écriture. Le résultat est concluant. Cela dit, il arrive d'avoir quelques pertes de paquets.

De manière à trouver le bon compromis, je compte essayer diverses solutions: <1> faire un cycle lecture écriture serveur/client, <2> utiliser 2 ports de comm., ou <3> utiliser un CRC pour comparer les trames. Je vais déjà effectuer ces tests séparément et peut-être les coupler en fonction des résultats trouvés.



est-il possible de transmettre et recevoir sur 2 ports sur l'automate? (CJ1 (ou CS1))

1 port: Lecture / Ecriture SERVEUR (PC)
1 port: Lecture / Ecriture CLIENT (automate)

Si oui, comment? J'ai vu que les CJ1 disposent de 8 ports de comm. (de 0 à 7 en Hexa.). Cela dit, sur le site OMRON, il parlent d'avoir jusqu'à 34 ports de comm. max.

Est-que vous pourriez me dire si les 8 ports dont je parle sont bien les ports utilisant le protocole FINS sur UDP/IP? (cf. doc OMRON W342-E1-09, page 70 sur 270)


Merci

Nicolas ROBIN
Posted on March, 07 2006 - 2:17 PM
si j'utilise 2 ports de l'automate, qels ports peuvent être utiliser à cet effet et de quel manière?

SocketCréeUDP("SOCKET",..........,NetAdresseIP())
SocketEcrit("SOCKET",trame,adresseIP,..........)
Posted on March, 07 2006 - 3:50 PM
//Pourquoi "Socket.Option=2" pour optimiser la trame de dialogue.
Selon conseil du support technique (option pas documentée) (n'est peut être plus nécessaire en version 40K ??).

//Pourquoi protocole UDP et pas TCP?
Le protocole UDP est plus simple dans ses échanges et plus rapide.
L'intégrité des échanges est assurée par le protocole Fins (message d'état et d'erreur dans la réponse de l'automate).

//Supposons qu'il y ait une déconnexion sur le réseau (cable débranché par exemple)...
Dans mon programe, le diailogue est assuré par un Thread secondaire avec une gestion des TimeOut et des messages (état/erreur) en retour de l'automate.

//Lors de mes tests entre 2 PCs, les processeurs sont trop solicité.
Dans le Thread secondaire qui gère le dialogue (permanent) avec l'automate en Fins j'ai inclus régulierement des multitâches

// Cela dit, il arrive d'avoir quelques pertes de paquets.
Je n'ai aucune perte de données.
Attention de prévoir une gestion des erreurs avec reprise, ... dans le programme de dialogue avec l'automate.


Salutations.

Gérard Bonno
Posted on April, 03 2006 - 12:31 PM
Bonjour,

je tenais à vous remercier pour votre aide.
La communnication entre les 2 PCs fonctionne correctemment. Je devrais avoir un automate OMRON CJ1 en début du mois d'avril pour commencer à développer concrètement.

Je vous tiens au courant de mon avancement. Si par hasard, vous auriez ne serait-ce qu'une ébauche d'application à me faire parvenir en ce qui concerne la communication entre le PC et l'automate via le protocole FINS, voici mon e-mail: nrobin@esteve.fr

Je dispose de la documentation OMRON "W342-E1-09" alors j'essais de trouver des informations utiles dedans. Je vous avoue que j'ai un peu de mal à tout comprendre mais je suis assez confiant.

A bientôt
Nicolas ROBIN