Saut vers sous-routine (Jump to Subroutine, JSR), Sous-routine (Subroutine, SBR), et Retour (Return, RET)

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.
L’instruction JSR appelle une autre routine. Lorsque cette routine se termine, l’exécution retourne à l’instruction JSR.
L’instruction SBR reçoit les paramètres d’entrée passés par JSR.
L’instruction RET renvoie les paramètres de retour à JSR et termine la scrutation de la sous-routine.
Langues disponibles
Diagramme à relais
JSR_LD_avail_v31
SBR_LD_avail_v31
RET_LD_avail_v31
Bloc fonctionnel
JSR_FB_avail_v31
SBR_FB_avail_v31
RET_FB_avail_v31
Graphe de fonctionnement séquentiel
SBR_RET_FC_avail_v31
Texte structuré
JSR(RoutineName,InputCount,InputPar,ReturnPar);
SBR(InputPar);
RET(ReturnPar);
Opérandes
IMPORTANT: Une opération inattendue peut se produire dans les cas suivants :
  • Les opérandes de balise de sortie sont remplacées.
  • Les membres d’une opérande de structure sont remplacées.
  • Sauf spécification contraire, les opérandes de structure sont partagées par plusieurs instructions.
AVERTISSEMENT: Pour chaque paramètre dans les instructions SBR ou RET, utiliser le même type de données (y compris toute dimension de tableau) que le paramètre correspondant dans l’instruction JSR. L’utilisation de différents types de données peut produire des résultats imprévus.
Diagramme à relais
Instruction JSR
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
Routine Name
ROUTINE
ROUTINE
nom
Sous-routine à exécuter
Input Par
BOOL
SINT
INT
DINT
REAL
structure
BOOL
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
structure
DT
LDT
TIME32
TIME
LTIME
immédiat
balise
balise de tableau
Les données de cette routine à copier dans une étiquette de la sous-routine.
  • Les paramètres d’entrée sont optionnels
  • Entrer un nombre maximal de 40 paramètres d'entrée, si nécessaire.
Return Par
BOOL
SINT
INT
DINT
REAL
structure
BOOL
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
structure
DT
LDT
TIME32
TIME
LTIME
balise
balise de tableau
Étiquette dans cette routine pour copier le résultat de la sous-routine.
  • Les paramètres de retour sont optionnels
  • Entrer un nombre maximal de 40 paramètres de retour, si nécessaire
Instruction SBR
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
Input Par
BOOL
SINT
INT
DINT
REAL
structure
BOOL
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
structure
DT
LDT
TIME32
TIME
LTIME
balise
balise de tableau
  • Étiquette dans cette routine dans laquelle copier les paramètres d’entrée correspondant (40 au maximum) de l’instruction JSR.
Instruction RET
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
Return Par
BOOL
SINT
INT
DINT
REAL
structure
BOOL
SINT
INT
DINT
LINT
USINT
UINT
UDINT
ULINT
REAL
LREAL
structure
DT
LDT
TIME32
TIME
LTIME
balise immédiate
balise de tableau
Données de cette routine dans laquelle copier les paramètres de retour correspondant (40 au maximum) de l'instruction JSR.
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Un défaut majeur se produira si :
Type de défaut
Code de défaut
L’instruction JSR a moins de paramètres d’entrée que l’instruction SBR
4
31
L’instruction JSR saute à une routine de défaut
4
990 ou fourni par l’utilisateur
L’instruction RET a moins de paramètres de retour que l’instruction JSR
4
31
La routine principale contient une instruction RET
4
31
Fonctionnement
IMPORTANT: N’importe quelle routine peut contenir une instruction JSR mais une instruction JSR ne peut pas appeler (exécuter) une routine principale.
JSR_SBR_RET
L’instruction JSR lance l’exécution de la routine spécifiée, qui est appelée une sous-routine :
  • La sous-routine est exécutée chaque fois qu’elle est scrutée.
  • Après l’exécution de la sous-routine, l’exécution de la logique retourne à la routine qui contient l’instruction JSR et continue par l’instruction après JSR.
