Please take a minute to review and accept our Terms of Use.
Welcome to the PLECS User Forum, where you can ask questions and receive answers from other members of the community.

Many technical questions regarding PLECS are answered on the Technical Solutions page of our website. Tutorial videos, specific application examples, and pre-recorded webinars are available on our YouTube page. Please follow us on LinkedIn for the latest Plexim news.

Calc. the efficiency of the inverter

0 votes
856 views
Hello there,

I tried to understand the given efficiency calculation which is explained in the model of the buck converter with thermalsheets.

Now I try to calculate the efficiency of my full bridge inverter system. Which is shown in the picture "Invertersystem". My used calculation for the switching and conduction losses is shown in the picture "Losscalculation". The modelation efficiency system is shown in picture "Efficiencycalculation".

For better understanding: Each fet loss is summarized and divided by the power input. Which means (1 - Ploss)/Pin * 100) with Ploss as the total loss of my full bridge inverter and Pin as the power of my DC Bus Voltage.  

If is it right why I get a efficiency of 99.49 percent by a given point (given switching frequency and load)? I rather expected an efficiency of max. 92 - 95 %.

 

Thank you.
asked Mar 14, 2023 by M.Jesernitzki (14 points)

1 Answer

0 votes

There are many reasons why the losses might be higher or lower than one is expecting.  Without a model or knowledge of your application, it is very difficult to say why. It would be more helpful if you could post your complete model or a simplified example that shows the relevant features and the results you were expecting.  If you don't feel comfortable posting to the forum, you can always reach out to support@plexim.com for assistance if you have a PLECS license under maintenance.

With that said, my initial impressions from the limited data available in your screenshots and description:

  • The formula you entered above has a typo.  It should read (Pin-Ploss)/Pin*100 or (1-Ploss/Pin)*100.  I suspect it's OK in your model as your efficiency reading is reasonable if Ploss << Pin and Pin >> 1.
  • Since you are working with a 1PH AC inverter then the instantaneous power losses might be small at certain operating points (e.g. near 0 current) but high at other points.  Ploss should be averaged over a line cycle, as should Pin.
  • Are there thermal descriptions associated with your components?  If not, then the thermal losses will be calculated based on the On-resistance parameter of your MOSFET with diode.  There also is the possibility that the thermal description is inaccurate in some way or you are not modeling another dominant loss source in your circuit.
answered Mar 14, 2023 by Bryan Lieblick (1,941 points)
edited Mar 15, 2023 by Bryan Lieblick
Hello Bryan,

thanks for your answer!

I honestly don't feel that comfortable uploading my entire model. For that reason, I will contact the support. Thank you for the tip.

 

On the second point, you're right. The losses vary from practically 0 to several watts. However, that is a bit strange for an inverter. As I said I expected an efficiency from 92% to max. 97%. To the third point: I am using the thermal sheet from Infineon that they provide.

Still, let's see if support can help me. Possibly you can help me with another issue? I use scripts for simulation. In course of this I would like to have the output voltage, current and power of my system and shown in the console.

 

Here is a excerpt from my code:

% Load - Scope

Loaddata = plecs('scope', './Load_Scope', 'GetCursorData', [0.025 0.05]);

plecs('scope', './Load_Scope', 'HoldTrace', ['Measurenumber: ' mat2str(ix)]);

%%Show simulation values in console  

 outputvoltage = Loaddata.cursorData{1}{1}.cursor2(ix);

 outputcurrent = Loaddata.cursorData{2}{1}.cursor2(ix);

 outputpower = Loaddata.cursorData{3}{1}.cursor2(ix);

 printf('Simulation parameters of the Simulationnumber: %d: \nVe = %d V\nVa = %.2f V\nIa = %.2f A\nR = %.2f Ohm\nP = %.2f W\nf = %.2f Hz\n\n',ix,voltageValues,outputvoltage,outputcurrent,resValues,outputpower,freqValues(ix));;

For better understand: ix is the count variable of my for loop and I have 1 to 3 traces per plot.

The goal is to output the simulation results of the respective scopes in the console in addition to the input parameters.  
So, in the first loop pass, I would like to have the following displayed (as a example):
Ve = 500 V

f = 80 kHz

R = 25 Ohm

Ia = 32 A

P = 10 kW

Va = 800 V

In the second loop:
Ve = 500 V

R = 31.25 Ohm

f = 85 kHz

Ia = 16 A

P = 8 kW

I specify the input parameters in the simulation. These are the resistance, as respective for the power P, the input voltage Ve and the switching frequency. The other values should be calculated with my simulation and shown in the console.
Thanks for the thoughtful feedback!

> The losses vary from practically 0 to several watts. However, that is a bit strange for an inverter. As I said I expected an efficiency from 92% to max. 97%.

I would just point out that my expectation would be the 92-97% wouldn't occur over a line-cycle but under different AC operating points (e.g. max power, min power, different power factors, etc.)

> Possibly you can help me with another issue? I use scripts for simulation. In course of this I would like to have the output voltage, current and power of my system and shown in the console.

Sorry, the exact question here isn't clear to me.  Are you getting an error or the wrong data?  Again, a model would be helpful :)

Nothing looks obviously wrong in your code, apart from the fact that you might want to index some of the values in your print statement (e.g. resValues(ix)) if resValues defines the behavior in an outer for loop.

The "traces per plot" above can be a bit confusing because one has to be clear about the number of traces for one simulation run vs. the number of saved traces. For a given scope, one can define PlotNum, TracePerPlotNum, SavedTraceNum.  Then:

Result = Loaddata.cursorData{PlotNum}{TracePerPlotNum}.cursor2(SavedTraceNum);

However, your code above looks OK in that regard.

If the cursorData structure is unclear to you, it might be helpful to dump it into the PLECS console (you can just add a line "cursorData" to your script without a ";" at the end).
First of all, I would like to express my gratitude to you. I really appreciate you trying to help me. Thank you very much!

About the script problem. I am referring to the example just shown:

In the first loop pass I get the following results:

Input parameter:
Ve = 500 V

f = 80 kHz

R = 25 Ohm

Output parameter:
Ia = 32 A

P = 10 kW

Va = 800 V

These are also great and work fine. So that the output in the console matches the output values in the respective scopes. However, in the second loop, the input parameters such as the input voltage, the load resistance and the switching frequency are output correctly - in the console - but the calculated output parameters such as the power, output voltage and current from the first loop are displayed. While the scopes or the calculation of the simulation seem correct so far. In other words, I get the following result shown in the console of the second loop:

Input parameter:
Ve = 600 V

f = 85 kHz

R = 31.25 Ohm

Output parameter
Ia = 32 A

P = 10 kW

Va = 800 V

In short, I expect different output parameters. These simply do not display correctly in the console. While they have been calculated correctly.
...