Instruções TIA Portal

Funções Matemáticas
Cálculos e Algoritmos

Desde simples somas até equações complexas, as funções matemáticas transformam os seus dados brutos em informações úteis para o controlo dos seus processos.

O que são as funções matemáticas no TIA Portal?

As funções matemáticas no TIA Portal permitem realizar cálculos aritméticos, trigonométricos e logarítmicos em diferentes tipos de dados (Inteiros, Reais). São essenciais para o escalonamento de sensores, o cálculo de trajetórias ou a regulação de malhas PID.

O TIA Portal destaca-se pela instrução CALCULATE, que permite escrever uma expressão complexa (ex: (in1 + in2) * in3 / in4) num único bloco, melhorando a legibilidade em comparação com uma cadeia de blocos individuais ADD/MUL.

Aritmética Básica

Operações fundamentais para o processamento de dados

CALCULATE — Calcular

CALC

O que faz

Permite definir uma expressão matemática livre combinando várias entradas (IN1...INn). Introduz a fórmula e o TIA Portal gera os pinos correspondentes.

Quando usar

Sempre que um cálculo exija mais de dois passos. Ideal para cálculos de caudal, volume ou qualquer fórmula física complexa.

Dicas Pro

Pode usar funções como ABS, SQRT ou SIN diretamente dentro da expressão CALCULATE.

Verifique sempre o tipo de dados de saída (OUT) para evitar estouros (Overflow).

Em SCL, é o equivalente natural de uma atribuição direta: out := (in1 + in2) * in3;

ADD / SUB / MUL / DIV

+
+, -, *, /

O que fazem

Instruções aritméticas padrão: Adição, Subtração, Multiplicação e Divisão.

Quando usar

Para operações simples e rápidas entre dois valores.

Dicas Pro

Na divisão (DIV), use sempre o teste |OK| ou verifique se o divisor não é zero para evitar uma paragem do CPU.

A instrução ADD pode aceitar mais do que duas entradas clicando no ícone amarelo do bloco.

Para inteiros, DIV devolve o quociente inteiro. Use MOD para o resto.

MOD — Módulo

MOD

O que faz

Devolve o resto da divisão inteira entre IN1 e IN2.

Quando usar

Gestão de buffers circulares, alternância de ciclos (ex: bombas 1 e 2), ou conversão de unidades (ex: segundos para minutos/segundos).

Dicas Pro

Muito útil para disparar uma ação a cada 'N' ciclos.

Apenas disponível para tipos de dados inteiros (Int, DInt, etc.).

SCL: remainder := value1 MOD value2;

Sinal e Incremento

Gestão do sinal e operações unitárias rápidas

INC / DEC — Incrementar / Decrementar

++
++ / --

O que faz

Soma ou subtrai 1 à variável especificada (em InOut).

Quando usar

Contadores de peças simples, índices de loops, gestão de filas de espera.

Dicas Pro

Mais rápido de escrever do que um bloco ADD ou SUB completo.

Atenção ao tipo de dados: um incremento num Int em 32767 passará para -32768.

En SCL: i := i + 1; ou INC(i);

ABS — Valor Absoluto

ABS

O que faz

Devolve o valor positivo de um número, seja ele positivo ou negativo originalmente.

Quando usar

Cálculo de desvio entre uma medição e um setpoint, medição de distância, cálculo de erro PID.

Dicas Pro

Indispensável para calcular um erro absoluto (|setpoint - medida|).

Suporta inteiros e reais.

SCL: positiveVal := ABS(originalVal);

Mín / Máx / Limite

Seleção e delimitação de valores

MIN / MAX — Mínimo / Máximo

MIN

O que faz

Compara N valores e devolve o mais pequeno (MIN) ou o maior (MAX).

Quando usar

Seleção da temperatura mais alta entre várias sondas, determinação da velocidade mínima permitida.

Dicas Pro

Pode adicionar tantas entradas quantas as necessárias ao bloco.

Muito útil para diagnósticos multi-sensor.

SCL: peakValue := MAX(val1, val2, val3);

LIMIT — Limitar

LIMIT

O que faz