Pour programmer un saut dans une sous-routine, observez ces lignes directrices.
JSR
  • Pour copier des données dans une étiquette de la sous-routine, entrer un paramètre d’entrée.
  • Pour copier un résultat d’une sous-routine dans une étiquette de cette routine, entrer un paramètre de retour.
  • Entrer jusqu’à 40 entrées et jusqu’à 40 paramètres de retour, si nécessaire.
SBR
  • Si l’instruction JSR a un paramètre d’entrée, entrer une instruction SBR.
  • Placer l’instruction SBR comme première instruction de la routine.
  • Pour chaque paramètre d’entrée de l’instruction JSR, entrer une étiquette dans laquelle vous voulez copier les données.
RET
  • Si l’instruction JSR a un paramètre de retour, entrer une instruction RET.
  • Placer l’instruction RET comme dernière instruction de la routine.
  • Pour chaque paramètre de retour de l’instruction JSR, entrer un paramètre de retour à envoyer à l’instruction JSR.
  • Dans une routine à relais, placer des instructions RET additionnelles pour quitter la sous-routine en fonction de conditions d’entrée différentes, si c’est nécessaire (les routines de Bloc fonctionnel ne permettent qu’une seule instruction RET).
Invoquer jusqu’à 25 sous-routines imbriquées, avec un maximum de 40 paramètres passés à une sous-routine, et un maximum de 40 paramètres renvoyés d’une sous-routine.
JSR_ex
CONSEIL: Sélectionner le menu
Éditer > Éditer un élément à relais (Edit > Edit Ladder Element)
pour ajouter et supprimer des opérandes variables. Dans le cas des instructions JSR et SBR, ajouter un paramètre d’entrée. Dans le cas des instructions JSR et RET, ajouter un paramètre de sortie. Pour toutes les trois instructions, supprimer le paramètre d’instruction.
Exécution
Diagramme à relais
Condition/état
Action entreprise
Préscrutation
L’échelon est défini sur faux.
L’automate exécute toutes les sous-routines. Pour s’assurer que tous les échelons dans la sous-routine sont pré-scruté, l’automate ignore les instructions RET (ce qui veut dire que les instructions RET ne font pas quitter la sous-routine).
Les paramètres d’entrée et de retour ne sont pas passés.
Si la même sous-routine est invoquée plusieurs fois, elle ne sera pré-scrutée qu’une seule fois.
Condition d’entrée d’échelon est fausse (pour l’instruction JSR)
N/A
La condition d'entrée d'échelon est égale à vrai
Les paramètres sont passés et la sous-routine est exécutée.
Post-scrutation
Même action que pour la pré-scrutation
Bloc fonctionnel
Condition/état
Action entreprise
Préscrutation
Reportez-vous à Pré-scrutation dans le tableau Diagramme à relais.
EnableIn est faux
N/A
EnableIn est vrai
Les paramètres sont transmis et la sous-routine est exécutée
Première exécution de l'instruction
N/A
Première scrutation de l'instruction
N/A
Post-scrutation
Reportez-vous à Post-scrutation dans le tableau Diagramme à relais.
Texte structuré
Condition/état
Action entreprise
Préscrutation
Reportez-vous à Pré-scrutation dans le tableau Diagramme à relais.
Exécution normale
Les paramètres sont passés et la sous-routine est exécutée.
Post-scrutation
Reportez-vous à Post-scrutation dans le tableau Diagramme à relais.
Exemples
Exemple 1
Diagramme à relais
JSR_SBR_RET_LD_ex_v31
Texte structuré
Routine
Programme
Routine principale
JSR(routine_1,2,value_1,value_2,float_value_1);
Sous-routine
SBR(value_a,value_b);
<statements>;
RET(float_a);
Exemple 2
Diagramme à relais
Routine principale
JSR_LD_ex_v31
subroutine_1
RET_LD_ex.png_v31
Exemple 3
Bloc fonctionnel
L5K_JSR_SBR_RET_FB_ex_v31.png
Fournir une réponse
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal