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
JSR_LD_avail_v31
SBR_LD_avail_v31
RET_LD_avail_v31
Bloque de funciones
JSR_FB_avail_v31
SBR_FB_avail_v31
RET_FB_avail_v31
Diagrama de funciones secuenciales
SBR_RET_FC_avail_v31
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.
  • Los parámetros de entrada son opcionales
  • Se introduce un máximo de 40 parámetro de entrada si es necesario.
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.
  • Los parámetros de retorno son opcionales
  • Se introduce un máximo de 40 parámetros de retorno si es necesario
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
  • Etiqueta de esta rutina en la que copiar al parámetro de entrada correspondiente (máximo 40) en la instrucción JSR.
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.
JSR_SBR_RET
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.
JSR_ex
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
JSR_SBR_RET_LD_ex_v31
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
JSR_LD_ex_v31
subroutine_1
RET_LD_ex.png_v31
Ejemplo 3
Bloque de funciones
L5K_JSR_SBR_RET_FB_ex_v31.png
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal