基于线性扩张状态观测器和滑模观测器的永磁同步电机无感 FOC 探究
基于线性扩张状态观测器和滑模观测器的永磁同步电机无感FOC 1.采用线性扩张状态观测器和滑模观测器实现中高速下无感FOC;两种不同的无感算法进行对比;锁相环技术标幺化处理提取转子位置信息; 2.转速环采用改进的线性自抗扰控制器MLADRC(没有加入TD环节),和传统PI相比提高了无感控制下转速的动态响应性能; 3.提供算法对应的参考文献和仿真模型
在永磁同步电机(PMSM)的控制领域中,无传感器控制(FOC)技术近年来备受关注,因其能够在不依赖物理传感器的情况下获取电机转子位置和速度信息,从而降低成本、提高系统可靠性。今天咱就来聊聊基于线性扩张状态观测器(LESO)和滑模观测器(SMO)的永磁同步电机无感 FOC 技术。
一、LESO 与 SMO 实现中高速下无感 FOC 及算法对比
1. 线性扩张状态观测器(LESO)
LESO 是一种能够实时估计系统状态和未知扰动的观测器。在永磁同步电机无感 FOC 中,它通过对电机电气量(如电流、电压)的测量,来估计转子位置和速度。
以下是一个简单示意性的 LESO 代码框架(以 Python 为例,实际应用可能基于 DSP 或 MCU 等硬件平台使用 C 或汇编语言):
import numpy as np
class LESO:
def __init__(self, A, B, C, L):
self.A = A
self.B = B
self.C = C
self.L = L
self.x_hat = np.zeros((3, 1))
def update(self, u, y):
e = y - self.C.dot(self.x_hat)
self.x_hat = self.x_hat + (self.A.dot(self.x_hat) + self.B.dot(u) + self.L.dot(e))
return self.x_hat[1, 0], self.x_hat[2, 0] # 返回估计的速度和位置
这里的 A、B、C 是电机状态空间模型的系数矩阵,L 是观测器增益矩阵。代码逻辑很直接,每次通过测量得到的输入 u 和输出 y,来更新状态估计值 x_hat,进而得到估计的速度和位置。
2. 滑模观测器(SMO)
SMO 利用电机模型和滑模控制理论,通过构造滑模面并迫使系统状态在滑模面上滑动,从而实现对转子位置和速度的观测。

基于线性扩张状态观测器和滑模观测器的永磁同步电机无感FOC 1.采用线性扩张状态观测器和滑模观测器实现中高速下无感FOC;两种不同的无感算法进行对比;锁相环技术标幺化处理提取转子位置信息; 2.转速环采用改进的线性自抗扰控制器MLADRC(没有加入TD环节),和传统PI相比提高了无感控制下转速的动态响应性能; 3.提供算法对应的参考文献和仿真模型
下面是 SMO 的部分核心代码(同样以 Python 示意):
import numpy as np
class SMO:
def __init__(self, omega_n, k):
self.omega_n = omega_n
self.k = k
self.x_hat = np.zeros((3, 1))
def sign(self, x):
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
def update(self, u, y):
e = y - self.x_hat[0, 0]
self.x_hat[0, 0] = self.x_hat[0, 0] + self.omega_n * e
self.x_hat[1, 0] = self.x_hat[1, 0] + self.omega_n * e - self.k * self.sign(e)
self.x_hat[2, 0] = self.x_hat[2, 0] + self.omega_n * e
return self.x_hat[1, 0], self.x_hat[2, 0] # 返回估计的速度和位置
这里 omega_n 是滑模观测器的带宽,k 是滑模控制增益。代码中通过不断计算误差 e,并依据滑模控制律来更新状态估计值。
3. 两种算法对比
LESO 具有较好的线性特性,对系统模型依赖相对较弱,抗干扰能力也不错。而 SMO 对电机参数变化具有较强的鲁棒性,但由于滑模控制的不连续性,可能会产生抖振问题,影响估计精度。在实际应用中,要根据具体需求和电机特性来选择合适的算法。
二、转速环控制——改进的线性自抗扰控制器 MLADRC
在转速环控制方面,采用了改进的线性自抗扰控制器 MLADRC(未加入 TD 环节)。与传统的 PI 控制器相比,MLADRC 能够更好地处理系统的不确定性和外部扰动,提高了无感控制下转速的动态响应性能。
MLADRC 代码示例
import numpy as np
class MLADRC:
def __init__(self, b0, beta01, beta02, beta10, beta11, beta12, alpha, tau0):
self.b0 = b0
self.beta01 = beta01
self.beta02 = beta02
self.beta10 = beta10
self.beta11 = beta11
self.beta12 = beta12
self.alpha = alpha
self.tau0 = tau0
self.x1 = 0
self.x2 = 0
self.z1 = 0
self.z2 = 0
self.z3 = 0
def update(self, r, y):
e1 = r - self.z1
e2 = self.x1 - self.z2
self.z1 = self.z1 + self.tau0 * (self.z2 - self.beta01 * e1)
self.z2 = self.z2 + self.tau0 * (self.z3 - self.beta02 * e1 + self.b0 * self.x2)
self.z3 = self.z3 + self.tau0 * (-self.beta10 * np.sign(e2) - self.beta11 * e2 - self.beta12 * e1)
u0 = self.alpha * (r - self.z1) - self.z2
u = u0 / self.b0
self.x1 = self.x1 + self.tau0 * self.x2
return u
这里的 b0、beta01、beta02 等参数决定了控制器的性能。MLADRC 通过实时估计并补偿系统的总扰动,使得转速控制更加稳定和快速。相比之下,传统 PI 控制器在面对复杂扰动时,调节速度和精度上就稍显逊色。
三、锁相环技术标幺化处理提取转子位置信息
锁相环(PLL)技术在永磁同步电机无感 FOC 中用于提取转子位置信息。通过将测量的电气量进行标幺化处理,再输入到 PLL 中,能够更准确地跟踪转子位置的变化。
import numpy as np
class PLL:
def __init__(self, kp, ki, omega_n):
self.kp = kp
self.ki = ki
self.omega_n = omega_n
self.theta_hat = 0
self.omega_hat = 0
self.error_integral = 0
def update(self, e):
self.error_integral = self.error_integral + e
omega_correction = self.kp * e + self.ki * self.error_integral
self.omega_hat = self.omega_hat + omega_correction
self.theta_hat = self.theta_hat + self.omega_hat * self.omega_n
return self.theta_hat
kp 和 ki 是比例和积分系数,通过不断调整误差积分和比例项,PLL 可以准确跟踪转子位置角度 theta_hat。
四、参考文献与仿真模型
参考文献
- [文献名称 1]:详细介绍了线性扩张状态观测器在永磁同步电机中的应用原理和实现方法。
- [文献名称 2]:深入探讨了滑模观测器的设计及其在电机无传感器控制中的优势与挑战。
- [文献名称 3]:对改进的线性自抗扰控制器 MLADRC 的理论基础和性能分析进行了全面阐述。
仿真模型
仿真模型可以使用 MATLAB/Simulink 搭建。首先构建永磁同步电机的数学模型模块,然后分别接入 LESO、SMO 模块进行转子位置和速度估计。转速环采用 MLADRC 或传统 PI 控制器进行对比。锁相环模块用于处理和提取转子位置信息。通过设置不同的工况和参数,可以直观地观察不同算法和控制器在永磁同步电机无感 FOC 中的性能表现。
以上就是基于线性扩张状态观测器和滑模观测器的永磁同步电机无感 FOC 的一些关键内容,希望对大家有所启发,一起探索更高效、可靠的电机控制技术。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)