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.
有人知道 InstaSpin 实验室中的 PMSM 是5个开关硬件表还是7个开关软件表、用于产生空间矢量 PWM 吗? InstaSpin PDF 技术简介显示了典型的 SVPWM 8代码表、但这并不能证明鹅卵石是有福的。
请注意奇数调用、通过实验 IS01中的 SW 调用强制输出 B 持续为高电平。 或者、即使启用了死区、也有其他原因可能会导致这种潜在的有害控制? 从阅读 TI 2010 PDF 中了解 SPVPWM 的工作原理、似乎会强制 B 处于高电平、这可能是由于实验室中使用的噪声谐波5开关硬件模式控制。
1
2.
3.
4.
5.
|
// setup the Action-qualifier Continuous Software Force Register // (AQCSFRC) EPWM_setActionQualifierContSWForceAction(obj->pwmHandle[cnt], EPWM_AQ_OUTPUT_B, EPWM_AQ_SW_OUTPUT_HIGH); |
SVPWM 模式由软件实现、SVPWM 在所有电流电机驱动基准中使用7个开关模式、包括与器件无关的 InstaSPIN。
您提到的代码与硬件板使用的栅极驱动器相关。 您可以查看器件的技术手册、了解如何配置 ePWM 寄存器。
[引用用户="Yanming Lua"]您可以查看器件的技术手册以了解如何配置 ePWM 寄存器。
它表示强制模式动作限定符用于确定由 HW (ePWM 模块)而非 SW 生成的波形。 这就是为什么我质疑使用7相6开关模式的 InstaSpin 实验室的原因、因为 ePWM 模块似乎在 hal.c 中被配置为5开关模式 一个差异是7相6开关中的开关损耗更大、或者通过5开关(一些 TI 参考名称4开关)产生谐波和死区不平衡。
为什么3个发生器 B 侧在死区改变状态之前被强制为高电平? 如果 SPV 表在 Clarke/Park 变换中使用所有8个旋转角度、那么在 SW 控制状态变化时、似乎没有必要强制 B 侧为高电平。 我真的不喜欢让高侧始终保持活动状态、霍尔代码111应该在7相 SVPWM 中的逆变器中产生000、正如文档所述...
这是 PWM 输出和 SVPWM 输出之间的一个不同概念、PWM 输出由操作控制寄存器设置、无论如前所述的5-SW 或6-SW 如何、该寄存器都应始终保持相同。
配置在 hal.c 中的 HAL_setupPWM()中进行设置 上面提到的代码仅适用于电路板上电期间的初始状态、由于死区已启用、它在正常 PWM 输出期间不会处于活动状态。 您是对的、您可以按照上述方法将其删除。
[引用用户="Yanming Lua"]您上面提到的代码仅适用于电路板上电期间的初始状态
因此、在以后的配置中、动作限定器没有强制 B 侧打开。 死区通常会反转 A 侧以使其他 TI ePWM 模块中的 B OUT 和(松动的 B 代)变为 B、因此这种行为对我来说是新的。 它表示原因限定器强制 B 随后被死区反转、低侧 NFETS 保持在关闭状态以初始化 DRV8320RS。 也许不像我想象的那样危险。
感谢您对此进行澄清、我们忘记了 C2000 ePWM 模块可明显分离 A/B 死区通道。
HAL_setupPWMs()配置 A 侧用于使 B 死区输出、某种程度上强制 B 动作限定器仅使 A 侧脉冲宽度有效?
死区路径除法的整个点可实现对死区 A/B 路径的选择性控制、并实现单独的馈送/红色延迟、从而产生无谐波的平衡死区。 7相 SVPWM 的独特优势是平衡的死区控制不会增加硬件控制5相 SVPWM 所做的谐波。
尽管如此、似乎没有对死区进行配置以避免不平衡谐波。 似乎 B 侧发生器被死区设置禁用、在占空比更新期间、只有 PWM-A 会产生任何影响。 如果 B 通过 A 死区控制而丢失、则也比互补 PWM 输出更重要、这似乎会导致 SPRA524 1999年3月记录的不平衡谐波。
更好的方法是在输出使能时间直接从 A/B 发生器控制 A/B 死区。 也许可以通过分离死区控制来避免实验室中的不平衡谐波和随后的生产 SW。 从 HAL_setupPWMs()获取的以下代码使用 A 来生成 B 死区。 技术图显示了两个不同的死区通道可以配置、但仅使用了 A、B 强制为高电平或丢失。
//设置死区发生器控制寄存器(DBCTL) ePWM_setDeadBandDelayMode (obj->pwmHandle[cnT]、ePWM_DB_RED、true); ePWM_setDeadBandDelayMode (obj->pwmHandle[cnT]、ePWM_DB_FED、true); //选择 EPWMA 作为死区发生器的输入 ePWM_setRisingEdgeDeadBandDelayInput (obj->pwmHandle[cnT]、 ePWM_DB_INPUT_EPWMA); //为高电平有效的互补配置配置正确的极性。 ePWM_setDeadBandDelayPolarity (obj->pwmHandle[cnT]、 ePWM_DB_RED、 ePWM_DB_POLICLE_ACTIVE_HIGH); ePWM_setDeadBandDelayPolarity (obj->pwmHandle[cnT]、 ePWM_DB_FED、 ePWM_DB_POLARY_ACTIVE_LOW);
请确认 PWMB 是否驱动器死区被添加到 HAL_setupPWMs()中会减少 SVPWM 谐波? 也许可以使用使用 EPWM-B 修改的死区方法来更新 InsatSpin SDK 实验 目标是通过添加 ePWM-B 对死区时序的直接控制来消除7相 SVPWM 谐波、而不仅仅是像配置的那样使用 EPWMA-A。 任何客户如何确保 InstaSpin SDK 实验室不会屏蔽死区勘误表、并在投入生产后将其投入使用?
如果 EPWB 从未用于占空比更新、则中心对齐互补 ePWM-A/B 发生器输出的点是什么? ePWM 模块一旦通过 HAL_setupPWM()进行配置,一旦设置了脉冲宽度和周期,死区发生器就绝不能(重新配置)! 同样、论坛中关于在运行时更改 EPWMA/B 输出周期的建议也是一种危险的做法。
强制操作限定符的优先级(EPWMB 高电平)从未在 HAL_setupPWM()中配置过,因此会导致调查? 原因。 然而、技术手册显示了通常为 SW 强制事件(红框)配置的 TI/T2跳闸寄存器。 配置 ePWM 似乎很匆忙、但最终目的是什么? 说"匆忙"会导致 C2000 MCU 的销售增加、使 PM 电机运行更安静、还是会让客户在实验室中轻易分崩离析时生气?
我得到的 SW 不必对 EPMB 执行任何操作、因为 EPMB 已下降到死区发生器输入、因此 AQ 强制拉高。 问题是、长期客户目标的谨慎步骤以及可能导致质量控制的副作用是什么? 如果 TI/T2操作从未配置过 AQTSRCSEL 寄存器、并且采用对称波形、例如18.6.5、那么即使在影子模式下通过全局更新也是"或不"进行生成器更新的方式是怎样的?
MotorControl SDK 中目前尚未提供死区时间补偿、我们想考虑您的建议、在未来版本中添加此功能。
如前所述、EPWMB 由 EPWMA 控制、因为死区已启用、所以 ePWM 的任何配置寄存器都处于非活动状态、请参阅 TRM 中的图18-3。
配置代码仅供参考作为起始示例、不是 电机控制应用的强制配置代码、您可以根据应用进行更改。