FuelTech ManualsGlossárioBuscar

2. Como a VCU executa uma função customizada

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

#O laço de 1 kHz

A VCU executa o grafo inteiro a cada 1 ms (1 kHz). Cada execução é um ciclo. O intervalo é nominal: o instante exato de cada ciclo depende da ocupação do processador. O tamanho do grafo é limitado pelas duas reservas de memória descritas adiante. Depois de gravar uma função, confirme no log que a VCU responde como antes.

O ciclo não entrega o intervalo de tempo aos blocos. Cada bloco usa a sua própria base:

Base de tempoBlocos
Por passo: 1 passo é 1 ciclo, cerca de 1 msFiltro EMA, Filtro médias, Contador, Sample and Hold (guarda um valor no instante de um disparo); o filtro interno da Derivada
Tempo real, em milissegundos ou pelo intervalo medido pela VCUAtraso, Timer cíclico, Rampa, Filtro passa baixa, Integrador, Derivada, decaimento do Detector de Pico
Escala fixa do campo Tempo de loop (ms)PID (controle proporcional, integral e derivativo): o campo não é o período; o bloco roda a cada ciclo

#Um grafo só, em ordem de dependência

As funções habilitadas do mapa, até 10, viram um único grafo. A VCU executa os blocos na ordem de dependência: cada bloco roda depois de todos os que o alimentam e lê o valor do ciclo atual deles, nunca o do ciclo anterior.

Em cada ciclo (cerca de 1 ms) a VCU percorre o grafo único. Cada bloco roda depois dos blocos que o alimentam.
Em cada ciclo (cerca de 1 ms) a VCU percorre o grafo único. Cada bloco roda depois dos blocos que o alimentam.

Funções diferentes não têm cabos entre si. Para passar um valor de uma função para outra, grave-o com Valor para VCU num canal Medida customizada e leia o mesmo canal com Valor da VCU na outra. Confira no log em que momento o valor chega à outra função.

#Laço no desenho

O editor deixa você ligar blocos em círculo, de modo que o resultado de um bloco volte, por outros blocos, a uma entrada anterior. Ele só recusa o cabo de um bloco nele mesmo e um segundo cabo na mesma entrada. Não confunda esse laço no desenho com o laço de 1 kHz.

A VCU não executa o laço no desenho. Os blocos que fazem parte dele, e todos os que dependem deles, nunca entram na ordem de execução: a VCU não os executa e o medidor de memória continua contando esses blocos.

Os blocos de um laço no desenho, e os que dependem deles, ficam fora da ordem de execução: a VCU não os executa.
Os blocos de um laço no desenho, e os que dependem deles, ficam fora da ordem de execução: a VCU não os executa.

Na VCU, um bloco nunca lê a saída de um bloco que roda depois dele. Para o resultado anterior influenciar o próximo, há dois caminhos. O primeiro é usar um bloco que guarda estado de um ciclo para o outro, como Histerese, SR Latch (guarda um estado entre um comando Set e um comando Reset), Integrador ou Contador: o valor guardado volta a 0 quando o grafo é carregado. O segundo é passar o valor por um canal Medida customizada livre: Valor para VCU grava e Valor da VCU lê o mesmo canal. Uma medida que já vem de uma entrada física ou da rede CAN (a rede de comunicação entre os módulos do veículo) pode ter o valor sobrescrito. Confira no log o atraso entre gravar e ler antes de depender desse caminho.

#Números com casas decimais

Todo valor que passa por um cabo é um número com casas decimais, com cerca de 7 dígitos de precisão; o editor mostra 6 casas. O que isso implica:

#Memória: duas reservas para o mapa inteiro

A VCU reserva duas áreas de memória para as funções customizadas. Os limites valem para o mapa inteiro, não para cada função: o uso de todas as funções habilitadas é somado.

As duas reservas do mapa, 512 bytes de memória de trabalho e 2048 bytes de configuração, somadas entre as funções habilitadas.
As duas reservas do mapa, 512 bytes de memória de trabalho e 2048 bytes de configuração, somadas entre as funções habilitadas.

O FuelTech Vision mostra o uso no canto inferior esquerdo do editor. O título Memória: N% traz o maior dos dois percentuais; os números "usado / total" mostram o valor real (as cores e o limite de 100 % da barra estão no capítulo A tela de Funções customizadas).

Habilitar e desabilitar. Só as funções habilitadas contam na memória e são executadas. Uma função desabilitada continua guardada no mapa, e os bytes dela voltam a ficar livres. Se todas as funções estiverem desabilitadas, a VCU não executa grafo. O capítulo A tela de Funções customizadas mostra como habilitar.

#O que consome mais

