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
RSL5K_CPS Ladder Diagram_v31
RSL5K_CPS Ladder Diagram 2_v31
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
REF_TO_AXIS_CIP_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
  • etiqueta producida
  • etiqueta consumida
  • datos de E/S
  • datos que otra tarea puede sobrescribir
  • Etiqueta no atómica escrita por un dispositivo remoto
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 controladores
    Compact GuardLogix
    5380,
    CompactLogix
    5380,
    ControlLogix
    5580,
    GuardLogix
    5580, o ControlLogix 5590: el número de bytes en la etiqueta de origen
    CONSEJO: 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
RSL5K_COP and CPS Ladder Diagram Example 1_v31
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
RSL5K_COP and CPS Ladder Diagram Example 2_v31
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
RSL5K_COP and CPS Ladder Diagram Example 3_v31
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
RSL5K_COP and CPS Ladder Diagram Example 4_v31
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.
COP and CPS Example 5
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
RSL5K_COP and CPS Ladder Diagram Example 5_v38
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
RSL5K_COP and CPS Ladder Diagram Example 1_v31
Texto estructurado
COP(array_4[0],array_5[0],10);
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal