7. Feed-forward (modelo físico) y trim
#Para qué sirve el feed-forward
Con Habilitar feedforward (el PID pasa a ser trim) activado, la VCU calcula el pulso de la válvula de la bomba a partir de lo que consumen los inyectores.
El PID deja de comandar el pulso completo. Pasa a ser un trim: una corrección en ms, limitada, sumada a lo que calculó el modelo.
Con el modelo acertado, este hace la mayor parte del trabajo y el trim queda cerca de cero.
Un trim alejado de cero durante mucho tiempo indica, en general, un modelo errado: corrija el modelo antes de tocar las ganancias.
Sin el feed-forward el PID comanda el pulso completo: vea Lazo cerrado y PID.
La rutina de arranque, el bloqueo de los inyectores y el modo de seguridad del sensor solo existen con el feed-forward activado: vea Arranque y protecciones.
Los campos del feed-forward siguen siendo editables con él desactivado, pero no tienen efecto.
#Dónde están los campos
En la PC, la página Configuración PID reúne los grupos Feedforward (modelo físico), Modelo de la bomba, PID (compartido entre los rails) y Transitorio y trim.
Tres páginas de gráfico son del feed-forward: Curva de captura G(W), Dead-time por tensión de batería y Factor de llenado (RPM).

Las bancadas están en Configuraciones generales, en el grupo Rail #1 (y Rail #2).
En el celular y en los paneles los campos son los mismos, en páginas sin los títulos de grupo.
Modelo de la bomba es solo el título de un grupo: reúne Dead-time base de la válvula (t0), Coeficiente de fuga (beta), Límite angular de la ventana y Retraso de la válvula (avance de fase).
No existe lista de bombas ni preset: todos los valores vienen de la calibración.
#El cálculo del comando
La VCU calcula la parte útil del pulso con el modelo, suma el trim y el tiempo muerto de la válvula, y limita el resultado con dos topes.

