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.

[参考译文] TMS320F280049C:电机 RDK ePWM 配置

Guru**** 2551200 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/882177/tms320f280049c-motor-rdk-epwm-configuration

器件型号:TMS320F280049C

您好!

多次查看 hal.c HAL_setupPWMs()似乎比较 C 计数器比较子模块被错误地使 ADC 触发源和更高值的加载源。  

ePWM 发生器 D 已配置 booster sites 1/2、而不是发生器 C。时基(TB)如何为未配置的发生器保持正确的时序触发 ADC 样本?

是否假定时基(TBCTR)与每个发生器负载计数时间(TBPRD)保持同步? 那么、COMPA=GENA、COMPB=GENB、COMPC=GENC、COMPD=GEND 分别相对于发生器/秒计数器的相位关系? 可能使用 CompC 将 ADC 采样窗口相位与实际电压和电流事件的关系更改为实际电压和电流事件?  在以下两种情况下、可能会触发 EPWM_SOC_TBCTR_D_CMPD 的时序优势、因此 InstaSpin mainISR ROM 调用会发生50µs μ s 边沿的同步启动?

奇怪的20Khz 调制50µs μ s 周期在 GPIO 监控器 mainISR()的上升沿之前开始。 没有书面解释为什么选择了比较器 C 而不是 D、有一个问题是为什么会来...  

SDK 中的代码(hal.c)

//设置事件触发器选择寄存器(ETSEL)
// COMP-C=DN 或 SOC_TBCTR=0
ePWM_DisableInterrupt (obj->pwmHandle[0]);
ePWM_setADCTriggerSource (obj->pwmHandle[0]、
ePWM_SOC_A、ePWM_SOC_TBCTR_D_CMPC);

