Descripción
Con la instrucción "X_RCV" se reciben datos enviados por uno o más interlocutores fuera de la estación S7 propia con la instrucción "X_SEND".
Con la instrucción "X_RCV":
-
se puede determinar si existen datos enviados en ese momento. Si es así, el sistema operativo los habrá dispuesto en una cola de espera interna.
-
se puede copiar el bloque de datos más antiguo de la cola de espera en un área de recepción definida por el usuario.
Parámetro
La tabla siguiente muestra los parámetros de la instrucción "X_RCV":
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
EN_DT |
Input |
BOOL |
I, Q, M, D, L |
Parámetro de control "enable data transfer". Con el valor 0 se comprueba si existe como mínimo un bloque de datos. Con el valor "1" el bloque de datos más antiguo de la cola de espera se copia en el área de la memoria de trabajo especificada por el usuario en RD. |
|
RET_VAL |
Return |
INT |
I, Q, M, D, L |
Si se produce un error durante la ejecución de la instrucción, el valor de respuesta contendrá el código de error correspondiente. Si no se produce ningún error, RET_VAL contiene
|
|
REQ_ID |
Output |
DWORD |
I, Q, M, D, L |
Identificación de petición de la instrucción "X_SEND" cuyos datos enviados se encuentran en primer lugar en la cola de espera, es decir, los datos más antiguos de la cola. Si no hay ningún bloque de datos en la cola de espera, REQ_ID tiene el valor "0". |
|
NDA |
Output |
BOOL |
I, Q, M, D, L |
Parámetro de estado "new data arrived". NDA=0:
NDA=1:
|
|
RD |
Output |
ANY |
I, Q, M, D |
Referencia al área de recepción (receive data area). Se permiten los siguientes tipos de datos: BOOL, BYTE, CHAR, WORD, INT, DWORD, DINT, REAL, DATE, TOD, TIME, S5_TIME, DATE_AND_TIME así como matrices de los tipos de datos indicados, excepto BOOL. Para rechazar el bloque de datos más antiguo de la cola de espera, asigne a RD el valor NIL. |
Encontrará más información sobre los tipos de datos válidos en "Vista general de los tipos de datos válidos".
Indicar la recepción de datos con EN_DT=0
En cuanto se han recibido los datos de un interlocutor, el sistema operativo los dispone en la lista de espera por orden de recepción.
Para comprobar si existe como mínimo un bloque de datos, llame "X_RCV" con EN_DT=0 y evalúe el parámetro de salida NDA:
-
NDA=0 significa que no hay ningún bloque de datos registrado en la cola de espera. REQ_ID es irrelevante, RET_VAL contiene W#16#7000.
-
NDA=1 significa que en la cola de espera hay como mínimo un bloque de datos listo para ser recogido.
En este caso, evalúe también los parámetros de salida RET_VAL y, si procede, REQ_ID. RET_VAL contiene la longitud del bloque de datos en bytes, REQ_ID la identificación de petición del bloque de transmisión. Si en la cola de espera hay varios bloques de datos, REQ_ID y RET_VAL corresponden al último bloque de la cola.
Aplicar datos en el área de recepción con EN_DT=1
Si se llama "X_RCV" con EN_DT=1, el bloque de datos más antiguo de la cola de espera se copia en el área de la memoria de trabajo especificada por RD. RD debe ser mayor o igual que el área de transmisión definida por el parámetro SD de la instrucción correspondiente "X_SEND". Si el parámetro de entrada correspondiente SD es del tipo de datos BOOL, RD también tiene que ser del tipo de datos BOOL. Para depositar los datos recibidos en diferentes áreas, determine REQ_ID (llamada de instrucción con EN_DT=0) y en la llamada siguiente (con EN_DT=1) seleccione RD convenientemente. Si se produjo un error durante el proceso de copia, en RET_VAL se indica la longitud del bloque de datos copiado en bytes, y se devuelve un acuse positivo al emisor.
Rechazar datos
Si no desea aplicar los datos, asigne a RD el valor NIL. En este caso, el emisor recibe un acuse negativo (RET_VAL de la instrucción correspondiente "X_SEND" tiene el valor W#16#80B8), y en RET_VAL de la instrucción "X_RCV" se registra "0".
Coherencia de datos
Tras la llamada con EN_DT=1 y RETVAL=W#16#00xy hay nuevos datos en el área de recepción RD. Otra llamada del bloque puede sobrescribir estos datos. Para impedirlo, no vuelva a llamar "X_RCV" con la misma área de recepción RD antes de haber evaluado los datos recibidos.
Transición de estado operativo tras STOP
En caso de transición al estado operativo STOP
-
todas las nuevas peticiones entrantes se acusan negativamente.
-
rige lo siguiente para las nuevas peticiones: todas las peticiones registradas en la cola de espera de recepción se acusan negativamente.
-
Si a continuación se produce un rearranque completo (en caliente) o arranque en frío se rechazan todos los bloques de datos.
-
Si a continuación se produce un rearranque (no con S7-300 ni S7-400H), en el programa de usuario se aplica el bloque de datos correspondiente a la petición más antigua, siempre que se haya consultado antes de la transición al estado operativo STOP (llamada de "X_RCV" con EN_DT=0). De lo contrario se rechaza.
Todos los bloques de datos restantes se rechazan.
-
Interrupción de la conexión
Si se cancela una conexión y en la cola de espera de recepción ya hay registrada una petición que pertenece a dicha conexión, la petición se rechaza.
Excepción: Si dicha petición es la más antigua de la cola de espera y ya la ha reconocido con la llamada de "X_RCV" con EN_DT=0, se puede aplicar en el área de recepción con EN_DT=1.
Parámetro RET_VAL
Consulte también: