El caso es que, muchas veces, el programador no sabe si utilizar un elemento u otro.
Esto es lo que pretende esclarecer el presente artículo...
Se presentarán las diferencias entre FBs y FCs para poder saber cual se puede/debe implementar en cada situación, según los requerimientos del código.
¿QUÉ SON?
Conceptualmente, estas estructuras de programa tienen la misma finalidad; encapsular una sección del código (en lo que se llama una librería).
No dejan de ser "cajas negras" a las que, les das unos datos de entrada y sacan unas variables de salida según el código programado internamente. También hay variables mixtas que pueden ser de entrada-salida.
Normalmente, el principal objetivo es organizar mejor el programa y hacerlo más legible. Facilitando así el diagnóstico en el caso de fallo.
También se utilizan para realizar acciones reiterativas, es decir, trozos de código que se tienen que repetir periódicamente y sale mas a cuenta aunar en una instrucción que se pueda ir llamando cada vez que se requiera.
Entonces, la utilización de FBs y FCs también reduce y racionaliza el uso de los recursos en la CPU, como la ocupación de memoria.
¿PRINCIPALES DIFERENCIAS?
La principal diferencia entre bloques de función y funciones, reside en el uso de memoria...
- Función (FC o FUN): Es un bloque lógico sin memoria.
Sirve para llevar a cabo operaciones simples (como cálculos aritméticos) o ejecutar instrucciones que no requieren un estado de memorización.
No necesita ser instanciada, por lo que no ocupa área de memoria (podría utilizarse ilimitadamente).
Es decir, con una función siempre se está ejecutando exactamente la misma sección de código por muchas veces que la llames en programa... Lo que van cambiando son las entradas/salidas que utiliza ese bloque lógico al ejecutarse.
- Bloque de función (FB): Es un bloque lógico con memoria.
Se utiliza para programación que requiere memorizar estados internos de la CPU (como es el caso de una temporización).
Necesita ser instanciado, y es importante no repetir una misma instancia para más de un FB. Al ocupar memoria, su uso está algo más limitado.
Esto te permite acceder a las entradas/salidas específicas de ese bloque de función desde programa (con la nomenclatura "DB1.ET", por ejemplo).
La principal diferencia es que las FCs no tienen instancia de memoria, mientras que los FBs si la requieren.
Esta instancia guarda todos los parámetros de entrada/salida del FB y te permite acceder a ellos tras su ejecución.
¿PRECAUCIONES?
- Si quieres encapsular una sección de código y no estás seguro de que estructura utilizar, el FB es más versátil.
Un FB puede hacer lo mismo que una FC (viceversa no). Pero, si se utiliza como tal, se estará consumiendo memoria de programe en vano al instanciarlo.
- Se pueden dejar entradas/salidas en blanco en un FB.
En un FC es necesario declararlas todas, dado que se requieren para la ejecución (al no tener memoria, no le puede dar un valor inicial a los datos).
- Es posible monitorizar el funcionamiento interno de un FB en tiempo real.
Las FCs no lo admiten, pues realmente solo hay una función que va utilizando los datos de entrada/salida que se le configuran cada vez que se utiliza.
- Un FC no puede contener FBs en su código.
Por definición, no tiene sentido que un bloque lógico sin memoria pueda contener otro que si la tiene. No obstante, un FB si puede contener FCs sin restricciones.
No hay comentarios:
Publicar un comentario