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
CALCO 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
MODO 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
ABSO 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
MINO 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
LIMITO 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
SQRTO 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...
SINO 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
LNO 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álculo | Método recomendado | Porquê? |
|---|---|---|
| Adição simples | Bloco ADD (LAD) | Visual e fácil de seguir |
| Fórmula complexa | Bloco CALCULATE | Compacto e reduz o número de redes |
| Algoritmo matemático | Linguagem SCL | Sintaxe próxima de C/Pascal, ideal para fórmulas |
| Cálculo trigonométrico | SCL ou CALCULATE | As caixas individuais são demasiado volumosas |
| Delimitação de sinal | Bloco LIMIT | Padrão Siemens, muito robusto |
| Reset de índice | Instrução INC/DEC | Muito 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.