FuelTech ManualsGlossárioBuscar

6. Blocos de tempo, filtro, controle e tabela

Versão 1.1Software: FuelTech Vision 3.0Produtos: FT700, FT470, VisionFT2026-10-13

Todos os blocos deste capítulo, exceto as tabelas e os vetores, ficam no menu Lógicas. As tabelas e os vetores ficam em Tabelas.

Todos rodam a cada ciclo da função, nominalmente 1 ms (1 kHz): o intervalo depende da ocupação do processador. Cada execução é um ciclo. Cada ficha traz entradas, saída, campos da tela, regra de cálculo e custo de memória.

#Tempo e contagem

#Atraso

Atrasa a mudança de estado de um sinal de liga/desliga. Não atrasa um valor analógico.

ItemDescrição
EntradasEntrada: maior que 0 é ligado; 0 ou menos, desligado. Tempo override: ligada e maior que 0, vale no lugar do campo; desligada, vale o campo.
SaídaSempre 0 ou 1, nunca o valor da entrada.
ModoOn-Delay: atrasa só a subida (de 0 para 1). Off-Delay: atrasa só a descida. Ambos: atrasa as duas. Padrão: On-Delay.
Tempo de atraso (s)Padrão 1,0; a tela aceita de 0,001 a 60. Unidade: segundos.

A saída só acompanha a entrada depois que o novo estado dura o tempo ajustado. Em On-Delay, se a entrada volta a 0 antes do tempo, a contagem cancela. Em Off-Delay, se volta a 1, a saída vai a 1 na hora. Em Ambos, cada mudança reinicia a contagem: um pulso mais curto que o tempo ajustado não chega à saída.

Entrada e saída do bloco Atraso nos três modos. On-Delay atrasa só a subida, Off-Delay só a descida, Ambos as duas. A saída é sempre 0 ou 1.
Entrada e saída do bloco Atraso nos três modos. On-Delay atrasa só a subida, Off-Delay só a descida, Ambos as duas. A saída é sempre 0 ou 1.

Memória: 16 bytes da memória de trabalho (limite de 512 do mapa) e 14 bytes de configuração (limite de 2048).

#Timer cíclico

Alterna sem parar entre uma fase ligada e uma desligada e coloca na saída o valor da fase atual. Serve de gerador de pulsos.

ItemDescrição
EntradasDado on: valor que sai na fase ligada. Dado off: valor que sai na fase desligada. Desligada, a entrada vale 0.
SaídaO valor de Dado on ou de Dado off. Com 1 e 0 nas entradas vira um trem de pulsos; com dois valores quaisquer, alterna entre eles.
Tempo On (ms)Duração da fase ligada. Padrão 1000; 0 a 999999.
Tempo Off (ms)Duração da fase desligada. Padrão 1000; 0 a 999999.

Período = Tempo On + Tempo Off. Fração ligada = Tempo On ÷ (Tempo On + Tempo Off). Não há entrada para habilitar nem para reiniciar: o bloco roda desde que a função é carregada. A contagem é em milissegundos inteiros: um tempo fracionário vale o inteiro seguinte (7,14 vira 8 ms) e 0 vale 1 ms.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 14 bytes de configuração (limite de 2048).

#Contador

Conta quantas vezes o disparo sobe. Satura no máximo: não volta a zero sozinho.

ItemDescrição
EntradasTrigger: cada subida (de 0 ou menos para mais que 0) conta 1. Reset: maior que 0 zera a saída e bloqueia a contagem. Enable: desligada, habilita; ligada, só conta se maior que 0.
SaídaA contagem atual.
DireçãoCrescente soma 1 por subida; Decrescente subtrai 1. Padrão: Crescente.
Contagem máximaLimite da contagem, em módulo. Padrão 9999; 0 a 999999.

Crescente: sobe até a Contagem máxima e fica nela. Decrescente: parte de 0 e desce até o valor negativo da Contagem máxima; não há valor inicial ajustável. Subidas com Enable em 0 ou com Reset alto são perdidas. Soltar o Reset com o Trigger ainda alto não gera contagem.

Memória: 8 bytes da memória de trabalho (limite de 512 do mapa) e 16 bytes de configuração (limite de 2048).

#Rampa

Leva a saída de um valor inicial a um valor final em um tempo fixo, quando o gatilho passa de um limite.

