SPRUJ26A September   2021  – April 2024

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2Motor Control Theory
    1. 2.1 Mathematical Model and FOC Structure of PMSM
    2. 2.2 Field Oriented Control of PM Synchronous Motor
    3. 2.3 Sensorless Control of PM Synchronous Motor
      1. 2.3.1 Enhanced Sliding Mode Observer with Phase Locked Loop
        1. 2.3.1.1 Design of ESMO for PMSM
        2. 2.3.1.2 Rotor Position and Speed Estimation With PLL
    4. 2.4 Hardware Prerequisites for Motor Drive
      1. 2.4.1 Motor Phase Voltage Feedback
    5. 2.5 Additional Control Features
      1. 2.5.1 Field Weakening (FW) and Maximum Torque Per Ampere (MTPA) Control
      2. 2.5.2 Flying Start
  6. 3Running the Universal Lab on TI Hardware Kits
    1. 3.1 Supported TI Motor Evaluation Kits
    2. 3.2 Hardware Board Setup
      1. 3.2.1  LAUNCHXL-F280025C Setup
      2. 3.2.2  LAUNCHXL-F280039C Setup
      3. 3.2.3  LAUNCHXL-F2800137 Setup
      4. 3.2.4  TMDSCNCD280025C Setup
      5. 3.2.5  TMDSCNCD280039C Setup
      6. 3.2.6  TMDSCNCD2800137 Setup
      7. 3.2.7  TMDSADAP180TO100 Setup
      8. 3.2.8  DRV8329AEVM Setup
      9. 3.2.9  BOOSTXL-DRV8323RH Setup
      10. 3.2.10 BOOSTXL-DRV8323RS Setup
      11. 3.2.11 DRV8353RS-EVM Setup
      12. 3.2.12 BOOSTXL-3PHGANINV Setup
      13. 3.2.13 DRV8316REVM Setup
      14. 3.2.14 TMDSHVMTRINSPIN Setup
      15.      34
      16.      35
    3. 3.3 Lab Software Implementation
      1. 3.3.1 Importing and Configuring Project
      2.      38
      3.      39
      4. 3.3.2 Lab Project Structure
      5. 3.3.3 Lab Software Overview
    4. 3.4 Monitoring Feedback or Control Variables
      1. 3.4.1 Using DATALOG Function
      2. 3.4.2 Using PWMDAC Function
      3. 3.4.3 Using External DAC Board
    5. 3.5 Running the Project Incrementally Using Different Build Levels
      1. 3.5.1 Level 1 Incremental Build
        1. 3.5.1.1 Build and Load Project
        2. 3.5.1.2 Setup Debug Environment Windows
        3. 3.5.1.3 Run the Code
      2. 3.5.2 Level 2 Incremental Build
        1. 3.5.2.1 Build and Load Project
        2. 3.5.2.2 Setup Debug Environment Windows
        3. 3.5.2.3 Run the Code
      3. 3.5.3 Level 3 Incremental Build
        1. 3.5.3.1 Build and Load Project
        2. 3.5.3.2 Setup Debug Environment Windows
        3. 3.5.3.3 Run the Code
      4. 3.5.4 Level 4 Incremental Build
        1. 3.5.4.1 Build and Load Project
        2. 3.5.4.2 Setup Debug Environment Windows
        3. 3.5.4.3 Run the Code
  7. 4Building a Custom Board
    1. 4.1 Building a New Custom Board
      1. 4.1.1 Hardware Setup
      2. 4.1.2 Migrating Reference Code to a Custom Board
        1. 4.1.2.1 Setting Hardware Board Parameters
        2. 4.1.2.2 Modifying Motor Control Parameters
        3. 4.1.2.3 Changing Pin Assignment
        4. 4.1.2.4 Configuring the PWM Module
        5. 4.1.2.5 Configuring the ADC Module
        6. 4.1.2.6 Configuring the CMPSS Module
        7. 4.1.2.7 Configuring Fault Protection Function
      3. 4.1.3 Adding Additional Functionality to Motor Control Project
        1. 4.1.3.1 Adding Push Buttons Functionality
        2. 4.1.3.2 Adding Potentiometer Read Functionality
        3. 4.1.3.3 Adding CAN Functionality
    2. 4.2 Supporting New BLDC Motor Driver Board
    3. 4.3 Porting Reference Code to New C2000 MCU
  8.   A Appendix A. Motor Control Parameters
  9.   References
  10.   Revision History

