TMS320F28P650DK: 关于DCL_NLPID_C3及“roll in the error”的疑问

Part Number: TMS320F28P650DK

近期想在28p65上使用DCL_NLPID_C3做永磁同步电机的三环FOC控制。

如上图所示,为controlsuit中的PI_MACRO及PI_POS_MACRO,这两个函数也是我一直在使用的,可以看到,对于位置环的控制,PI_POS_MACRO函数中增加了高亮部分的“roll in the error”

我在使用28335做控制的时候,使用过DCL_NLPID_C2。

DCL_NLPID_C2中没有类似的“roll in the error”处理,导致位置控制异常,我修改了DCL_NLPID.h中的代码,增加了“roll in the error”处理后位置控制就正常了。

最近要使用的DCL_NLPID_C3为汇编语言编写,我不知道怎么增加“roll in the error”这部分汇编语言代码,请问有工程师使用过DCL_NLPID_C3做位置环控制码?你们是怎么解决“roll in the error”的呢?

官方可以把“roll in the error”这部分代码添加到你们提供的DCL_NLPID_C3汇编语言文件中吗?

就像PI_MACRO有对应的PI_POS_MACRO,DCL_NLPID_C3是不是也应该有对应的DCL_NLPID_C3_POS。

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 目前已经完成基于TMS320F28P650DK6的DCL_runNLPID_C3非线性PID调试。

    实现了针对一台表贴式永磁同步电机的FOC三环控制。调试过程中发现,在TMU1的支持下,使用DCL_runNLPID_C3相比于在TMU0的支持下使用DCL_runNLPID_C2节省了一半的算法运行时间。

    不过对于DCL_runNLPID_C3是否应该做“roll in the error”处理我还是存在疑问。另,DCL_runNLPID_C3在做位置环控制时也确实出现了问题,表现为在运动至目标位置的过程中电机抖动且到达目标位置时,电机持续震荡,但是如果是转速电流两环控制,就可稳定跟踪至目标转速,不论两环控制还是三环控制都是使用同样的PID参数,所以可以排除控制器参数的影响。

    随后针对三环控制时的震荡问题,我对DCL_runNLPID_C3做了如下修改:

    如上图所示,左侧为官方SDK中的DCL_runNLPID_C3.asm文件,右侧是经我修改并使用的DCL_runNLPID_C3.asm文件,只是将偏差值乘以0.5改为乘以1.0,即不缩小偏差值,位置环控制就是稳定的,运动至目标位置的过程中及到达目标位置后电机都没有震荡,也请大家帮我分析一下原因。

    汇编语言的DCL_runNLPID_C3.asm不太好理解。

  • 如果目的是规范化错误,那么DCL_runNLPID_C3应该已经在这样做了。
    在“归一化伺服误差”下,组件的c等效值为:
    v2=(v1<0.0f)?-1.0f:1.0f;//其中v1是伺服误差,类似于PI-POS_MACRO正在做的事情。
    您在上面的代码中修改的0.5到1.0只会影响v1值变为v1/2,然后我们检查这些值是否规范化为1或-1。

  • 您好,感谢您的帮助!

    没有看懂您的答复,不过目前我应该解决这个帖子提出的问题了,下面我来说下我是怎么解决的:

    我使用的永磁同步电机有两种位置反馈机构,一种是旋转变压器,如本贴中所提到的,我修改了官方SDK文件中的以下内容:

    将原本的0.5改为1.0,如下图所示

    图1. 修改的DCL_NLPID_C3.asm

    按照图1修改后,基于旋转变压器的FOC位置环控制的确稳定了;但是当我将位置反馈单元更换为ABZ编码器时,发现这个修改是无效的,当电机轴运动到目标位置后位置环依然震荡。

    最终,我做了如下修改:

    第一、将官方DCL_NLPID_C3.asm文件还原,不做任何修改

    第二、参照PI_POS_MACRO的“roll in the error”处理方式,在执行DCL_NLPID_C3.asm中的非线性PID调节前添加“roll in the error”代码,如下所示:

    图2. 在代码中添加“roll in the error”处理

    图2的高亮部分,大家可以与PI_POS_MACRO中的处理对比理解,

    图3. PI_POS_MACRO中的“roll in the error”处理

    偏差与0.5进行比较,要么减1,要么加1;因此可以等效为图2中的处理,即将减1或者加1针对偏差转换为针对位置环控制器给定量(nlpid4_g_pid_pos_rk)

    如此修改后,经实际测试验证,不论位置反馈机构是旋转变压器还是ABZ编码器,位置环控制都是稳定的。