ItemDescrição
EntradasValor disparo: o gatilho. Valor inicial: de onde a rampa parte. Valor final: onde termina. Desligadas, valem 0.
SaídaValor inicial enquanto a rampa não começou; depois o valor intermediário; ao fim, Valor final.
Tempo rampa (ms)Duração da rampa. Padrão 1000; 0 a 999999.
Ativar acima de:A rampa começa quando Valor disparo fica maior que este número. Padrão 0.
Rearmar abaixo de:Depois do fim da rampa, ela só rearma quando Valor disparo fica menor que este número; rearmada, recomeça quando ele estiver acima de Ativar acima de:. Padrão 0.

A rampa é definida pela duração, não pela taxa: inclinação = (Valor final − Valor inicial) ÷ Tempo rampa. Cair abaixo de Rearmar abaixo de: no meio da rampa não a interrompe. Ao rearmar, a saída volta de uma vez a Valor inicial. Valor inicial e Valor final são lidos a cada ciclo: mudá-los durante a rampa entorta o trajeto.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 20 bytes de configuração (limite de 2048).

#Sample and Hold

Guarda o valor de um sinal no instante em que um disparo muda e mantém esse valor na saída até o disparo seguinte.

ItemDescrição
EntradasSinal: o valor a guardar. Trigger: o disparo; maior que 0 conta como ligado. Desligadas, valem 0.
SaídaO último valor capturado de Sinal. Começa em 0.
Modo de capturaBorda de subida: o Trigger passa de desligado para ligado. Borda de descida: o inverso. Ambas as bordas: as duas. Padrão: Borda de subida.

Não há entrada de reset: a saída só muda em uma captura.

Memória: 8 bytes da memória de trabalho (limite de 512 do mapa) e 7 bytes de configuração (limite de 2048).

#Detector de Pico

Retém o maior (ou o menor) valor visto na entrada e, se você quiser, deixa esse pico decair com o tempo.

ItemDescrição
EntradasEntrada: o sinal. Reset: enquanto maior que 0, a saída copia a entrada a cada ciclo. Desligadas, valem 0.
SaídaO pico retido.
ModoMáximo retém o maior valor; Mínimo, o menor. Padrão: Máximo.
Taxa de decaimentoEm unidades do sinal por segundo. Padrão 0 (o pico não decai); 0 a 999999.

Com Taxa de decaimento maior que 0, o pico se aproxima da entrada em linha reta, pelo tempo real medido, e nunca a cruza. Exemplo: o pico foi 1 e a entrada voltou a 0; com taxa 5, a saída chega a 0 em 200 ms. No primeiro ciclo depois de carregar, a saída parte do valor da entrada, não de 0.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 14 bytes de configuração (limite de 2048).

#Filtros e derivada

Dois destes blocos valem por ciclo de 1 ms (Filtro EMA e Filtro médias), um vale em hertz (Filtro passa baixa) e a Derivada tem um fator por ciclo e uma saída em unidades por segundo. Cada ficha diz como converter o ajuste para tempo ou frequência. Ao ligar a VCU e a cada gravação de mapa, o Filtro EMA e o Filtro passa baixa partem de 0 e levam o tempo do filtro para alcançar a entrada, e a Derivada compara a primeira amostra com 0, o que dá um pico na saída.

#Filtro EMA

Suaviza um sinal misturando a amostra nova com o valor anterior da saída.

ItemDescrição
EntradasEntrada: o sinal. Desligada, vale 0.
SaídaO sinal filtrado.
AlphaPeso da amostra nova a cada ciclo de 1 ms. Padrão 1,0 (sem filtro); 0 a 1 na tela.

Saída = Alpha × entrada + (1 − Alpha) × saída anterior. Alpha 1 passa o sinal sem filtrar; Alpha 0 não deixa o sinal passar. O Alpha vale por ciclo, não em tempo. A saída chega a 63 % de um degrau em 1 tau (a constante de tempo do filtro) e a 95 % em 3 tau. Converta assim:

tau (ms) = −1 ÷ ln(1 − Alpha)
Alpha = 1 − e^(−1 ÷ tau)          (tau em ms)
frequência de corte (Hz) ≈ 159 ÷ tau (ms)
AlphaConstante de tempo (tau)Corte aproximado
0,005199,5 ms0,8 Hz
0,01952,1 ms3,1 Hz
0,0519,5 ms8,2 Hz
0,156,15 ms26 Hz
0,51,44 msrelação não vale

