7. Feed-forward (modelo físico) e trim
#Para que serve o feed-forward
Com Habilitar feedforward (PID vira trim) ligado, a VCU calcula o pulso da válvula da bomba a partir do que os bicos estão consumindo.
O PID deixa de comandar o pulso inteiro. Ele vira um trim: uma correção em ms, limitada, somada ao que o modelo calculou.
Com o modelo acertado, ele faz o grosso do trabalho e o trim fica perto de zero.
Trim afastado de zero por muito tempo indica, em geral, modelo errado: corrija o modelo antes de mexer nos ganhos.
Sem o feed-forward o PID comanda o pulso inteiro: veja Malha fechada e PID.
A rotina de partida, o bloqueio dos bicos e o modo de segurança do sensor só existem com o feed-forward ligado: veja Partida e proteções.
Os campos do feed-forward continuam editáveis com ele desligado, mas não têm efeito.
#Onde ficam os campos
No PC, a página Configuração PID reúne os grupos Feedforward (modelo físico), Modelo da bomba, PID (compartilhado entre os rails) e Transiente e trim.
Três páginas de gráfico são do feed-forward: Curva de captura G(W), Dead-time por tensão de bateria e Fator de enchimento (RPM).

As bancadas ficam em Configurações gerais, no grupo Rail #1 (e Rail #2).
No celular e nos painéis os campos são os mesmos, em páginas sem os títulos de grupo.
Modelo da bomba é só o título de um grupo: reúne Dead-time base da válvula (t0), Coeficiente de vazamento (beta), Teto angular da janela e Atraso da válvula (adianto de fase).
Não existe lista de bombas nem preset: todos os valores vêm da calibração.
#A conta do comando
A VCU calcula a parte útil do pulso pelo modelo, soma o trim e o tempo morto da válvula, e limita o resultado por dois tetos.

parte útil = G(W) ÷ (0,006 × rpm) + vazamento + kick + pressurização [ms]
pulso = parte útil + trim + tempo morto da válvula [ms]
pulso = 0 quando parte útil + trim ≤ 0
pulso final = o menor entre pulso, Teto angular e largura da janela (em ms)
O fator 0,006 × rpm converte graus de virabrequim em ms: a 3000 rpm, cada ms equivale a 18° de virabrequim.
Cada termo é explicado a seguir, na ordem da conta.
Os dois tetos são o Teto angular da janela e a largura da janela do lobe #1. O trim fica entre o piso e o Trim máximo do PID.
GDI - Feedforward rail 1 mostra a parte útil inteira, com vazamento, kick e pressurização, sem tempo morto e sem trim.
Conferência no log: com pulso maior que zero e sem nenhum teto atuando, GDI - Pulso comandado rail 1 é igual a GDI - Feedforward rail 1 mais GDI - Trim do PID rail 1 mais o tempo morto da válvula (t0 mais a curva por bateria, na tensão do momento).
Cada canal existe para os dois rails: troque 1 por 2.
#Consumo dos bicos
O consumo é a média do tempo de injeção das bancadas marcadas em Alimenta a bancada A / B / C, nos rails ativos.
É média, não soma.
O tempo de injeção já inclui o tempo morto do bico e as correções aplicadas ao pulso. Não confunda com o tempo morto da válvula da bomba.
O consumo é filtrado, com constante de 0,3 s: ele segue o motor com um pequeno atraso.
O corte total de injeção da bancada (não o parcial), inclusive o corte por baixa pressão, zera o tempo de injeção: o consumo cai e o feed-forward encolhe junto.
Marque só bancadas de injeção direta. Bancada marcada e desabilitada na injeção é ignorada. Veja Antes de começar: instalação.
Se os bicos não são os da calibração, a VCU corrige o consumo pela razão das vazões:
consumo = média do tempo de injeção das bancadas marcadas
× (vazão do bico instalado ÷ vazão do bico de referência)
Preencha Vazão do bico instalado e Vazão do bico de referência do preset, em lb/h.
A de referência é a vazão do bico com que a G(W) foi levantada. O rótulo cita preset, mas não existe preset.
Informe as duas na mesma unidade e na mesma pressão nominal: a VCU só divide uma pela outra.
Com uma delas em 0, a razão vale 1.
Levantou a G(W) com os bicos instalados: escreva o mesmo valor nos dois campos.
Trocou os bicos depois: mantenha a referência e atualize só a instalada.
#Demanda W e fator de enchimento
W = consumo × √(alvo ÷ 100) × fator de enchimento
W não tem unidade na tela. É o consumo em ms corrigido para 100 bar: com alvo de 100 bar e Fator de enchimento (RPM) em 1,00, W é igual ao consumo.
O alvo é o do canal HPFP: alvo de pressão (já suavizado), na mesma base de leitura da Pressão de DI1.
W é o eixo da Curva de captura G(W). O log não tem canal de W: para saber o ponto da curva em uso, calcule W com a fórmula acima, a partir do tempo de injeção da bancada marcada e do alvo.
O Fator de enchimento (RPM) é uma curva de 8 pontos por rpm, de 0,50 a 1,20, com padrão 1,00 (sem efeito).
Ele multiplica W antes da G(W): aumentar o fator num rpm faz a VCU ler a curva num W maior naquele rpm.
Prática recomendada: deixe 1,00 até que, com a G(W) acertada, o trim mostre tendência com o rpm. Então ajuste uma faixa de rpm por vez e confira no log.
#Curva de captura G(W)
A G(W) diz quantos graus de virabrequim de pulso útil a bomba precisa para entregar a demanda W.
É uma duração, não uma posição. Não confunda com Ângulo de fechamento do lobe #1, que marca onde o pulso termina.
A VCU converte os graus em ms com 0,006 × rpm: o mesmo ângulo vira um pulso mais curto quando o rpm sobe.
Um ângulo de 30° de virabrequim são 1,67 ms a 3000 rpm e 0,83 ms a 6000 rpm.

