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.

[参考译文] CCS/TMS320F28027F:关于过调制的文档

Guru**** 2747375 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/966891/ccs-tms320f28027f-documentation-on-over-modulation

器件型号:TMS320F28027F

工具/软件:Code Composer Studio

您好!  

我正在参考实验10进行过调制(2/3)。 我绘制的 Iq 在 SVM 进入过调制时变为非常嘈杂、我不确定(SVGENCURRENT)模块的正确配置。 尽管我使用3个分流器。 在用户手册中、我找不到有关过调制配置的文档。 如果能提供有关该主题的文档资源或指导我进行正确配置、将不胜感激。  

谢谢你。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ibraheem、

    由于美国节假日、大多数专家都不在办公室。 请预计延迟回复。 对给您带来的不便深表歉意。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否已查看下面显示的文档?

    您可以在第228页找到有关过调制的详细信息。


    www.ti.com/.../spruhj1h.pdf

    如果您仍有疑问、请告诉我。

    最棒的

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、John

    我已经浏览过文档、但我找不到有关当前重建配置参数的任何详细信息。 例如、在以下代码中、  

    //初始化并设置100% SVM 生成器
    svgencurentHandle = SVGENCURRENT_INIT (&svgencCURRENT、sizeof (svgencCURRENT));

    //设置 svgen 电流

    float_t minWidth_microseconds = 1.0;
    uint16_t minWidth_Counts =(uint16_t)(minWidth_microseconds
    * USER_SYSTEM_FREQ_MHz);
    float_t fdutyLimit= 0.5
    -(2.0 * minWidth_microseconds * USER_PWM_FREQ_kHz * 0.001);
    _iq dutyLimit =_IQ (dutyLimit);

    SVGENCURRENT_setMinWidth (svgencurentHandle、minWidth_Counts);
    SVGENCURRENT_setIgnoreShunt (svgencurentHandle、USE_ALL);
    SVGENCURRENT_setMode (svgencurentHandle、all_PHASE_ANTURE);
    SVGENCURRENT_setVlimit (svgencurentHandle、dutyLimit);

     minWidth_microseconds 代表什么? 调整它会影响性能的哪一部分?

    在 mainISR 中、以下代码行的重要性是什么、就好像它在尝试在下一个周期或其他方面调整采样点一样。 我发现如果我添加这些代码行、当 SVM 进入过调制区域时、电流控制器会严重不稳定、因为我正在使用100%过调制、除非我删除这些代码行。   

    SVGENCURRENT_IgnoreShunt_e 忽略 ShuntNextCycle =
    SVGENCURRENT_getIgnoreShunt (svgencurentHandle);
    SVGENCURRENT_VmidShunt_e midVolShunt = SVGENCURRENT_getVmid (
    SvgencurentHandle);

    //在低侧脉冲的中间设置触发点
    HAL_SetTrigger (halHandle、ignoreShuntNextCycle、midVolShunt);  

    我的主 ISR 函数如下所示

    中断空 mainISR (空)

    uint32_t timer0Cnt;
    uint32_t timer1cnt;

    SVGENCURRENT_MeasureShunt_e measurableShuntThisCycle = SVGENCURRENT_getMode (
    SvgencurentHandle);

    //读取定时器1值并更新 CPU 使用模块
    timer1Cnt = HAL_readTimerCnt (halHandle、1);
    cpu_usage_updateCnts (cpu_usageHandle、timer1Cnt);

    //读取定时器0值并更新 FEM
    timer0Cnt = HAL_readTimerCnt (halHandle、0);
    FEM_updateCnts (femHandle、timer0Cnt);
    FEM_run (femHandle);

    //确认 ADC 中断
    HAL_acqAdcInt (halHandle、ADC_IntNumber_1);

    //转换 ADC 数据
    HAL_readAdcData (halHandle、&gAdcData);

    //运行当前重建算法
    SVGENCURRENT_RunRegenCurrent (svgencurentHandle、
    (MATH_vec3*)(gAdcData.I.Value));

    gIavg.value[0]+=(gAdcData.I.value[0]- gIavg.value[0])>> gIavg_shift;
    gIavg.value[1]+=(gAdcData.I.value[1]- gIavg.value[1])>> gIavg_shift;
    gIavg.value[2]+=(gAdcData.I.value[2]- gIavg.value[2])>> gIavg_shift;

    IF (measableShuntThisCycle > two_phase _ measurable)

    gAdcData.I.value[0]= gIavg.value[0];
    gAdcData.I.value[1]= gIavg.value[1];
    gAdcData.I.value[2]= gIavg.value[2];

    //运行控制器
    CTRL_run (ctrlHandle、halHandle、&gAdcData、&gPwmData);

    //运行 PWM 补偿和电流忽略算法
    SVGENCURRENT_COMPPwmData (svgencurentHandle、&(gPwmData.tABC)、
    gPwmData_prev);

    //写入 PWM 比较值
    HAL_writePwmData (halHandle、&gPwmData);


    /* SVGENCURRENT_IgnoreShunt_e ignoreShuntNextCycle =
    SVGENCURRENT_getIgnoreShunt (svgencurentHandle);
    SVGENCURRENT_VmidShunt_e midVolShunt = SVGENCURRENT_getVmid (
    SvgencurentHandle);

    //在低侧脉冲的中间设置触发点
    HAL_SetTrigger (halHandle、ignoreShuntNextCycle、midVolShunt);*

    //设置控制器
    CTRL_setup (ctrlHandle);

    //读取定时器1值并更新 CPU 使用模块
    timer1Cnt = HAL_readTimerCnt (halHandle、1);
    cpu_usage_updateCnts (cpu_usageHandle、timer1Cnt);

    //运行 CPU 使用模块
    cpu_usage_run (cpu_usageHandle);

    返回;
    }// mainISR()函数结束

    期待您的回复、

    谢谢你

    Ibraheem

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以查看 instaSPIN 实验室用户指南中的 lab10a 一章。 "minWidth_microseconds"的值取决于 ADC 采样时间以及 FET 和栅极驱动器的头带值、它应该大于两个值的总和。

    对您发布的另一个线程进行了答复、将 USER_MAX_VS_MAG_PU 设置为低于0.5777的值、或直接限制 PWM 占空比。

    e2e.ti.com/.../3577068