Para tau = 50 ms, Alpha = 0,0198. A relação com o corte só vale para tau bem maior que 1 ms.

Memória: 8 bytes da memória de trabalho (limite de 512 do mapa) e 8 bytes de configuração (limite de 2048).

#Filtro médias

Devolve a média das últimas N amostras do sinal, uma amostra por ciclo de 1 ms.

ItemDescrição
EntradasEntrada: o sinal. Desligada, vale 0.
SaídaA média móvel.
PontosO número N de amostras. Padrão 16; 1 a 32.

Com N pontos a janela dura N ciclos (cerca de N ms). Diante de um degrau, a saída sobe em linha reta e chega ao valor novo depois de N ms; diante de uma rampa, fica (N − 1) ÷ 2 ms atrás. Logo depois de carregar, enquanto as amostras não enchem a janela, a média usa só as recebidas.

Memória: 12 + 4 × Pontos bytes da memória de trabalho (limite de 512 do mapa) e 5 bytes de configuração (limite de 2048). É o único bloco do capítulo com custo que varia. Exemplos: 16 B com 1 ponto, 44 B com 8, 76 B com 16 (padrão, 14,8 % do limite) e 140 B com 32 (27,3 %).

#Filtro passa baixa

Filtro de 1ª ordem ajustado pela frequência de corte, em hertz, com o tempo real medido entre ciclos.

ItemDescrição
EntradasEntrada: o sinal. Desligada, vale 0.
SaídaO sinal filtrado.
Frequência de corte (Hz)Padrão 100; 1 a 1000 na tela. Valor 0 ou menor: o sinal passa sem filtro.
Fator QPadrão 1,0; 0 a 1. Não é fator de qualidade: mistura o sinal filtrado com o sinal cru. 1 é só filtrado.

Constante de tempo tau (ms) ≈ 159 ÷ Fc (Hz): 1 Hz dá 159 ms, 3 Hz dá 53 ms, 10 Hz dá 16 ms. A 1 kHz o filtro perde o sentido acima de 500 Hz. Com Fator Q abaixo de 1, a mistura volta para dentro do filtro e ele fica mais rápido que o corte indica. Exemplo com 10 Hz: Q 1 dá tau de 16,4 ms; Q 0,99, 14,1 ms; Q 0,9, 6,0 ms; Q 0,5, 1,3 ms. Deixe Q em 1 para o corte valer.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 12 bytes de configuração (limite de 2048).

#Derivada

Mede a taxa de variação do sinal, em unidades por segundo.

ItemDescrição
EntradasEntrada: o sinal. Desligada, vale 0.
SaídaVariação da entrada por segundo, não por ciclo.
Fator de filtroPeso da amostra nova (a tela escreve o símbolo alfa depois do nome) no filtro da saída, por ciclo de 1 ms. Padrão 0,5; 0 a 1.

Derivada = (entrada − entrada do ciclo anterior) ÷ tempo medido entre os ciclos (cerca de 1 ms). Com o fator de filtro (alfa) entre 0 e 1, a saída passa por um filtro igual ao do Filtro EMA: saída = alfa × derivada + (1 − alfa) × saída anterior.

A derivada não tem janela: compara duas amostras seguidas, cerca de 1 ms entre elas. Um sinal que só atualiza de vez em quando, em degraus, dá derivada 0 na maioria dos ciclos e um pico no ciclo em que o degrau chega. Confira no log com que frequência o canal muda. Filtre antes de derivar: a tabela mostra um sinal que sobe 1 unidade a cada 50 ms (inclinação real: 20 unidades por segundo).

MontagemMenor saída (unid/s)Maior saída (unid/s)
Derivada com alfa 1 (sem filtro)01000
Derivada com alfa 0,5 (padrão)0500
Derivada com alfa 0,054,454,2
Filtro EMA (Alpha 0,0198) antes, Derivada com alfa 111,831,3
Filtro EMA (Alpha 0,0198) antes, Derivada com alfa 0,0516,322,1

Valores calculados pelas fórmulas dos blocos, com ciclo de 1 ms, depois do regime. O filtro antes custa atraso: com tau de 50 ms, a derivada chega cerca de 50 ms depois.