A maioria dos blocos usa de 4 a 16 bytes de memória de trabalho. Pesam mais os blocos abaixo:

BlocoMemória de trabalho (de 512 bytes)Configuração (de 2048 bytes)
Ação na VCU3216
Filtro médias (1 a 32 pontos)16 a 1405
Tabela 12x124682
Tabela 8x84330
Tabela 4x44106
Vetor 1x164136
PID1222
Valor da VCU44

#Ao passar do limite

O Confirmar não é bloqueado pela memória. Ao gravar o mapa aberto na VCU, o FuelTech Vision confere a memória antes de enviar: se a configuração passar de 2048 bytes ou a memória de trabalho passar de 512 bytes, ele não grava e mostra a caixa Memória das Funções Customizadas excedida: "As Funções Customizadas deste mapa excedem a memória disponível. Reduza a quantidade de blocos/parâmetros e tente gravar novamente." Essa conferência acontece no botão Gravar da barra superior (dica "Gravar na VCU"), em qualquer uma das três opções de gravação. Tornar ativo, na lista de mapas guardados na VCU, não a refaz: ele só ativa um mapa que já está lá.

Se um mapa acima do limite for ativado na VCU sem ter passado por essa conferência, nenhuma função customizada roda: não existe carga parcial. Com a memória de trabalho acima de 512 bytes, a VCU avisa "Função customizada: memória de execução esgotada". Com a configuração acima de 2048 bytes, o grafo é descartado sem aviso.

#Ações na VCU: prioridade e convivência com as funções nativas

O bloco Ação na VCU tem 17 ações, além de Nenhuma, e nenhum campo de prioridade. Nos nomes das ações, ETC é a borboleta eletrônica, Flex Fuel é o uso de combustível com teor de etanol variável, sonda lambda é o sensor que mede a mistura no escapamento e EV é veículo elétrico. Cada tipo de ação convive de um jeito com as funções nativas:

TipoExemplosConvivência com as funções nativas
CompensaçãoCompensação de ignição, Compensação de injeção, Compensação de ETC, Compensação de alvo de torque (EV)Acrescenta ao que as funções nativas já calculam. Vários blocos da mesma compensação somam.
SubstituiçãoPonto de ignição, Abertura máxima de ETC, Override de etanol (Flex Fuel), Override de alvo de sonda lambda, Override de alvo de torque (EV)Troca o valor nativo naquele ponto, com prioridade fixa. Vence a de maior prioridade. A Abertura máxima de ETC escala o alvo em vez de substituí-lo (ficha Ação na VCU).
CorteCorte de ignição, Corte de combustívelConcorre com os cortes nativos: vence o maior nível.

A função customizada entra com prioridade fixa, que você não pode mudar. Na ignição, ela perde para as funções nativas de largada (3-step, 2-step e burnout) e para a troca de marcha, e empata com o anti-lag, que segura a pressão do turbo com o acelerador fechado. Na abertura máxima de ETC, perde, entre outras, para o controle de boost por ETC. Funções nativas de prioridade menor perdem para ela. Com o hard cut, o limitador de rotação, a função ganha só no ponto de ignição fixo que o limitador pode aplicar: o corte do limitador continua agindo. O bloco Corte de ignição alta-res. não usa esta prioridade: disputa com o controle de tração, o 2-step, o 3-step e o burnout pelo maior percentual. No empate com o anti-lag não há ordem garantida: não conte com uma das duas e confira no log qual atua. Dois blocos que pedem a mesma ação de substituição: só um vale, e o outro não atua. As substituições ficam ativas o tempo todo em que a função roda, mesmo com a entrada em 0, inclusive o Override de alvo de torque (EV); só o Override de alvo de sonda lambda depende de entrada maior que 0.

#Inicialização

Ao ligar a VCU e a cada gravação de mapa, a VCU carrega o grafo:

#Valores que aparecem nos blocos no editor

Os valores que o editor mostra nos blocos são calculados no computador, não lidos da VCU (seção Valores ao vivo nos blocos, no capítulo Montando o grafo). Use-os para conferir as ligações do desenho, não o comportamento no tempo: a simulação pode diferir da VCU, principalmente nos blocos que dependem do tempo ou guardam estado, como os filtros, o Contador, o Detector de Pico, Atraso, Timer cíclico, Rampa, Integrador e Derivada. Um Filtro EMA, por exemplo, responde no editor cerca de 100 vezes mais devagar que na VCU.

Para ver o que a VCU calculou de verdade, grave o valor com Valor para VCU num canal Medida customizada e acompanhe esse canal. Quase todos os exemplos deste guia fazem isso. Confira antes se o canal está na lista de canais do log.