SPRACO3 October   2019 INA240 , LMG5200 , TMS320F280021 , TMS320F280021-Q1 , TMS320F280023 , TMS320F280023-Q1 , TMS320F280023C , TMS320F280025 , TMS320F280025-Q1 , TMS320F280025C , TMS320F280025C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S

 

  1.   Dual-Axis Motor Control Using FCL and SFRA On a Single C2000 MCU
    1.     Trademarks
    2. 1 Introduction
      1. 1.1 Acronyms and Descriptions
    3. 2 Benefits of the C2000 for High-Bandwidth Current Loop
    4. 3 Current Loops in Servo Drives
    5. 4 PWM Update Latency for Dual Motor
    6. 5 Outline of the Fast Current Loop Library
    7. 6 Evaluation Platform Setup
      1. 6.1 Hardware
        1. 6.1.1 LAUNCHXL-F28379D or LAUNCHXL-F280049C
          1. 6.1.1.1 DACs
          2. 6.1.1.2 QEPs
        2. 6.1.2 Inverter BoosterPack - GaN + INA240
        3. 6.1.3 Two Motor Dyno
        4. 6.1.4 System Hardware Connections
        5. 6.1.5 Powering Up the Setup
      2. 6.2 Software
        1. 6.2.1 Incremental Build
        2. 6.2.2 Software Setup for Dual-Axis Servo Drive Projects
    8. 7 System Software Integration and Testing
      1. 7.1 Incremental Build Level 1
        1. 7.1.1 SVGEN Test
        2. 7.1.2 Testing SVGEN With DACs
        3. 7.1.3 Inverter Functionality Verification
      2. 7.2 Incremental Build Level 2
        1. 7.2.1 Connecting motor to INVs
        2. 7.2.2 Testing the Motors and INVs
        3. 7.2.3 Setting Over-current Limit in the Software
        4. 7.2.4 Setting Current Regulator Limits
        5. 7.2.5 Position Encoder Feedback
      3. 7.3 Incremental Build Level 3
        1. 7.3.1 Observation One – Latency
      4. 7.4 Incremental Build Level 4
        1. 7.4.1 Observation
        2. 7.4.2 Dual Motor Run With Speed Loop
      5. 7.5 Incremental Build Level 5
        1. 7.5.1 Dual Motor Run with Position Loop
      6. 7.6 Incremental Build Level 6
        1. 7.6.1 Integrating SFRA Library
        2. 7.6.2 Initial Setup Before Starting SFRA
        3. 7.6.3 SFRA GUIs
        4. 7.6.4 Setting Up the GUIs to Connect to Target Platform
        5. 7.6.5 Running the SFRA GUIs
        6. 7.6.6 Influence of Current Feedback SNR
        7. 7.6.7 Inferences
        8. 7.6.8 Phase Margin vs Gain Crossover Frequency
    9. 8 Summary
    10. 9 References

Incremental Build Level 4

Assuming the previous section is completed successfully, this section verifies the speed PI module and speed loop. The implementation block diagram is given in Figure 28. The motor shafts must be kept disconnected to run these motors at different speed settings simultaneously or only one motor can be tested at a given time. When the motor is commanded to run, it is subjected to an initial alignment stage where the electrical angle and the QEP angle count are set to zero. After ensuring a stable alignment, the motor starts running.

figure_28.gifFigure 28. Level 4 Block Diagram Showing Speed Loop for Dual Motor With Inner FCL
  1. Open "dual_axis_servo_drive_settings.h" and select level 4 incremental build option by setting the BUILDLEVEL to FCL_LEVEL4 (#define BUILDLEVEL FCL_LEVEL4). The current loop regulator can be selected to be the PI controller or the complex controller by setting FCL_CNTLR to PI_CNTLR or CMPLX_CNTLR.
  2. Right-click on the project name, and then click Rebuild Project.
  3. When the build is complete, click the Debug button, reset the CPU, restart, enable real-time mode, and run. In the software, within the 'motorVars[0]' structure, the key variables to add, adjust, or monitor are summarized as follows:
    1. motorVars[0].runMotor : flag to MOTOR_RUN or MOTOR_STOP
    2. motorVars[0].speedRef: for changing the rotor speed in per-unit.
  4. Set 'enableFlag' to 1 in the expressions window. The variables named 'motorVars[0].isrTicker' and 'motorVars[1].isrTicker' are incrementally increased as shown in Expressions window to confirm the interrupts are working properly.
  5. Set 'motorVars[0].speedRef' to 0.3 pu (or another suitable value if the base speed is different).
  6. Add 'motorVars[0].pid_spd' variable to the Expressions window.
  7. Gradually increase voltage at DC power supply to get an appropriate DC-bus voltage.
  8. Add the soft-switch variable 'motorVars[0].ptrFCL->lsw' to the watch window to start the motor. The variable is auto promoted in a sequence inside the FCL. In the code, 'motorVars[0].ptrFCL->lsw' manages the loop setting as follows:
    1. lsw = ENC_ALIGNMENT --> lock the rotor of the motor.
    2. lsw = ENC_WAIT_FOR_INDEX --> motor in running mode, waiting for first instance of QEP Index pulse.
    3. lsw = ENC_CALIBRATION_DONE --> motor in running mode, first Index pulse of encoder occurred.
    • Set 'motorVars[0].runMotor' flag to MOTOR_RUN to run the motor, now the motor runs with this reference speed (0.3 pu). Compare the 'motorVars[0].speed.Speed' with 'motorVars[0].speedRef' in the watch windows with the continuous refresh feature to see whether or not it is nearly the same.
    • To confirm this speed PID module, try different values of 'speedRef' (positive or negative). The P, I, and D gains may be tweaked to get a satisfactory response.
    • At a very low speed range, the performance of the speed response relies heavily on the good rotor position angle provided by the QEP encoder.
    • Set ‘motorVars[0].runMotor’ to MOTOR_STOP to stop the motor.
    • Bring the system to a safe stop by reducing the bus voltage, taking the controller out of real-time mode, and resetting.

    The same set of tests can be done on motor 2 by working with structure variable 'motorVars[1]'.

    Figure 29 shows flux and torque currents in the synchronous reference frame under a step load and 0.6 pu speed. The waveform of channel 1 represents the feedback Q-axis current (torque current), channel 2 represents the feedback D-axis current (flux current).

    figure_29.gifFigure 29. Flux and Torque Current Under Step-Load and 0.6-pu Speed