Trasmissione dati: preparazione dei dati ciclici, ottimizzazione del volume di dati, lunghezza frame ≤ dimensioni max. segmento (63 byte)
NOTA: Dal secondo blocco MTU in avanti, i dati seriali iniziano in TxByte1; non vi sono altri byte di controllo.
Passo |
Azione |
---|---|
1 |
Copiare il primo blocco di dati seriali in TxByte2 ... TxByteX. |
2 |
Creare il byte di controllo in TxByte1. Specificare la lunghezza del frame e impostare il rilevamento di fine frame = 1. |
3 |
Aumentare il numero della sequenza di invio in OutputSequence. Il modulo copia i dati nel buffer di trasmissione durante il ciclo successivo. |
4 |
Quando si utilizza il meccanismo Block Forward, ripetere i passi da 1 a 3 finché i dati seriali non sono stati trasferiti nei blocchi. Con l'ultimo blocco, il modulo rileva che è stata raggiunta la fine del frame e rilascia il frame per l'invio. Un nuovo frame può essere iniziato immediatamente nel ciclo successivo. |
5 |
Le conferme cicliche del numero di sequenza di invio trasferito dei blocchi in InputSequence forniscono la conferma che questi blocchi sono stati ricevuti. Se il numero di sequenza di invio resta senza conferma, occorre ripetere la procedura, iniziando dal primo numero di sequenza non confermato. |
Diagramma di flusso della trasmissione dati: preparazione dei dati ciclici, ottimizzazione del volume di dati, lunghezza frame ≤ dimensioni max. segmento
Lunghezza frame > dimensioni max. segmento
NOTA: Dal secondo blocco MTU in avanti, i dati seriali iniziano in TxByte1; non vi sono altri byte di controllo.
Passo |
Azione |
---|---|
1 |
Copiare il primo blocco di dati seriali in TxByte2 ... TxByteX. |
2 |
Creare il byte di controllo in TxByte1. Specificare la lunghezza del segmento, la posizione del byte di controllo = 1 e il rilevamento di fine frame = 0. |
3 |
Aumentare il numero della sequenza di invio in OutputSequence. Il modulo copia i dati nel buffer di trasmissione durante il ciclo successivo. |
4 |
Quando si utilizza il meccanismo Block Forward, ripetere i passi da 1 a 3 finché i dati del primo segmento non sono stati trasferiti nei blocchi. |
5 |
Se esistono ancora dei TxBytes non allocati nel primo segmento, con posizione del byte di controllo = 1, il segmento successivo inizia immediatamente nel primo TxByte non allocato e i byte rimanenti vengono riempiti con i dati. Con posizione del byte di controllo = 0, il segmento successivo inizia immediatamente nel successivo nuovo blocco MTU. |
6 |
Ripetere i passi da 1 a 5 per trasferire i segmenti dei frame nei blocchi. Nel byte di controllo dell'ultimo segmento, impostare il rilevamento di fine frame = 1. Con l'ultimo blocco dell'ultimo segmento, il modulo rileva che è stata raggiunta la fine del frame e rilascia il frame per l'invio. Un nuovo frame può essere iniziato immediatamente nel ciclo successivo. |
7 |
La conferma ciclica dei numeri di sequenza di invio trasferiti dei blocchi/segmenti precedenti in InputSequence forniscono la conferma che questi blocchi sono stati ricevuti. Se il numero di sequenza di invio resta senza conferma, occorre ripetere la procedura, iniziando dal primo numero di sequenza non confermato. |
Esempio: partizione del byte di controllo e dei dati di trasmissione
Si deve trasferire un frame da 27 byte. Le dimensioni del blocco MTU sono configurate a 7 byte.
A differenza della situazione illustrata nella figura della sezione Trasmissione dati: preparazione dei dati ciclici, organizzazione massima e monitoraggio dei singoli passi), in questo caso si risparmiano due cicli MTU per la stessa lunghezza frame e dimensioni MTU. Un nuovo frame può essere iniziato dopo l'ultimo MTU ciclo 4.
La procedura di preparazione e di suddivisione dei dati di trasmissione è la stessa, indipendentemente dal fatto che si utilizzi il principio Block Forward o meno:
oSenza l'uso del meccanismo Block Forward dopo i singoli cicli MTU per il trasferimento dei dati di trasmissione, il modulo attende la conferma del numero della sequenza di invio.
oCon l'uso del meccanismo Block Forward, il blocco di dati successivo viene trasferito immediatamente nel ciclo seguente.
Per utilizzare lo spazio disponibile nell'ultimo blocco MTU del frame per il frame successivo, impostare l'identificazione della posizione del byte di controllo = 1 nell'ultimo byte di controllo del frame. Il primo TxByte non allocato dell'ultimo blocco MTU viene quindi utilizzato come byte di controllo per il frame successivo. Il blocco MTU viene quindi completato con i dati seriali del nuovo frame fino alla fine dei dati. I dati seriali nel ciclo successivo iniziano in TxByte1.
Esempio: partizione del byte di controllo e dei dati di trasmissione
Si devono trasferire due frame da 27 byte e 20 byte. Le dimensioni del blocco MTU sono impostate a 15 byte.