Saltar a subrutina (JSR), Subrutina (SBR) y Retorno (RET)
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.La instrucción JSR invoca otra rutina. Cuando finaliza dicha rutina, la ejecución vuelve a la instrucción JSR.
La instrucción SBR recibe los parámetros de entrada pasados por JSR.
La instrucción RET pasa los parámetros de retorno de vuelva a JSR y termina el escaneado de la subrutina.
Idiomas disponibles
Diagrama de lógica de escalera



Bloque de funciones



Diagrama de funciones secuenciales

Texto estructurado
JSR(RoutineName,InputCount,InputPar,ReturnPar);
SBR(InputPar);
RET(ReturnPar);
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 especifique, los operandos de estructura son compartidos por varias instrucciones.
ADVERTENCIA:
Para cada parámetro de una instrucción SBR o RET, se utiliza el mismo tipo de datos (incluyendo cualquier dimensión de matriz) como el parámetro correspondiente en la instrucción JSR. Si utiliza tipos de datos diferentes, podrían producirse resultados imprevistos.
Diagrama de lógica de escalera
Instrucción JSR
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 |
|---|---|---|---|---|
Routine Name | ROUTINE | ROUTINE | nombre | Subrutina a ejecutar |
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 | inmediato etiqueta etiqueta de matriz | Datos de esta rutina a copiar en una etiqueta de la subrutina.
|
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 | etiqueta etiqueta de matriz | Etiqueta de esta rutina para copiar el resultado de la subrutina.
|
Instrucción SBR
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 |
|---|---|---|---|---|
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 | etiqueta etiqueta de matriz |
|
Instrucción RET
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 |
|---|---|---|---|---|
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 | etiqueta inmediato etiqueta de matriz | Datos de esta rutina a copiar al parámetro de retorno correspondiente (máximo 40) en la instrucción JSR. |
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
Se producirá un fallo mayor si: | Tipo de fallo | Código de fallo |
|---|---|---|
La instrucción JSR tiene menos parámetros de entrada que la instrucción SBR. | 4 | 31 |
La instrucción JSR pasa a una rutina de fallo. | 4 | 990 o suministrado por el usuario |
La instrucción RET tiene menos parámetros de retorno que la instrucción JSR. | 4 | 31 |
La rutina principal contiene una instrucción RET. | 4 | 31 |
Operación
IMPORTANTE:
Cualquier rutina podría contener una instrucción JSR pero una instrucción JSR no puede llamar (ejecutar) a la rutina principal.

La instrucción JSR inicia la ejecución de la rutina especificada, a la que se hace referencia como una subrutina:
- La subrutina se ejecuta cada vez que se escanea.
- Después de que se ejecute la subrutina, la ejecución de la lógica vuelve a la rutina que contiene la instrucción JSR y continúa con la instrucción que sigue a la JSR.
Para programar un salto a una subrutina, siga estas pautas.
JSR
- Para copiar datos en una etiqueta en la subrutina, se introduce un parámetro de entrada.
- Para copiar un resultado de la subrutina en una etiqueta de esta rutina, se introduce un parámetro de retorno.
- Introduce hasta 40 entradas y hasta 40 parámetros de retorno, según sea necesario.
SBR
- Si la instrucción JSR tiene un parámetro de entrada, se introduce una instrucción SBR.
- Coloca la instrucción SBR como la primera instrucción de la rutina.
- Para cada parámetro de entrada de la instrucción JSR, se introduce la etiqueta en la que quiere copiar los datos.
RET
- Si la instrucción JSR tiene un parámetro de retorno, se introduce una instrucción RET.
- Coloca la instrucción RET como la última instrucción de la rutina.
- Por cada parámetro de retorno de la instrucción JSR, se introduce un parámetro de retorno para enviarlo a la instrucción JSR.
- En una rutina de escalera, coloca instrucciones RET adicionales para salir de la subrutina basada en diferentes condiciones de entrada, si es necesario (las rutinas del bloque de funciones solo permiten una instrucción RET).
Invoca hasta 25 subrutinas anidadas con un máximo de 40 parámetros pasados a una subrutina y un máximo de 40 parámetros devueltos de una subrutina.

CONSEJO:
Seleccione el menú
Editar > Editar elemento de escalera
(Edit > Edit Ladder Element) para agregar y eliminar operandos de variables. Para las instrucciones JSR y SBR, se añade Parámetro de entrada. Para las instrucciones JSR y RET, se añade Parámetro de salida. Para las tres instrucciones, se elimina Parámetro de instrucción.Ejecución
Diagrama de lógica de escalera
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | El renglón se establece en falso. El controlador ejecuta todas las subrutinas. Para asegurarse de que se pre-escaneen todos los reglones de la subrutina, el controlador ignora las instrucciones RET (es decir, que las instrucciones RET no salen de la subrutina). No se pasan los parámetros de entrada ni los de retorno. Si se invoca varias veces la misma subrutina, solo se pre-escaneará una vez. |
La condición de entrada de renglón es falsa (para la instrucción JSR) | N/A |
La condición de entrada de renglón es verdadera | Los parámetros se pasan y se ejecuta la subrutina. |
Post-escaneado | Misma acción que el pre-escaneado |
Bloque de funciones
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Consultar Pre-escaneado en la tabla Diagrama de lógica de escalera. |
EnableIn es falso | N/A |
EnableIn es verdadero | Los parámetros se pasan y se ejecuta la subrutina |
Primera ejecución de instrucción | N/A |
Primer escaneado de instrucción | N/A |
Post-escaneado | Consultar Post-escaneado en la tabla Diagrama de escalera. |
Texto estructurado
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Consultar Pre-escaneado en la tabla Diagrama de lógica de escalera. |
Ejecución normal | Los parámetros se pasan y se ejecuta la subrutina. |
Post-escaneado | Consultar Post-escaneado en la tabla Diagrama de escalera. |
Ejemplos
Ejemplo 1
Diagrama de lógica de escalera

Texto estructurado
Rutina | Programa |
|---|---|
Rutina principal | JSR(routine_1,2,value_1,value_2,float_value_1); |
Subrutina | SBR(value_a,value_b); <statements>; RET(float_a); |
Ejemplo 2
Diagrama de lógica de escalera
Rutina principal

subroutine_1

Ejemplo 3
Bloque de funciones

Entregue su opinión