DSP

【嵌入式】基于TI DSP的电机控制小结(controlsuite motorware)

2019-07-13 10:43发布

    之前国创项目做了相关的东西,也担任了课程助教,在此过程中对于TI的伺服控制软件框架有了一定的了解。由于不是之后的研究方向,理解也不够深入,仅记录中间容易遇到的一些坑。    【1】基于28035的永磁同步机控制(无传感器方案)    1、关于PWM和ADC采样时刻的配置     硬件方面,是在功率器件下桥臂用精密电阻分压的方式进行的采样,没有使用电流传感器,且PWM高低有效未必一致。因此需要考虑更改程序中的PWM设置和AD采样设置。    


     这里需要注意,EPwm1Regs.ETSEL.bit.SOCASEL要和AQCTLA_INIT_STATE要保持对应关系。     前者为1时后者为CAU_SET+CAD_CLEAR  前者为2时后者为CAU_CLEAR+CAD_SET
     具体哪种是对的,通过观察电流波形或电流环跟随情况来定。如果采样时间错误时,得到的Ia,Ib电流波形不会是正弦    2、关于电机参数的设置
    RS,LS,POLES(这里是极数,不是极对数)需要根据电机铭牌或实验测量值来改
    BASE_VOLTAGE,BASE_CURRENT值AD采样满量程时对应的实际母线电压和相电流峰值。这里要注意注释是有问题的,我们实际测试发现BASE_VOLTAGE不需要除以根号三。


    3、关于采样值的观察
    绝大多数错误都是由于采样量有问题所导致。一般调试过程如下:
    开环看两相电流波形、相位关系,滑膜计算电压相位关系,如下面所示:
    Ia,Ib:
                      
    Va,Vb:

    关于电流采样需要注意一点,程序中默认使用的是Ia,Ib两相电流,如果硬件设计的比如是采集Ib,Ic两相电流时,最简单的方法 是通过Ia=-Ib-Ic的方法算出Ia,然后继续用Ia和Ib来做运算。接电机的时候相序一定要接对,接反了也会出问题。    相位正确后,进而观察滑膜算出来的速度值和给定速度值之间的关系。一般而言低速时滑膜计算较不准,会有一定速度误差,高速时应该很准。    如果上面的波形和速度值压根没有值,或者就是噪声。要么硬件有问题(直接示波器看硬件上的波形),要么AD引脚配置不对(要改成和硬件一致)。
    4、关于切闭环
    上面这张图是一个完整的程序模块框架(速度环)。一般来说,调试的过程如下:首先,按照3)中所说观察开环时各个反馈均正常。则慢慢同步提升电压给定和转速给定,切入电流环,切入电流环需要在较高的电机转速下完成(如五六百转)。    电流环时,一种方案是速度给定为软件模拟锯齿波,这样只能在一定范围(与速度要相对匹配)内调节电流,看跟随情况。电流环的时候注意把电流pid的out值(也就是vd,vq)限幅,但限幅值不能太过小,否则将导致无法调节。如果电流不跟随且out一直处于满值(限幅值),有几种可能:1-》电流给定过大,当前速度空载下无法达到,则减小给定值看在较小的给定下可否跟随。2-》PID参数不合理,这个就靠试就行了。3-》采样值不对或者相位不对。这个只能通过倒回上面的步骤1)和步骤3)去检查,换一换相序有时就可以解决问题。    上面这种电流环没问题后,可以尝试完全电流环,即接入的角度不是模拟锯齿波而是滑膜计算角,如果一切正确,在这种电流环下会在此电流下转到转矩平衡的速度。有一组同学上面那种电流环可以,但是到下面的就不行,最后发现是1)中的所描述问题,改回来就对了。
    电流环后就可以切入速度环,同样是要在较高的速度下。其实如果设置合理加上运气好,是可以直接从开环进入速度环的。一般而言绝大多数切闭环失败都是因为采样值、计算值出现问题所致。如果是性能不稳定,可以尝试以下几种方式(但一般不能解决根本问题)。    1-》采样电流、电压或者计算出的速度值干扰严重。可以写低通滤波来解决。2-》开环时滑膜角度和软件模拟角度差距较大。可以通过软件给滑膜角度加一个偏置来解决。还有一种比较有灵性的方法,是在模拟给定角度切换到滑膜角度时,给一个定时变权(从1,0的权慢慢转到0,1),例如用1s的时间逐步从模拟角转化到滑膜角。3-》切入失败时马上切回开环(但是电流给定和速度给定要降下来,否则是没法启动的),然后升速,告诉多次切入,有概率能够成功。    【2】基于28377的永磁同步机控制(电流传感器+绝对编码器)
     调试流程和035是差不多的,采用的电流传感器还不需要在特定相位进行AD采样。我们后期遇到的最主要问题是速度闭环控制精度不够,而成因主要是FPGA给过来的角度信号失真严重。
     
    灵魂画手希望见谅。
    上面这张图是角度波形应该的样子,下面是我们实际得到的样子。有两种可能,一是FPGA本身的处理速度或通信速度有问题,但概率不大。二是数据总线中某些引脚有问题,即IO一直是高或低,这样就相当于整个分辨率下降了,即会出现阶梯状的波形。
     退一步说,如果这种令人抓狂的采样波形就是无法解决,应该怎么办。我们之前没有发现问题所在时用了两种方法“委曲求全”。1-》低通滤波。2-》增大速度计算的周期,即多个周期计算一次速度。这两种方法都是以牺牲采样速率来减少抖动的,这么调整后PID参数需要相应增大,可想而知调整及时性会受到很大影响,低速的时候闭环效果较差。    【3】基于28069的永磁同步机控制    28069系列比较特殊,TI的controlsuite中似乎没有如377和035这样架构清晰,上手容易的库。但是motorware中有spintac模块。
    spintac是模块化的功能集成,不开放内部源码,直接在ROM之中,据说PID参数都是自动整定无法手动调整的。比如电流环、速度环、位置环,只要将对应模块打开,输入输出配置好即可。    spintac可以调整的参数主要是电机参数,功能角定义,速度、电流给定值,加速度值,速度极限值这类参数。给定初始电机参数后,spintac给电机通入电流以自动测定电机参数。但找到相应位置还是可以修改这些参数。如有一组同学在调试位置闭环时,就发现电机转的时候抖动的厉害(惯性设置过大),后自己把惯性改小后即运行流畅。    【4】一些硬件上的bug
    这部分是听同学们的分享反馈而总结的,在制板之前要注意的大体上这么几件事:1)元件的选择(耐压,电流,散热),是否采用精密电阻等问题。2)反复检查封装,AD库中很多元件的封装可能是有错误的,比如引脚顺序不一致或者大小不对,如果不及时自己画或找正确的封装,实际焊接时就要用单脚跳等方式。3)强弱电隔离。这点非常重要,隔离做不好将极大影响稳定性,注意强弱电之间的距离。4)强电线宽、间距及覆铜。5)信号线、采样电路长度。信号线长度太长时会引入干扰,采样电路中线太细长会引入线组,对电阻要求越精密的场合走线越要尽可能短。