Skip to Content

Comando EVAL - Evaluador de Expresiones

Motor de evaluación de expresiones matemáticas, lógicas y de estado del sistema.


📋 Sintaxis

EVAL expresión[:formato[:valor_error]]
ParámetroDescripciónDefault
expresiónOperación o consulta a evaluar(obligatorio)
formatoFormato de salida estilo printf%.2f
valor_errorValor si falla la evaluaciónERR

Los paréntesis después de EVAL son opcionales. La expresión termina con < o el primer ; encontrado.

Ejemplos Básicos

>EVAL 10 + 5<

Resultado: 15.00

>EVAL 10 + 5.5 * 2:%.1f:NA<

Resultado: 21.0 (si falla, devuelve NA)


📊 Variables del Sistema

Sin Parámetros

VariableDescripciónUnidadLink
VTensión principaldV (28.0V = 280)
VBUTensión batería respaldodV
OTOdómetro totalmetros
OPOdómetro parcialmetros
CREGEstado registro red-
CSQCalidad señal celular0-31
HOHorómetrosegundos
VELVelocidad GPS filtradakm/h
AGEEdad dato GPSsegundos
LATLatitudgrados×10⁵
LONLongitudgrados×10⁵
IGNEstado ignición0/1
CELConexión celular0/1
GPSGPS activo0/1
PWRAlimentación0/1
JMDJamming detectado0/1
PKParking0/1
ACAcelerómetro0/1
WIFWiFi0/1
CANBus CAN0/1

Con Un Parámetro

VariableDescripciónRangoLink
AIN(n)Entrada analógica0-3
IN(n)Entrada digital0-3
XP(n)Salida digital0-n
UV(n)Variable de usuario0-n
U(n)Variable auxiliar0-n
MXB(n)Buffer XB0-n
DC(n)Ángulo (ANG)0-n
DV(n)Frecuencia (FRE)0-n
OW(n)Sensor 1-Wire0-n

Con Dos Parámetros

VariableDescripciónParam 1Param 2
ECU(i;t)Datos ECUÍndice0=valor, 2=edad
MBS(i;t)Sensores BLEÍndice0=temp, 1=humedad
MTD(i;t)Timers TDÍndice0=estado, 1=timer, 2=dist, 3=timeout
MTR(i;t)TripsÍndice0=trigger, 1=habilitado, 2=hora
MNT(i;t)ContadoresÍndice0=actual, 1=máximo
MDL(i;t)Datos LOGÍndice0=cantidad, 1=pendientes
MPC(i;t)Contador pulsosÍndice0=valor, 1=factor K
MFC(i;t)FrecuencímetroÍndice0=freq, 1=factor Q

🧮 Operadores

Aritméticos

OperadorDescripciónEjemploResultado
+SumaEVAL 10 + 515.00
-RestaEVAL 20 - 812.00
*MultiplicaciónEVAL 3 * 412.00
/DivisiónEVAL 10 / 25.00

Comparadores

OperadorDescripciónEjemploResultado
gtMayor queEVAL 5 gt 31.00
ltMenor queEVAL 5 lt 71.00
geMayor o igualEVAL 5 ge 51.00
leMenor o igualEVAL 4 le 51.00
eqIgualEVAL 5 eq 51.00
neNo igualEVAL 5 ne 61.00

Lógicos

OperadorDescripciónEjemploResultado
&&AND lógicoEVAL (5 gt 3) && (2 lt 4)1.00
||OR lógicoEVAL (5 gt 6) || (2 lt 4)1.00

Bitwise

OperadorDescripciónEjemploResultado
&AND bit a bitEVAL 5 & 31.00
|OR bit a bitEVAL 5 | 27.00
slShift leftEVAL 2 sl 14.00
srShift rightEVAL 4 sr 12.00

📝 Formato de Salida

Personaliza la presentación del resultado usando sintaxis printf de C:

FormatoDescripciónEjemploResultado
%.2fFlotante 2 decimalesEVAL 3.14159:%.2f3.14
%.3fFlotante 3 decimalesEVAL 3.14159:%.3f3.142
%dEnteroEVAL 5.7:%d5
%xHexadecimal minúsculasEVAL 15:%xf
%XHexadecimal mayúsculasEVAL 15:%XF
%bBinarioEVAL 5:%b101
%05.2fCon ceros izquierdaEVAL 3.14:%05.2f03.14
%08.2fMás ceros izquierdaEVAL 3.14:%08.2f00003.14

⚠️ Manejo de Errores

Valor personalizado por error

>EVAL toker + 5:%0.2f:NA<

Resultado: NA (variable no definida)

Error por defecto

>EVAL toker + 5<

Resultado: ERR

División por cero

>EVAL 10 / 0<

Resultado: Inf


💬 Ejemplos Prácticos

Suma de parámetros ECU

>EVAL ECU(0;0) + ECU(1;0) + ECU(2;0):%0.2f<

Suma valores ECU de los índices 0, 1 y 2.

Comparación AIN

>EVAL AIN(0) gt 500<

Retorna 1.00 si AIN(0) > 500, sino 0.00.

Lógica compuesta

>EVAL (V gt 150) && (AIN(0) lt 100)<

Verifica condición compuesta sobre voltaje y entrada analógica.

Cálculo con formato

>EVAL (10 * 5) + 3:%0.3f<

Resultado: 53.000

Expresión compleja

>EVAL ((AIN(0) * 10) + (AIN(1) * 5)) / 2:%0.2f:NA<

Calcula promedio ponderado con formato personalizado y error NA.

Máscara bitwise

>EVAL IN(0) & 0x0F:%X<

Aplica máscara a entrada digital y muestra en hexadecimal.

Shift bits

>EVAL 8 sr 2<

Resultado: 2.00 (8 >> 2)

División con formato entero

>EVAL 25 / 4:%d<

Resultado: 6 (división entera)

Conversión de temperatura

>EVAL (AIN(0) * 0.1) - 40:%0.1f:ERR<

Convierte lectura ADC a temperatura con error ERR.


🔧 Resolución de Errores

ErrorCausaSolución
ERRVariable no definida o sintaxis incorrectaVerifica ortografía, usa valor_error
InfDivisión por ceroValida divisor o usa valor_error
SintaxisParéntesis desbalanceadosRevisa estructura de expresión
ÍndiceFuera de rango (ej: AIN(9))Consulta rangos válidos del modelo

Compatibilidad

ZE-IoT
SP-IoT
SM-IoT

Ver también

Last updated on