|
PREGUNTA:
¿Qué hay que tener en cuenta al utilizar enlaces TCP sin RFC 1006?
RESPUESTA:
La CP 343-1 TCP (6GK7 343-1EX00-0XE0 V5.0) y la CP 443-1 (6GK7 443-1EX02-0XE0) en sus nuevas versiones ofrecen la posibilidad de realizar enlaces TCP sin RFC 1006.
El comportamiento de esta interfase es diferente al que se tiene con enlace ISO en TCP. La diferencia estriba en el comportamiento base de TCP: TCP trabaja orientado al flujo de datos y no orientado a los telegramas. TCP no tiene ningún mecanismo que de información sobre el final de un telegrama y el principio del siguiente. Esto significa que el receptor debe conocer la longitud del telegrama y por tanto parametrizar convenientemente el puntero ANY del módulo de recepción.
En un enlace ISO en TCP se garantiza la información sobre la longitud del telegrama por medio del bloque del protocolo RFC 1006 "ISO TRANSPORT SERVICE ON TOP OF TCP". Sin embargo, esto significa que sólo es posible una comunicación con sistemas que también soporten RFC 1006.
Por eso con un enlace TCP puro sólo hay 2 posibilidades de acoplamiento:
- Se trabaja con una longitud fija de telegrama. Es decir, tanto el emisor como el receptor trabajan con una longitud de datos definida con anterioridad. Con ello siempre está definida la longitud del telegrama de manera unívoca.
- Se trabaja con una longitud variable de telegrama. Esto exige un gran trabajo por parte del emisor y del receptor, ya que en los primeros bytes se tiene que insertar la longitud de los datos. El lado de recepción sólo recoge en la recepción de datos los bytes que se incluían en la longitud de los datos. Estos datos hay que evaluarlos en el mismo ciclo y entonces recoger la cantidad exacta de datos de la CP con la llamada de otro RECEIVE adicional. Sólo entonces se transfiere todo el telegrama a la CPU.
Ejemplo:
Un PC envía entre 50 y 400 Bytes a un SIMATIC S7 con CP 443-1. El programa del PC deposita en los primeros 4 bytes de envío la longitud total de datos a enviar. Entonces estos datos, incluida la información sobre la longitud, se envían a la CP. Por medio de una llamada al RECEIVE sólo se recogen de la CP los 4 primeros bytes de los datos recibidos y se depositan en un DB de la CPU. Si, por ejemplo, el dato de la longitud de 212, entonces se hace una segunda llamada del RECEIVE para recoger los 208 Bytes que faltan por recoger del telegrama. Hay que tener en cuenta que el lugar de recepción de los datos tiene que ser siempre lo suficientemente grande y que en la segunda llamada no se deben sobreescribir los datos de la primera llamada.
Esto es sólo un ejemplo. Con la primera llamada se pueden recoger todos los datos que se deseen, siempre que no se rebase la longitud total del telegrama. En caso contrario, el RECEIVE espera hasta la cantidad de datos disponible se encuentre en el buffer de la CP. Esto podrían ser varios telegramas.
Además en el S7-300 hay que tener en cuenta que para un enlace TCP sólo se pueden utilizar los módulos FC 50/FC 60, incluso cuando la longitud es inferior a 240 Bytes.
|