Page 1 sur 2

Décalage Données

Posté : 30 juin 2016, 11:23
par Throkane
Bonjour,

J'ai un phénomène que je ne parviens pas à expliquer, ni à corriger :

J'ai 2 CPU S7-300 (provenant de 2 projets différents) reliées par une liaison TCP (réseau éthernet).
Je dois transférer un DB de l'une vers l'autre avec les fonctions SEND/RECV.
Les DB Source et Destination sont strictement identiques et je n'ai aucune erreur de comm.
Si les données sont bien transmises, je constate néanmoins que le stockage de celles-ci est décalé dans mon DB Destination.
Voici une illustration :
Décalage Données.PNG
Vous pouvez voir que le décalage est de 32 octets.

DBW0 source copié dans le DBW32 Destination
...............
...............
DBW28 source copié dans le DBW60 Destination
etc...

Quelqu'un sait-il d'où peut provenir ce décalage ?

Cordialement

Re: Décalage Données

Posté : 30 juin 2016, 12:22
par djé
Salut,

Quels sont les blocs exact de communication que tu utilises?
Si c'est BSEND,BRCV ou USEND/URCV, vérifie le pointeur ANY de réception du bloc BRCV/URCV, paramètre "RD_1"

Re: Décalage Données

Posté : 30 juin 2016, 13:18
par Throkane
J'utilise les blocs AG_SEND/AG_RECV de la bibliothèque
Voici le bloc SEND paramètré sur la CPU Source :
SEND.PNG
SEND.PNG (11.48 Kio) Vu 5444 fois
Et voici le bloc RECV de la CPU Destination :
RECV.PNG
RECV.PNG (11.23 Kio) Vu 5444 fois

Re: Décalage Données

Posté : 30 juin 2016, 14:20
par djé
Oui c'est bizarre,

Donc pour résumer, tu fais une com en Ethernet, S7-300 vers S7-300 via des coupleurs CP sur une liaison configurée en TCP

Tu n'as aucune valeur dans STATUS?
Quelle est la valeur LEN retournée par ton FC7 AG-RECV

Re: Décalage Données

Posté : 30 juin 2016, 20:53
par philou77
Salut,

un peu de lecture, ça peut peut être aider..
apparemment, c'est pas si simple que cela de communiquer en siemens !

https://support.industry.siemens.com/cs ... 0&lc=fr-WW

Re: Décalage Données

Posté : 30 juin 2016, 21:10
par Throkane
Longueur renvoyée 584, c'est-à-dire la longueur de mon bloc.
Toutes les données sont transmises mais elles ne sont pas stockées correctement !

Re: Décalage Données

Posté : 30 juin 2016, 21:31
par Lorent2
Déjà pourquoi tes données du bloc de com passent par des variables locales (ID, LADDR) ?
Ecrit les en dur pour être sur.

Après je dirai qu'il faut cadencer l’émission (fin d’émission autorise la suivante), et autoriser en permanence la réception (vire ton contact avant)

Re: Décalage Données

Posté : 01 juil. 2016, 00:33
par djé
De ce que j'ai pu lire et comprendre, en liaison TCP le destinataire ne sait pas quand commence et ou fini le message, car ce type de communication est de type flux de données. Voir Ici.

J'ai cependant du mal à m'expliquer le décalage. Il y a un post pour un problème similaire sur le forum siemens ici

Les dernières valeurs de ton DB sources sont-elles à zéro? Je demande çà c'est pour voir si les 32 premiers octets de ton DB de réception ne serait pas en fait les 32 derniers de la sources.
La DB de reception fait-elle pile 584 octets?

Essaie en envoyant simplement 10 octets pour vérifier si le décalage existe toutjours.

Fais un test en ISO sur TCP si tu peux. Communication orientée paquets (voir ici)

Re: Décalage Données

Posté : 02 juil. 2016, 00:07
par Throkane
Bon, j'ai essayé de mettre la réception en continue, ça ne change rien.

Pour répondre au dernier message, je confirme, les 32 premiers octets de destination sont bien les 32 derniers octets source...

Les DB de destination et source sont strictement identiques et font bien 584 octets.

Re: Décalage Données

Posté : 02 juil. 2016, 11:52
par djé
Dans un des onglets des propriétés de la carte CP il y a une case à cocher pour autoriser des envois de longueurs supérieure à 240 octets.
Est-elle cochée?