Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Feedforward Calculation for Inverter Control Loop

Not open for further replies.


Junior Member level 3
Jan 16, 2023
Reaction score
Trophy points
Activity points
Can anyone explain the math behind why this is how feedforward is added to the output of the inner current compensator loop in a dual loop inverter setup as described in the following doc:

Page 12:

and Page 27:

Inverter output voltage is simply added to the pwm modulator control input, so that the output is generated without current controller action.

That's however a simplified view. In real life, feedback path and modulator involve limited bandwidth and processing dead time. With 100 % feedforward, stability is questionable. But you definitely want something similar.
Thanks for the response. I understand that feedforward is intended to allow things like disturbances (in this case to the output voltage or input voltage) to affect the PWM immediately, bypassing the compensators. But I do not understand why it boiled down to this specific equation. Rewritten, it looks like this:

DC = (Current_Loop_Output / invVbusInst) + (invVoInst/invVbusInst)

The (invVoInst/invVbusInst) kind of make sense, as that's the duty of a standard buck converter, but why is Current_Loop_Output divided by the input voltage (invVbusInst)?

Division by bus voltage is simply a scaling operation. FFWD and controller output are absolute voltage quantities, duty cycle is relative.

I believe the following document answers my question:

With the following adjustments:
1. In equation [1], vmod should actually be vcon, the output of the current compensator (between 0 and 1).
2. Assume Vtrip is 1 as this is a digital power design.

This would yield equation [8], which matches TI's code. Do you agree?

Can you explain a little more on your comment regarding scaling? It has me wondering if I should be scaling my Current_Loop_Output a little differently. At the moment here are my scales:
invVbusInst - 0 to 450V, represented in fractional (0 to 1.0 fractional, 0 to 32767)
invVoInst - 0 to 450V (because it's rectified if software), represented in fractional (0 to 1.0 fractional, 0 to 32767)
Current_Loop_Output - I guess this would this be considered a "voltage adjustment" value, to make the units in the equation work out (-1.0 to 1.0 fractional, -32768 to 32767)

The following:
(Current_Loop_Output / invVbusInst) + (invVoInst/invVbusInst)

Yields a 0 to 1.0 fractional dimensionless value, which is multiplied by the PWM period to get the final duty cycle value. Do I need to be concerned about the scale of Current_Loop_Output?


Not open for further replies.

Part and Inventory Search

Welcome to