Tipo di articolo: FAQ, ID articolo: 1235645, Data articolo: 20/10/1999
(0)
Valuta

Comportamento dei processori di comunicazione nel trasferimento dati tramite connessioni TCP senza RFC 1006

  • Articolo
  • Riguarda prodotto/i

DOMANDA:
A cosa occorre fare attenzione nell'impiego di TCP senza RFC 1006?

RISPOSTA:
Il CP 343-1 TCP (6GK7 343-1EX00-0XE0 V5.0) ed il CP 443-1 (6GK7 443-1EX02-0XE0) di nuova fornitura offrono l'accesso a connessioni TCP senza RFC 1006.
Il comportamento di questa interfaccia è diverso da quello ad es. di una connessione ISO-on-TCP. La differenza è nel comportamento di base del TCP: TCP lavora orientato al flusso dei dati e non orientato all'informazione. TCP non ha alcun meccanismo che indichi la fine di una informazione e l'inizio di quella successiva. Questo significa che il ricevente deve sapere quanto grande è la dimensione di una informazione e di conseguenza parametrizzare il pointer ANY del blocco Receive.
Con una connessione ISO-on-TCP, l'informazione sui limiti di una informazione viene garantita dall'aggiunta di protocollo RFC 1006 "ISO Transport Service on top of TCP". Questo significa però che viene supportata solo la comunicazione con sistemi che anch'essi supportano RFC 1006.
Di conseguenza con un puro TCP si può effettuare l'accoppiamento solo tramite due possibilità:

  1. Si lavora con una lunghezza fissa di telegramma. Questo significa che sia il mittente che il ricevente lavorano con una lunghezza dati predefinita. In questo modo i limiti di una informazione sono definiti univocamente.
  2. Si lavora solo con lunghezza variabile di telegramma. Questo richiede lato mittente e lato ricevente un impegno superiore, poiché nei primi byte deve essere registrata la lunghezza dei dati. Il lato ricevente, al ricevimento dei dati preleva solo i byte che sono contenuti nella lunghezza dei dati. Questi devono essere analizzati nello stesso ciclo e poi esattamente il numero di Byte deve essere prelevato dal CP con un ulteriore richiamo Receive. Solo in questo momento il telegramma è stato trasferito completamente nella CPU.
    Esempio:
    Un PC invia tra 50 e 400 byte ad un SIMATIC S7 con CP 443-1. Il programma PC nella trasmissione deposita la lunghezza complessiva dei dati nei primi 4 byte. Poi i dati, compresa l'informazione sulla lunghezza, vengono inviati al CP. Tramite un richiamo Receive, solo i primi 4 byte dei dati ricevuti dal CP vengono portati in un blocco dati della CPU. Se l'indicazione della lunghezza dei dati è p.e. 212, allora viene avviato un nuovo richiamo con 208 byte, con il quale vengono prelevati i byte restanti. Qui occorre fare attenzione che la posizione di deposito dei dati sia sempre sufficientemente grande ed che con il secondo richiamo non vengano sovrascritti i dati del primo richiamo.
    Questo è solo un esempio. Con il primo richiamo si possono prelevare tanti dati quanti si vogliono, ma non si possono prelevare più dati della lunghezza del telegramma. In caso contrario la Receive aspetta fino a quando la quantità di dati indicata non è nel buffer di ingresso del CP. Questi potrebbero essere più telegrammi.

Inoltre con S7-300 occorre fare attenzione che per una connessione TCP si possono utilizzare solo i blocchi FC 50 / FC 60, anche quando la lunghezza è inferiore a 240 byte.