Transmission de données : préparation des données cycliques, optimisation du débit de données, longueur de la trame ≤ taille de segment maximum (63 octets)
NOTE : À partir du deuxième bloc MTU, les données série commencent dans le registre TxByte1. Il n'y a plus d'octet de contrôle.
Étape |
Action |
---|---|
1 |
Copiez le premier bloc des données série du registre TxByte2 dans le registre TxByteX. |
2 |
Créez l'octet de contrôle dans le registre TxByte1. Indiquez la longueur de la trame et définissez la détection de fin de trame = 1. |
3 |
Augmentez le numéro de séquence d'envoi dans le registre OutputSequence. Le module copie les données dans le tampon de transmission au prochain cycle. |
4 |
Lorsque vous utilisez le mécanisme Block Forward, répétez les étapes 1 à 3 jusqu'à ce que les données série aient été transférées en blocs. Avec le dernier bloc, le module détecte que la fin de la trame a été atteinte et libère la trame pour envoi. Une nouvelle trame peut débuter immédiatement dans le cycle suivant. |
5 |
Les acquittements cycliques du numéro de séquence d'envoi transféré des blocs dans le registre InputSequence confirment que ces blocs ont été reçus. Si le numéro de séquence d'envoi demeure inchangé, vous devez répéter la procédure à partir du premier numéro de séquence non acquitté. |
Organigramme de transmission de données : préparation des données cycliques, optimisation du débit de données, longueur de la trame ≤ taille de segment maximum
Longueur de la trame > taille de segment maximum
NOTE : À partir du deuxième bloc MTU, les données série commencent dans le registre TxByte1. Il n'y a plus d'octet de contrôle.
Étape |
Action |
---|---|
1 |
Copiez le premier bloc des données série du registre TxByte2 dans le registre TxByteX. |
2 |
Créez l'octet de contrôle dans le registre TxByte1. Spécifiez la longueur de segment, la position de l'octet de contrôle = 1 et la détection de fin de trame = 0. |
3 |
Augmentez le numéro de séquence d'envoi dans le registre OutputSequence. Le module copie les données dans le tampon de transmission au prochain cycle. |
4 |
Lorsque vous utilisez le mécanisme Block Forward, répétez les étapes 1 à 3 jusqu'à ce que les données du premier segment aient été transférées en blocs. |
5 |
Si le premier segment inclut toujours des registres TxBytes non alloués, avec la position de l'octet de contrôle = 1, le segment suivant démarre automatiquement dans le premier registre TxByte non alloué et les octets restants sont remplis avec des données. Avec la position de l'octet de contrôle = 0, le segment suivant démarre dans la prochaine nouvelle MTU. |
6 |
Répétez les étapes 1 à 5 pour transférer les segments de trame en blocs. Dans l'octet de contrôle du dernier segment, définissez la détection de fin de trame = 1. Avec le dernier bloc du dernier segment, le module détecte que la longueur de la trame a été atteinte et libère la trame pour envoi. Une nouvelle trame peut débuter immédiatement dans le cycle suivant. |
7 |
L'acquittement cyclique des numéros de séquence d'envoi transférés des blocs/segments précédents dans le registre InputSequence confirme que les blocs ont été reçus. Si le numéro de séquence d'envoi demeure inchangé, vous devez répéter la procédure à partir du premier numéro de séquence non acquitté. |
Exemple : partitionnement de l'octet de contrôle et des données de transmission
Vous devez transférer une trame de 27 octets. La taille de la MTU est définie sur 7 octets.
Contrairement à la figure de la section Transmission de données : préparation des données cycliques, organisation maximum et surveillance des étapes individuelles, cette action provoque l'enregistrement de deux cycles MTU pour la même longueur de trame et la même taille de la MTU. Une nouvelle trame peut débuter après la dernière MTU cycle 4.
Lors de la préparation ou de la division des données de transmission, le choix d'utiliser ou non le mécanisme Block Forward ne fait aucune différence :
oSi vous n'utilisez pas le mécanisme Block Forward après les cycles MTU individuels pour le transfert des données de transmission, le module attend l'acquittement du numéro de séquence d'envoi.
oSi vous utilisez le mécanisme Block Forward, le bloc de données suivant est transféré immédiatement lors du cycle suivant.
Pour utiliser l'espace disponible dans le dernier bloc MTU de la trame pour la trame suivante, définissez la position de l'octet de contrôle = 1 dans le dernier octet de contrôle de la trame. Le premier registre TxByte non alloué dans le dernier bloc MTU est alors utilisé comme octet de contrôle pour la trame suivante. La MTU est ensuite remplie avec les données série de la nouvelle trame jusqu'à atteindre la fin des données. Les données série du cycle suivant démarrent dans le registre TxByte1.
Exemple : partitionnement de l'octet de contrôle et des données de transmission
Vous devez transférer deux trames de 27 et 20 octets. La taille de la MTU est définie sur 15 octets.