Derivada de um sinal em degraus. Sem filtro a saída é feita de picos; com um filtro antes da Derivada ela fica perto da inclinação real, com atraso.
Derivada de um sinal em degraus. Sem filtro a saída é feita de picos; com um filtro antes da Derivada ela fica perto da inclinação real, com atraso.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 8 bytes de configuração (limite de 2048).

#Qual filtro usar

SituaçãoBlocoPor quêMemória de trabalho
Você pensa em hertzFiltro passa baixaO corte vale em Hz, com o tempo medido entre ciclos.12 B
Você pensa em tempo de resposta e quer o menor custoFiltro EMAUma conta e um valor guardado; o Alpha vale por ciclo.8 B
Você quer uma janela de tamanho fixo (N amostras)Filtro médiasA saída chega ao valor novo em N ms, N ciclos.12 + 4 × Pontos
Você vai derivar um sinal que muda em degrausUm dos três, antes da DerivadaA derivada sem filtro vira picos.(do filtro)
Resposta a um degrau. Filtro EMA e Filtro passa baixa sobem em curva (63 % em 1 tau, 95 % em 3 tau). Filtro médias sobe em linha reta e chega ao valor em N ms.
Resposta a um degrau. Filtro EMA e Filtro passa baixa sobem em curva (63 % em 1 tau, 95 % em 3 tau). Filtro médias sobe em linha reta e chega ao valor em N ms.

#Controle

#Integrador

Soma a entrada ao longo do tempo, com ganho e limites.

ItemDescrição
EntradasEntrada: o valor a integrar. Reset: enquanto maior que 0, a saída fica em 0. Desligadas, valem 0.
SaídaO valor acumulado.
GanhoPadrão 1,0; −999999 a 999999. Unidade: por segundo.
Limite mínimoPiso do acumulado. Padrão −999999.
Limite máximoTeto do acumulado. Padrão 999999.

A cada ciclo: acumulado = acumulado + entrada × Ganho × tempo medido (em segundos); depois o acumulado é limitado entre os dois limites. Entrada 10 e Ganho 1 durante 2 s sobem 20. Não há valor de reserva: com a Entrada desligada o bloco integra 0 e a saída não se move. Não há entrada para pausar: para segurar o valor, leve a entrada a 0 antes do bloco (por exemplo, com uma Chave). O Reset zera sem aplicar os limites. Se Limite mínimo for maior que Limite máximo, vale o mínimo. Em uso contínuo por horas, sem chegar a um limite, o acumulado acaba deixando de crescer por falta de resolução numérica.

Memória: 8 bytes da memória de trabalho (limite de 512 do mapa) e 18 bytes de configuração (limite de 2048).

#PID

Calcula uma saída a partir da diferença entre o valor medido e o alvo, com parcelas proporcional, integral e derivativa.

ItemDescrição
EntradasDado (o valor medido), Alvo, Ganho P, Ganho I, Ganho D (desligado vale 0) e Anti windup (opcional: desligada, vale o campo).
SaídaA soma das três parcelas, sem limite.
Tempo de loop (ms)Fator de escala do tempo dos ganhos. Padrão 100; 1 a 999999.
Anti windup (valor fixo)Limite do acumulado, em módulo (de −valor a +valor). Padrão 100; 0 a 999999.
erro = Dado − Alvo
acumulado = acumulado + erro × (Tempo de loop ÷ 1000), limitado a ± Anti windup
variação = (erro anterior − erro) ÷ (Tempo de loop ÷ 1000)
Saída = erro × Ganho P + acumulado × Ganho I + variação × Ganho D

O bloco roda a cada ciclo (nominalmente 1 ms). O Tempo de loop (ms) não muda isso: entra só como tempo de cada conta. Por segundo, o acumulado cresce erro × Tempo de loop, então o Ganho I efetivo é Ganho I × Tempo de loop e o Ganho D efetivo é Ganho D ÷ Tempo de loop. Com Tempo de loop em 1, os ganhos ficam em unidades reais (I por segundo, D em segundos). Com o padrão 100, um Ganho I de 0,5 rende 50. Os três ganhos são entradas, não campos: ligue um Valor Fixo em cada.