parte útil = G(W) ÷ (0,006 × rpm) + fuga + kick + presurización [ms]
pulso = parte útil + trim + tiempo muerto de la válvula [ms]
pulso = 0 cuando parte útil + trim ≤ 0
pulso final = el menor entre pulso, Límite angular y ancho de la ventana (en ms)
El factor 0,006 × rpm convierte grados de cigüeñal en ms: a 3000 rpm, cada ms equivale a 18° de cigüeñal.
Cada término se explica a continuación, en el orden del cálculo.
Los dos topes son el Límite angular de la ventana y el ancho de la ventana del lobe #1. El trim queda entre el piso y el Trim máximo del PID.
GDI - Feedforward rail 1 muestra la parte útil completa, con fuga, kick y presurización, sin tiempo muerto y sin trim.
Verificación en el log: con pulso mayor que cero y sin ningún tope actuando, GDI - Pulso comandado rail 1 es igual a GDI - Feedforward rail 1 más GDI - Trim del PID rail 1 más el tiempo muerto de la válvula (t0 más la curva por batería, con la tensión del momento).
Cada canal existe para los dos rails: cambie 1 por 2.
#Consumo de los inyectores
El consumo es el promedio del tiempo de inyección de las bancadas marcadas en Alimenta la bancada A / B / C, en los rails activos.
Es promedio, no suma.
El tiempo de inyección ya incluye el tiempo muerto del inyector y las correcciones aplicadas al pulso. No lo confunda con el tiempo muerto de la válvula de la bomba.
El consumo se filtra, con una constante de 0,3 s: sigue al motor con un pequeño retraso.
El corte total de inyección de la bancada (no el parcial), incluido el corte por baja presión, pone en cero el tiempo de inyección: el consumo cae y el feed-forward se encoge junto.
Marque solo bancadas de inyección directa. Una bancada marcada y deshabilitada en la inyección se ignora. Vea Antes de empezar: instalación.
Si los inyectores no son los de la calibración, la VCU corrige el consumo por la razón de los caudales:
consumo = promedio del tiempo de inyección de las bancadas marcadas
× (caudal del inyector instalado ÷ caudal del inyector de referencia)
Complete Caudal del inyector instalado y Caudal del inyector de referencia del preset, en lb/h.
La de referencia es el caudal del inyector con el que se levantó la G(W). La etiqueta cita preset, pero no existe preset.
Informe las dos en la misma unidad y a la misma presión nominal: la VCU solo divide una por la otra.
Con una de ellas en 0, la razón vale 1.
Si levantó la G(W) con los inyectores instalados: escriba el mismo valor en los dos campos.
Si cambió los inyectores después: mantenga la referencia y actualice solo la instalada.
#Demanda W y factor de llenado
W = consumo × √(objetivo ÷ 100) × factor de llenado
W no tiene unidad en la pantalla. Es el consumo en ms corregido a 100 bar: con objetivo de 100 bar y Factor de llenado (RPM) en 1,00, W es igual al consumo.
El objetivo es el del canal HPFP: objetivo de presión (ya suavizado), en la misma base de lectura de Pressión de DI #1.
W es el eje de la Curva de captura G(W). El log no tiene canal de W: para saber el punto de la curva en uso, calcule W con la fórmula de arriba, a partir del tiempo de inyección de la bancada marcada y del objetivo.
El Factor de llenado (RPM) es una curva de 8 puntos por rpm, de 0,50 a 1,20, con valor predeterminado 1,00 (sin efecto).
Multiplica W antes de la G(W): aumentar el factor en un valor de rpm hace que la VCU lea la curva en un W mayor en esas rpm.
Práctica recomendada: deje 1,00 hasta que, con la G(W) acertada, el trim muestre tendencia con las rpm. Entonces ajuste un rango de rpm por vez y verifique en el log.
#Curva de captura G(W)
La G(W) dice cuántos grados de cigüeñal de pulso útil necesita la bomba para entregar la demanda W.
Es una duración, no una posición. No la confunda con Ángulo de cierre del lobe #1, que marca dónde termina el pulso.
La VCU convierte los grados en ms con 0,006 × rpm: el mismo ángulo se vuelve un pulso más corto cuando suben las rpm.
Un ángulo de 30° de cigüeñal son 1,67 ms a 3000 rpm y 0,83 ms a 6000 rpm.

