Implementation of 3-LVL-Space-Vector-Modulation for ANPC-Topology

Hello,

I would like to investigate different modulation strategies (Same-Side-Clamping, Opposite Side-Clamping, Full-Path-Clamping) for a 3-LVL-ANPC-SiC topology under different operating points in terms of overall efficiency and power dissipation (temperature) per switch.

So far, and thanks to your help, my PLECS model is working very well.

Until now, the switches have been controlled by comparing three 120° phase-shifted sine reference voltages with 2 three-phase carrier signals each. (Carrier Based Modulation) (see picture 1)

Now I would like to use a code-based space vector modulation algorithm as an alternative control method.
The code is only written in Python so far, but I think it works correctly.
The result of the code are duty cycles for each switch of each phase depending on the selected clamping method and modulation index. (see picture 2)

My question to you now is:

How can I best implement the existing code in my existing PLECS model so that the duty cycles (Fig. 2) are signal output in PLECS and can then be used further? Do I have to implement this via a C script block or is there another possibility? As I am unfortunately a complete beginner in this field, I would really appreciate help with this. For a better understanding I have attached the Python code as an HTML document and my updated PLECS Model.

Best regards

THK

SVPWM_3_LVL_ANPC.html (974 KB)

SVM.7z (51.8 KB)

Your request isn’t 100% clear to me. Based on your model it looks like you have successfully implemented carrier-based approaches for sine-PWM, third-harmonic injection PWM, and space-vector PWM. Other carrier-based approaches are also possible, as described in the help documentation for the “3-Phase Index-Based Modulation” block in the PLECS library. The carrier based approach can use either basic PLECS blocks (more straight-forward) or C-Scripts (more complex).

If you would like to use C-Scripts to generate a carrier-based signal that is similar the modulation index output of your python scripts, then refer to the C-Script section of the PLECS manual and the " PLECS: Using the C-Script Block" tutorial.

To reliably generate PWM switching signals using a C-Script is more involved, as one has to be very aware of underlying solver mechanics. There is a tutorial on that concept, “PLECS: Efficient PWM Generation using the C-Script Block”, but it will be quite difficult for complete beginners. You can also review the C-Script based implementation of the “Space Vector PWM (3-Level)” block in the PLECS library.