Cursos
Clase #26 - Funciones Matemáticas MUL/DIV en TIA Portal V18: Escalado Seguro y Cálculos Estables
Funciones Matemáticas MUL/DIV en TIA Portal V18: Escalado Seguro y Cálculos Estables
💡 Por qué este video es esencial: Multiplicar y dividir parece seguro hasta que un sensor falla o una señal alcanza su máximo. En este video te muestro cómo un MUL_I puede desbordar INT en milisegundos, por qué DIV por cero no siempre genera fault en S7-1500 pero sí da resultados erróneos, y cómo implementar escalado analógico profesional SIN usar bloques SCALE_X prematuramente. ¡La protección matemática es clave!
👋 Introducción: Transformando Valores con Precisión
Bienvenido a la Clase #26. Ya sumas y restas de forma segura (Clase 25). Ahora necesitas operaciones que cambian la magnitud de los datos: convertir unidades, escalar lecturas de sensores, calcular promedios o ajustar ganancias de control.
Las funciones MUL (Multiplicación) y DIV (División) son potentes, pero peligrosas. A diferencia de ADD/SUB donde el crecimiento es lineal, MUL puede explotar el rango de un tipo de dato en una sola operación. Y DIV tiene un enemigo silencioso: el divisor cero.
En este artículo explicamos los bloques IEC, pero ver el overflow exponencial y la estrategia de protección contra div/0 solo es posible en el video.
🎯 Lo que aprenderás en esta sesión (Enfoque Ladder)
- Bloques MUL/DIV IEC: Entradas IN1/IN2, salida OUT, y comportamiento ante límites extremos.
- Gestión de Overflow en Multiplicación: Por qué INT * INT casi siempre requiere DInt como salida.
- Protección Contra División por Cero: Estrategias robustas antes, durante y después del bloque DIV.
- Escalado Analógico Manual: Implementar (Valor * RangoFísico) / RangoADC correctamente.
- Promedios Móviles Seguros: Sumar N muestras y dividir sin perder precisión ni causar faults.
️ Conceptos Clave (Resumen Técnico Ladder)
1. Anatomía de MUL/DIV IEC: Potencia y Riesgo
Como demuestro en el minuto 02:20 del video, estos bloques requieren precaución extrema:
Elemento Ladder | Función | Error Común en Conexión |
|---|---|---|
Bloque MUL_I/DI/R | Multiplica IN1 × IN2 → OUT | Conectar OUT a variable del mismo tipo que IN cuando el producto excede rango |
Bloque DIV_I/DI/R | Divide IN1 ÷ IN2 → OUT | No poner contacto de validación ANTES del bloque en la misma rama |
Contacto Comparador | Valida divisor ≠ 0 | Usarlo DESPUÉS del bloque DIV (demasiado tarde) |
Bobina MOVE | Asigna resultado a tag final | Olvidar que MOVE copia valor, no transforma |
💡 Regla de Oro en Ladder: Cada bloque matemático ocupa SU PROPIA RED o RAMA independiente. Nunca pongas MUL y DIV en la misma rama lógica; usa marcas auxiliares (M) para pasar resultados entre redes.
2. Protección Div/0 en Ladder: Solo Contactos y Bobinas
En Ladder no hay IF/THEN. La protección se construye así:
- Red 1: Validación |--[Divisor <> 0]-----------------(M_Valido)--| Red 2: Cálculo Condicionado |--[M_Valido]--[DIV_DI(IN1:=Num, IN2:=Den)]--(Resultado)--| |--[/M_Valido]--[MOVE(IN:=0, OUT:=Resultado)]------------|
Red 1: Usa un contacto comparador <> para validar divisor. Activa marca M_Valido.
Red 2: Solo si M_Valido está activa, ejecuta DIV. Si no, MOVE asigna 0 seguro.
3. Escalado Analógico en Ladder: Orden Crítico
Para escalar (Raw * RangoFisico) / RangoADC en Ladder:
- Red 1: Multiplicación Primero |--[MUL_DI(IN1:=Raw_ADC, IN2:=Rango_Fisico)]--(Temp_Intermedio)--| Red 2: División Después |--[DIV_DI(IN1:=Temp_Intermedio, IN2:=Rango_ADC)]--(Temp_Escalada)--|
⚠️ EN LADDER ESTE ORDEN ES OBLIGATORIO: Si pones DIV primero en Red 1 y MUL después en Red 2, pierdes resolución decimal porque DIV_I trunca antes de multiplicar. Los bloques deben estar en redes separadas con marca intermedia.
✅ Checklist de MUL/DIV en Ladder
Antes de implementar:
- Cada bloque MUL/DIV en su propia red o rama independiente.
- Marca auxiliar (M) usada para pasar resultado entre redes de MUL y DIV.
- Contacto comparador <> 0 en red ANTERIOR al bloque DIV.
- Tipo de dato OUT declarado como DInt si operands son Int.
- Bloque MUL siempre en red anterior a DIV en escalado.
- Comentada cada red explicando unidades de entrada/salida.
Este checklist está demostrado en el proyecto Ladder del video. Úsalo como referencia.
🛑 Errores Comunes en Ladder con MUL/DIV
- Poner MUL y DIV en Misma Rama: El flujo de energía Ladder no garantiza orden de ejecución dentro de una rama compleja. Separa en redes.
- Validar Divisor DESPUÉS del Bloque DIV: En Ladder, todos los elementos de una rama se evalúan simultáneamente. La validación DEBE estar en red previa con marca.
- Usar MOVE Para Asignar Resultado Sin Validar: MOVE copia ciegamente. Si DIV falló, MOVE propaga basura. Siempre condiciona MOVE con marca válida.
- Declarar OUT como INT en MUL de Dos INTs: El bloque MUL_I permite declarar OUT como INT, pero el resultado se trunca silenciosamente. Cambia a MUL_DI o declara OUT como DInt.
- Hardcodear Constantes en Bloques: Escribir 27648 directo en IN2 del bloque MUL hace el código ilegible. Usa tags descriptivos del DB.
👉 MIRA EL VIDEO PARA VER ESTA ESTRUCTURA DE DOS REDES CONSTRUIDA PASO A PASO EN LADDER
¿Te ha pasado que tu escalado analógico da valores erráticos en Ladder?
Déjame un comentario en YouTube describiendo cómo conectaste los bloques. Te ayudaremos a verificar orden de redes y protecciones.
¡Suscríbete y activa la campanita! En la Clase #27 usamos bloques MOD, NEG y ABS directamente en redes Ladder para secuencias cíclicas y cálculo de errores absolutos. ¡Todo con contactos y bloques IEC!

Publicar un comentario
0 Comentarios