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



Bloc fonctionnel



Graphe de fonctionnement séquentiel

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.
|
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.
|
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 |
|
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.

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.

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

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

subroutine_1

Exemple 3
Bloc fonctionnel

Fournir une réponse