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.

[参考译文] TMS320F2.8069万M:SpinTac速度控制中的电机不稳定

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/655338/tms320f28069m-motor-instability-in-spintac-velocity-control

部件号:TMS320F2.8069万M

我使用的是带F2.8069万控制卡的8301D板。 我关闭了所有评估器功能,只关闭了RunIdentify,并且EnableSys从启动开始打开,所有值都初始化为init值。 当我以一种看似随机的模式运行电动机时,大约是当时的50 % ,我可以给电动机一个正常加速的正速度(任何正速度),然后电动机将以最大速度反向旋转。 该代码基于实验12b,使用QEP作为对照品的反馈。 我还用相同的结果测试了实验室代码,它有时以最大速度反转。

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

    1.使用lab02b/c首先识别马达参数,然后在user.h中设置这些参数
    2.确保编码器和电机按正确顺序连接。

    3.使用lab12a确定马达的惯性和摩擦,并在user.h中设置这两个参数。
    4.在user.h中根据您的编码器为ENC模块设置user_motor_encoder_lines。
    5.更改SpinTAC参数,并调整user_system_bandwidth_scale以平稳地运行马达。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经完成了这些实验,并重新完成了这些实验来设置参数。 lab2c中的所有值都正确,编码器设置正确,我还完成了实验12a以设置带宽。 您是否有任何想法,特别是哪个参数会导致此行为?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何运行lab12a以识别无负载的电机的惯性和摩擦? 什么情况会导致电机运行不好? 目标速度,加速度和负载。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    延明

    我在没有附加负载的情况下重新运行Lab12A,并将这些值输入到user.h 据我所了解,这种情况从启动时开始,无论速度,加速度或扭矩I输入如何,它都会以-3krpm的转速旋转。 我还可以更改KP,ki和带宽值,但不会影响此错误情况,速度控制器不显示错误。

    谢谢

    丹尼尔·拉什

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

    延明

    此外,作为后续操作,错误状态还会采用负速度并朝正方向旋转。 您对我应该特别关注的参数有什么想法吗? 我已经完成了您列出的所有实验,以验证电机参数是否正确。 这是EST和CTRL启动时的初始化参数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.您能否与我们共享user.h? 您是否有当前波形来显示问题? 您的电机的额定和最大转速是多少?
    2.您是否启用了Rs重新计算以实施编码器校准?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Yanming,

    因此,我们找到了有关RS重新校准的文档部分,该部分是为了将转子设置为零位。 这解决了我们所面临的问题,但是它确实增加了启动时间和启动时的移动到零点的大量开销。 是否有办法不要求从某个相对编码器位置开始重新校准以使用编码器反馈运行控制回路?

    谢谢!

    丹尼尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以先启用Rs重新校准以获得正确的编码器偏移,在ENC_setup()中设置编码器偏移,如下所示,然后在下次跳过Rs重新校准。

    //设置ENC模块
    ENC_SETUP (encHandle,1,USER_MOTOR_NUM_POLIC_Pairs,USER_MOTOR_ENCHROL_ROINCK_Lines,USER_ENCHROCER_ZERO _OFFSET), User_IQ_FULL比例FREQ_Hz,USER_ISR_FREQ_Hz,8000.0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这开始变得更有意义了,但我有一些问题。 这是否取决于每次启动时转子在相同位置启动的数值? 我已经运行了几次启动,查看enc->enc-zero-offset在每次启动后(包括在相同位置启动时)是否不同。 我希望为该设置功能注入什么价值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    每次启动控制器时都需要执行偏移校准,并且需要记录编码器输出,即使电机停止。 阅读enc.enc.zero_offset,然后按如下所示将其设置为ENC_setup()。
    ENC_SETUP (encHandle,1,USER_MOTOR_NUM_POLIC_Pairs,USER_MOTOR_ENCHER_ROCK_Lines,enc.enc_zero_offset, User_IQ_FULL比例FREQ_Hz,USER_ISR_FREQ_Hz,8000.0);