Clase #52 - Función (FC) en TIA Portal V18: Lógica Sin Memoria y Cálculos Puros

Función (FC) en TIA Portal V18: Lógica Sin Memoria y Cálculos Puros 

Función (FC) en TIA Portal V18: Lógica Sin Memoria y Cálculos Puros
💡 Importante: La diferencia crítica entre FC y FB radica en la gestión de memoria y el uso de variables TEMP. Te recomiendo ver el video tutorial completo donde explico visualmente por qué una FC no tiene DB de instancia y cómo gestionar sus variables temporales correctamente.

👋 Introducción: La Calculadora del PLC

Bienvenido a la Clase #52. En la clase anterior aprendiste que los FBs tienen "memoria propia" gracias a su Instance DB. Pero, ¿qué pasa si solo quieres sumar dos números, convertir una unidad o evaluar una condición lógica simple? No necesitas gastar memoria ni crear un DB para eso.
Ahí entran las Funciones (FC). Una FC es un bloque de programa que NO tiene memoria.
Entras datos → Se procesan → Sale un resultado.
Al terminar la ejecución, la FC "olvida" todo lo que pasó dentro.
Es ideal para matemáticas, conversiones de unidades, validaciones lógicas complejas o cualquier tarea que dependa únicamente de sus entradas actuales.
En este artículo explicamos la teoría de las variables temporales, pero la demostración de cómo se comporta una FC en el ciclo de escaneo está exclusivamente en el video tutorial.

🎯 Lo que aprenderás en esta sesión

  1. Diferencia Clave FC vs. FB: Por qué la FC no tiene DB de instancia y es más ligera.
  2. Variables TEMP (Temporales): Cómo funcionan, por qué son volátiles y sus peligros.
  3. Parámetros de una FC: Input, Output, InOut y Return Value.
  4. Cuándo Usar una FC: Casos ideales (matemáticas, lógica combinatoria) vs. casos prohibidos (temporizadores, contadores).
  5. Optimización de Recursos: Cómo las FCs ayudan a reducir el tamaño del proyecto.

⚙️ Conceptos Clave (Resumen Teórico)

1. El Concepto de "Sin Memoria"
Una FC es como una función matemática f(x)=y.
  • Si le das el mismo valor de entrada, siempre obtendrás el mismo valor de salida.
  • No sabe qué pasó en el ciclo anterior.
  • No necesita un Bloque de Datos (DB) asociado. Esto ahorra memoria de trabajo y simplifica la gestión del proyecto.
⚠️ Concepto Crítico: Dentro de una FC, las únicas variables disponibles además de los parámetros (In/Out) son las TEMP (Temporales). Estas variables viven en la pila local del CPU y se pierden/corrompen apenas termina la ejecución del bloque. NUNCA uses una variable TEMP para guardar un estado que necesites en la siguiente llamada.
2. Tipos de Variables en una FC
Tipo de Variable
Símbolo
Comportamiento
Uso Típico
Input
In
Solo lectura.
Datos de origen para el cálculo.
Output
Out
Solo escritura.
Resultado final del proceso.
InOut
InOut
Lectura/Escritura.
Permite modificar una variable externa directamente.
Return
Ret_Val
Salida única.
Ideal para funciones booleanas (TRUE/FALSE) o valores numéricos simples.
Temp
Temp
Volátil.
Variables auxiliares para cálculos intermedios. ¡Cuidado!

3. ¿Por Qué Usar FCs en Lugar de Lógica Plana?
  • Legibilidad: En lugar de tener 10 redes de conversión de temperatura en tu OB1, tienes una sola llamada: Convert_Temp().
  • Reutilización: Puedes usar la misma FC para convertir la temperatura de 50 sensores diferentes.
  • Ligereza: Al no tener DB de instancia, la carga de gestión para el CPU es mínima.

✅ Checklist de Diseño de FCs

Antes de crear una función:
  • Confirmado que la lógica NO requiere recordar estados anteriores (no usa TON, CTU, etc.).
  • Definida claramente la salida (usando Return si es un solo valor, o Output si son varios).
  • Verificado que todas las variables internas sean Temp y no se usen para lógica secuencial.
  • Asegurado que la FC no depende de variables globales para ser portátil.
Documentados los tipos de dato de entrada y salida para evitar errores de conversión.

🛑 Errores Comunes con Funciones (FC)

  1. Usar Temporizadores o Contadores en una FC: Como la FC no tiene memoria persistente (DB), un TON dentro de una FC se reiniciará en cada ciclo o funcionará erráticamente. Para esto, usa siempre un FB.
  2. Confiar en Variables TEMP: Asumir que una variable Temp mantiene su valor si la FC se llama dos veces seguidas. No lo hace; su contenido es impredecible tras salir del bloque.
  3. Olvidar Asignar Todas las Salidas: En algunas configuraciones, si no asignas un valor a un Output o Return, puede quedar basura. Siempre asegura un camino lógico para todas las salidas.
  4. Usar FC para Lógica Secuencial: Intentar hacer una máquina de estados en una FC sin memoria externa es extremadamente complejo y propenso a fallos.
  5. Exceso de Parámetros: Crear una FC con 20 entradas la hace difícil de leer. Si necesitas muchos datos, quizás deberías usar un FB con un UDT de entrada.

👉 MIRA EL VIDEO PARA VER CÓMO UNA FC PROCESA DATOS SIN DEJAR RASTRO EN MEMORIA

¿Tu código está lleno de fórmulas repetidas en el OB1?
Agrúpalas en una FC. En el video de esta clase (#51) te muestro cómo limpiar tu programa principal usando funciones para cálculos matemáticos.

🔔 ¡Suscríbete y activa la campanita! En la Clase #53 exploramos la multi instancias. Aprenderás a organizar tus variables de planta, recetas y configuraciones fuera de los bloques de programa. ¡No te pierdas la explicación en el video!

Publicar un comentario

0 Comentarios