Skip to content

Fórmulas de tags calculados ​

AudienciaIngenieros de proceso, Administradores de planta
Permisos requeridos`tags:create` / `tags:update` en la planta destino
Tiempo estimado8 min de lectura
Planta democemento-valladolid-cm01

Un tag calculado almacena el resultado de una fórmula evaluada en tiempo real a partir de los valores en vivo de otros tags dentro de la misma planta. Esta referencia documenta la sintaxis de referencias, reglas de validación, operadores y funciones permitidas, y ejemplos aplicados.

1. Cómo referenciar otros tags ​

Referencia otro tag envolviendo su Source Tag entre llaves ({SourceTag}). Las llaves son obligatorias porque los identificadores industriales reales (como BM-201 o Mill/Feed) no son nombres válidos sin delimitadores.

text
{Outlet_Temp} - {Inlet_Temp}

Reglas de validación y evaluación en vivo ​

  • Cada fórmula debe referenciar al menos un tag de tipo Interfaz o Calculado de la misma planta. No se admiten tags Manuales ni fórmulas con solo constantes.
  • Una fórmula sintácticamente válida puede guardarse aunque todavía no exista una muestra actual. El panel Edit and Test Formula reporta por separado entradas faltantes o errores en tiempo de ejecución.
  • Entradas faltantes, inválidas o expiradas no generan valor numérico y propagan calidad Bad, incluso hacia cálculos dependientes.
  • Configura el stale timeout de la entrada para expirar lecturas viejas (0 desactiva la expiración). Cuando llegan muestras válidas frescas, el cálculo se recupera automáticamente.
  • Las importaciones desde Excel validan referencias en todo el lote: se rechazan ciclos, fórmulas inválidas y filas que dependan de filas rechazadas. Actualiza fórmulas dependientes antes de renombrar, eliminar o convertir una entrada a Manual.

2. Operadores ​

OperadorSignificadoEjemplo
+Suma{Power_A} + {Power_B}
-Resta{Outlet_Temp} - {Inlet_Temp}
*Multiplicación{Belt_Speed} * {Belt_Load}
/División{Mill_Power} / {Feed_Rate}
//División entera{Total_Count} // 60
%Módulo (residuo){Cycle_Count} % 12
**Potencia (exponente){Radius} ** 2
< <= > >=Comparaciones — devuelven 1 (verdadero) o 0{Temp} > 80
== !=Igual / distinto{Mode} == 2
and / orY / O lógico para combinar condiciones{Temp} > 80 and {Vibration} > 5

Operadores no soportados ​

  • ^ — Usa ** para potenciación, no ^.
  • & — Usa la palabra clave and, no &.
  • | — Usa la palabra clave or, no |.

3. Funciones permitidas ​

FunciónDescripciónEjemplo
abs(x)Valor absolutoabs({Setpoint} - {Actual})
sqrt(x)Raíz cuadradasqrt({Diff_Pressure}) * 4.5
min(a, b, …)Mínimo de los valores indicadosmin({Temp_1}, {Temp_2})
max(a, b, …)Máximo de los valores indicadosmax({Temp_1}, {Temp_2})
avg(a, b, …)Promedio aritmético de los valoresavg({Bearing_1}, {Bearing_2}, {Bearing_3})
mean(a, b, …)Alias de avg()mean({Flow_A}, {Flow_B})
round(x, n=0)Redondea a n decimales (por defecto 0)round({Flow_Rate} / 1000, 2)
pow(x, y)x elevado a la potencia ypow({Radius}, 2)
ln(x)Logaritmo natural (base e)ln({Pressure_Ratio})
log(x, base=e)Logaritmo con base opcionallog({Value}, 2)
log10(x)Logaritmo base 10log10({Concentration})
exp(x)e elevado a la potencia xexp({Rate} * {Time})
floor(x)Redondeo hacia abajo al entero más cercanofloor({Hours})
ceil(x)Redondeo hacia arriba al entero más cercanoceil({Batches})
clamp(x, lo, hi)Acota x dentro de [lo, hi]clamp({Pressure}, 0, 100)
IF(condition, then, else)Devuelve then cuando la condición es distinta de cero; si no elseIF({Mill_Power} > 50, 1, 0)

4. Ejemplos aplicados ​

Caso de usoFórmula
Diferencial de temperatura en equipo{Outlet_Temp} - {Inlet_Temp}
Flujo másico por velocidad y carga{Belt_Speed} * {Belt_Load} * 3.6
Eficiencia en porcentaje{Power_Out} / {Power_In} * 100
Consumo específico de energía (kWh/t){Mill_Power} / {Feed_Rate}
Temperatura promedio de chumacerasavg({Bearing_Temp_1}, {Bearing_Temp_2}, {Bearing_Temp_3})
Flujo por presión diferencialsqrt({Diff_Pressure}) * 4.5
Acotar señal a rango seguroclamp({Pressure}, 0, 100)
Indicador de equipo en marcha (0/1)IF({Mill_Power} > 50, 1, 0)
Condición combinada de alarmaIF({Temp} > 80 and {Vibration} > 5, 1, 0)
Lectura escalada y redondeadaround({Flow_Rate} / 1000, 2)

OTCognix Industrial IoT & AI Documentation