Copia (COP) - Copia sincrónica (CPS)
Esta información corresponde a los controladores
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 y ControlLogix 5590. Las diferencias de controladores se indican cuando corresponda.Las instrucciones COP y CPS copian los valores de Source en Dest. Source permanece sin cambios.
Idiomas disponibles
Diagrama de lógica de escalera


Bloque de funciones
Esta instrucción no está disponible en el bloque de funciones.
Texto estructurado
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
Operandos
IMPORTANTE:
Puede ocurrir un funcionamiento inesperado si:
- Los operandos de etiqueta de salida se sobrescriben.
- Los miembros de un operando de estructura se sobrescriben.
- A no ser que se especifica, los operandos de estructura son compartidos por varias instrucciones.
Diagrama de lógica de escalera
Operando | Tipo de datos Controladores CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 y GuardLogix 5570 | Tipo de datos controladores CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 y ControlLogix 5590 | Formato | Descripción |
|---|---|---|---|---|
Source | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT REF_TO_AXIS_VIRTUAL REF_TO_AXIS_CONSUMED REF_TO_AXIS_GENERIC_DRIVE REF_TO_AXIS_SERVO REF_TO_AXIS_SERVO_DRIVE | etiqueta | Elemento inicial para copiar. En el caso de los controladores compatibles con los tipos de datos de movimiento REF_TO, el tipo de operando de eje admitido puede reemplazarse por un tipo de REF_TO equivalente. La instrucción Referencia (REF) asocia una referencia con una etiqueta concreta de eje o de sistema de coordenadas. |
Dest | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT | etiqueta | Elemento inicial que sobrescribir por el origen |
Length | SINT INT DINT | SINT INT DINT | etiqueta inmediato | Número de elementos de Destino para copiar |
Texto estructurado
Operando | Tipo de datos Controladores CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 y GuardLogix 5570 | Tipo de datos controladores CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 y ControlLogix 5590 | Formato | Descripción |
|---|---|---|---|---|
Source | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT REF_TO_AXIS_VIRTUAL REF_TO_AXIS_CONSUMED REF_TO_AXIS_GENERIC_DRIVE REF_TO_AXIS_SERVO REF_TO_AXIS_SERVO_DRIVE REF_TO_AXIS_CIP_DRIVE | etiqueta | Elemento inicial para copiar |
Dest | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT | etiqueta | Elemento inicial que sobrescribir por el origen |
Length | SINT INT DINT | SINT INT DINT | inmediato etiqueta | Número de elementos de Destino para copiar |
Consulte Sintaxis de texto estructurado para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
No es específico para esta instrucción. Consulte Índice a través de matrices para ver los fallos de indexación de matrices.
Ejecución
Diagrama de lógica de escalera
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | N/A |
La condición de entrada de renglón es falsa | Establecer la condición de salida de renglón a condición de entrada de renglón. |
La condición de entrada de renglón es verdadera | Establecer la condición de salida de renglón a condición de entrada de renglón. La instrucción copia los datos. |
Post-escaneado | N/A |
Texto estructurado
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Consultar Pre-escaneado en la tabla Diagrama de escalera |
Ejecución normal | Consultar La condición de entrada de reglón es verdadera en la tabla Diagrama de escalera. |
Post-escaneado | Consultar Post-escaneado en la tabla Diagrama de escalera. |
Durante la ejecución de las instrucciones COP y CPS, otras acciones del controlador pueden intentar interrumpir la operación de copia y cambiar el origen:
Si el origen o el destino es: | Y necesita: | Entonces selecciona: | Notas |
|---|---|---|---|
| Evitar que los datos de origen cambien durante la operación de copia | CPS | Las tareas que intentan interrumpir una instrucción CPS se retardan hasta que se realiza la instrucción. Para calcular el tiempo de ejecución de la instrucción CPS, consulte el Manual del usuario del sistema de ControlLogix , publicación 1756-UM001.Use el código de la aplicación de enclavamiento para asegurar que un cliente remoto no esté actualizando el origen mientras se está ejecutando la instrucción CPS. |
Permitir que los datos de origen cambien durante la operación de copia | COP | ||
Ninguno de los anteriores | ---------------> | COP |
Las instrucciones COP y CPS funcionan en la memoria continua y realizan una copia de memoria de byte a byte directa.
Cuando Source y Dest tienen diferentes tipos de datos, el número de bytes copiados es igual al menor entre:
- La cantidad solicitada que es igual a la longitud x (el número de bytes en un elemento de destino)
- El número de bytes en la etiqueta de destino
- Para controladoresCompact GuardLogix5380,CompactLogix5380,ControlLogix5580,GuardLogix5580, o ControlLogix 5590: el número de bytes en la etiqueta de origenCONSEJO: El final de la etiqueta de origen o destino se define como el último byte de la etiqueta de base. Si la etiqueta es una estructura, el final de la etiqueta es el último byte del último elemento de la estructura. Esto significa que las instrucciones COP y CPS podrían escribir más allá del final de una matriz de miembros, pero nunca escribirán más allá del final de la etiqueta de base.
IMPORTANTE:
Prueba y confirma que la instrucción no cambia los datos que no debe cambiar.
Ejemplos
Ejemplo 1
Copiar una matriz.
Cuando está habilitada, la instrucción COP copia 40 bytes de array_4 a array_5.
array_4 es un DINT (4 bytes por elemento) y contiene 10 elementos (tamaño total = 40 bytes).
array_5 es un DINT (4 bytes por elemento) y contiene 10 elementos (tamaño total = 40 bytes).
Length indica que se deben copiar 10 elementos de destino para que se copien 40 bytes.
Diagrama de lógica de escalera