El eje W va de 0 a 20 y los datos, de 0° a 180° de cigüeñal. La curva tiene hasta 8 puntos.
En el valor predeterminado, el eje es 0,5 / 1,5 / 3,0 / 4,5 / 5,0 / 5,5 / 6,6 / 8,4 y todos los datos son 0.
Entre dos puntos la VCU interpola en línea recta.
Fuera de los extremos mantiene el valor del extremo: por debajo del primer punto la curva no cae a cero, y por encima del último queda plana.
Curva en cero significa sin volumen por el modelo.
Mantenga el eje en orden creciente de W: una curva fuera de orden da una interpolación sin sentido.
#Tiempo muerto de la válvula
El tiempo muerto de la válvula es la parte del pulso que no entrega volumen.
Es la suma del Dead-time base de la válvula (t0) (0 a 5 ms, valor predeterminado 1,5 ms) con la curva Dead-time por tensión de batería.
La curva tiene 6 puntos de tensión (valor predeterminado 6 a 16 V, datos en 0) y suma de −5 ms a +5 ms al t0.
Mantenga la suma positiva en todo el rango de tensión: la VCU no limita ese valor por debajo.
El tiempo muerto solo entra cuando hay demanda: si parte útil + trim ≤ 0, el pulso es cero, sin tiempo muerto.
Por eso no existe pulso mínimo: el pulso es cero o mayor que el tiempo muerto, salvo cuando un tope lo corta.
En grados, el tiempo muerto crece con las rpm: 1,5 ms son 9° de cigüeñal a 1000 rpm, 27° a 3000 rpm y 54° a 6000 rpm.
Práctica recomendada: ajuste el t0 al final y por separado, porque altera el trim que sirvió para levantar la G(W).
#Fuga, kick, presurización y retraso
Cuatro términos pequeños completan el modelo. Todos valen para los dos rails.
| Campo | Qué suma al pulso | Cuándo actúa | Valor predeterminado |
|---|---|---|---|
| Coeficiente de fuga (beta) | beta × (objetivo ÷ 100) × (1000 ÷ rpm), en ms | Siempre. Crece con el objetivo y cae con las rpm. | 0 |
| Ganancia de la inyección rápida (kick) y Límite del kick | ganancia × (subida del consumo en ms/s − 2,5), entre 0 y el tope | Solo con consumo por encima de 0,3 ms y subida por encima de 2,5 ms/s. Solo suma. | ganancia 0,03; tope 1,5 ms |
| Ganancia de presurización (ms/(bar/s)) | ganancia × variación del objetivo en bar/s, entre −1,5 y +1,5 ms | Objetivo subiendo suma, objetivo bajando resta. | 0,003 |
| Retraso de la válvula (avance de fase) | Nada en la duración: adelanta el pulso completo en 0,006 × rpm × retraso, en grados de cigüeñal | Siempre | 0 ms |
Deje el Coeficiente de fuga (beta) en 0 sin medición.
El kick refuerza la subida rápida del consumo. La caída del consumo es tarea del corte por desaceleración, y la caída del objetivo es tarea de la presurización.
Con la ganancia predeterminada de 0,003, una subida de objetivo de 100 bar/s suma 0,3 ms. El objetivo usado ya está suavizado: vea Objetivo de presión.
El efecto del Retraso de la válvula (avance de fase) en la posición del pulso está en Los ángulos del lobe.
#Trim y sus límites
El trim es la salida del PID, en ms. Queda entre un piso y el Trim máximo del PID.
Los valores predeterminados son Trim mínimo del PID de −2 ms, Trim máximo del PID de +2 ms y Piso del trim: fracción del feedforward de 50 %.
piso del trim = −el mayor entre el módulo del Trim mínimo y (Piso del trim × parte útil) [ms]
trim = salida del PID, limitada entre el piso y el Trim máximo [ms]
Con los valores predeterminados y parte útil de 6 ms, el piso es −3 ms (50 % de 6 es mayor que 2). Con parte útil de 3 ms, el piso es −2 ms.
El piso acompaña al feed-forward: con demanda alta el trim puede quitar más, con demanda baja vale el Trim mínimo del PID. Con Piso del trim: fracción del feedforward en 0 %, vale solo el Trim mínimo del PID.
El trim puede quitar toda la parte útil. Cuando parte útil + trim llega a cero o menos, el pulso es cero.
GDI - Trim en el límite rail 1 se enciende cuando la salida del PID fue cortada por el piso o por el Trim máximo del PID en ese instante.
Trim en el límite durante buena parte del tiempo indica, en general, un modelo errado. Práctica recomendada: complete la G(W) y solo después abra el Trim máximo del PID.
El trim en el límite se sigue por el canal, sin alerta en la pantalla.
El tope de la parte integral y las ganancias están en Lazo cerrado y PID.
#Topes del pulso
Después de la suma, el pulso pasa por dos topes y vale el menor.
El Límite angular de la ventana (10° a 180° de cigüeñal, valor predeterminado 60°) limita la duración del pulso y cuenta el tiempo muerto de la válvula.
El otro es el ancho de la ventana del lobe #1, cierre menos apertura (valor predeterminado 120° de cigüeñal): vea Los ángulos del lobe.
El tope en ms es los grados ÷ (0,006 × rpm): 60° son 3,33 ms a 3000 rpm y 1,67 ms a 6000 rpm; 120° son 6,67 ms y 3,33 ms.
Con los valores predeterminados, el duty se detiene en 50 %, aunque haya más demanda.
El duty es el pulso dividido por el tiempo del ancho de la ventana. Compare mapas por GDI - Pulso comandado rail 1, en ms.
Límite angular de la ventana mayor que el ancho de la ventana no tiene efecto.
Límite angular de la ventana menor que el tiempo muerto en grados, a rpm alto, corta el pulso dentro del tiempo muerto: no sobra parte útil.
Al ensanchar la ventana, revise el Límite angular de la ventana junto: con el valor predeterminado de 60°, el pulso sigue preso en 60° de cigüeñal.