Delimita (clamp) um valor de entrada (IN) entre um mínimo (MN) e um máximo (MX).

Quando usar

Segurança nas saídas analógicas (ex: impedir que uma válvula abra mais do que 80%), limitação de setpoints do utilizador.

Dicas Pro

Substitui vantajosamente uma combinação de MIN e MAX.

Se MN > MX, a saída depende do tipo de CPU, mas geralmente é MX que é tomado.

SCL: safeVal := LIMIT(MN:=0.0, IN:=rawVal, MX:=100.0);

Potências e Raízes

Cálculos exponenciais e radicais

SQRT / SQR / EXPT

SQRT

O que fazem

SQRT (Raiz quadrada), SQR (Quadrado), EXPT (Potência personalizada).

Quando usar

Cálculos de geometria, conversão de sinais não lineares, física de fluidos.

Dicas Pro

A SQRT de um número negativo dá NaN. Teste sempre a entrada ou use ABS.

EXPT consome muitos ciclos de CPU, use SQR para quadrados simples.

SCL: area := 3.14 * SQR(radius);

Trigonometria

Cálculos de ângulos e rotações

SIN / COS / TAN / ASIN...

SIN

O que fazem

Cálculos trigonométricos padrão e os seus inversos (arcsin, arccos, arctan). Os ângulos são sempre em RADIANOS.

Quando usar

Cinemática de robôs, cálculos de posicionamento angular, processamento de sinais oscilantes.

Dicas Pro

Para converter graus em radianos: Radianos = Graus * (PI / 180).

TAN(PI/2) tende para o infinito, vigie as suas entradas.

Use as constantes de sistema para o PI para garantir a precisão.

Funções Avançadas

Logaritmos e partes fracionárias

LN / EXP / FRAC

LN

O que fazem

LN (Log natural), EXP (Exponencial e^x), FRAC (Extrai a parte decimal).

Quando usar

Modelação de processos químicos, crescimento exponencial ou separação de unidades (FRAC).

Dicas Pro

FRAC(12.34) devolve 0.34. Muito prático para cálculos de precisão temporal.

EXP é o inverso exato de LN.

SCL: fraction := FRAC(totalValue);

Comparação de abordagens de cálculo

LAD vs SCL — Que método escolher?

Tipo de cálculoMétodo recomendadoPorquê?
Adição simplesBloco ADD (LAD)Visual e fácil de seguir
Fórmula complexaBloco CALCULATECompacto e reduz o número de redes
Algoritmo matemáticoLinguagem SCLSintaxe próxima de C/Pascal, ideal para fórmulas
Cálculo trigonométricoSCL ou CALCULATEAs caixas individuais são demasiado volumosas
Delimitação de sinalBloco LIMITPadrão Siemens, muito robusto
Reset de índiceInstrução INC/DECMuito rápido de implementar

Perguntas Frequentes

Qual é a vantagem do CALCULATE em relação a vários blocos ADD/MUL?

O CALCULATE reduz consideravelmente o espaço ocupado no programa. Em vez de 5 redes com variáveis temporárias intermédias, tem um único bloco com uma fórmula legível. Também é mais fácil de manter se a fórmula mudar.

Como é que o TIA Portal gere os erros de cálculo (ex: divisão por zero)?

No S7-1200/1500, um erro matemático não para necessariamente o CPU (consoante a config), mas o resultado torna-se NaN. É CRÍTICO usar a instrução |OK| após um cálculo sensível para validar o resultado antes de o usar.

As funções trigonométricas usam graus ou radianos?

Todas as funções (SIN, COS, TAN, etc.) usam exclusivamente RADIANOS. Se o seu HMI fornecer graus, deve multiplicar o valor por 0.01745329 (PI/180) antes de o injetar no bloco.

Posso fazer cálculos em 64 bits (LReal)?

Sim, os S7-1500 suportam nativamente o tipo LReal (Long Real) para uma precisão acrescida. A maioria das funções matemáticas aceita este tipo.

Simplifique os seus cálculos complexos

Descreva a sua fórmula física ou o seu algoritmo, o T-IA Connect gerará o bloco CALCULATE ou o código SCL otimizado com validação de dados.