O eixo W vai de 0 a 20 e os dados, de 0° a 180° de virabrequim. A curva tem até 8 pontos.
No padrão, o eixo é 0,5 / 1,5 / 3,0 / 4,5 / 5,0 / 5,5 / 6,6 / 8,4 e todos os dados são 0.
Entre dois pontos a VCU interpola em reta.
Fora das pontas ela mantém o valor da ponta: abaixo do primeiro ponto a curva não cai a zero, e acima do último ela fica plana.
Curva zerada significa sem volume pelo modelo.
Mantenha o eixo em ordem crescente de W: uma curva fora de ordem dá interpolação sem sentido.
#Tempo morto da válvula
O tempo morto da válvula é a parte do pulso que não entrega volume.
Ele é a soma do Dead-time base da válvula (t0) (0 a 5 ms, padrão 1,5 ms) com a curva Dead-time por tensão de bateria.
A curva tem 6 pontos de tensão (padrão 6 a 16 V, dados em 0) e soma de −5 ms a +5 ms ao t0.
Mantenha a soma positiva em toda a faixa de tensão: a VCU não limita esse valor por baixo.
O tempo morto só entra quando há demanda: se parte útil + trim ≤ 0, o pulso é zero, sem tempo morto.
Por isso não existe pulso mínimo: o pulso é zero ou maior que o tempo morto, salvo quando um teto o corta.
Em graus, o tempo morto cresce com o rpm: 1,5 ms são 9° de virabrequim a 1000 rpm, 27° a 3000 rpm e 54° a 6000 rpm.
Prática recomendada: ajuste o t0 por último e sozinho, porque ele altera o trim que serviu para levantar a G(W).
#Vazamento, kick, pressurização e atraso
Quatro termos pequenos completam o modelo. Todos valem para os dois rails.
| Campo | O que soma ao pulso | Quando atua | Padrão |
|---|---|---|---|
| Coeficiente de vazamento (beta) | beta × (alvo ÷ 100) × (1000 ÷ rpm), em ms | Sempre. Cresce com o alvo e cai com o rpm. | 0 |
| Ganho da injeção rápida (kick) e Teto do kick | ganho × (subida do consumo em ms/s − 2,5), entre 0 e o teto | Só com consumo acima de 0,3 ms e subida acima de 2,5 ms/s. Só soma. | ganho 0,03; teto 1,5 ms |
| Ganho de pressurização (ms/(bar/s)) | ganho × variação do alvo em bar/s, entre −1,5 e +1,5 ms | Alvo subindo soma, alvo caindo tira. | 0,003 |
| Atraso da válvula (adianto de fase) | Nada na duração: adianta o pulso inteiro em 0,006 × rpm × atraso, em graus de virabrequim | Sempre | 0 ms |
Deixe o Coeficiente de vazamento (beta) em 0 sem medição.
O kick reforça a subida rápida do consumo. A queda do consumo é papel do corte de desaceleração, e a queda do alvo é papel da pressurização.
Com o ganho padrão de 0,003, uma subida de alvo de 100 bar/s soma 0,3 ms. O alvo usado já está suavizado: veja Alvo de pressão.
O efeito do Atraso da válvula (adianto de fase) na posição do pulso está em Os ângulos do lobe.
#Trim e seus limites
O trim é a saída do PID, em ms. Ele fica entre um piso e o Trim máximo do PID.
Os padrões são Trim mínimo do PID de −2 ms, Trim máximo do PID de +2 ms e Piso do trim: fração do feedforward de 50 %.
piso do trim = −o maior entre o módulo do Trim mínimo e (Piso do trim × parte útil) [ms]
trim = saída do PID, limitada entre o piso e o Trim máximo [ms]
Com os padrões e parte útil de 6 ms, o piso é −3 ms (50 % de 6 é maior que 2). Com parte útil de 3 ms, o piso é −2 ms.
O piso acompanha o feed-forward: em demanda alta o trim pode tirar mais, em demanda baixa vale o Trim mínimo do PID. Com Piso do trim: fração do feedforward em 0 %, vale só o Trim mínimo do PID.
O trim pode tirar toda a parte útil. Quando parte útil + trim chega a zero ou menos, o pulso é zero.
GDI - Trim no limite rail 1 acende quando a saída do PID foi cortada pelo piso ou pelo Trim máximo do PID naquele instante.
Trim no limite em boa parte do tempo indica, em geral, modelo errado. Prática recomendada: preencher a G(W) e só depois abrir o Trim máximo do PID.
O trim no limite se acompanha pelo canal, sem alerta na tela.
O teto da parcela integral e os ganhos estão em Malha fechada e PID.
#Tetos do pulso
Depois da soma, o pulso passa por dois tetos e vale o menor.
O Teto angular da janela (10° a 180° de virabrequim, padrão 60°) limita a duração do pulso e conta o tempo morto da válvula.
O outro é a largura da janela do lobe #1, fechamento menos abertura (padrão 120° de virabrequim): veja Os ângulos do lobe.
O teto em ms é os graus ÷ (0,006 × rpm): 60° são 3,33 ms a 3000 rpm e 1,67 ms a 6000 rpm; 120° são 6,67 ms e 3,33 ms.
Com os padrões, o duty para em 50 %, mesmo com demanda maior.
O duty é o pulso dividido pelo tempo da largura da janela. Compare mapas por GDI - Pulso comandado rail 1, em ms.
Teto angular da janela maior que a largura da janela não tem efeito.
Teto angular da janela menor que o tempo morto em graus, em rpm alto, corta o pulso dentro do tempo morto: não sobra parte útil.
Ao alargar a janela, revise o Teto angular da janela junto: com o padrão de 60°, o pulso continua preso em 60° de virabrequim.

