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.

[参考译文] MCF8316A:电机首次启动始终需要一段时间才能达到目标速度

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1420906/mcf8316a-motor-first-start-always-takes-time-to-reach-the-target-speed

器件型号:MCF8316A

工具与软件:

早上好、我目前正在与  MCF8316A 驱动器一起控制 DF45M024053-A2 BLDC 电机。 在了解如何设置所需的电机参数以实现"干净"启动时、我目前遇到问题。 我已启用 MPET 测量以及写入操作、通过写入 EEPROM 存储器来更新参数。 电机停止旋转后、我将信息存储到微处理器的闪存中、我使用该闪存向驱动器发送命令。 完成该操作后、我将 MPET 测量一次性全部关闭。 这样、我可以直接从闪存中加载当前保存的配置、而无需等待电机估算其所有参数。 现在的问题是、一旦我打开电机、执行我发送的命令需要很长时间(例如、我将速度设置为2000、但在实际达到此速度之前需要大约20秒)。 首次启动后、电机还会根据我设置的配置数据对我发送的命令做出有效反应。 尽管如此、我仍无法理解其行为为何如此、我当时认为可能存在的问题是电机最初执行开环、而这是我所看到的、当电机未对发送的命令做出相应反应时。 这里是我所使用的配置、在本例中、MPET 被禁用。
  
   地址: 值:

  {0x00800x44638C20}、// ISD_CONFIG  
  {0x00820x283AF064}、// REV_DRIVE_CONFIG
  {0x00840x0E6807D0}、// MOTOR_STARTUP1  
  {0x00860x23AE6000}、// MOTOR_STARTUP2  
  {0x00880x28A181B0}、// Close_LOOP1   
  {0x008A0x1AAD0000}、// Close_LOOP2
  {0x008C0x00000000}、// Close_LOOP3
  {0x008E0x00000F2C}、// Close_LOOP4  
  {0x00940x00000000}、// SPEED_PROFILES1
  {0x00960x00000000}、// SPEED_PROFILES2
  {0x00980x00000000}、// SPEED_PROFILES3
  {0x009A0x00000000}、// SPEED_PROFILES4
  {0x009C0x00000000}、// SPEED_PROFILES5
  {0x009E0x00000000}、// SPEED_PROFILES6
  {0x00900x5FE80207}、// FAULT_CONFIG1
  {0x00920x74000000}、// FAULT_CONFIG2
  {0x00A00x00B3407D}、// INT_ALGO_1
  {0x00A20x000001A7}、 // INT_ALGO_2 (旧的2BD)
  {0x00A4、0x00000001}、// PIN_CONFIG
  {0x00A60x00000000}、// device_config1
  {0x00A80x0000B000}、// DEVICE_CONFIG2
  {0x00AA0x40000000}、// peri_config1
  {0x00AC0x00000100}、// GD_CONFIG1
  {0x00AE0x00200000}、// GD_CONFIG2
  {0x00EA0x00000000}、// algo_CTRL1
  {0x00EE0x00000000}、// algo_CTRL2
