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.
您好!
我想与您一起仔细检查以下过程、以确保我们以正确的方式对齐电机。
我们使用的绝对编码器通过 SPI 返回绝对位置(多转数+单转位置)。
我们实际上正在执行以下过程:
if (EST_State_Rs =EST_getState (m_ctrlHandle->estHandle) ){ HAL_resetQepPosnCounts (m_halHandle); }
在下电上电后(电机已对齐时):
请注意、我们对电角使用零偏移、等于0、这就是我们在对齐期间复位 QEP 的原因。
如果不是最佳的、您可以确认此流程并向我们提供建议吗?
此致、
Johann
QEP 模块用作增量编码器、作为电机位置和速度传感器。 它无法提供电机转子的绝对位置、因此控制器需要在电机启动之前准确知道转子位置。 使用 Rs 校准过程在第一次电机启动期间实现对齐、转子与已知位置(零位置)对齐、然后在 一些稳定周期后复位或设置 QEP 相关寄存器。 您也可以查看以下链接。
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/616625
对于绝对编码器、您也可以使用对齐过程来校准位置偏移、但如果您不将编码器连接到 QEP 模块、我认为您无需重置/设置 QEP 寄存器。
我忘了说、我们的绝对编码器生成了 ABZ 信号、我们使用该信号进行位置和速度控制。 我们仅在启动时通过 SPI 读取编码器的绝对位置、使用该值设置 QEP、然后使用 QEP 进行"在线"位置管理。 这样做的原因是、我们希望在控制电机时避免 SPI 事务。
因此、通过知道我们使用绝对编码器的 ABZ 信号、上述对齐过程是否合理且正确? 或者是否有更好的方法(或者如果我们的解决方案有误、是否有正确的方法)来实现它?
此致、
Johann
如果在逆变器首次加电期间不关心电机位置、您仍然可以将强制对齐过程用作典型的增量编码器。
或者、您可以从绝对编码器获取转子位置数据、然后将位置数据转换并设置到 QEP 的计数器寄存器。 您必须自己编写函数才能执行此操作、因为我们没有这样的引用。
您好!
我们现在使用的过程如下(校准仅在首次系统上电时完成):
有时、通过将速度设定点设置为0 (不可控)、电机会转至全速、无法再停止。 我们在启动后面临此问题。
您是否对知道系统在大多数时间的运行情况符合预期而会发生什么情况有任何想法?
要回答您身边的潜在问题、请执行以下操作:
由于系统无法承受任何"不受控制"的电机运动、我们实际上需要尽快弄清这种奇怪行为的根源。
此致、
Johann
您 所使用的对齐和控制过程似乎适合电机运行。
是否可以禁用 高优先级 UART 通信以查看发生了什么情况? 我们想知道问题来自控制算法或形成系统控制逻辑。
或者、您也可以优化电机控制和 UART 通信中的代码、确保所有这些代码都在 RAM 中运行、而这两个 ISR 中没有分支调用函数。
更新? 只是想检查一下您是否有任何更新,我在大约两周内没有听到您的声音,因此我假设您能够解决您的问题。 如果您有任何疑问、请告诉我。 如果没有任何其他问题、我们将关闭此主题。 谢谢。
我认为您可以关闭此帖子、因为我创建了以下帖子以解决该问题:
https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/908293