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.

TMS320F280041: I am looking for example project using the floating point version of ESMO for sensorless FOC of PMAC motor

Part Number: TMS320F280041
Other Parts Discussed in Thread: C2000WARE

Hello,

I found the ESMO .h and .c files in the C2000Ware MotorControl SDK 4_00_00_00.  Strangely the \brief statement at the beginning of the esmo.c file says its the fixed point version but everything is defined as floats in the file and this agrees with definitions in the esmo.h file.  So my questions are:

1.  These are supporting ESMO with floats and FPU.  Correct?

2.  What project uses these files that can be used as a starting to understand their function and operation?  Is it the Motor Control SDK Universal Project and Lab?

Thanks - Bruce

  • 1.  These are supporting ESMO with floats and FPU.  Correct?

    The statement is not right. The module is based on floating point with FPU.

    2.  What project uses these files that can be used as a starting to understand their function and operation?  Is it the Motor Control SDK Universal Project and Lab?

    Correct. The universal lab uses eSMO for motor control.

  • Thanks for the reply.

    One last question:  What documentation exists on TI site in support of this ESMO function to describe its function and tuning?  I found SPRUJ26 describing the Universal Motor Control project but it doesn't go into much detail regarding the algorithms.

    Thanks - Bruce

  • You may have a look at the design guide below that has a chapter about the eSMO module.

    https://www.ti.com/lit/pdf/tidube5

  • Hello,

    Thanks for the reference documents.  I have some quesetions about this document and the project associated with it.  Do I ask them here or should I start a new question.  In case its OK to put them here the two questions are:

    1. In TIDUBE5 I believe that equation 51 is incorrect.  Zalph and Zbeta are being added to the two calculated values when I believe based on reviewing the lab code and some other papers I found after starting with yours that they should be subtracted.  I'm a bit math challenged so really try to follow the thought process of how each equation feeds into the next and this definitely caused me some confusion.

    2. In the code described by TIDUBE5 (unversal motor control lab) there is both a *.h and *.c version of the ESMO_Run function.  I only find the *.h referenced anywhere else in the code with a function call.  So the *.c function seems unused.  Also there are differences in the *.c and *.h forms of the ESMO_Run (including the *.c being named ESMO_run_full).  What is the purpose of the *.c version if not used?

    Thanks.  I'll be happy to repost these questions if needed.  Just let me know.

    Bruce

  • Q1. It's correct. The equation (51) is derived from the equation (47) and (49). 

    Q2: Right. Both are the same,one is the inline function in .h,

    In this application note, it's just an brief introduction on the technical background for your reference. You may try to find more details in some textbooks about SMO and motor control.

  • Hello,

    Q1:  I still believe equation 51 should be subtracting Zalph and Zbeta not adding.  The code in *.h and *.c files subtract them.

    Otherwise thanks for all of you help in this issue.  The app note and example project have been very helpful.

    Bruce

  • Sorry for confusing you. You might notice there is a sign() coefficient for Zalph and Zbeta. We will change the both (51) and (52) to match the codes. Thanks!