Cursos
Clase #37 - Funciones ROUND/TRUNC en TIA Portal V18: Redondeo Inteligente en Ladder
Funciones ROUND/TRUNC en TIA Portal V18: Redondeo Inteligente en Ladder
💡 Por qué este video es esencial: TRUNC(2.9)=2, pero ROUND(2.5)=2 (no 3). En este video te muestro por qué TRUNC genera sesgo negativo acumulativo en promedios, cómo funciona el redondeo IEC 'al par más cercano', y cuándo usar cada uno en Ladder para evitar errores de conteo o display. ¡La comparación lado a lado con valores negativos es reveladora!
👋 Introducción: Eliminar Decimales Sin Perder Información
Bienvenido a la Clase #37. Ya transformas tipos de forma segura con CONVERT (Clase #36). Pero cuando conviertes REAL→INT, necesitas decidir qué hacer con los decimales.
No todas las aplicaciones son iguales. Para un índice de array, solo importa la parte entera (TRUNC). Para un promedio de temperatura o conteo de lotes, necesitas precisión estadística (ROUND). Usar la función incorrecta introduce errores sistemáticos que, multiplicados por miles de ciclos, distorsionan tus reportes de producción y calidad.
En Ladder, ROUND_R y TRUNC_R son bloques IEC con comportamientos definidos por norma. No son intercambiables.
En este artículo explicamos la lógica, pero ver el sesgo acumulativo de TRUNC vs. la neutralidad de ROUND solo es posible en el video.
🎯 Lo que aprenderás en esta sesión (100% Ladder)
- Bloque TRUNC_R en Red Ladder: Truncamiento hacia cero. Ideal para índices y direcciones.
- Bloque ROUND_R en Red Ladder: Redondeo IEC 61131-3 (al entero par más cercano). Ideal para promedios y displays.
- Diferencia Crítica con Valores Negativos: TRUNC(-2.9)=-2 vs. ROUND(-2.5)=-2.
- Patrón de Selección por Aplicación: Cuándo usar cada bloque según contexto industrial.
- Aplicaciones Industriales Visuales: Conteo de lotes, display HMI, indexación de arrays, cálculo de OEE.
⚙️ Conceptos Clave (Resumen Técnico Ladder)
1. El Comportamiento Real: No Es Solo "Quitar Decimales"
Como demuestro en el minuto 02:10 del video, la diferencia matemática define su uso:
Valor Entrada | TRUNC_R Resultado | ROUND_R Resultado (IEC) | Explicación |
|---|---|---|---|
2.3 | 2 | 2 | Ambos coinciden |
2.5 | 2 | 2 | ROUND va al PAR más cercano (2), no siempre arriba |
3.5 | 3 | 4 | ROUND va al PAR más cercano (4) |
-2.3 | -2 | -2 | Ambos coinciden |
-2.5 | -2 | -2 | ROUND va al PAR más cercano (-2) |
-3.5 | -3 | -4 | ROUND va al PAR más cercano (-4) |
⚠️ Regla de Oro en Ladder: NUNCA asumas que ROUND(.5) siempre redondea hacia arriba. La norma IEC 61131-3 usa "Banker's Rounding" para eliminar sesgo estadístico. Si necesitas redondeo comercial (.5 siempre arriba), debes implementarlo manualmente con comparadores.
2. Patrón de Selección por Contexto Industrial
En Ladder, la elección depende del propósito del dato entero resultante:
// CASO A: Índice de Array / Dirección de Memoria → TRUNC_R
Red 1: |--[M_Calc_Activa]--[TRUNC_R(IN:=Posicion_Calculada)]--(Indice_Array)--|
// Justificación: Necesitas truncar hacia cero. 2.9 y 2.1 deben apuntar al mismo índice [2].
// CASO B: Display HMI / Promedio / Conteo → ROUND_R
Red 1: |--[M_Display_Activa]--[ROUND_R(IN:=Temp_Promedio)]--(Temp_HMI_Int)--|
// Justificación: Minimiza error cuadrático medio. 2.5°C debe mostrarse como 2°C o 3°C según p
3. Aplicaciones Industriales Críticas en Ladder
- Conteo de Producción con Peso:
Lotes = ROUND_R(Peso_Total_Kg / Peso_Por_Lote) → Evita subestimar lotes completos. TRUNC perdería el lote 0.9 como incompleto. - Indexación de Recetas:
Idx = TRUNC_R(Posicion_Encoder / Paso_Receta) → Garantiza acceso válido a array. ROUND podría saltar al índice siguiente erróneamente. - Display de Velocidad RPM:
RPM_Display = ROUND_R(RPM_Real) → Operador ve valor representativo. TRUNC haría que 1499.9 RPM se muestre como 1499, pareciendo más lento de lo real. - Cálculo de OEE:
Eficiencia_% = ROUND_R((Buenas / Totales) * 100) → Reporte financiero preciso. TRUNC subestimaría eficiencia sistemáticamente.
En el video simulamos 1000 ciclos de conteo y comparamos acumulado TRUNC vs. ROUND mostrando diferencia de 5-8 unidades.
✅ Checklist de ROUND/TRUNC en Ladder
Antes de implementar:
- Definido claramente si la aplicación requiere precisión estadística (ROUND) o direccionamiento (TRUNC).
- Verificado comportamiento con valores .5 y negativos según norma IEC.
- Cada bloque en su propia red independiente.
- Marca auxiliar usada para habilitar operación.
- Comentada cada red explicando POR QUÉ se eligió ROUND o TRUNC.
- Probado con valores límite (.0, .5, -.5) en simulación.
Este checklist está demostrado en el proyecto Ladder del video. Úsalo como referencia.
Errores Comunes en Ladder con ROUND/TRUNC
- Usar TRUNC Para Promedios/Displays: Sesgo negativo acumulativo. Tu KPI de producción estará permanentemente subestimado.
- Usar ROUND Para Índices de Array: ROUND(2.6)=3 puede acceder fuera de límites si el array tiene tamaño 3 (índices 0-2). TRUNC es seguro para direccionamiento.
- Asumir ROUND(.5)=Siempre Arriba: Error en cálculos financieros o de balance de masa. Verifica si tu aplicación requiere redondeo comercial vs. IEC.
- Ignorar Comportamiento en Negativos: TRUNC(-2.9)=-2 (hacia cero), FLOOR(-2.9)=-3 (hacia -∞). Confundirlos causa errores en control bidireccional.
- Poner Bloques en Rama Compleja: Combinar con contactos lógicos en misma rama → ejecución condicional no deseada. Redes separadas siempre.
👉 MIRA EL VIDEO PARA VER CÓMO TRUNC SESGA UN PROMEDIO DE 100 MUESTRAS HACIA ABAJO VS. ROUND NEUTRAL
¿Te ha pasado que tus reportes de producción siempre salen bajos o tus índices de array fallan intermitentemente?
Déjame un comentario en YouTube describiendo tu caso. Te ayudaremos a verificar si es problema de ROUND vs. TRUNC.
¡Suscríbete y activa la campanita! En la Clase #39 dominamos NORM_X y SCALE_X en Ladder. Adiós a fórmulas manuales MUL/DIV propensas a error de overflow. ¡Esencial para cualquier proceso con instrumentación analógica!

Publicar un comentario
0 Comentarios