Texto estructurado
COP(array_4[0],array_5[0],10);
Ejemplo 2
Copiar una estructura.
Cuando está habilitada, la instrucción COP copia la estructura timer_1 en el elemento 5 de array_timer.
timer_1 es un TIMER (tamaño total = 12 bytes).
array_timer es un TIMER (12 bytes por elemento) y contiene 10 elementos (tamaño total = 120 bytes).
Longitud indica un elemento de destino, de forma que se copian 12 bytes.
Diagrama de lógica de escalera

Texto estructurado
COP(timer_1,array_timer[5],1);
Ejemplo 3
Copiar los datos de la matriz evitando que se modifiquen los datos hasta que completa la copia.
La matriz project_data (100 elementos) almacena una variedad de valores que cambian en diferentes momentos de la aplicación. Para enviar una imagen completa de project_data en una instancia a tiempo a otro controlador, la instrucción CPS copia project_data a produced_array. Mientras la instrucción CPS copia los datos, ninguna actualización de E/S u otras tareas pueden cambiar los datos. La etiqueta produced_array produce los datos en una red ControlNet para su consumo por parte de otros controladores.
project_data es un DINT (4 bytes por elemento) y contiene 100 elementos (tamaño total = 400 bytes).
produced_array es un DINT (4 bytes por elemento) y contiene 100 elementos (tamaño total = 400 bytes).
Length indica 100 elementos de destino, de forma que se copian 400 bytes.
Diagrama de lógica de escalera

Texto estructurado
CPS(project_data[0],produced_array[0],100);
Ejemplo 4
Copiar los datos en una etiqueta producida evitando que se envíen los datos hasta que completa la copia.
Local:0:I.Data almacena los datos de entrada para la red DeviceNet que está conectada al módulo 1756-DNB en la ranura 0. Para sincronizar las entradas con la aplicación, la instrucción CPS copia los datos de entrada a input_buffer. Mientras la instrucción CPS copia los datos, ninguna actualización de E/S puede cambiar los datos. A medida que la aplicación se ejecuta, utiliza para sus entradas los datos de entrada en input_buffer.
Local:O:I.Data es un DINT (4 bytes por elemento) y contiene 2 elementos (tamaño total = 8 bytes).
input_buffer es un DINT (4 bytes por elemento) y contiene 20 elementos (tamaño total = 80 bytes).
Length indica que se deben copiar 20 elementos de destino (4 X 20 = 80 bytes). Sin embargo, el origen solo puede proporcionar 8 bytes, de forma que se copian 8 bytes.
Diagrama de lógica de escalera

Texto estructurado
CPS(Local:0:I.Data[0], input_buffer[0], 20);
Ejemplo 5
Inicializar una estructura de matriz, inicializar el primer elemento y utilizar COP para replicarlo al resto de la matriz.

Este ejemplo inicializa una estructura de matriz o temporizador. Cuando están habilitadas, las instrucciones MOVE inicializan los valores .PRE y .ACC del primer elemento de array_timer. Cuando está habilitada, la instrucción COP copia un bloque continuo de bytes, comenzando en array_timer[0]. La longitud es de nueve estructuras de temporizador.
array_timer es un TIMER (12 bytes por elemento) y contiene 15 elementos (tamaño total = 180 bytes).
Length indica 10 elementos de destino, de forma que se copian 120 bytes.
Diagrama de lógica de escalera

Texto estructurado
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
Ejemplo 6
Copiar matrices de diferentes tamaños.
Cuando está habilitada, la instrucción COP copia bytes de SINT array_4 a DINT array_5.
array_4 es un SINT (1 byte por elemento) y contiene 5 elementos (tamaño total = 5 bytes).
array_5 es un DINT (4 bytes por elemento) y contiene 10 elementos (tamaño total = 40 bytes).
Length indica que se deben copiar 20 elementos de destino (4 X 20 = 80 bytes). Sin embargo, el destino solo puede aceptar 40 bytes y el origen solo puede proporcionar 5 bytes, de forma que se copian 5 bytes.
Diagrama de lógica de escalera

Texto estructurado
COP(array_4[0],array_5[0],10);
Entregue su opinión