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.

[参考译文] TMS320F28069M-Q1:InstaSPIN 运动(位置控制)使电机停止

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1050205/tms320f28069m-q1-instaspin-motion-position-control-stopping-the-motor

器件型号:TMS320F28069M-Q1

您好!

我们使用 InstaSPIN -使用 eQEP 角度传感器的 SpinTac 位置控制来实现位置控制。

事情运转良好、我也可以以整转数和转数的小数旋转电机。

现在、我正在尝试在旋转时停止电机(例如、我想旋转电机50圈、但说我想在10圈后停止)。

InstaSPIN 用户指南第3.5.6节(SpinTac 位置控制)表3-16中有两个控制 ENB 和 RESET、下面是快照。

我尝试在 ENB 运行时禁用它。  它不会停止电机、而是真正快速地旋转电机(由于旋转过程中无法控制速度)以达到旋转速度、然后停止旋转。

之后、它不再能正常工作。  我必须禁用电机并重新进入。

我们提出这些问题的原因是:

1 -我们将测量输入电流、如果电机 Iq 扭矩变得过大(例如> 1.5A)、我们希望快速禁用电机。  通过 PWM 跳闸的硬件切断设置为更高的限值。

2 -禁用位置控制后、我们将来回摇动电机轴以释放碎屑。  禁用电机时、我们不希望通过 Rs 过程再次强制电机角度为0、因为电机可能会卡住。  什么是停止电机而不重新执行 Rs 以再次强制转子处于0位置的干净方法?

谢谢、此致、

Henry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="476716" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1050205/tms320f28069m-q1-instaspin-motion-position-control-stopping-the-motor ]I 在运行 ENB 时尝试禁用它。  而不是停止电机

    不能、您不能使用此方法来停止 InstaSPIN-MOTION 的电机。

    如果您制动电机、InstaSPIN-MOTION 的位置将会丢失、您必须重新启动 InstaSPIN-MOTION。

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

    谢谢 Yanming、我注意到了这一点。  我的问题仍然是:

    1-如何在 InstaSPIN-MOTION 完成用户设置的旋转次数之前正确停止电机?

    2 -我想在旋转过程中停止电机、这样它不会失去转子位置。  您如何实现这一点?

    这对我们来说现在是一个紧迫的问题。  请为我们提供正确的 InstaSPIN-MOTION 方法。

    谢谢、

    Henry

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

    1. InstaSPIN-MOTION 将根据运动系统配置和计划降低运行速度、然后关闭 PWM 输出。

    2. InstaSPIN-MOTION 在示例实验中不支持此函数。 您必须通过添加自己的代码来实现。

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

    您好、Yanming、

    非常感谢您的回答、但这不能回答我的用户问题。  

    我遇到的问题是、我不知道 SpinTac 是如何完成的、它们只公开了用户指南中列出的 API、因此我无法进行太多的控制。

    对于#1、我的问题是如何在配置文件执行完成前像紧急停止那样"突然"停止?  为此、必须由 SpinTac 或 TI INTA-SPIN 执行某项操作。  我知道您可以禁用 PWM 输出、但这不是正确的方法、因为 SpinTac 环路可能会陷入某种奇怪的状态。

    对于#2、 这与问题1有关。  可以选择添加什么内容?  您能不能只告诉我逻辑、不需要代码、而是使其与 Insta-spin 运动框架配合使用的逻辑吗?

    谢谢、

    Henry

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

    您好、Yanming、

    我想我自己找到了答案。  Insta-spin 用户有点困惑。   

    SpinTac Posotoin 具有多个子组件、如控制、移动和规划。

    它们中的每一个都有 ENB 控制位。  为了在旋转时突然停止、我过去使用了错误的 ENB (控制组件)。

    正确的设置是: st_obj.pos.move.ENB = 0;其中 st_obj 是 ST_Obj 的实例。

    typedef 结构_ST_Obj

    POS_PARAMS_t pos;//!< SpinTAC (ST)对象的位置组件
    st_ver_t version;//!<版本(ST_Ver)对象
    ST_POSCTL_Handle posCtlHandle;//!<位置控制器的句柄(ST_PosCtl)
    ST_POSMOVE_Handle posMoveHandle;//!<位置移动的句柄(ST_PosMove)
    ST_POSPLAN_Handle posPlanHandle;//!<位置规划(ST_PosPlan)的句柄
    ST_POSCONV_Handle posConvHandle;//!<位置转换器(ST_PosConv)的句柄
    ST_VER_Handle versionHandle;//!<版本句柄(ST_Ver)
    } ST_Obj;

    设置此  st_obj.pos.move.ENB = 0完成我的上述两个问题。

    我可以从它离开的位置重新启动、它不需要使用 RsCalcuation 将转子再次设置为零位置。

    当通过这种方法停止时、它仍然保持停止位置与我们所需的任何反扭矩相对应、因为我们正在进行位置控制。

    嗯、我在这里为可能有相同问题的其他人发布自我回答。

    此致、

    Henry