电机FOC算法的解释

一、开始说FOC之前,我们先来弄清楚电机是怎么动起来的,电机的q轴、d轴是什么,FOC存在的意义是什么。

这里有一篇知乎的文章,作者w浩森说的太好了,推荐大家去看一看。我这里总结几条本文章后面需要用到的观点:

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只需要4步:第一步,选定q、d轴的值(比如q=2,d=0)。第二步,用编码器测量转子电角度。第三步,用上面的式子计算α,β值。第四步,把α,β输入SVPWM。

        到这里我们已经用上面的4个步骤让电机转起来了,可是还存在几个问题:1、我怎么知道电机有没有按照我设定的q、d值来转呢?2、设定q、d值只能控制扭矩,我如果要控制电机的速度和位置怎么办?这些问题都是上面那个开环系统解决不了的,这个时候就要引入闭环了。

4、clark变换

        我们先测量电机的3相电流,但是从SVPWM知道,电机的3相电流是这样的:

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

公式就是矢量分解:

变换中有一个系数k,一般取2/3,有兴趣可以去这儿了解:https://blog.youkuaiyun.com/daidi1989/article/details/89926324

5、park变换

再把α,β轴上值通过反park变换的逆过程,park变换,得到q、d轴的值。

6、现在我们就实现了FOC的整个过程,框图如下:

1、测量q、d轴的值:测量电机的相电流(测量两相,通过Ia+Ib+Ic=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.youkuaiyun.com/u010671230/article/details/79478582,侵删。

03-15
<think>好的,用户的问题是“foc”,我需要先确定用户的具体意图。由于用户意图无法确定,可能需要考虑多种可能性。首先,“FOC”可能有不同的含义,比如: 1. **磁场定向控制(Field-Oriented Control)**:在电机控制领域,FOC是一种常用的技术,用于控制三相交流电机,提高效率和性能。 2. **FOC其他缩写**:如“Focus”的缩写,或某些组织、项目的简称。 接下来,进行网络搜索以确认最常见的解释。根据搜索结果,“FOC”最常见的解释是“磁场定向控制”,尤其在电机驱动和无刷直流电机控制中广泛应用。因此,回答应围绕这一技术展开。 需要整理FOC的基本原理、实现步骤、应用场景以及相关公式和代码示例。同时,确保遵循用户的格式要求,如分步骤、避免第一人称、正确使用数学公式和代码格式等。 生成回答时,要分点说明,每个部分换行,避免使用步骤词汇。例如,分为原理、实现方法、应用场景等部分。同时,在最后添加相关问题,需基于回答内容,例如询问FOC与其他控制方法的区别、具体实现代码或参数调整方法。 检查是否满足所有格式要求,尤其是数学公式和代码的正确标注,以及相关问题的格式和数量。确保没有使用禁止的词汇,内容清晰实用。</think>磁场定向控制(Field-Oriented Control,FOC)是一种用于交流电机的高性能控制技术,通过将定子电流分解为励磁分量和转矩分量实现类似直流电机的控制效果。以下是关键要点: **基本原理** FOC通过坐标变换将三相静止坐标系(ABC)转换为两相旋转坐标系(dq),使得交流电机的控制简化为对直轴电流$i_d$(控制磁场)和交轴电流$i_q$(控制转矩)的独立调节。坐标变换采用Clarke变换和Park变换: - Clarke变换:将三相电流转换为两相静止坐标系(αβ) $$i_\alpha = i_a$$ $$i_\beta = \frac{1}{\sqrt{3}}(i_a + 2i_b)$$ - Park变换:将αβ坐标系转换为旋转的dq坐标系 $$i_d = i_\alpha \cos\theta + i_\beta \sin\theta$$ $$i_q = -i_\alpha \sin\theta + i_\beta \cos\theta$$ 其中$\theta$为转子磁链角度。 **实现方法** 1. **电流采样与变换**:采集三相电流$i_a, i_b, i_c$,通过Clarke和Park变换得到$i_d, i_q$ 2. **PI调节器设计**:对$i_d$和$i_q$分别进行闭环控制,通常采用比例积分(PI)调节器 ```c // 示例:电流环PI调节代码 typedef struct { float Kp; float Ki; float integral; } PI_Controller; float PI_Update(PI_Controller *pi, float error) { pi->integral += error * Ts; // Ts为控制周期 return pi->Kp * error + pi->Ki * pi->integral; } ``` 3. **空间矢量调制(SVPWM)**:将调节后的电压矢量转换为PWM信号驱动逆变器 **应用场景** - 电动汽车驱动电机 - 工业伺服系统 - 无人机电调(ESC) - 家用电器(如空调压缩机)
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值