Skip to Content

Comando EVAL - Avaliador de Expressões

Motor de avaliação de expressões matemáticas, lógicas e de estado do sistema.


📋 Sintaxe

EVAL expressão[:formato[:valor_erro]]
ParâmetroDescriçãoDefault
expressãoOperação ou consulta a avaliar(obrigatório)
formatoFormato de saída estilo printf%.2f
valor_erroValor se falhar a avaliaçãoERR

Os parênteses depois de EVAL são opcionais. A expressão termina com < ou o primeiro ; encontrado.

Exemplos Básicos

>EVAL 10 + 5<

Resultado: 15.00

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

Resultado: 21.0 (se falhar, retorna NA)


📊 Variáveis do Sistema

Sem Parâmetros

VariávelDescriçãoUnidadeLink
VTensão principaldV (28.0V = 280)
VBUTensão bateria backupdV
OTOdômetro totalmetros
OPOdômetro parcialmetros
CREGEstado registro rede-
CSQQualidade sinal celular0-31
HOHorímetrosegundos
VELVelocidade GPS filtradakm/h
HDGRumo GPS (heading) (v1.9.18+)0-360°
AGEIdade dado GPSsegundos
LATLatitudegraus×10⁵
LONLongitudegraus×10⁵
IGNEstado ignição0/1
CELConexão celular0/1
GPSGPS ativo0/1
PWRAlimentação0/1
JMDJamming detectado0/1
PKParking0/1
ACAcelerômetro0/1
WIFWiFi0/1
CANBus CAN0/1

Com Um Parâmetro

VariávelDescriçãoFaixaLink
AIN(n)Entrada analógica0-3
IN(n)Entrada digital0-3
XP(n)Saída digital0-n
UV(n)Variável de usuário0-n
U(n)Variável auxiliar0-n
MXB(n)Buffer XB0-n
DC(n)Ângulo (ANG)0-n
DV(n)Frequência (FRE)0-n
OW(n)Sensor 1-Wire0-n

Com Dois Parâmetros

VariávelDescriçãoParam 1Param 2
ECU(i;t)Dados ECUÍndice0=valor, 2=idade
MBS(i;t)Sensores BLEÍndice0=temp, 1=umidade
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=atual, 1=máximo
MDL(i;t)Dados LOGÍndice0=quantidade, 1=pendentes
MPC(i;t)Contador pulsosÍndice0=valor, 1=fator K
MFC(i;t)FrequencímetroÍndice0=freq, 1=fator Q

🧮 Operadores

Aritméticos

OperadorDescriçãoExemploResultado
+SomaEVAL 10 + 515.00
-SubtraçãoEVAL 20 - 812.00
*MultiplicaçãoEVAL 3 * 412.00
/DivisãoEVAL 10 / 25.00

Comparadores

OperadorDescriçãoExemploResultado
gtMaior queEVAL 5 gt 31.00
ltMenor queEVAL 5 lt 71.00
geMaior ou igualEVAL 5 ge 51.00
leMenor ou igualEVAL 4 le 51.00
eqIgualEVAL 5 eq 51.00
neNão igualEVAL 5 ne 61.00

Lógicos

OperadorDescriçãoExemploResultado
&&AND lógicoEVAL (5 gt 3) && (2 lt 4)1.00
||OR lógicoEVAL (5 gt 6) || (2 lt 4)1.00

Bitwise

OperadorDescriçãoExemploResultado
&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 Saída

Personalize a apresentação do resultado usando sintaxe printf de C:

FormatoDescriçãoExemploResultado
%.2fFlutuante 2 decimaisEVAL 3.14159:%.2f3.14
%.3fFlutuante 3 decimaisEVAL 3.14159:%.3f3.142
%dInteiroEVAL 5.7:%d5
%xHexadecimal minúsculasEVAL 15:%xf
%XHexadecimal maiúsculasEVAL 15:%XF
%bBinárioEVAL 5:%b101
%05.2fCom zeros à esquerdaEVAL 3.14:%05.2f03.14
%08.2fMais zeros à esquerdaEVAL 3.14:%08.2f00003.14

⚠️ Tratamento de Erros

Valor personalizado por erro

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

Resultado: NA (variável não definida)

Erro por padrão

>EVAL toker + 5<

Resultado: ERR

Divisão por zero

>EVAL 10 / 0<

Resultado: Inf


💬 Exemplos Práticos

Rumo GPS (HDG)

>EVAL HDG<

Retorna o rumo atual em graus (0-360°). Exemplo: 185.00

>EVAL HDG ge 180<

Retorna 1.00 se o veículo aponta para sul-oeste-norte (180°-360°).

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

Retorna 1.00 se aponta para norte-leste (0°-90°).

Soma de parâmetros ECU

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

Soma valores ECU dos índices 0, 1 e 2.

Comparação AIN

>EVAL AIN(0) gt 500<

Retorna 1.00 se AIN(0) > 500, senão 0.00.

Lógica composta

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

Verifica condição composta sobre voltagem e entrada analógica.

Cálculo com formato

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

Resultado: 53.000

Expressão complexa

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

Calcula média ponderada com formato personalizado e erro NA.

Máscara bitwise

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

Aplica máscara à entrada digital e mostra em hexadecimal.

Shift bits

>EVAL 8 sr 2<

Resultado: 2.00 (8 >> 2)

Divisão com formato inteiro

>EVAL 25 / 4:%d<

Resultado: 6 (divisão inteira)

Conversão de temperatura

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

Converte leitura ADC para temperatura com erro ERR.


🔧 Resolução de Erros

ErroCausaSolução
ERRVariável não definida ou sintaxe incorretaVerifique ortografia, use valor_erro
InfDivisão por zeroValide divisor ou use valor_erro
SintaxeParênteses desbalanceadosRevise estrutura da expressão
ÍndiceFora da faixa (ex: AIN(9))Consulte faixas válidas do modelo

Compatibilidade

ZE-IoT
SP-IoT
SM-IoT

Ver também

Última atualização