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

Dentro de la expresión, los argumentos de funciones con múltiples parámetros se separan con ; (punto y coma), no con coma. Ejemplo: ECU(0;0), MBS(1;2). La expresión finaliza con el separador de formato : o con el cierre del mensaje del protocolo (<).

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
HDGRumbo GPS (heading) (v1.9.18+)0-360°
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
ALTAltitud GPSmetros
TICKTicks desde arranquesegundos
TTTacómetro interno (pulso/seg)0/1
BUFBuffer de reportes con pendientes0/1
BTHPWRAlimentación Bluetooth0/1
WIFPWRAlimentación WiFi0/1
CELPWRAlimentación módulo celular0/1
GPSPWRAlimentación módulo GPS0/1
VIOPWRAlimentación de accesorios0/1
INTPWRAlimentación interna0/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

Señales del Motor de Eventos como variables (retornan 0/1): Además de las anteriores, cualquier disparador con índice del Motor de Eventos puede usarse en EVAL como TOKEN(n). Incluye: ACK, AR, BE, BS, BSW, BSWN, CID, CQ, FCT, IC, ICL, KO, MC, MVXN, MVXP, MVYN, MVYP, MVZN, MVZP, NT, RG, RL, SIM, TD, TR, VL, VBU, WP, XB, ZNA, ZNB. Ver Lista de Disparadores con rangos válidos de cada uno.

Con Dos Parámetros

VariableDescripciónParam 1Param 2
ECU(i;t)Datos ECUÍndice0=valor, 2=edad (ms)
MBS(i;t)Sensores BLEÍndice0=temp, 1=humedad
MBSW(i;t)BLE wildcardÍndice0=connected, 1=major, 2=minor, 3=distance, 4=rssi, 5=age
MDT(i;t)Sensor 1-Wire (temp)Índice0=valor, 1=edad
MTD(i;t)Timers TDÍndice0=estado, 1=timer, 2=dist, 3=timeout, 4=distanceout
MTR(i;t)TripsÍndice0=trigger, 1=habilitado, 2=hora, 3=minuto, 4=segundo
MNT(i;t)ContadoresÍndice0=actual, 1=máximo
MDL(i;t)Datos LOGÍndice0=cantidad, 1=pendientes, 2=habilitado, 3=reintentos, 4=tiempo reintento
MPC(i;t)Contador pulsosÍndice0=valor, 1=factor K
MFC(i;t)FrecuencímetroÍndice0=freq, 1=factor Q, 2=basetime

🧮 Operadores

Aritméticos

OperadorDescripciónEjemploResultado
+SumaEVAL 10 + 515.00
-RestaEVAL 20 - 812.00
*MultiplicaciónEVAL 3 * 412.00
/DivisiónEVAL 10 / 25.00
%Módulo (resto entero)EVAL 10 % 31.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
^^XOR lógicoEVAL 1 ^^ 01.00
!NOT lógico (unario)EVAL !01.00

Bitwise

OperadorDescripciónEjemploResultado
&AND bit a bitEVAL 5 & 31.00
|OR bit a bitEVAL 5 | 27.00
^XOR bit a bitEVAL 5 ^ 36.00
~NOT bit a bit (unario)EVAL ~0 & 0xFF255.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

Rumbo GPS (HDG)

>EVAL HDG<

Retorna rumbo actual en grados (0-360°). Ejemplo: 185.00

>EVAL HDG ge 180<

Retorna 1.00 si el vehículo apunta hacia el sur-oeste-norte (180°-360°).

>EVAL (HDG ge 0) && (HDG lt 90)<

Retorna 1.00 si apunta hacia el norte-este (0°-90°).

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

Última actualización