news 2026/6/15 11:11:05

基于SOGI - PLL的永磁同步电机无感FOC探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于SOGI - PLL的永磁同步电机无感FOC探索

基于SOGI-PLL的永磁同步电机无感FOC 1.采用SOGI代替传统滑模观测器smo中的低通滤波器,有效减小转速波动; 2.提供算法对应的参考文献和仿真模型

在永磁同步电机(PMSM)的控制领域,无感矢量控制(FOC)一直是研究热点。传统的FOC中,滑模观测器(SMO)常被用于估计电机的转速和位置,但其中低通滤波器存在一些问题,会导致转速波动。今天咱们就来聊聊采用二阶广义积分器锁相环(SOGI - PLL)代替传统SMO中的低通滤波器,如何有效减小转速波动。

传统SMO中的困境

传统的滑模观测器通过构建滑模面,利用滑模控制的特性对电机的反电动势进行观测,进而估计转速和位置。然而,低通滤波器在滤除高频抖振的同时,不可避免地引入了相位延迟,这就使得转速估计不准确,从而导致转速波动。比如下面这段简单示意的传统SMO低通滤波部分代码(以Python为例):

import numpy as np # 假设这里是获取到的含抖振的信号 signal_with_chatter = np.random.randn(1000) cutoff_frequency = 10 # 截止频率 dt = 0.001 # 采样时间间隔 # 低通滤波器系数计算 alpha = 2 * np.pi * cutoff_frequency * dt y = np.zeros(len(signal_with_chatter)) y[0] = signal_with_chatter[0] for i in range(1, len(signal_with_chatter)): y[i] = alpha * signal_with_chatter[i] + (1 - alpha) * y[i - 1]

这里简单实现了一个一阶低通滤波器,从代码能看到,通过不断迭代更新输出值y,达到滤波目的。但这个过程中,由于截止频率等参数设置以及滤波器本身特性,相位延迟问题就逐渐凸显出来。

SOGI - PLL闪亮登场

SOGI - PLL是一种高性能的频率和相位估计方法。它能够精确地提取信号的正序和负序分量,并且在宽频范围内具有良好的动态性能和稳态精度。将其应用到PMSM的无感FOC中代替低通滤波器,能有效改善转速波动问题。

SOGI - PLL 核心代码及分析

下面咱们看看简单的SOGI - PLL代码实现(同样以Python为例):

import numpy as np import matplotlib.pyplot as plt def sogi_pll(input_signal, omega0, kp, ki): # 初始化参数 epsilon = 1e-6 omega = omega0 theta = 0 x1 = input_signal[0] x2 = 0 y1 = 0 y2 = 0 integral = 0 output = np.zeros(len(input_signal)) for n in range(len(input_signal)): # SOGI 部分 x1_dot = -omega0 * x2 + input_signal[n] x2_dot = omega0 * x1 x1 = x1 + x1_dot * dt x2 = x2 + x2_dot * dt y1 = x1 y2 = x2 # PLL 部分 error = y2 integral = integral + error * dt omega = omega0 + kp * error + ki * integral # 更新相位 theta = theta + omega * dt output[n] = y1 * np.cos(theta) + y2 * np.sin(theta) return output # 生成测试信号 dt = 0.001 t = np.arange(0, 1, dt) input_signal = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 150 * t) omega0 = 2 * np.pi * 50 # 额定角频率 kp = 0.1 ki = 0.01 filtered_signal = sogi_pll(input_signal, omega0, kp, ki) plt.plot(t, input_signal, label='Input Signal') plt.plot(t, filtered_signal, label='Filtered Signal') plt.xlabel('Time (s)') plt.ylabel('Amplitude') plt.legend() plt.show()

在这段代码中,首先定义了sogipll函数,参数包括输入信号inputsignal、额定角频率omega0、比例系数kp和积分系数ki。函数内部先初始化了一系列变量,接着在循环中,先是实现了SOGI部分,通过不断更新x1x2来获取滤波后的信号y1y2。然后是PLL部分,根据y2计算误差,通过积分和比例环节调整角频率omega,最后更新相位theta并得到最终输出output。从这个代码能看到,SOGI - PLL通过独特的结构和参数调整,能更好地适应信号变化,减少相位延迟等问题。

参考文献与仿真模型

参考文献

  • [文献名称1]:详细阐述了SOGI - PLL的原理、结构以及在电机控制中的应用,对理解其基本理论有很大帮助。
  • [文献名称2]:从实际应用角度出发,对比了多种改进方法在永磁同步电机无感FOC中的性能,其中对SOGI - PLL的效果分析尤为详细。

仿真模型

对于基于SOGI - PLL的永磁同步电机无感FOC仿真,可以使用MATLAB/Simulink来搭建模型。在Simulink中,可以利用电气系统库中的永磁同步电机模块,结合自行搭建的SOGI - PLL模块和FOC控制算法模块来构建完整的仿真系统。在搭建SOGI - PLL模块时,可以参考上述代码逻辑,通过设置合适的参数,如额定角频率、比例和积分系数等,来实现其功能。通过仿真,可以直观地观察到采用SOGI - PLL代替传统低通滤波器后,电机转速波动明显减小,验证这一改进方法的有效性。

总之,基于SOGI - PLL的永磁同步电机无感FOC为解决传统SMO中低通滤波器带来的转速波动问题提供了一个很棒的思路,感兴趣的小伙伴可以深入研究和实践。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 18:18:48

TypeScript开发基础(14)——面向对象之接口

接口,它是对行为的抽象,而具体如何行动需要由子类去实现,接口的意义在于抽象,不拘细节,从而使同类事物在在同一高度具有通用性及可替代性。 接口的特性: 不可以被实例化 含有声明但未实现的方法 一个类可以…

作者头像 李华
网站建设 2026/6/13 12:11:37

RabbitMQ消息序列化在大数据场景下的选择

RabbitMQ消息序列化在大数据场景下的选择 关键词:RabbitMQ、消息序列化、大数据、序列化格式、性能优化 摘要:在大数据场景中,消息中间件RabbitMQ常被用于高效传递海量数据。而消息序列化(将对象转为字节流)作为数据传输的关键环节,直接影响系统的吞吐量、延迟和扩展性。…

作者头像 李华
网站建设 2026/6/13 20:19:49

导师推荐!9款AI论文写作软件测评:本科生毕业论文必备

导师推荐!9款AI论文写作软件测评:本科生毕业论文必备 2025年AI论文写作工具测评:为什么你需要这份榜单? 随着人工智能技术的不断进步,越来越多的本科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅…

作者头像 李华
网站建设 2026/6/10 14:25:45

【毕业设计】基于随机森林的贷款可能性预测系统实现

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华