Cursos
Clase #34 - Funciones FRAC/EXPT en TIA Portal V18: Procesamiento Decimal y Potencias Avanzadas en Ladder
Funciones FRAC/EXPT en TIA Portal V18: Procesamiento Decimal y Potencias Avanzadas en Ladder
💡 Por qué este video es esencial: FRAC(5.7) = 0.7, pero FRAC aplicado a INT siempre da 0. EXPT(2, 0.5) = √2, pero EXPT(-2, 0.5) = NaN. En este video te muestro cómo conectar FRAC solo con variables REAL, por qué EXPT requiere validación de base positiva para exponentes fraccionarios, y cómo estructurar redes independientes para procesamiento de señales finas. ¡La demostración de pérdida de datos con tipos incorrectos es clave!
👋 Introducción: Más Allá de los Enteros y Cuadrados
Bienvenido a la Clase #34. Ya manejas arcotrigonometría segura (Clase #33). Ahora necesitas herramientas para manipular la granularidad de tus datos y aplicar transformaciones no lineales complejas.
Estas funciones son esenciales para:
Procesamiento de señales analógicas: Aislar la parte fraccionaria para filtrado fino o dithering.
Linearización de sensores no estándar: Respuestas tipo x^1.5 o x^0.75 que SQR no puede resolver.
Cálculo de volúmenes/áreas complejas: Fórmulas geométricas con exponentes no enteros.
Control de procesos químicos: Cinéticas de reacción que siguen leyes de potencia generalizada.
En Ladder, FRAC_R y EXPT_R son bloques IEC con requisitos estrictos de tipo de dato. Usarlos con INT o sin validar el dominio de EXPT genera resultados silenciosamente erróneos o NaNs que corrompen tu proceso.
En este artículo explicamos la conexión visual, pero ver la separación decimal real y la curva de potencia no lineal solo es posible en el video.
🎯 Lo que aprenderás en esta sesión (100% Ladder)
- Bloque FRAC_R en Red Ladder: Extracción de parte decimal exclusiva para variables REAL.
- Bloque EXPT_R en Red Ladder: Potencias generalizadas (Base^Exponente) con validación de dominio.
- Patrón de Validación de Tipo + Red Independiente: Estructura segura para procesamiento decimal.
- Aplicaciones Industriales Visuales: Filtrado de ruido fino, linearización de flujo, cálculo de volumen tanque esférico.
- Gestión de Precisión: Por qué REAL es obligatorio y cómo evitar truncamiento en cascada.
⚙️ Conceptos Clave (Resumen Técnico Ladder)
- 1. El Patrón Obligatorio: Tipo REAL + Red Propia
Como demuestro en el minuto 02:20 del video, FRAC y EXPT NO funcionan con enteros. Usa siempre este patrón:
- Red N: Validación de Tipo/Dominio |--[Tipo_Dato == REAL]-----------------(M_FRAC_Valido)--| // Para FRAC |--[Base > 0 OR Exponente_Entero]------(M_EXPT_Valido)--| // Para EXPT Red N+1: Cálculo Condicionado |--[M_FRAC_Valido]--[FRAC_R(IN:=Valor_Real)]--(Parte_Decimal)--| |--[/M_FRAC_Valido]--[MOVE(IN:=0.0, OUT:=Parte_Decimal)]--| |--[M_EXPT_Valido]--[EXPT_R(IN1:=Base, IN2:=Exp)]--(Resultado_Potencia)--| |--[/M_EXPT_Valido]--[MOVE(IN:=0.0, OUT:=Resultado_Potencia)]--|
- Red N: Valida que la variable sea REAL (para FRAC) o que la base sea positiva si el exponente es fraccionario (para EXPT).
- Red N+1: Ejecuta el bloque solo si la validación pasa. MOVE asigna safe default si falla.
⚠️ Regla de Oro en Ladder: NUNCA conectes FRAC_R a una variable INT. El resultado será SIEMPRE 0.0, sin error ni advertencia. Si tu señal viene en INT, conviértela a REAL con CONVERT ANTES de FRAC_R.
2. Bloque FRAC_R: Aislamiento Decimal Preciso
Elemento | Función | Error Común en Ladder |
|---|---|---|
FRAC_R | Extrae parte decimal de REAL | Aplicar a INT → Resultado 0.0 siempre |
Variable REAL | Entrada obligatoria | Usar DInt → Truncamiento previo invisible |
Salida REAL | Parte decimal [0.0, 1.0) | Asignar a INT → Pierde toda la información |
Uso típico | Dithering, filtrado fino, sincronización | Esperar que funcione con contadores enteros |
Aplicación Ladder típica: Filtrado de ruido fino en señal analógica:
- Red 1: |--[Senal_Analogica <> 0]--[CONVERT(IN:=Senal_INT, OUT:=Senal_REAL)]--(Temp)--| Red 2: |--[M_Filtro_Activo]--[FRAC_R(IN:=Senal_REAL)]--(Ruido_Fino)--| Red 3: |--[M_Filtro_Activo]--[SUB_R(IN1:=Senal_REAL, IN2:=Ruido_Fino)]--(Senal_Limpia)--|
Separa el ruido de alta frecuencia (parte decimal) de la señal estable (parte entera).
3. Bloque EXPT_R: Potencias Generalizadas Seguras
EXPT_R(Base, Exponente) calcula Base^Exponente. Pero tiene restricciones críticas:
- Base Negativa + Exponente Fraccionario: EXPT_R(-2, 0.5) = √(-2) = NaN. Imposible en reales.
- Validación obligatoria: Si el exponente NO es entero, valida Base > 0 ANTES del bloque.
- Uso industrial: Raíz cúbica (exp=0.333), ley de potencia de flujo (exp=1.5), atenuación exponencial personalizada.
En el video mostramos EXPT_R con base negativa y exponente 0.5 generando NaN, y cómo la validación lo previene.
4. Aplicaciones Industriales Críticas en Ladder
- Linearización de Flujo Turbulento:
Q_real = Q_medido ^ 1.5 → Requiere EXPT_R con exponente 1.5. SQR_R solo da ^0.5. - Volumen de Tanque Esférico:
V = (4/3) × π × r³ → Usa EXPT_R(Radio, 3.0) para consistencia con otras potencias no enteras en mismo proyecto. - Dithering Digital:
Agregar FRAC_R(Timestamp) a señal cuantizada para reducir distorsión por redondeo sistemático.
✅ Checklist de FRAC/EXPT en Ladder
Antes de implementar:
- FRAC_R SIEMPRE precedido por conversión a REAL si la fuente es INT.
- EXPT_R SIEMPRE validado: Base > 0 si exponente es fraccionario.
- Cada bloque en su propia red independiente.
- Marca auxiliar usada para habilitar bloque.
- Salida de FRAC_R asignada SOLO a variable REAL.
- Red de fallback con MOVE asignando valor safe default.
- Comentada cada red explicando propósito del procesamiento decimal/potencia.
Este checklist está demostrado en el proyecto Ladder del video. Úsalo como referencia.
🛑 Errores Comunes en Ladder con FRAC/EXPT
- FRAC_R Con INT: El error #1. Devuelve 0.0 silenciosamente. Tu filtro no hace nada.
- EXPT_R Sin Validar Base Negativa: Exponente 0.5 con base -4 → NaN. Proceso ciego.
- Usar SQR_R Cuando Se Necesita EXPT_R: SQR_R solo hace ^0.5. Para ^1.5 o ^0.75, EXPT_R es obligatorio.
- Poner Bloques en Rama Compleja: Combinar FRAC con contactos lógicos en misma rama → ejecución condicional no deseada. Redes separadas siempre.
- Olvidar Que FRAC Devuelve [0,1): No es la parte entera. Es SOLO lo decimal. Para entero, usa TRUNC_R.
👉 MIRA EL VIDEO PARA VER LA DIFERENCIA ENTRE FRAC_R CON REAL VS. INT EN TABLA DE OBSERVACIÓN
¿Te ha pasado que tu filtro de ruido no funciona o tu linearización de flujo da NaN?
Déjame un comentario en YouTube describiendo cómo conectaste los bloques. Te ayudaremos a verificar tipos de dato y validaciones de dominio.
🔔 ¡Suscríbete y activa la campanita! En la Clase #35 exploramos MOVE en Ladder, la base de toda transferencia de datos segura. Parece simple, pero su mal uso causa corrupción de memoria silenciosa. ¡No te lo pierdas!

Publicar un comentario
0 Comentarios