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.8054万M:Spintac位置工作,但Spintac速度+编码器行为异常

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/573960/tms320f28054m-spintac-position-working-but-spintac-velocity-encoder-weird-behavior

部件号:TMS320F2.8054万M
主题中讨论的其他部件:DRV8305DRV8312MOTORWARE

您好,

我正在调试 一些奇怪 的行为,我有自己的软件项目基于所有实验室,当电机停止时,它可以 在 Spintac速度,Spintac位置和扭矩控制之间切换。 在速度和扭矩模式下,它可以在无传感器和编码器之间进行选择。 同样的代码库也在BOOSTXL DRV8305 + 2.8069万M开发套件和基于 DRV8305 + 2.8054万M的定制板之间切换。

我已经使用编码器在所有情况下都能使用Spintac定位,在54M和69M微秒上,到目前为止都是薄荷的。

使用Spintac 速度 时,我只能使用编码器角度获得69M,使用54M运行大约~2.5 在位置上滚动,然后切断,IQ像疯了一样加速,并在电流限制上出现故障。

如果我将速度目标设置为较低的速度,它会保持较长的运行时间,但当发生时,它大约会在编码器位置上滚动2.5

使用Spintac 速度和FOC无传感器角度输入,它可在69M和54M上工作。

扭矩控制相同,使用编码器不能在54M上工作

我搜索了很多编码器的内容,但却找不到54M和69M代码之间的差异。

 唯一明显的区别 是69M上的CTRL结构是 v1p6,54M是 v1p7。 这是否能解释发生了什么?

我还将54M的运行定义为"闪存",而69M的运行定义为"闪存"。

关于在何处查找溢出的提示? 或者清除它以查看它是否解决了问题的方法?

谢谢,

艾伦

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

    Alan,

    您为 ST_MREV_ROVER设置的值是什么?

    如果您将实验12b与054M一起使用,您是否会看到相同的问题?

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

    ST_MREV_ROLVER在10时保持不变

    lab12b和54 m 有相同的问题。 我有一段时间没有在69M上放置lab12b,我明天会尝试一下,只是为了确认这仍然有效

    我翻转了马达上的两个相位, 我翻转了编码器A和B,但它们都能立即停止马达,而不是继续运行。

    54M以60MHz运行,69M以90Mhz运行

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

    Alan,

    我刚刚在DRV8312板上使用54M运行了LAB 12b。  我没有发现任何与您描述的类似的问题。  

    我想是因为有一些细微的代码问题导致了这个问题。  SpinTAC代码中的任何内容都不会在2.5 机械转速时出现问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我继续我的搜索,我对时钟设置很有保留,像编码器的GPIO qual设置,但在您刚刚测试的代码"GPIO _Qual_Sample_3"中也是一样的。 也许如果我尝试以60MHz运行69M,它可能会在其他地方对问题有所了解。

    我一直试图在54 m 上不使用define "flash"进行编译以尝试替代该因素,但我总是在调试时出现PIE非法ISR中断。

    闪存和发行版之间是否有任何编译器/链接器更改? 在DRV8312的12b项目中,只有一个闪存选项。 因此,我大致根据69X项目将发行配置拼凑在一起。只是没有定义"flash"

    我还注意到,在HAL_setupFlash()中,无论"flash"的设置如何,都从闪存调用一些功能。 但这不是“我不明白为什么这部分被评论”的内容。 闪存设置功能是否需要它?
    #if闪烁
    //将时间关键代码和闪存设置代码复制到RAM
    // RamfuncsLoadStart,RamfuncsLoadEnd和RamfuncsRunStart
    //符号由链接器创建。 请参阅链接程序文件。
    Memcopy(((uint16_t *)&RamfuncsLoadStart,(uint16_t *)&RamfuncsLoadEnd,(uint16_t *)&RamfuncsRunStart);
    #endif

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

    我没有尝试仅从RAM运行。 默认情况下,由于054M设备上的RAM减少,项目尝试加载到闪存中。

    我需要这些层来衡量闪存和释放之间的差异。 我不认为在RAM中运行054M实验时进行了太多测试。 我的建议是从闪存运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,我取得了一些进步,我已经降低了自旋电流限制,这样它就不会过电流,我让它运行。  

    使用自旋流 速度和编码器启动时,它以速度参考启动和运行,直至位置计数达到13个翻转,或~130圈并停止,且电机上有保持电流。 如果我手动向前或向后旋转电机至下一个侧翻点(+/10圈) ,甚至再旋转40圈。 当我松开轴时,它会返回到13个翻转点,130圈!  

    因此,它仍然在进行位置控制!

    我猜在切换到速度时,我没有正确关闭位置控制?  

    我已经 定义了这两个定义,并在它们之间进行类似的切换

    静态ST_Obj st_obj;
    静态ST_HANDLE gstPosHandle =空;
    静态ST_VelObj st_Velobj;
    静态ST_VelHandle gstVelHandle =空;

    要从位置更改为vel,我在电机停止的情况下执行此操作

    如果(gstPosHandle != NULL)//如果位置当前正在运行,请将其禁用

     STPOSCTL_setEnable(gstPosHandle->postlHandle, fals);
     gstPosHandle = NULL;
    }

    gstVelHandle = ST_Velinit (&st_Velobj,sizeof (st_Velobj));//速度
    st_setupVelctl (gstVelHandle);//设置SpinTAC组件

    //以及我的另一种方式

    如果(gstVelHandle != NULL)//如果速度当前正在运行,则禁用它

     STVELCTL_setEnable(gstVelHandle->CTRLHandle, false);
     gstVelHandle =空;
    }

    //初始化SpinTAC组件
    gstPosHandle = ST_INIT (&st_obj,sizeof (st_obj));//位置
    st_setupPosCtl(gstPosHandle);

    编码器初始化与main中声明的不一样,并且从pos和vel对象中将其取出

    //初始化ST PosConv对象,编码器模块
    posConvHandle = STPOSCONV_INIT (&conv,sizeof(conv));
    ST_setupPosConv (posConvHandle);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    似乎在某处有一个编码错误。 我的猜测可能是代码问题在运行时代码中,而不是初始化代码中。 我的建议是对所有位置代码进行临时注释,并尝试仅运行感应速度模式并从该模式调试问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我一路回到lab12b,安装了一个全新的汽车器件,提升了DRV8305 + 69 m 开发板 ,并注意到相同的行为,执行“位置控制”而不是速度。  现在我的代码库也不能与69M上的spintac vel +编码器一起使用。

    我还通过意外 地将54 m 代码刷新到69M上来欺骗开发套件:(

    太 令人困惑了… 我写了更多的问题,并解释说,这可能是CCS的新版本或我没有更换的电机。

    确保我检查了我的电机,在外壳下方 ,编码器的柔性联轴器在轴上松动。 问题解决了!

    所以它肯定是在轴上滑动的,这相当于我想象中的松动的步骤?  但是它有多么奇怪的效果!