MotorWare v18 Released

Motorware v18 has officially been released. Find some of the changes enumerated below:

  • HAL_setTrigger() change to fix issue where when USER_NUM_PWM_TICKS_PER_ISR_TICK was set to 2 or 3, and ISR execution time was less than half of ISR period, ADC trigger would sometimes be missed
  • Fixed issue in GPIO_setPortData() for F2805x that had incorrect parameter data width
  • Fixed usDelay() issues in all hal.c files, replaced with US_TO_CNT() macro
  • Fixed CMP saturation limit in HAL_WritePwmData() in hal.h for F2805x only, changed lower limit from _IQ(0.0) to 1
  • Update PWM_setSocAPulseSrc() in all pwm.c
  • Remove OVM functions in lab5h and remove svgen_current.c file in project
  • Fixed compiler error in hal.h for 06x projects with HVKit due to an error in #ifdef statement for HALL GPIO pin numbers
  • Fixed LED blinking timing error in main_ISR() for all FOC and MOTION files that have toggle led code (New Enhancement)
  • Changed the argument of CPU_USAGE_setParams() to variable instead of fixed timer period since timer period was changed in hal.c in MW17. Affects labs: 03b, 07, 11a, and 11b (these labs use the legacy CPU_USAGE module)
  • Changed the argument of FEM_setParams() to variable instead of fixed timer period since timer period was changed in hal.c in MW17. Affects labs: 03b, 07
  • Changed motor definition to resolve compiler error when using IPD projects in the below user.h files:
    • \boostxldrv8305_revA\28x\f2806xF\src\user_j1.h
    • \boostxldrv8305_revA\28x\f2806xF\src\user_j5.h

  • All functions running in main_ISR() in lab11x were added to “ramfunc” for reducing cycle time (New Enhancement)
  • Added lab07 and lab09 project for BoostXL-DRV8305 + F2806x  "boostxldrv8305_revA\f28x\f2806xF\projects\ccs"
  • Added Volt/Hertz module in modules/vs_freq/src directory. This module generates an output command voltage for a specific input command frequency according to the specified volts/hertz profile.
  • Added Angle Generator module in modules/angle_gen/src directory. This module generates angle output for a specific input command frequency.
  • Added proj_01b project for all kits and controllers.
  • Added proj_01c project for all kits and controllers.
  • Added gMotorVars[HAL_MTR2].CtrlVersion = version; to lab10d for bug fix
  • Relocated CLK_disableTbClockSync() to before timebase, compare control, action qualifier, dead band and trip zone initialization loops. This was done to fix issue where PWM sync could sometimes be lost when hard-resetting MCU
  • Changed RsRecalc functionality to have initial value of USER_MOTOR_Rs instead of 0, which will allow quicker settling time
  • Offsets removed from user_2motors.h to avoid issue where current/voltage offsets were defined in two separate header files
  • Added definition for updateRsOnLine() for lab11a, takes EST_Handle parameter instead of CTRL_Handle parameter as expected by runRsOnLine() in lab07
  • Added spi.c and drv8301.c source files to all F2802xF LaunchPad projects that were designed for DRV8301 BoosterPack

Sean

Did a reply answer your question? If yes, please click the "Verify Answer" button located at the bottom of that post.
Visit these helpful C2000 Links!

C2000 TI Wiki Pages
TI Forum Sitemap
ControlSUITE
C2000 Getting Started
CLA FAQs
Workshop Material!