Estrutura do PID. O erro (Dado menos Alvo) alimenta a parcela proporcional, o acumulado limitado pelo Anti windup (antes do Ganho I) e a parcela derivativa, com sinal invertido. A saída é a soma, sem limite.
Estrutura do PID. O erro (Dado menos Alvo) alimenta a parcela proporcional, o acumulado limitado pelo Anti windup (antes do Ganho I) e a parcela derivativa, com sinal invertido. A saída é a soma, sem limite.

O Anti windup limita o acumulado antes do ganho: a parcela integral nunca passa de |Ganho I| × Anti windup. Não há reset, habilitar nem limite de saída: ponha um Limitador depois do PID. O acumulado soma o tempo todo, mesmo que você desvie a saída com uma Chave, até chegar a ± Anti windup. A parcela derivativa compara o erro de dois ciclos seguidos (cerca de 1 ms) e age sobre o erro, não só sobre o Dado: um dado que muda em degraus, um degrau no Alvo ou a primeira execução depois de gravar o mapa (o erro anterior começa em 0) geram picos nela. Filtre o Dado antes, como na Derivada.

Memória: 12 bytes da memória de trabalho (limite de 512 do mapa) e 22 bytes de configuração (limite de 2048).

#Tabelas e vetores

Tabelas e vetores guardam números que você digita e devolvem o valor interpolado para a entrada.

#Tabela 4x4, Tabela 8x8 e Tabela 12x12

Devolve um valor de uma tabela de duas dimensões, com interpolação entre as células vizinhas.

ItemDescrição
EntradasX: valor no eixo das colunas. Y: valor no eixo das linhas. Desligadas, valem 0.
SaídaO valor interpolado.
ModoFora da faixa dos eixos: Clamp segura o valor da ponta; Extrapola continua a reta (ou o plano) do segmento da ponta.
Eixos e célulasDe −100000 a 100000. Uma tabela nova vem com eixos 0, 1, 2... e células 0: devolve 0.

A interpolação é bilinear: o bloco acha o quadrado do eixo onde X e Y caem e interpola entre as quatro células vizinhas. Os eixos precisam ser estritamente crescentes (cada ponto maior que o anterior). Com eixo fora de ordem, o resultado não segue o que você desenhou; dois pontos iguais em seguida dão um degrau. A tela da tabela mostra um aviso em vermelho quando o eixo X, o Y ou ambos não são estritamente crescentes, mas só avisa.

Interpolação. No vetor, reta entre dois pontos vizinhos; na tabela, plano entre quatro células. Fora da faixa, Clamp segura o valor da ponta e Extrapola continua a reta do segmento da ponta.
Interpolação. No vetor, reta entre dois pontos vizinhos; na tabela, plano entre quatro células. Fora da faixa, Clamp segura o valor da ponta e Extrapola continua a reta do segmento da ponta.

Memória: 4 bytes da memória de trabalho (limite de 512 do mapa) e de 106 a 682 bytes de configuração (limite de 2048), conforme o tamanho: veja a tabela de tamanhos.

#Vetor 1x4, Vetor 1x8, Vetor 1x12 e Vetor 1x16

A mesma ideia da tabela, com um eixo só: devolve o valor interpolado em linha reta entre dois pontos.

ItemDescrição
EntradasX: valor no eixo. Desligada, vale 0.
SaídaO valor interpolado.
ModoIgual ao da tabela: Clamp segura o valor da ponta; Extrapola continua a reta do segmento da ponta.
Eixo e dadosDe −100000 a 100000. Um vetor novo vem com eixo 0, 1, 2... e dados 0.

Valem as mesmas regras de eixo estritamente crescente e de entrada desligada. A tela do vetor não mostra o aviso de eixo fora de ordem que a tela da tabela mostra: confira a ordem você mesmo.

Memória: 4 bytes da memória de trabalho (limite de 512 do mapa) e de 40 a 136 bytes de configuração (limite de 2048), conforme o tamanho.

#Tamanhos e custo de configuração

BlocoPontos de eixo e célulasConfiguraçãoParte dos 2048 B
Tabela 4x44 + 4 pontos, 16 células106 B5,2 %
Tabela 8x88 + 8 pontos, 64 células330 B16,1 %
Tabela 12x1212 + 12 pontos, 144 células682 B33,3 %
Vetor 1x44 pontos40 B2,0 %
Vetor 1x88 pontos72 B3,5 %
Vetor 1x1212 pontos104 B5,1 %
Vetor 1x1616 pontos136 B6,6 %