Copie (COP) - Copie synchrone (CPS)

Ces informations s’appliquent aux automates
CompactLogix
 5370,
ControlLogix
 5570,
Compact GuardLogix
 5370,
GuardLogix
 5570,
Compact GuardLogix
 5380,
CompactLogix
 5380,
ControlLogix
 5580,
GuardLogix
 5580 et ControlLogix 5590. Les différences entre les automates sont signalées, le cas échéant.
Les instructions COP et CPS copient les valeurs dans la source vers les valeurs dans la destination. Source reste inchangée.
Langues disponibles
Diagramme à relais
RSL5K_CPS Ladder Diagram_v31
RSL5K_CPS Ladder Diagram 2_v31
Bloc fonctionnel
Cette instruction n'est pas disponible dans le bloc fonctionnel.
Texte structuré
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
Opérandes
IMPORTANT: Une opération inattendue peut se produire dans les cas suivants :
  • Les opérandes de balise de sortie sont remplacés.
  • Les membres d'un opérande de structure sont remplacés.
  • Sauf lorsque cela est spécifié, les opérandes de structure sont partagés par plusieurs instructions.
Diagramme à relais
Opérande
Type de données
Automates
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370 et
GuardLogix
5570
Type de données
Automates
CompactLogix
 5380,
ControlLogix
 5580,
Compact GuardLogix
 5380
GuardLogix
 5580 et ControlLogix 5590
Format
Description
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
balise
Élément initial à copier.
Pour les automates qui prennent en charge les types de données de mouvement REF_TO, le type d’opérande d’axe pris en charge peut être remplacé par un type de REF_TO équivalent. L’instruction Référence(Reference, REF) associe une référence à une balise concrète d’axe ou de système de coordonnées.
Dest
SINT
INT
DINT
LINT
REAL
String type
structure
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
String type
structure
DT
balise
Élément initial à remplacer par la Source
Length
SINT
INT
DINT
SINT
INT
DINT
balise immédiate
Nombre d’éléments Destinataires à copier
Texte structuré
Opérande
Type de données
Automates
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370 et
GuardLogix
5570
Type de données
Automates
CompactLogix
 5380,
ControlLogix
 5580,
Compact GuardLogix
 5380
GuardLogix
 5580 et ControlLogix 5590
Format
Description
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
balise
Élément initial à copier
Dest
SINT
INT
DINT
LINT
REAL
String type
structure
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
String type
structure
DT
balise
Élément initial à remplacer par la Source
Length
SINT
INT
DINT
SINT
INT
DINT
immédiat
balise
Nombre d’éléments Destinataires à copier
Reportez-vous à Syntaxe du texte structuré pour plus d’informations concernant la syntaxe des expressions dans le texte structuré.
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Aucun spécifique à cette instruction. Reportez-vous à la section Indexer via des tableaux pour consulter les défauts d’indexation par tableau.
Exécution
Diagramme à relais
Condition/état
Action entreprise
Préscrutation
N/A
La condition d'entrée d'échelon est égale à faux
Définir la condition de sortie d’échelon sur la condition d’entrée d’échelon.
La condition d'entrée d'échelon est égale à vrai
Définir la condition de sortie d’échelon sur la condition d’entrée d’échelon.
L'instruction copie les données.
Post-scrutation
N/A
Texte structuré
Condition/état
Action entreprise
Préscrutation
Reportez-vous à Pré-scrutation dans le tableau Diagramme à relais
Exécution normale
Reportez-vous à condition d'entrée d'échelon est vraie dans le tableau Diagramme à relais.
Post-scrutation
Reportez-vous à Post-scrutation dans le tableau Diagramme à relais.
Pendant l'exécution des instructions COP et CPS, d'autres actions de l'automate peuvent tenter d'interrompre la copie et de modifier la source :
Si la source ou la destination est :
Et doit :
Sélectionnez :
Remarques
  • étiquette produite
  • balise consommée
  • données E/S
  • données qu'une autre tâche peut remplacer
  • balise non atomique d’écriture par un dispositif à distance