O rpm a partir do qual só sobra tempo morto no pulso é:
rpm = Teto angular ÷ (0,006 × tempo morto da válvula)
Com 60° e 1,5 ms, são 6667 rpm.
Se um teto segura o pulso e o rail está abaixo do alvo, o limite é de configuração, não de modelo.
GDI - Teto angular (Theta máx.) rail 1, GDI - Teto da janela do lobe rail 1, GDI - Trim no limite rail 1 e GDI - Guard 1 aparando rail 1 dizem qual limite segura o comando.
Veja Diagnóstico: sintomas e causas e, para o Guard 1, Partida e proteções.
#Pulso zero
Fora da partida e das proteções, o pulso vai a zero em dois casos. Não existe sinalizador de pulso zero: o sinal é GDI - Pulso comandado rail 1 igual a zero, e GDI - Trim no limite rail 1 pode estar em 1 ao mesmo tempo.
- Parte útil + trim ≤ 0: o consumo é zero ou o trim tirou toda a parte útil.
- Corte de desaceleração: consumo filtrado abaixo de 0,3 ms e pressão mais de 10 bar acima do alvo.
A bomba só põe combustível no rail. Para a pressão cair, o rail precisa de consumo.
A entrada no corte de desaceleração leva até cerca de 1 s depois do corte dos bicos, por causa do filtro do consumo (estimativa).
#Como levantar a G(W) e o enchimento
Prática recomendada, com o porquê de cada passo.
- Estabilize a malha antes, com ganhos iniciais e sem ciclo no rail (veja Comissionamento e acerto passo a passo). O trim só ensina a curva se a malha não oscila.
- Comece com a curva zerada ou modesta, de ângulos baixos, e deixe o trim mostrar quanto falta. A G(W) é do carro: não use a curva de outro motor.
- Grave um log em regime, com GDI - Feedforward rail 1, GDI - Trim do PID rail 1, GDI - Pulso comandado rail 1, GDI - Erro de pressão rail 1, os quatro sinalizadores de limite e o tempo de injeção da bancada marcada.
- Calcule W só das amostras em regime: a VCU usa consumo filtrado e alvo suavizado, e fora de regime o W calculado cai no ponto errado da curva. Agrupe por faixa de W e por faixa de rpm.
- Use só amostras com pulso comandado maior que zero: pulso zero é corte, não ruído.
- Em cada faixa, o trim mediano mostra o erro da curva. Trim positivo significa que a curva entrega pouco. Troque o dado do ponto: G nova = G + trim (ms) × 0,006 × rpm da faixa.
- Exemplo de conta: trim mediano de +0,5 ms a 3000 rpm pede +9° de virabrequim (0,5 × 18).
- Estenda o eixo de W até o maior W do log. Acima do último ponto a curva fica plana, e todo o erro vai para o trim.
- Repita até o trim mediano parar de mudar, com a meta de ficar dentro de ±0,25 ms por faixa de rpm (referência de campo). A tendência que sobrar com o rpm fica para o passo seguinte.
- Se o trim ainda mostra tendência com o rpm, ajuste o Fator de enchimento (RPM). Só depois ajuste o t0, sozinho.
#Dois rails
Os parâmetros do feed-forward e as três curvas são comuns aos dois rails. Só o trim é de cada rail.
O consumo é uma média única das bancadas marcadas nos dois rails: os dois rails recebem a mesma parte útil.
Se um rail pede sempre mais trim que o outro, a divisão das bancadas entre os rails não é a causa: ela não muda o feed-forward.
Aceite a diferença: é o trim corrigindo a assimetria.