首页 > 编程知识 正文

伺服电机foc算法(开源电机控制算法)

时间:2023-05-05 11:23:42 阅读:76881 作者:1387

另一方面,在开始讲述FOC之前,首先让我们弄清楚电机是如何工作的,电机的q轴、d轴是什么,FOC的存在意义是什么。

这里有我知道的报道。 作者twdwk说得很好。 我建议你去看。 在此,本文后面总结了几点必要的观点。

1、电机的本质、转矩的本质

上图为电机等效型号,目前转子与定子完全重合,无扭矩存在。

上图所示,将外侧定子磁场扭转一定角度后,根据磁铁与异性相吸引的原理,内部转子旋转。 此时存在转矩。 怎么测量转矩的大小?

所有电机的转矩大小与内外两个磁场的叉乘,即由两个磁场包围的平行四边形的面积成比例。 于是,两个磁场重叠时平行四边形的面积为0,此时转矩为0。 两个磁场达到90度时,平行四边形的面积最大,转矩也最大。

2、从两个磁场叉引出电机d轴和q轴的概念

把上面两个磁场相乘的平行四边形换成一个矩形,组合前后的面积不变。 此时,转矩的大小是与内磁场平行的磁场的大小(也称为d轴、direct、直轴)。 其大小等于内磁场外磁场的内磁场方向的分量)且与内磁场垂直的大小(也称为q轴、quadrature、交轴。 其大小等于内部磁场的垂直方向的分量)。

目前,电机转矩大小的控制是q轴和d轴大小的乘积的控制。 在PMSM中,内部磁场的大小由永磁体产生,是恒定的。 外磁场由线圈绕组产生,可以控制外磁场与内磁场所成的角和外磁场的大小。 例如,例1,假设内磁场为0度、大小为1,则电动机绕组能够控制为产生比内磁场的45度超前的外磁场,若大小为2,则总转矩的大小为1*2*sin(45 )。 例2、假设内部磁场为0度、大小为1,控制电机绕组产生比内部磁场90度超前的外部磁场,如果大小为2,则总转矩的大小为1*2*sin(90 )。 可见,内外两个磁场方向垂直时,外磁场产生相同大小的磁场,得到的转矩最大。 这意味着:

向d轴的上表面施加磁场只会影响转子的磁场,无法获得转矩。 因此,d轴控制转子磁通,q轴控制电机的转矩输出。 一般使用时,只需控制电机的转矩输出,即可将d轴直接设定为0。

3、反park变换

我们能控制的因素其实只有1、外磁场在d、q轴上的大小。 2、外磁场角度。

我们要做的其实只是用编码器测量转子的电角度,根据转子的电角度(内磁场的角度)用电机绕组产生大小为d、q轴的外磁场。

如上图所示,如果转子的电角度为1,则试图在1中产生d、q轴大小的外磁场。 如果转子的电角度为2,则必须在2上产生d、q轴大小的外磁场。 现在,让我们引入第一个变换。 是反park变换。 “为什么要转换? ”。 这和公式的简化和变形金刚的变形一样,可以回到过去,但都是一样的东西,如果改变形状,你可能会知道问题是怎么变得这么简单)

单独推出角度1的情况,将其移动到原点,将x、y轴的名称变更为、。

根据空间矢量的关系,可以将q、d轴的大小分解为、轴:

d轴为0时:

上式的意思是,相互相差90度大小根据正弦规律变化的两个磁场,可以产生大小一定的旋转磁场。

(这里有一个gif地图不同。 )

你知道分解为,轴的公式其实是svpwm算法的输入吗? 详见SVPWM算法的原理和细节

是的,如何控制电机已经结束了,我来总结一下。 控制PMSM只需要四个步骤。 在第一步中,选择q、d轴的值(例如q=2、d=0)。 第二步,用编码器测量转子的电角度。 步骤3,用上式计算、的值。 步骤4,将、输入到SVPWM中。

到目前为止,我们在上面的四个步骤中旋转了电机,但还存在一些问题。 1、怎么知道电机是否按照我设定的q、d值旋转? 设定2、q、d的值后只能控制转矩。 如何控制电机的速度和位置? 所有这些问题都是上面的开环系统无法解决的,所以在这个时候引入闭环。

4、clark转换

首先测量电机的三相电流,根据SVPWM,电机的三相电流如下。

相互相差120度的3个分磁场,但只需要相差90度的2个磁场。 于是又用一个变换,把三个分磁场变换成两个分磁场:

表达式是向量分解:

变换有系数k。 一般取2/3。 如果有兴趣的话请去这里。 https://blog.csdn.net/daidi 1989/article/details/89926324

5、标记转换

并且,通过对、轴上的值进行逆park变换的逆过程、park变换,得到q、d轴的值。

6、现在我们实现了FOC的全过程。 框图如下。

1、测量q、d轴值:测量电机相电流(测量两相,通过Ia Ib I

c=0得到第三相),然后通过clark变换得到Iα和Iβ,然后通过park变换得到q、d轴的值。

2、把测量到的d、q轴值与我们设定的做对比,如果大了要减小,小了要增大。(目标是让测量值与我们的设定值相同)

3、通过PID后的控制结果输出给SVPWM执行。

例如:1、设定q=2、d=0,通过测量得到q=1.5、d=0.5,这个时候就有误差了,于是把误差值输入PID,得到PID计算之后的消除误差的控制值,这个控制值还是q、d轴的值,再经过反park变换得到α,β,输出给SVPWM,这就完成了一个控制环路,这个控制环路的目的就是让测量到的q、d值等于他们的设定值,控制q、d值其实就是控制电流值,于是这个环路就叫电流环。

2、设定电机转速2000RPM,通过测量得到当前转速1000,于是要加快旋转。怎么加快旋转呢?我们只能控制q、d这两个值,当然是增大q轴的值,加大扭矩咯。于是改变q轴的设定值,之前是2,现在改为3。电机的速度快起来了,可是超过了2000,于是又要把q轴的设定值减小。这个环路就是速度环,即在电流环的外面加一层,速度环通过改变q、d设定值来改变速度。

3、当然还有位置环,计算位置误差,计算参考速度,然后输出给速度环。

 

部分图片来自:https://blog.csdn.net/u010671230/article/details/79478582,侵删。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。