32 Replies

  • In reply to Lori Heustess:

    Lori and Chris,

    Thanks for the clarifications. This legitimate response is very much appreciated.

    I've been programming for over 10 years and I have never needed to use an exe to get access to resources. It's not common practice.

    Also, I did use the Motorware exe to browse the resources, and it still took me 3 days to find the lab manual. I did find the pdf earlier, but I didn't scroll down past the list of labs. I just thought it was a list of labs. I can't be expected to read through a dozen pdfs just to get started.

    I couldn't use the demonstration GUI since I bought the 8305 Boosterpack.

    I understand that most of these issues have slowly arisen over time, but it has gotten messy enough that it is time for a complete rework. SO, I am very glad to hear that C2000Ware will replace Motorware. It sounds like a drastically better setup. Having the motor control system packaged as an SDK would be so much easier than just a bunch of files that need to be tightly woven into your own code.

    Even if the code isn't changed at all, it would become 100x more usable if each user-facing function and variable had documentation. Comments in code are not sufficient documentation.

  • Hi Sean, 

    For the lab01b, does it support and work for instaSPIN HIKIT with F28027F processor ? 

    In the proj01_lab01b.c , it has the following macro #ifndef F2802xF, does that mean this DAC parameter setup won't work for the 28027 processor ? Could you let me know why it has this macro #ifndef ?

    #ifndef F2802xF
    // set DAC parameters

    // gDacData.ptrData[0] = &gPwmData.Tabc.value[0];
    // gDacData.ptrData[1] = &gPwmData.Tabc.value[1];
    // gDacData.ptrData[2] = &gPwmData.Tabc.value[2];
    // gDacData.ptrData[3] = &gAdcData.V.value[0];

    gDacData.ptrData[0] = &angle_gen.Angle_pu;
    gDacData.ptrData[1] = &gAdcData.I.value[0];
    gDacData.ptrData[2] = &gPwmData.Tabc.value[0];
    gDacData.ptrData[3] = &gAdcData.V.value[0];

    HAL_setDacParameters(halHandle, &gDacData);
    #endif

    #ifndef F2802xF
    // Initialize Datalog
    datalogHandle = DATALOG_init(&datalog,sizeof(datalog));

    // Connect inputs of the datalog module
    // datalog.iptr[0] = &gPwmData.Tabc.value[0]; // datalogBuff[0]
    // datalog.iptr[1] = &gPwmData.Tabc.value[1]; // datalogBuff[1]
    // datalog.iptr[2] = &gPwmData.Tabc.value[2]; // datalogBuff[2]

    datalog.iptr[0] = &angle_gen.Angle_pu; // datalogBuff[0]
    datalog.iptr[1] = &gAdcData.I.value[0]; // datalogBuff[1]
    datalog.iptr[2] = &gAdcData.V.value[0]; // datalogBuff[2]

    datalog.Flag_EnableLogData = true;
    datalog.Flag_EnableLogOneShot = false;
    #endif

    // setup faults
    HAL_setupFaults(halHandle);

  • In reply to Yinghui Zhang:

    Yinghui, the F2802xF MCU does not support the PWMDAC or Datalog modules that are available for the F2805x and F2806x devices.

    Sean

    Did a reply answer your question? If yes, please click the "Verify Answer" button located at the bottom of that post.
    Visit these helpful C2000 Links!

    C2000 TI Wiki Pages
    TI Forum Sitemap
    ControlSUITE
    C2000 Getting Started
    CLA FAQs
    Workshop Material!
  • In reply to Sean Bigley:

    Sean, 

    Thanks a lot. For 28027F processor, on schmatic it has 8 channel PWM signal, we should have one spare PWM channel because we're not using PFC circuit (connect the jumper and bypass this circuit) and it'll give us the PWM-4. (Please see the following picture) 

    Could you please advise me how can I modify the code to use this spare channel? I'm trying to use motorware 11a with 28027F processor. 

    I trace to hal.c void HAL_setupGpios(HAL_Handle handle) , modified the GPIO setup for I/O 6 and 7:

    // PWM1-PFC
    GPIO_setMode(obj->gpioHandle,GPIO_Number_6,GPIO_4_Mode_EPWM4A);

    // PWM2-PFC
    GPIO_setMode(obj->gpioHandle,GPIO_Number_7,GPIO_4_Mode_EPWM4B);

    I think I'm missing something, how the DAC channel signal is correlated to PWM signal ? could you please help advise that ?

    Thanks,

    Yz

  • In reply to Sean Bigley:

    For the lab01b, I'm confused about how the frequency in HZ covert to the electrical angle (rpm), could you help me understand that ?

    controller_obj->speed_ref_pu = TRAJ_getIntValue(controller_obj->trajHandle_spd);

    //
    ANGLE_GEN_run(angle_genHandle, controller_obj->speed_ref_pu);
    VS_FREQ_run(vs_freqHandle, controller_obj->speed_ref_pu);

    Let's say V/F open loop, we normally command in frequency in HZ, from 0 to 60HZ in our case. But in the lab_proj01b.c, the ANGLE_GEN_run() takes in the speed_ref_pu, which is get from the function TRAJ_getIntValue(controller_obj->trajHandle_spd). 

    1) what's the scaling factor for speed_ref_pu ? is it convert the electrical speed rpm = HZ/(number of Poles *2) ? 

    if I want command 60hz as V/F open-loop command, should I control in the gMotorVars.SpeedRef_krpm = (60HZ)/(8 poles *2) = 3.75 ?

    2) Why it use TRAJ_getIntValue instead of the function of TRAJ_setTargetValue ? what's the difference between these two function ?

  • In reply to ChrisClearman:

    Is there a roadmap for the next instaspin products or estimated release?
  • In reply to Jacob Martyr:

    Jacob,
    We announced a new Piccolo series in January, F28004x. Superset device is TMS320F280049M and you can read the details on the product folder. There will be an update to the datasheet second half of June which will describe all of the configurations. As you can guess, there will be InstaSPIN-FOC and InstaSPIN-MOTION versions like we've done for F2806x.

    However, we are not releasing MotorWare support for these devices until a future date in 2018, so you can't get started on them with InstaSPIN quite yet. There are some new features that we will describe with the announcement in 2018.
  • Probably a minor question but is there anything that could be done on the motorware side that could fix the compiler issue for CCS?

    We face this problem several times when switching form one environment to the other.

    It would be great if it could be fixed or maybe an error could be prompted using motorWare that we are using 6.2.0 - 6.2.2.

    Thanks for the update !
  • In reply to Rajan Joshi:

    Unfortunately there is nothing we can do for this situation. The CCS team has already moved on to CCSv7 and don't have any sort of "prompt/notify" solution for compilers.

  • In reply to ChrisClearman:

    Is there a some other  tool-chain and ide for TI processors ?

    I hate "Code composer studio". I don't believe any serious code can be "composed" on it.