This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DCM MATH_v13.1 documentation

Other Parts Discussed in Thread: C2000WARE

Hello,

I've been struggling with the docs regarding DCM MATH module. Version v13.1 is still available (and recommended) for advanced users. I consider myself an advanced user, so the plan was to use this library instead of the C2000Ware. However, the documentation seems to contain some misleading info.

For example:

  • structure of PARK module type contains Sine and Cosine components (page 63 of the PDF), while the example indicates usage of Angle (page 64)
  • SVGEN module is referenced via aci_se.h, while one would expect it to be svgen.h

Could you please advise which path should I proceed? Is the C2000Ware lib suitable for customized ACIM motor control?

Thank you,

Best regards,

Matej

  • Hi,

    Your question is being routed to the appropriate owner. In the meantime, please take a look at the C2000Ware MotorControl Library offering located here: https://dev.ti.com/tirex/explore/node?node=APK7wffLZMc70KL0E5F35g__0.jXikd__LATEST

    Regards,

    Ozino

  • Hi,

    wonderful, thank you! Nevertheless, I'd wait for the appropriate owner to react first. The API is still confusing to me. In the examples provided with the C2000Ware Motor Control SDK, there are several APIs used, different from what I see in the documentation provided above.

    Thank you for understanding,

    Best regards,

    Matej

  • Hi Matej,

    We recommended using the C2000Ware Motor Control SDK libraries for any new design. For the library of the transformation functions you listed in the question, they are located at

    {C2000Ware_MotorControl_SDK_3_00_xx_xx}\libraries\transforms\

    Please let me know what specific application you want to implement or what function you are looking for if you would like further assistance. Thanks.

  • Hi,

    I'm working on FOC for ACIM. I just started with TI C2000, but I know how the control loop should look like (alredy working with another platform). I managed to find the newest libraries and some example in the C2000Ware MC SDK which uses most of what I need to some extent. As a top level feedback - I like the library and its structure, though some overhead is introduced (hopefully aiming for some future extensions and systemic approach).

    Anyway, maybe you can point me to the right direction with the SVGEN module.

    1) there are two versions of the module - svgen and svgen_current. I assume that the svgen_current is useful for X-shunt measurement and using duty-cycles up to 100%. I don't need this feature, so please take it as a generic feedback: it should be written somewhere, e.g. in the "Detailed Description" part. I understand, the documentation is the most difficult part, so no big deal, just an opportunity for improvement.

    2) on the other hand, I see two interface functions in the SVGEN module, referring to the SVGEN_Obj, but I can't see the code where the sector is calculated:

    //*****************************************************************************/
    typedef struct _SVGEN_Obj_
    {
        float32_t oneOverDcBus_invV;    //!< The inverse DC bus voltage value, 1/V
    
        uint16_t sector;                //!< the sector value of space vector
    } SVGEN_Obj;
    //*****************************************************************************/
    static inline uint16_t SVGEN_getSector(SVGEN_Handle handle)
    {
        SVGEN_Obj *obj = (SVGEN_Obj *)handle;
    
        return(obj->sector);
    }
    //*****************************************************************************/
    static inline void SVGEN_setSector(SVGEN_Handle handle, uint16_t sector)
    {
        SVGEN_Obj *obj = (SVGEN_Obj *)handle;
    
        obj->sector = sector;
    
        return;
    }
     

    In my opinion, the "sector" should be linked with the electric angle, thus calculated inside the SVGEN module. With the library provided, I'm forced to do the calculation on my own, to call the "Set" interface and then use the sector by calling the "Get" interface. Could you please provide some more info on how to use the sector?

    Note: Some examples provided with this SDK still use the old SVGEN module using runSVGenDQ() instead of SVGEN_run() - that is where my confusion started:

    It can be found in C:\ti\c2000\C2000Ware_MotorControl_SDK_3_02_00_00\solutions\common\sensored_foc.

    However, the sensorless_foc example placed next to the one above contains the new version of the library and is much more helpful.

    Thank you,

    Matej