Indice de contenidos
El tiempo visto por Dalí

Indice->Subrutinas

Subrutinas

Las subrutinas facilitan la estructuración del programa. Cuando el programa principal llama a una subrutina para que ésta se ejecute, la subrutina procesa su programa hasta el final. El sistema retorna luego el control al segmento del programa principal desde donde se llamó a la subrutina.

Las subrutinas sirven para estructurar o dividir el programa en bloques más pequeños y, por tanto, más fáciles de gestionar. Los bloques más pequeños facilitan la comprobación y la eliminación de errores tanto en las subrutinas como en el programa entero.

Con las subrutinas también la CPU se puede utilizar más eficientemente, llamando al bloque sólo cuando se necesite, y no ejecutar todos los bloques en todos los ciclos.

La operación Llamar subrutina transfiere el control a la subrutina, se puede utilizar con o sin parámetros.

Llamada a subrutina con parámetros.

Ejemplo de llamada a subrutina con parámetros.

En cada llamada a subrutina se pueden utilizar 16 parámetros de entrada/salida como máximo.

Los valores de los parámetros se asignan de la siguiente forma a la memoria local en la subrutina:

  1. Los valores se asignan a la memoria local en el orden indicado por la operación Llamar subrutina, comenzando dichos parámetros en L0.
  2. De uno a ocho valores binarios consecutivos se asignan a un sólo byte comenzando en Lx.0 hasta Lx.7.
  3. Los valores de byte, palabra y doble palabra se asignan a la memoria local en bytes (LBx, LWx, LDx).

En la operación "Llamar subrutina" con parámetros, éstos deben concordar exactamente con las variables definidas en la tabla de variables locales de la subrutina. Los parámetros se deben organizar de la siguiente forma:

  • Los parámetros de entrada.
  • Los parámetros de entrada/salida.
  • Los parámetros de salida.

Ejemplo de una subrutina que hace regla de 3Visualizador - FMX04 PLCs A&L tools

La operación Retorno condicionado desde la subrutina, nos permite finalizar la subrutina en función de la combinación lógica precedente.

Ejemplo de subrutina con RET.

Ejemplo de subrutina con retorno condicional.

Un programa puede contar con 64 subrutinas como máximo. En el programa principal se pueden anidar (situar una llamada a subrutina dentro de otra) hasta 8 subrutinas.

Las subrutinas no se pueden anidar en 1 subrutina de interrupción.

La recursión (la subrutina se llama a sí misma) está permitida de manera indirecta, es decir, una subrutina no se puede llamar a sí misma, ha de hacer la recusión por medio de otra subrutina, como muestra el cuadro.

Ejemplo de subrutina con RET.

Ejemplo de recurrencia.

Aunque la recursión esté permitida, hay que utilizarla con mucha precaución