Feedforward Calculation for Inverter Control Loop

Status
Not open for further replies.

with2ls

Junior Member level 3
Joined
Jan 16, 2023
Messages
26
Helped
0
Reputation
0
Reaction score
2
Trophy points
3
Activity points
317
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?

Thanks!
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…