//为 ADC 触发器写入 PWM 数据值
ePWM_setCounterCompareValue (obj->pwmHandle[0]、
ePWM_COUNTER_COMPARE_C、5); 

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

    由于在这些实验中启用了死区、因此 PWM 输出只需要 Compar_A。  比较_C 用于为 ADC 触发器生成事件、并在除实验室需要过调制之外的所有实验中设置固定值。

    三相逆变 器的三个 EWPM 模块通过启用 ePWM 模块时基时钟同步信号进行同步。

    您可以查看有关 ePWM 的技术参考手册(SPRUI33B)、其中对使用 ePWM 进行了非常详细的说明。

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

    [引用用户="Yanming Luo "] PWM 输出只需要 Compar_A [/引用]

    这不是 SDK 触发 SOC 的方式、无论死区如何。

    [引用用户="Yanming Lua"]通过 启用 ePWM 模块时基时钟同步信号来同步三相逆变器的三个 EWPM 模块。[/quot]

    然而、FOC 相位驱动逆变器输出的间距为120°。 因此、与_D 相比、选择_C 似乎有点奇怪、因为_C 将设置60°-90°高级 SOC 触发操作、并且 Comp_C 未用于逆变器 PWM 发生器(gen)。 当实际指定了 gen 时、似乎是错误或假设将 gen-C 用于 PWM。 依次为 A-D-B 和逆变器1/2桥驱动器。 考虑到进入栅极驱动器的 GPIO 路由、典型的 gen 累进是 A-B-D。 因此、A-D-B 也毫无意义、除非 ROM 调用 FAST 时期望生成顺序相反、并且这一点在任何 x49c MCU 文档中都没有披露。

    发生器间隔均匀(同步)、它们不会将 ADC 触发器设置为相同的转子角度或同时、仅同步应用计数更新(占空比)。 这就是 SW 通过选择较低的比较器操作来触发 ADC、从而向 SOC 添加延时时间的方法。 相位角换向的典型顺序向下级联,例如,gen A->B->C->D 均具有不同的 SOC 触发点关系。 这是相对于单个比较器操作事件计时的、在本例中为 SOC。

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

    我仍然担心转子振动小 PM 电动机 ID 实验5末尾(LC)。 在我看来、这种振动似乎与 SW 更相关! PWM 计时环路中的某个东西会使奇数定子不平衡、并且转子会以不良的方式振动。  

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

    [引用用户="Yanming Lua"]比较_C 用于生成 ADC 触发事件[/引用]

    如何通过 SW 加载 Compar_C 周期是真正的问题。 我看到_A 负载计数中心但_C 从未设置触发事件或包含在占空比更新中。 它似乎是为影子更新启用的唯一比较操作_A。

    32µs 使 SOC 与 PWM 电压保持同步、FAST 估算器是否能够更好地工作?每个 μ s mainISR()都发生了变化? 它的配置方式是、_C 每5 TBCTR 时钟节拍(50ns)触发 SOC? 然而、EOC 中断与每个输出扇区的电压变化保持一定的同步、但是...

    过度触发 SOC 似乎是为了说明电机 ID 和 LC 中的旋转角度如何与电流角度部分异相。 因此、在 LC 模式下、转子会因形状不良的换向角而振动。 EOC 轻松地通过运行 mainISR()对触发的中断进行采样。 mainISR() GPIO 在任何一个 μ 50µs 周期的任意一侧的短周期边沿中可能会触发几次。 运行时的奇怪抽取对人眼而言是随机的、TBCTR (100Mhz)的快速变化直接触发 EOC 中断、间隔为50ns。 同样、与硬件相比、SW 更有可能成为转子振动的原因。

    //设置计数器比较控制寄存器(CMPCTL)
    EPWM_setCounterCompareShadowImage LoadMode (obj->pwmHandle[cnT]、
    ePWM_COUNTER_COMPARE_A、
    ePWM_COMP_LOAD_ON_CNTR_ZERO);
    //
    ePWM_DisableCounterCompareShadowImage LoadMode (obj->pwmHandle[cnT]、
    ePWM_COUNTER_COMPARE_B);
    
    //未使用
    ePWM_DisableCounterCompareShadowImage LoadMode (obj->pwmHandle[cnT]、
    ePWM_COUNTER_COMPARE_C);
    
    //
    ePWM_DisableCounterCompareShadowImage LoadMode (obj->pwmHandle[cnT]、
    ePWM_COUNTER_COMPARE_D);
    
    //设置动作限定器输出 A 寄存器(AQCTLA)
    ePWM_setActionQualifierAction (obj->pwmHandle[cnT]、
    ePWM_AQ_OUTPUT A、
    ePWM_AQ_OUTPUT 高电平、
    ePWM_AQ_output_on_timebase_up_CMPA);
    //
    ePWM_setActionQualifierAction (obj->pwmHandle[cnT]、
    ePWM_AQ_OUTPUT A、
    ePWM_AQ_OUTPUT 低电平、
    ePWM_AQ_output_on_timebase_down_CMPA); 

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

    [引用用户="Yanming Lua"]比较_C 用于为 ADC 触发器生成事件,并在除实验室需要过调制之外的所有实验中设置一个固定值。

    我看到固定值5已设置、但在禁用发生器影子模式更新时、仍然没有意义这与 ID/Vd 样本的关系。  看起来快速、如果使用最后一个发生器 D、则每360°周期、90°角度使用一次、会产生更好的结果。 5似乎表示 TBCTR 时钟节拍与转子换向周期不完全同步。  至少_C 接近_D、但仍会在_D 比较函数之前触发一些电度数的高级 SOC 窗口。

    在调制实验中、您应该提到这一点很奇怪、因为实验5中的逆变器波形看起来比正弦更像是梯形。  

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

    您尚未回答为什么 Comp_D (发生器 D)未被用于触发 SOC 而不是 Comp_C、解释是模糊的。 是否可以通过 Comp_D 出现更好的 SOC 窗口? 假设 Comp_A 比较以某种方式同步 Comp_C 触发事件(50µs)似乎很远。 如果启用了影子模式、更新可能会保持全局同步? 如果仅禁用影子和 B、C、D、则似乎所有发生器之间都没有全局同步。

    使用从未比较过相对于其他50µs 周期的上数/下数的 Comp_C 有何意义? TBCTR 时基为100Mhz (10ns)、Comp_C 似乎没有触发 SOC @50µs、这是人们可能期望的。 触发 SOC @50ns 可能会导致运行中断。 即使不过度运行、全局同步更新也会在禁用影子、Gen B、C、D 的情况下发生吗? TRM 似乎推测全局同步更新是通过影子模式进行的。 我只能说其他 PWM 模块需要在 CTRL 寄存器级别为所有发生器启用全局同步更新、而不仅仅是 A 代

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

    BTW:在我们的另一个 ePWM (TI)死区发生、并配置为本地发生器更新模式。 死区不是全局同步更新生成器的一部分。 假设 x49c ePWM 版本4具有相同的功能、可以设置死区更新本地同步、全局同步或不同步(立即)。  

    客户可能希望 SDK 实验室展示用于生产固件的正确 EPWM 模块配置。 通过6个步骤、这会更加灵活、但空间矢量 ROM 调用会使架构复杂化。

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

    您好、Yanming、

    最近验证了从 J6接头到 BoostXL-drv8320的 PWM 发生器顺序、并将发生器 D 置于 A、D、B 的中心位置 定序用于解释调制驱动器如何保持60°重叠。 我们的其他 MCU 模块 PWM 发生器可订购(A、B、C)以实现适当的 FOC 120°相位。 我们不能任意切换发电机顺序、而不会对换向产生某种影响、例如 A、C、B 但是、我们可以反转 EMF 过零顺序(C、B、A)以反转电机方向。  

    SDK Clarke 或 ADC 是否读取数据模块将相位顺序切换回 A、B、D 以考虑奇数生成器顺序 A、D、B? 如果是这样、应该很好地注意(hal.c)作为反措施执行的操作。

    人们可能会觉得这是生成 DSP 3相正弦波形的主要方法。 在3个发生器之间利用 ePWM 模块同步控制寄存器点的对比。 我找不到用于 ePWM 模块同步寄存器的软件控制 LAB5、也找不到左侧 FAST 估算器 theta 角度输出数据如何对其进行更新(图1-3) SPRUHJ1H–2013年1月–2019年6月修订版。

    唯一的快速角度控制是热注入 Clarke Park/Inv、而不考虑硬件换相角。 这也许解释了振动的 Nidec 电机转子也被烧毁了。 第二个全新的 Nidec 同样振动。 在斜升至 LC 期间强制用户使用 Speed Hz、一旦锁定转子、但对于 EST Online、产生的振动似乎更小。   

     

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

    [引用 USER="GL"]、因此选择_C 与_D 似乎很奇怪、因为_C 将设置60°-90°高级 SOC 触发操作、并且 Comp_C 未用于逆变器 PWM 发生器(gen)。 [/报价]

    CCS 调试确认有零计数操作 PWM 发生器_COMPC、但在_Compd 上有操作。 这似乎让人困惑 FAST 估算器的 θ 角如何更新 PWM 同步控制寄存器。 如果同步控制寄存器包含 LAB5、ePWM 可能会产生原始的正弦电流波形?

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

    您可以查看一些应包含 SVPWM 和 FOC 定制说明的教科书。 所有实验都将用于电机控制的 SVPWM 作为典型 FOC 实现、而不仅仅是 lab05。 FAST 只是一个无传感器估算器、可通过电流和电压感应信号获取转子位置和速度。