TI论坛
直播中

康辅佑

7年用户 955经验值
擅长:控制/MCU
私信 关注
[问答]

28035PMSM控制中的几个基础概念介绍

    本人是个刚刚入门的小硕,目前在看一段基于ti例程修改而来的PMSM例程。有几个概念不懂想咨询各位大神。
    1.在SPEED_FR.H中有这三个SpeedRpm、BaseRpm、Speed速度。对每个的物理意义以及他们之间的关系不是很懂,肯请前辈解答。
     2.这是F2803XQEP.H 中的一段代码:
         /* Compute the mechanical angle in Q24 */
       v.MechTheta = __qmpy32by16(v.MechScaler,(int16)v.RawTheta,31);  /* Q15 = Q30*Q0 */
       v.MechTheta &= 0x7FFF;                                          /* Wrap around 0x07FFF*/
       上面的最后一行,这样与运算不会导致MechTheta中整数部分丢失吗?
   下面附上我在看的程序,备注是我个人加的,可能会有错误。

回帖(8)

肖青

2020-7-20 09:00:31
你好,baserpm是电机的额定速度,如电机4对极,额定频率200hz,那baserpm就是60*200/4=3000,这个公式相信你在程序中也看到了。
SpeedRpm为程序中计算出的实时转速。Speed没记错的话应该是实时转速(标幺值)。看ti的例程 你要理解标幺值这个概念,你会看到程序里好多IQ(A)这样的式子,那么这个具体对应实际物理量中的什么值你要搞清楚。举例来说,我把电机额定值3000转看作单位1,那么任何一个转速都可以与这个值相比得出一个标幺值。如IQ(1)代表额定转速3000,IQ(0.5)就代表1500转,IQ(-1)代表-1500转。


v.MechTheta &= 0x7FFF;     这里做个与运算就是为了只得到15位数
举报

康辅佑

2020-7-20 09:16:46
引用: jacksonqwj 发表于 2020-7-20 09:00
你好,baserpm是电机的额定速度,如电机4对极,额定频率200hz,那baserpm就是60*200/4=3000,这个公式相信你在程序中也看到了。
SpeedRpm为程序中计算出的实时转速。Speed没记错的话应该是实时转速(标幺值)。看ti的例程 你要理解标幺值这个概念,你会看到程序里好多IQ(A)这样的式子,那么这个具体对应实际物理量中的什 ...

首先十分感谢您的解答。我的电机额定转速就是3000,您一语中的啊。对于最后一个问题我还是疑惑,v.MechTheta是一个int32,我的程序里面是这样定义的; 
int32 MechTheta;        // Output: Motor Mechanical Angle (Q24)    。结合下面这句话我的理解是:
v.MechTheta = __qmpy32by16(v.MechScaler,(int16)v.RawTheta,31);  /* Q15 = Q30*Q0 */      MechTheta是一个32位int,经过上面的赋值,变成了Q15,这样它就有15位代表小数,16位代表整数(这个理解是我个人的理解,不一定对,因为在定义后面的注释里还有个Q24,我不知道怎么理解)。这样的话经过v.MechTheta &= 0x7FFF  这样一个与运算,如果整数部分有值的话,那就被丢掉了。很疑惑,希望前辈可以不吝赐教啊。
再次感谢您之前的解答。
举报

肖青

2020-7-20 09:22:24
引用: uwufjwer 发表于 2020-7-20 09:16
首先十分感谢您的解答。我的电机额定转速就是3000,您一语中的啊。对于最后一个问题我还是疑惑,v.MechTheta是一个int32,我的程序里面是这样定义的; 
int32 MechTheta;        // Output: Motor Mechanical Angle (Q24)    。结合下面这句话我的理解是:
v.MechTheta = __qmpy32by16(v.MechScaler,(int16)v.RawThet ...

这样理解也可以的,v.MechTheta是指机械角度 范围是可以认为是0~360度,此时如果计算出一个380度,那与运算后就变成了20度。相当于把整数部分去掉了。
ti这个处理方法确实有点绕,要仔细品味。


此外,在角度处理部分你也可以不按照ti的这个方法,你就按照自己的思路来写也是ok的。
如果你用的是普通增量式编码器,计算速度其实就是计算单位时间内编码器转过的码数增量,然后除以时间。只不过电机控制还要用到电角度,所以ti就用的电角度增量去计算速度的。
你在看例程过程中有什么问题都可以在这个帖子上问,大家互相交流。我也是从你那个阶段过来的,很多东西不要被ti的一些写法绕晕了,要有些自己的思考哈,加油。
举报

康辅佑

2020-7-20 09:40:55
引用: jacksonqwj 发表于 2020-7-20 09:22
这样理解也可以的,v.MechTheta是指机械角度 范围是可以认为是0~360度,此时如果计算出一个380度,那与运算后就变成了20度。相当于把整数部分去掉了。
ti这个处理方法确实有点绕,要仔细品味。

您好,我又来提问题啦。我现在用28035的控制板加DRV8301的驱动板,控制一个带有增量式光栅的PMSM,但是我没有相对完善的程序。我手里还有一个28335的开发版。我找了好久,不知道是我找的方式不对还是什么原因,始终没有找到TI关于28335,或者28035有感的PMSM的例程。笨小白真的很痛苦啊。不知道您能否帮忙找一下呢?谢谢啦。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分