Las rpm a partir de las cuales solo sobra tiempo muerto en el pulso son:
rpm = Límite angular ÷ (0,006 × tiempo muerto de la válvula)
Con 60° y 1,5 ms, son 6667 rpm.
Si un tope sujeta el pulso y el rail está por debajo del objetivo, el límite es de configuración, no de modelo.
GDI - Límite angular (Theta máx.) rail 1, GDI - Límite de la ventana del lobe rail 1, GDI - Trim en el límite rail 1 y GDI - Guard 1 recortando rail 1 dicen qué límite sujeta el comando.
Vea Diagnóstico: síntomas y causas y, para el Guard 1, Arranque y protecciones.
#Pulso cero
Fuera del arranque y de las protecciones, el pulso va a cero en dos casos. No existe indicador de pulso cero: la señal es GDI - Pulso comandado rail 1 igual a cero, y GDI - Trim en el límite rail 1 puede estar en 1 al mismo tiempo.
- Parte útil + trim ≤ 0: el consumo es cero o el trim quitó toda la parte útil.
- Corte por desaceleración: consumo filtrado por debajo de 0,3 ms y presión más de 10 bar por encima del objetivo.
La bomba solo pone combustible en el rail. Para que la presión baje, el rail necesita consumo.
La entrada en el corte por desaceleración tarda hasta cerca de 1 s después del corte de los inyectores, por el filtro del consumo (estimación).
#Cómo levantar la G(W) y el llenado
Práctica recomendada, con el porqué de cada paso.
- Estabilice el lazo antes, con ganancias iniciales y sin ciclo en el rail (vea Puesta en marcha y ajuste paso a paso). El trim solo enseña la curva si el lazo no oscila.
- Comience con la curva en cero o modesta, de ángulos bajos, y deje que el trim muestre cuánto falta. La G(W) es del vehículo: no use la curva de otro motor.
- Grabe un log en estado estable, con GDI - Feedforward rail 1, GDI - Trim del PID rail 1, GDI - Pulso comandado rail 1, GDI - Error de presión rail 1, los cuatro indicadores de límite y el tiempo de inyección de la bancada marcada.
- Calcule W solo de las muestras en estado estable: la VCU usa consumo filtrado y objetivo suavizado, y fuera del estado estable el W calculado cae en el punto equivocado de la curva. Agrupe por rango de W y por rango de rpm.
- Use solo muestras con pulso comandado mayor que cero: pulso cero es corte, no ruido.
- En cada rango, el trim mediano muestra el error de la curva. Trim positivo significa que la curva entrega poco. Cambie el dato del punto: G nueva = G + trim (ms) × 0,006 × rpm del rango.
- Ejemplo de cálculo: trim mediano de +0,5 ms a 3000 rpm pide +9° de cigüeñal (0,5 × 18).
- Extienda el eje de W hasta el mayor W del log. Por encima del último punto la curva queda plana, y todo el error va al trim.
- Repita hasta que el trim mediano deje de cambiar, con la meta de quedar dentro de ±0,25 ms por rango de rpm (referencia de campo). La tendencia que sobre con las rpm queda para el paso siguiente.
- Si el trim todavía muestra tendencia con las rpm, ajuste el Factor de llenado (RPM). Solo después ajuste el t0, por separado.
#Dos rails
Los parámetros del feed-forward y las tres curvas son comunes a los dos rails. Solo el trim es de cada rail.
El consumo es un promedio único de las bancadas marcadas en los dos rails: los dos rails reciben la misma parte útil.
Si un rail pide siempre más trim que el otro, la división de las bancadas entre los rails no es la causa: no cambia el feed-forward.
Acepte la diferencia: es el trim corrigiendo la asimetría.