我曾尝试使用不同的开环参数和 MOTOR_STARTUP 配置、但似乎没有改变这一问题。 如果你能给我任何帮助,请提前感谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Silvio:

    1. 当电机以20秒的时间加速到配置的速度时、您能否读取 ALGORITHM_STATE 以检查其达到和处于最长速度的状态?
    2. 此外、启动电机时、您是否可以提供相电流和 VM 电压的捕获信息?  

    此致、

    约书亚

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

    你好、Joshua:

    很抱歉迟到了、但我今天只使用电机。 关于您的建议:
    1) ALGORITHM_STATE 始终返回一个00000000值、根据数据表、该值对应于 MOTOR_IDLE 状态。 无论我是首次开启电机、还是成功响应命令、都会发生这种情况。

    2) 2)我正在使用一个设定为16V 的电源使该驱动器在它仍然显示0.023A 的电流和0.386的功率。 在第一次启动时、它开始加速达到0.23A 和功率接近4W、然后返回到所设置的命令、这些值会根据所需的加速度和旋转速度发生振荡。

    再次感谢您的帮助!

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

    您好、Silvio:

    1. 我看到您提供的寄存器配置中没有"Motor Parameters"。 如果您每次都加载此配置、则 MPET 将始终运行至少一个来测量电机参数。 我建议运行 MPET、然后将要在寄存器配置中使用的电机参数保存到 MCF8316A 中、因为 MPET 可能需要一段时间来测量电机参数。
    2. 我还看到、 闭环期间的电流限值为0.125A、您是否可以尝试增大该电流限值以查看您的加速率是否有所提高?
    3. 我还建议尝试增加 CL_SLOW_ACC、因为这是从开环切换到闭环期间的加速度、这可能会影响电机加速所需的时间。
    4. 电机达到稳定状态后、电机的响应是快速的还是较慢的达到新速度?

    此致、

    约书亚

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

    你好、Joshua:

    1) 1)我尝试在 MPET 测量电机参数后存储这些参数、并且我还尝试在每次电机通电时加载这些参数、但这并没有解决问题。 我 只能在 MPET 测量结果之后从 MTR_PARAM 地址获取数据来更新 CLOSED_LOOP2中的电机电阻和电感。 我最初想将这些值直接载入到最后的这个地址(0xE6)、但是我注意到它只允许读取操作。

    2) 2)如果您参考 ALIGN_OR_SLOW_CURRENT_ILIMIT 电流限制、实际上我的闭环电流限制应为1.5A。  

    3) 3)我试图增加此值、但这会导致每次尝试执行 MPET 例程时电机阻塞。

    4) 4)电机计算第一个 MPET 后、它就可以快速达到目标速度。

    此致、

    Silvio

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

    您好、Silvo:

    [报价 userid="625618" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1420906/mcf8316a-motor-first-start-always-takes-time-to-reach-the-target-speed/5462132 #5462132"]4)电机一旦计算出第一个 MPET 后、便可快速达到目标速度。

    您现在是否能够实现所需的启动时间、或者您是否需要更多支持来使电机更快地旋转?

    [报价 userid="625618" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1420906/mcf8316a-motor-first-start-always-takes-time-to-reach-the-target-speed/5462132 #5462132"]2)实际上、如果您引用 ALIGN_OR_SLOW_CURRENT_ILIMIT 电流限制、我的闭环电流限制应该是1.5A。  [报价]

    闭环电流限值位于 FAULT_CONFIG1寄存器中作为 ILIMIT。 上述电流限值仅在电机切换到开环运行之前的对齐或慢速首循环启动方法期间使用。

    电机能够完成 MPET 运行并能够反复达到目标速度后、如果使用 Motor Studio、则使用 Save Registers 按钮将寄存器保存到.json 中。

    保存寄存器后、执行 EEPROM 写入、等待至少750ms、然后对 MCF8316A 下电上电、并检查电机是否能够与之前相同的时间内以目标速度旋转。

    如果在下电上电后电机速度较慢或运行 MPET、您是否可以  在下电上电后发送保存的寄存器和寄存器的内容?

    此致、

    约书亚

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

    您好、抱歉这么晚才回答。 遗憾的是、我使用的是定制电路板并使用定制脚本来控制它、因此我不使用 Motor Studio 程序。 至于其他寄存器、我确实看到有一些改进、但电机每次开启时仍会执行 MPET。

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

    您好、Silvo:

    如果脚本可以写入单个寄存器并读取所有寄存器、则可以执行相同的操作。

    电机完成 MPET 并成功运行后、停止电机并读取所有寄存器、读取0x80至0xAE 是最感兴趣的寄存器。

    检查位范围(15-0)的 CLOSED_LOOP2是否具有非零值、如果为零、则未捕获 MPET 结果。 如果发生这种情况、请在电机旋转时监视 VM 并停止以检查 VM 是否骤降。

    如果一切正常、则将0x8A500000写入寄存器0xEA、以执行 EEPROM 写入命令、等待至少750ms、然后对 MCF8316A 进行下电上电。

    下电上电后、读取所有 寄存器以检查寄存器 0x80至0xAE 是否与 EEPROM 写入之前的值相匹配。

    此致、

    约书亚

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

    你好、Joshua:

    我跟着你的指示,但有些奇怪的事情发生了。 电机成功完成 MPET 例程后、我检查了 CLOSED_LOOP2中的值与零不同。 然后、我写入 EEPROM 命令、并等待几秒钟后再对驱动器进行下电上电。 但我注意到、这之后、微控制器和驱动器之间的 I2C 通信停止工作、导致无法控制电机。 当我再次关闭系统电源时、我可以发送命令、但很明显、这些命令不会被执行。 一旦驱动程序通电、我就完全失去了尝试发送命令的能力。

    我尝试重新刷写脚本、但问题仍然存在。 有趣的是、当我在另一个相同的电路板上运行相同的脚本时、I2C 通信没有问题(尽管我仍然遇到 MPET 问题)、并且我能够成功发送命令。 我担心在当前的电路板上进行进一步的测试、因为我不想冒被另一个电路板"卡住"的风险。 此行为是否可能与某个已知问题有关?

    此外、我对 MPET 流程感到困惑。 在成功进行 MPET 测量后、我正在将值` 0x1AAD9E5D`加载到地址`0x008A `(Close_LOOP2)。 尽管如此、电机仍在启动时执行 MPET 例程。 我假设要计算其他参数、并且 CLOSE_LOOP2只是一个方便监控的参数。 如果是、可以像使用 CLOSE_LOOP2一样手动写入这些附加参数吗? 您能否说明一下我应该手动写入哪些参数?

    此致、
    Silvio

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

    您好、Silvio:

    在电路板上存在通信问题、如果您的脚本还没有、您可以尝试所有可能的 I2C 地址吗?您可以尝试一下、以查看在您写入 EEPROM 时 I2C 地址是否已更改?

    此行为是否可以链接到某些已知问题?

    我将链接我们的 E2E 常见问题解答、其中概述了 MCF8316A 的已知勘误表: https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1066777/faq-production-device-information。勘误表#8描述了 I2C 问题、但我认为您没有遇到此勘误表  

    您能否说明我应该手动写入哪些参数?

    我将首先介绍所有触发 MPET 运行的东西:

    有关 MPET 的更多信息、请参阅 MCF8316A 数据表的第7.3.13节: https://www.ti.com/lit/ds/symlink/mcf8316a.pdf

    如果任一条件对每个块都有效、那么 将执行该 MPET 操作。 因此、要防止 MPET 运行:

    1. CLOSED_LOOP2中的 MOTOR_IND 和 MOTOR_RES 必须为非零
    2. CLOSED_LOOP3 (0x8C)中的 MOTOR_BEMF_CONST 必须为非零
    3. CLOSED_LOOP4 (0x8E)中的 SPD_LOOP_KI 和 SPD_LOOP_KP 必须为非零
    4. ALGO_DEBUG2 (0xEE)中的 MPET_CMD 绝不能设置为1b

    此致、

    约书亚  

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

    你好、Joshua:  

    我设法解决了这个问题。 我成功运行 MPET 测量并打印所有寄存器。 然后、我继续将目标选项(CLOSED_LOOP2、CLOSED_LOOP3、CLOSED_LOPP4)保存为默认配置。 当驱动器上电后、将加载配置、电机无需运行 MPET 测量即可立即响应我的命令。  

    感谢您的观看、

    Silvio