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.

[参考译文] CCS/TMS320F2.8379万S:C2000™︎位置管理器SinCos库

Guru**** 2540720 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/633473/ccs-tms320f28379s-c2000-position-manager-sincos-library

部件号:TMS320F2.8379万S
主题:controlSUITE中讨论的其他部件

工具/软件:Code Composer Studio

您好,

我们使用的是SinCos库,使用 函数PM_sincos_calcAngle计算fTheta时有一个奇怪的行为。

电机正在运行,我们处于工作模式0,并且已经认识到fTheta持续呈线性上升,但有时计数会后退,4个值再次呈线性上升后,会出现双步。 整体fTheta呈线性上升,其中有一小步。

其次,我们在模式下有开关,即使电机运行速度相同,如果sincos-QEP达到其最终值并以0开始,则会发生这种情况。 然后模式从0变为1变为2,~12级,然后从2切换回1变为0 (mchg01 =10,mchg02 =20)

此致

Stefan

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

    速度由QEP确定。 如果速度恒定,则不应进行模式更改。 当sincos软件从模式1切换到模式2时,位置信息来自QEP,而不是正弦和余弦输入。 我怀疑您的QEP输入端发出噪音,导致计数错误,因此QEP认为速度比现在快。 这也解释了当测量值变为/来自QEP时,模式之间的跳跃。 您是否可以首先检查Sin /Cos输入以及比较器输出上是否存在峰值或故障?

    此致,

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

    我们在模拟sin/Cos输入中有峰值,但我们已经可以用良好的接地线将它们电极化到屏蔽层。 但我们仍然有两个问题。

    模式更改仅在mySincos.qepcnt从mySincos.qmaxpos更改为0时发生,在QEP计数中出现此跳转时,速度计算是否会出错?

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

    您好,Stefan,

    粗角是从模式0和1 (分别为低速和中速)下的软件以及模式2 (高速)下的QEP导出的。  两者之间的差异意味着测量粗角的软件方法是缺少循环。  当速度模式从1转换到2时,两者之间的差异会导致测量出现明显的跳转。  

    如果每个正弦波周期的样本不足,则可能会出现周期缺失。  采样速率是固定的,因此随着轴速的增加,您每周期获得的采样越来越少,最终您达到了软件方法无法可靠地检测 到其所处的象限的程度。  我建议减小"mchg12",以降低从软件切换到QEP测量的轴速。  您可能还应同时减少"mcgh01"(它必须始终是两者中较小的一个)。

    请告诉我您的工作方式。

    此致,

    Richard

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

    如果找到模拟器和QEP计数器差异的错误!
    如readme.txt中所述:

    在使用该值执行init功能后应手动加载的两个结构元素:
    mySincos.qmaxpos =511;--> WRONG必须是IQ15!!!
    mySincos.QEP->QPOSMAX =511;
    我在数据类型mySincos.qmaxpos是IQ15中犯了一个错误! 如果我使用IQ15数据类型加载它,则两个计数器都以相同的值运行。

    所以两个不同QEP计数的错误得到了解决,但当QEP从QPOSMAX -> 0设置为0 occures时,我仍然有模式更改的问题。 模式更改仅在mySincos.qepcnt从mySincos.qmaxpos更改为0时发生。 模式从0更改为1更改为2,从2更改为1更改为0,它将保持在模式0,直到QEP计数再次从mySincsa.qmaxpos更改为0。 每次达到QEP的限制并设置为0时都会发生这种情况。 您是否有此行为的可能答案?

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

    Stefan,您好!

    感谢您指出这一点。 模式选择基于两个连续QEP位置的差异,因此绕过会导致模式发生变化。 出于某种原因,这看起来像是以前没有注意到的。

    我想不出一个不需要更改库代码的简单变通方法。  需要在lib代码中检测和允许环绕的特殊情况。 本周我将尝试访问该内容,并在我有 更多信息时更新此帖子。

    此致,

    Richard

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

    您好,Richard:

    这对我来说很好,我们期待着您在柜台的后续处理期间更新模式更改。

    我附上了一个信号图,其中包含模式更改期间的步骤。

    绿线:电感计

    蓝线:mySincos.fTheta.

    紫色线:mySincos.qepcnt

    如您所见,在模式更改回绕后,QEP-计数器和mySincos.fTheta之间有时有1步差异。 这将在下次绕过时更正。 这种情况很少,而不是每种情况都是这样。 您是否对此有可能的答案?

    此致,

    Stefan

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

    Stefan,您好!

    我在测试中没有看到计数错误,但它可能与您之前指出的环绕行为有关。  如果是这样,我怀疑是否有一个不需要修改库代码的干净的解决方案。  我已对更改进行编码,并将很快对其进行测试,但我们不可能以 当前形式发布Sincos库更新。  相反,我希望库源将很快在controlSUITE中发布。  我已对该更改进行编码,因此将在该版本中进行。  与其他一切一样,需要完成一个过程,因此更新可能需要几周时间才能进入Web,但一旦更新完成,您就可以完全了解库中发生的情况。

    同时,您可能能够通过启用来自QEP的PCO (即溢出)中断并强制ISR内的模式为零来改善问题, 不过,我并没有尝试过,亦不能肯定这会完全解决问题。  很抱歉没有明确的快速解决方法。

    此致,

    Richard

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

    我还可以为您提供测试Sincos软件变化的可能性,作为测试测试仪。 因此,我可以直接向您反馈您的更改是否解决了我的两个问题。

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

    Stefan,

    感谢您的提议。  我已向您发送了一封私人e2e邮件,以便我们进一步讨论此 问题。

    下一个controlSUITE版本中将提供开放源代码版本,该版本将于12月或1月发布。

    此致,

    Richard