Using DATALOG Function

The DATALOG module stores the real-time values of two user selectable software variables in the data RAM provided on the C2000 MCU as shown in Figure 3-23. The two variables are selected by configuring the module inputs, iptr[0] and iptr[1] to the address of the two variables. The starting addresses of the two RAM buffer locations, where the data values are stored, are stored in datalogBuff1[0] and datalogBuff1[1]. These Datalog buffers are large arrays that contain value-triggered data that can then be displayed to a graph. The datalog prescalar is configurable, which will allow the dlog function to only log one out of every prescalar samples. The default prescalar is set to 10, but can be changed by modifying the value of the DATA_LOG_SCALE_FACTOR define in the datalogIF.h file. Direct Memory Access (DMA) is used to transfer the values of the selected software variables to the datalog buffer in RAM.

 DATALOG Module Block
                    Diagram Figure 3-23 DATALOG Module Block Diagram

In order to enable the datalog functionality, the predefine symbol DATALOGF2_EN must be added in the project properties as shown in Figure 3-19.

The code below shows the declaration of one DATALOG object and handle. This code is located in the datalogIF.c file.

DATALOG_Obj datalog;
DATALOG_Handle datalogHandle;       //!< the handle for the Datalog object

The code below shows the initialization and setting up of the datalog object, handle and parameters. This code is located in the sys_main.c file.

// Initialize Datalog
datalogHandle = DATALOGIF_init(&datalog, sizeof(datalog));
DATALOG_Obj *datalogObj = (DATALOG_Obj *)datalogHandle;

HAL_setupDMAforDLOG(halHandle, 0, &datalogBuff1[0], &datalogBuff1[1]);
HAL_setupDMAforDLOG(halHandle, 1, &datalogBuff2[0], &datalogBuff2[1]);

The code below shows the configuration of the two module inputs, iptr[0] and iptr[1], to point to the address of two variables. The datalog module inputs point to different system variables depending on the build level. This code is located in the sys_main.c file:

datalogObj->iptr[0] = &motorVars_M1.adcData.I_A.value[0];
datalogObj->iptr[1] = &motorVars_M1.adcData.I_A.value[1];

The code below shows the periodic updating of the datalog buffer with the new data during the execution of the motor1ctrlISR() interrupt. This code is located in the motor1_drive.c file.

if(DATALOGIF_enable(datalogHandle) == true)
{
    DATALOGIF_updateWithDMA(datalogHandle);

    // Force trig DMA channel to save the data
    HAL_trigDMAforDLOG(halHandle, 0);
    HAL_trigDMAforDLOG(halHandle, 1);
}
Note: If there is not enough RAM, the datalog will be not used in the software on the device.

The datalog module is used with the graph tool, which provides a means to visually inspect the variables and judge system performance. The graph tool is available in CCS, which can display arrays of data in various graphical types. The arrays of data are stored in a device’s memory in various formats.

While the project is in debug mode, open and setup time graph windows to plot the data log buffers as shown in Figure 3-24. Alternatively, the user can import the graph configurations files that are located in the project folder. In order to import them, Click: Tools -> Graph -> DualTime… and select import and browse to the following location <install_location>\solutions\universal_motorcontrol_lab\common\debug and select motor_datalog_fp2.graphProp file. Hit OK, this should add the Graphs to your debug perspective. Click on Continuous Refresh button  on the top left corner of the graph tab.

 Graph window settings Figure 3-24 Graph window settings