Empêcher la modification des données source pendant la copie
CPS
Les tâches qui tentent d'interrompre une instruction CPS sont repoussées jusqu'à ce que l'instruction soit terminée.
Pour estimer le temps d’exécution de l’instruction CPS, reportez-vous au Manuel d’utilisation du système
ControlLogix
, publication 1756-UM001.
Utilisez le code de l'application de verrouillage pour vous assurer qu'un client à distance ne met pas à jour la source pendant l'exécution de l'instruction CPS.
Autoriser la modification des données source pendant la copie
COP
Autre
--------------->
COP
Les instructions COP et CPS fonctionnent sur une mémoire contiguë et exécutent une copie mémoire directe d'octet à octet.
Lorsque les types de données source et de destination sont différents, le nombre d'octets copiés est égal à la plus petite des valeurs suivantes :
  • La quantité demandée est égale à la longueur x (nombre d'octets dans un élément destinataire)
  • Le nombre d'octets dans l'étiquette destinataire
  • Pour les automates
    Compact GuardLogix
     5380,
    CompactLogix
     5380,
    ControlLogix
     5580,
    GuardLogix
     5580 ou ControlLogix 5590 : le nombre d'octets dans la balise source
    CONSEIL: La fin de l'étiquette source ou destinataire est définie comme le dernier octet de l'étiquette de base. Si la balise est une structure, la fin de la balise correspond au dernier octet du dernier élément de la structure. Cela signifie que les instructions COP et CPS peuvent écrire après la fin d'un tableau de membre, mais pas après la fin de l'étiquette de base.
IMPORTANT: Tester et confirmer que l'instruction ne modifie pas des données qu'elle ne devrait pas modifier.
Exemples
Exemple 1
Copier un tableau.
Si activée, l'instruction COP copie 40 octets depuis le tableau array_4 vers le tableau array_5.
array_4 est un DINT (4 octets par élément) et contient 10 éléments (taille totale = 40 octets)
array_5 est un DINT (4 octets par élément) et contient 10 éléments (taille totale = 40 octets).
Length indique que 10 éléments destinataires doivent être copiés, donc 40 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 1_v31
Texte structuré
COP(array_4[0],array_5[0],10);
Exemple 2
Copier une structure.
Si activée, l'instruction COP copie la structure timer_1 dans l'élément 5 de array_timer.
timer_1 est un TIMER (taille totale = 12 octets).
array_timer est un TIMER (12 octets par élément) et contient 10 éléments (taille totale = 120 octets).
Length indique que 1 élément destinataire doit être copié, donc 12 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 2_v31
Texte structuré
COP(timer_1,array_timer[5],1);
Exemple 3
Copier les données du tableau tout en empêchant la modification des données tant que la copie n'est pas terminée.
Le tableau project_data (100 éléments) stocke diverses valeurs qui changent à différents moments dans l'application. Pour envoyer une image complète du tableau project_data dans une instance à temps vers un autre automate, l'instruction CPS copie project_data dans produced_array. Pendant que l'instruction CPS copie les données, aucune mise à jour E/S ni autre tâche ne peut modifier les données. La balise produced_array génère les données sur un réseau ControlNet pour utilisation par d’autres automates.
project_data est un DINT (4 octets par élément) et contient 100 éléments (taille totale = 400 octets)
produced_array est un DINT (4 octets par élément) et contient 100 éléments (taille totale = 400 octets).
Length indique que 100 éléments destinataires doivent être copiés, donc 400 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 3_v31
Texte structuré
CPS(project_data[0],produced_array[0],100);
Exemple 4
Copier les données vers une balise produite tout en empêchant l’envoi des données tant que la copie n’est pas terminée.
Local:0:I.Data stocke les données d'entrée pour le réseau DeviceNet connecté au module 1756-DNB dans le logement 0. Pour synchroniser les entrées avec l'application, l'instruction CPS copie les données d'entrées dans input_buffer. Pendant que l'instruction CPS copie les données, aucune mise à jour E/S ne peut modifier les données. Pendant que l'application s'exécute, elle utilise comme entrées les données d'entrées contenues dans input_buffer.
Local:O:I.Data est un DINT (4 octets par élément) et contient 2 éléments (taille totale = 8 octets)
input_buffer est un DINT (4 octets par élément) et contient 20 éléments (taille totale = 80 octets).
Length indique que 20 éléments destinataires doivent être copiés (4 X 20 = 80 octets). Toutefois, la source ne peut fournir que 8 octets, donc 8 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 4_v31
Texte structuré
CPS(Local:0:I.Data[0], input_buffer[0], 20);
Exemple 5
Initialiser une structure de tableau, initialiser le premier élément, puis utiliser COP pour le répliquer dans le reste du tableau.
COP and CPS Example 5
Cet exemple initialise des structures de temporisateur ou de tableau. Si activées, les instructions MOVE initialisent les valeurs .PRE et .ACC du premier élément array_timer. Si activée, l'instruction COP copie un bloc contigu d'octets, en commençant à array_timer[0]. La longueur est de neuf structures de temporisateur.
array_timer est un TIMER (12 octets par élément) et contient 15 éléments (taille totale = 180 octets)
Length indique que 10 élément destinataire doit être copié, donc 120 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 5_v38
Texte structuré
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
Exemple 6
Copier des tableaux de différentes tailles.
Si activée, l'instruction COP copie les octets depuis le tableau SINT array_4 vers le tableau DINT array_5.
array_4 est un SINT (1 octet par élément) et contient 5 éléments (taille totale = 5 octets)
array_5 est un DINT (4 octets par élément) et contient 10 éléments (taille totale = 40 octets).
Length indique que 20 éléments destinataires doivent être copiés (4 X 20 = 80 octets). Toutefois, la destination ne peut accepter que 40 octets, et la source ne peut fournir que 5 octets, donc 5 octets sont copiés.
Diagramme à relais
RSL5K_COP and CPS Ladder Diagram Example 1_v31
Texte structuré
COP(array_4[0],array_5[0],10);
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal