【FOC算法学习笔记】(一)FOC力矩控制算法原理
前置知识点:无刷电机驱动器硬件结构、无刷电机转动原理
在使用驱动器控制直流无刷电机时,我们需要电机输出一定的力矩进行旋转,显然力矩是一个线性的对象(可以理解为阶跃信号),但我们如果想要驱动电机以该力矩平滑的旋转,我们就需要生成三个相位差为120°的正弦波Ia、Ib、Ic来控制,但是我们的驱动电路是由MOS管构成的逆变电路,控制对象为MOS管,其只有导通(1)和关断(0)两种状态,如何由此产生正弦波呢?可以采用SPWM技术加低通滤波器来模拟正弦波。但我们根本没有必要去产生正弦波来进行控制,要对非线性的信号(信号阶次大于一阶)进行准确控制就要使用复杂的高阶控制系统,而根据控制理论,控制系统的型次要大于等于输入信号的阶次,否则会导致系统稳态误差为无限大而无法进行控制,而高阶的控制系统对于建模成本、处理器算力、控制实时性等都是不利的。所以我们需要将问题进行简化,将复杂的控制方式(正弦波)简化为线性的控制方式(阶跃信号或者速度信号)。所以我们可以采用clark和park变换来将问题简化。

第一步:Clark变换
我们知道,驱动电机平滑旋转的是三个相位差为120°的正弦波,可以将其用Ia、Ib、Ic三个矢量来表示,但很明显,这三个矢量不正交且都处于同一个二维线性空间,根据线性代数的知识我们可以知道,我们可以通过clark变换将这三个向量变换到一个正交直角坐标系,我们可以将其命名为α-β坐标系


由此我们得到clark变换的基本形式,将控制对象简化为Iα和Iβ两个对象,但我们在使用的时候往往要加上一个系数:2/3等幅值变换系数、sqrt(2/3)等功率变换系数
等幅值变换系数是使得经过clark变换后的Iα等于Ia的系数,可以通过基尔霍夫定律并代入具体值来推导

但此时我们得到的Iα和Iβ仍是正弦波,这并不是我们想要的。我们的目的是将非线性的控制对象线性化,所以我们就要再使用Park变换。
第二步:Park变换
我们可以将α-β坐标系固定在电机定子上,如果此时我们想要用Iα和Iβ来描述电机的转动状态,但我们会发现Iα和Iβ是不断变化着的,分析起来仍旧困难,所以此时我们在电机转子上再建立一个坐标系q-d,当电机转子发生转动时,q-d坐标系就会与α-β坐标系产生一个电角度θ,那么我们可以通过θ将Iα和Iβ变换到q-d坐标系中用Iq和Id来表示。


正变换:

逆变换:


由于q-d坐标系是固结在转子上的坐标系,因此在电机旋转时Iq和Id是固定不变的,至此,我们就将正弦的控制对象转化成了线性的控制对象,即Iq、Id、θ。在实际工程中,θ可以用磁编码器很容易的测出,所以我们在使用时可以通过设定Iq和Id的值来控制电机各相的电流,但因为Iq和Id都是固结在电机转子上的矢量,其值不变,都表示电机的旋转状态,即转子旋转的径向Id 和切向Iq这两个方向的变量,径向Id是我们不需要的,需要的量就只有切向的Iq,这是一个线性的变量,所以我们就可以采用线性控制器(如PID)来控制电机的力矩了。

再梳理一下实际控制过程中信号的变换过程:
前向通路:想要实现电机以一定力矩转动,可以通过设定矢量Iq的值,并测量电角度θ,通过park逆变换使得矢量Iq从转子上的q-d坐标系变换到α-β坐标系得到矢量Iα和Iβ,再通过clark变换使得Iα和Iβ变换到自然坐标系得到三相的正弦电流Ia、Ib、Ic,以此来驱动电机以一定力矩旋转。
反馈回路:对无刷电机三相实际电流Ia、Ib、Ic进行采样得到电流值,通过clark变换使矢量Ia、Ib、Ic变换到电机定子上的α-β坐标系得到矢量Iα和Iβ,由磁编码器得到电角度θ,再通过park变换得到矢量Iq。
以下是信号变换过程框图:


学生学习笔记,如有错误欢迎大佬批评指正。
参考资料:
-
【手把手教写FOC算法】 系列视频2-4P【手把手教写FOC算法】4_帕克变换_哔哩哔哩_bilibili
-
【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 稚晖的文章 - 知乎 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎
更多推荐


所有评论(0)