Pular para o conteúdo

Fórmulas

As fórmulas calculam resultados a partir dos dados coletados nos campos de entrada. Cada fórmula possui uma expressão (o cálculo), uma chave de saída (variável que armazena o resultado) e opcionalmente um rótulo e unidade.

PropriedadeObrigatórioDescrição
RótuloNãoNome descritivo exibido no resultado (ex: “Erro de Medição”)
Chave de saídaSimVariável que armazena o resultado (ex: erro)
ExpressãoSimCálculo matemático (ex: leitura - padrao)
UnidadeNãoUnidade exibida junto ao resultado (ex: mm)

A chave de saída segue as mesmas regras de nomenclatura dos campos de entrada.

As expressões utilizam sintaxe matemática padrão, avaliada pelo motor de cálculo (mathjs com precisão BigNumber de 32 dígitos).

OperadorDescriçãoExemplo
+Adiçãoa + b
-Subtraçãoa - b
*Multiplicaçãoa * b
/Divisãoa / b
^Potenciaçãoa ^ 2
%Móduloa % 2

Gerais:

FunçãoDescriçãoExemplo
abs(x)Valor absolutoabs(erro)
sqrt(x)Raiz quadradasqrt(variancia)
pow(x, n)Potenciaçãopow(desvio, 2)
round(x)Arredondamentoround(resultado)
ceil(x)Arredonda para cimaceil(valor)
floor(x)Arredonda para baixofloor(valor)
sign(x)Sinal (-1, 0 ou 1)sign(erro)

Exponenciais e Logarítmicas:

FunçãoDescrição
exp(x)exe^x
log(x)Logaritmo natural (ln\ln)
log10(x)Logaritmo base 10
log2(x)Logaritmo base 2

Trigonométricas:

FunçãoDescrição
sin(x), cos(x), tan(x)Seno, cosseno, tangente
asin(x), acos(x), atan(x)Inversas
atan2(y, x)Arco tangente de y/x
sinh(x), cosh(x), tanh(x)Hiperbólicas

Estatísticas (vetoriais):

FunçãoDescriçãoExemplo
mean(v)Média aritméticamean(leituras_valor)
std(v)Desvio padrãostd(leituras_valor)
variance(v)Variânciavariance(leituras_valor)
sum(v)Somasum(leituras_valor)
min(v)Menor valormin(leituras_valor)
max(v)Maior valormax(leituras_valor)
median(v)Medianamedian(leituras_valor)

Constantes:

ConstanteValor
piπ3,14159\pi \approx 3{,}14159
ee2,71828e \approx 2{,}71828

Nas expressões, use diretamente a chave definida nos campos ou em fórmulas anteriores:

// Campos de entrada
temp_instrumento - temp_padrao
// Coluna de tabela (formato: nomeTabela_nomeColuna)
mean(leituras_valor)
// Resultado de fórmula anterior
abs(erro) / tolerancia
// Acesso indexado a tabela
leituras_valor_0 - leituras_valor_1

As fórmulas são executadas na ordem em que foram adicionadas. Cada fórmula pode referenciar:

  1. Variáveis dos campos de entrada
  2. Resultados de fórmulas anteriores (pela chave de saída)

Exemplo de encadeamento:

OrdemRótuloChaveExpressão
1Média das Leiturasmediamean(leituras_valor)
2Erroerromedia - padrao
3Erro Relativoerro_relativoabs(erro) / padrao * 100

A fórmula 2 usa media (resultado da fórmula 1). A fórmula 3 usa erro (resultado da fórmula 2) e padrao (campo de entrada).

Quando um campo do tipo tabela possui uma coluna numérica, o motor de cálculo disponibiliza automaticamente um vetor para aquela coluna, permitindo o uso de funções estatísticas.

Para uma tabela com chave medicoes e coluna valor, as seguintes variáveis ficam disponíveis:

VariávelTipoDescrição
medicoes_valorVetorTodos os valores da coluna (para funções vetoriais)
medicoes_valor_0NúmeroPrimeiro valor (índice 0)
medicoes_valor_1NúmeroSegundo valor
medicoes_valor_countNúmeroQuantidade de linhas

Cenário: calibração de micrômetro com 5 leituras repetidas em um bloco padrão.

RótuloChaveTipo
Valor Nominal do PadrãopadraoNúmero (mm)
TolerânciatoleranciaNúmero (mm)
LeiturasleiturasTabela

A tabela leituras possui uma coluna:

RótuloChaveTipoUnidade
Valor MedidovalorNúmeromm
#RótuloChaveExpressão
1Médiamediamean(leituras_valor)
2Desvio Padrãodesviostd(leituras_valor)
3Incerteza Tipo Au_adesvio / sqrt(leituras_valor_count)
4Erroerromedia - padrao

Com dados de exemplo (padrão = 10,000 mm, leituras = [10,002, 10,001, 10,003, 10,001, 10,002]):

  1. media = mean([10.002, 10.001, 10.003, 10.001, 10.002]) = 10,0018
  2. desvio = std([10.002, 10.001, 10.003, 10.001, 10.002]) = 0,000837
  3. u_a = 0.000837 / sqrt(5) = 0,000374
  4. erro = 10.0018 - 10.000 = 0,0018 mm

O motor de cálculo utiliza BigNumber com 32 dígitos de precisão para todas as avaliações de fórmula. Isso garante que erros de arredondamento não se acumulem em cadeias longas de cálculos.

As fórmulas são executadas em um ambiente seguro (sandbox). As seguintes restrições se aplicam:

  • Funções de sistema (import, evaluate, parse, compile, chain) estão bloqueadas
  • Padrões perigosos como __proto__, constructor, eval(), Function() são detectados e rejeitados
  • Não é possível acessar variáveis globais, sistema de arquivos ou rede