UBLKMOV: Copiar área sin interrupciones (S7-300, S7-400) - STEP 7

SCL (S7-300, S7-400)

ft:publication_title
SCL (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
es-ES
UBLKMOV: Copiar área sin interrupciones

Descripción

La instrucción "Copiar área sin interrupciones" copia los contenidos de un área de memoria (área de origen) en un área de memoria diferente (área de destino). La operación de copia se realiza por orden ascendente de direcciones. Las áreas de origen y destino se definen mediante punteros ANY.

La operación de copia no debe ser interrumpida por otras actividades del sistema operativo. Ello puede aumentar el tiempo de reacción a alarmas de la CPU durante la ejecución de la instrucción "Copiar área sin interrupciones".

Nota

En esta instrucción solo se pueden utilizar tipos de datos que sean válidos en una CPU de la serie S7-300/400.

Áreas de memoria

La instrucción "Copiar área sin interrupciones" permite copiar las siguientes áreas de memoria:

  • Áreas de un bloque de datos

  • Marcas

  • Memoria imagen de proceso de las entradas

  • Memoria imagen de proceso de las salidas

Reglas generales para copiar

Al ejecutar la instrucción "Copiar área sin interrupciones" no pueden solaparse las áreas de origen y destino. Si el área de origen es más pequeña que el área de destino, el área de origen se copiará por completo en el área de destino. Los restantes bytes del área de destino permanecen inalterados.

Si el área de destino es más pequeña que el área de origen, se escribirá en toda el área de destino. Los restantes bytes del área de origen se ignoran.

Si un área de origen o destino definida como parámetro formal es menor que un área de origen o destino indicada en los parámetros SRCBLK o DSTBLK, no se transferirán datos.

Al copiar un área del tipo de datos BOOL, la longitud indicada del área debe ser un múltiplo de 8, pues de lo contrario no se ejecutará la instrucción.

La instrucción "Copiar área sin interrupciones" permite copiar 512 bytes como máximo. A este respecto deben tenerse en cuenta las limitaciones específicas de la CPU.

Nota

Si el área de origen o destino realmente existente es menor que el área de origen o destino indicada en el parámetro BVAL o BLK, el comportamiento dependerá del tipo de CPU:

  • Para las CPU S7-300 rige lo siguiente:

    No se transfieren datos. En el parámetro RET_VAL se devuelve el código de error W#16#837F. Este código de error debe evaluarse en el programa de usuario.

  • Para las CPU V4 del S7-400 (V4, CPU H V4 y CPU H V4.5 se aplica lo siguiente:

    No se transfieren datos. En el parámetro RET_VAL se devuelve el código de error W#16#8122 o W#16#8323. Este código de error debe evaluarse en el programa de usuario.

  • Para las restantes CPU S7-400 rige:

    Se transfieren datos. En el parámetro RET_VAL se devuelve el código de error W#16#8122 o W#16#8323. Este código de error debe evaluarse en el programa de usuario.

Reglas para copiar cadenas de caracteres

La instrucción "Copiar área sin interrupciones" permite copiar asimismo áreas de origen y destino del tipo de datos STRING. Si solo el área de origen es del tipo de datos STRING, se copiarán los caracteres realmente contenidos en la cadena de caracteres. La información sobre la longitud real y máxima no se escribe en el área de destino. Si tanto el área de origen como el área de destino son del tipo de datos STRING, la longitud actual de la cadena de caracteres en el área de destino se pone al número de caracteres realmente copiados. Si se copian áreas del tipo de datos STRING, debe indicarse "1" como longitud del área.

Parámetro

La tabla siguiente muestra los parámetros de la instrucción:

Parámetros

Declaración

Tipo de datos

Área de memoria

Descripción

SRCBLK

Input

ANY

I, Q, M, D, L, P

Indicación del área de memoria que se copia (área de origen).

DSTBLK

Output 1)

ANY

I, Q, M, D, L, P

Indicación del área de memoria en la que se copia (área de destino).

Valor de función (RET_VAL)

INT

I, Q, M, D, L, P

Información de error

1) El parámetro DSTBLK se declara como Output, pero en la interfaz del bloque debe declararse como InOut.

Encontrará más información sobre los tipos de datos válidos en "Consulte también".

Parámetro RET_VAL

La tabla siguiente muestra el significado de los valores del parámetro RET_VAL:

Código de error*
(W#16#...)

Explicación

0000

Ningún error

8091

El área de origen o destino está solo en la memoria de carga.

8xyy

Encontrará más información de error en "Consulte también".

*En el editor de programas, los códigos de error se pueden representar como valores enteros o hexadecimales. Encontrará más información sobre el cambio de los formatos de visualización en "Consulte también".

Ejemplo

El siguiente ejemplo muestra el funcionamiento de la instrucción:

SCL Copia el código de programa siguiente en el portapapeles.

"Tag_RetVal" := UBLKMOV(SRCBLK := P#M100.0 BYTE 10,

                        DSTBLK => P#DB1.DBX0.0 BYTE 10);

La instrucción copia 10 bytes a partir de MB100 y los escribe en el DB1. Si ocurre un error durante la operación de copia, el respectivo código de error se indica en la variable "Tag_RetVal".