I would like to investigate different modulation strategies for a 3-LVL-ANPC-SiC topology under different operating points in terms of overall efficiency and power dissipation (temperature) per switch.
To generate the switching points I use the carrier based PWM method (switching signals by comparing a sine reference voltage with 2 triangle comparative voltages). Same-side clamping, opposite-side clamping and full path clamping are used as modulation strategies.
The control of the switches and the generation of a three-phase sinusoidal current in the load works for the majority of the operating points under investigation. The occurrence of losses per switch is also in line with the values expected from theory.
In order to model the temperature-dependent R_DS_on of the Sic MOSFET, I set the Ron in Parameters to 0 and inserted a variable resistor, which uses a 2D look-up table to output a suitable Rds-on depending on the I_DS current and MOSFET junction temperature.
However, due to the variable resistor, I now get the following warning in every of the 18 switch models:
"Detected an algebraic loop comprising the following components:
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/MOSFET
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/2D-Table1
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Product
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Subtract
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Algebraic Component
As mentioned at the beginning, this is not a problem for the majority of operating points.
However, the warning above develops into the following error:
Could not solve the algebraic loop comprising the following components:
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/MOSFET
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/2D-Table1
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Product
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Subtract
3_LVL_ANPC_SiC_VSI_Ron_Erec/S1a/R/Algebraic Component
This leads to immediate termination of the simulation and occurs in particular at operating points with a very small power factor (=large phase shift) and always during the transient process in the very beginning.
Hence my question: is there a way to avoid the error or to change a setting so that the algebraic loop remains (warning) but can be solved?
I would really appreciate an answer. I have attached pictures to illustrate the problem.
The answer to this is model dependent. The general approaches I would recommend are:
The interaction between algebraic-loops within the different switches can be quite complex. If the variable Rdson is useful, is it necessary to have all the switches in your converter modeled with a variable Rdson? I recommend only using the variable Rdson in a sub-set of switches in the converter.It may be advantageous to convert the the look-up table into a continuous algebraic expression. Can you use a polynomial expression to capture the relationship between Rdson(i,T)? At a higher-level, does modeling the variable nature of the Rdson truly improve the accuracy of the results? If not, then this may be a case of “over-modeling”. Using a constant resistance representative of the expected operating region will make your model more numerically stable and result in a faster simulation.
Thank you for your answer. Now I implemented the variable R_DS_on only in Phase a of my 3-phase VSI. Thanks to this, the sim time is a lot faster and there are less errors due to algebraic loops.
But I have observed another error that leads to the cancelation of the simulation:
State discontinuity after switching. The current through inductor 3_LVL_ANPC_SiC_VSI_Ron_Erec/L1 is forced to jump from 1.06399e-05 to 7.09323e-06.
> Is this a valid approach? What are the potential risks of such a low Relative tolerance?
The downside can be slower simulations in some instances.
Normally state discontinuities with large errors (e.g. inductor current from 10A -> 0A) point to the issues described in this FAQ link. State discontinuities with small errors can be due to solver accuracy as you have identified.
If the state value is not close to zero, then the “Relative Tolerance” setting is the value I would typically adjust.
If the state value is very close to zero (as is the case in your model) then I would change the “Absolute Tolerance” from “auto” to a small value (e.g. 1e-3, but depends on the minimum reasonable state value) and adjust this setting from there.