永磁同步电机无位置传感器系列(1)——非线性磁链观测器的仿真复现过程

news2024/11/26 4:28:50

无位置传感器控制,这个方向也是电机控制里面的大热门了。最近在看PLL,中国电机有一篇ESO-PLL获得了23年的高影响力论文,标题如下。因为这篇ESO-PLL需要用到下面这篇英文文献的转子位置观测器,想着就先把这个观测器的文章给复现了。

这篇转子位置的观测,采用了非线性观测器,在知乎上面以及某站上面都有大佬发了相关视频/帖子来解释这篇文章的原理,但是还没人讲讲这篇论文的仿真,我就自己做了个试试。感觉设计的观测器确实挺方便的,模型搭起来也还好,不算麻烦。

无位置系列就打算出这一篇观测器,毕竟我主要是为了学习PLL的,只是顺带复现一下这篇论文。不过下面也把仿真搭建的过程说得比较详细了。

1.非线性磁链观测器的仿真搭建

文章先是定义了三个中间x,y,n变量。这里值得注意的是,y里面涉及到了静止坐标系的电压值(也就是U阿尔法以及U贝塔),这个得自己搭建一个模块采集一下这个电压。

采集的静止两相坐标系下的电压波形

 

接着就可以根据式子(8)估计出中间变量x,伽马(也就是我红色方框画圈的符号),代表的观测器增益,这个伽马只要大于零,观测器就是收敛的。当然,伽马越大就收敛的越快。

当估计出准确的x之后,因为x里面包含sin与cos的关系,就可以根据sin和cos计算出转子位置角度了。

文章里还涉及了观测器的稳定性证明,这里就不用看了,只要会搭这个观测器就行。

先测试一下在不同观测器增益下,观测器的收敛情况吧。(此时还没有把观测器直接用于控制系统里,只是先单独测试一下观测器)

如下图所示,我把自己搭建的模块估计的sin、cos以及电角度的数值拿出来对比看看了。

观测器增益伽马γ分别取1000、5000(论文中取的是8000)。

转速500r/min,γ=1000情况下的sin估计值与实际值的对比,红(估计),蓝(实际)
转速500r/min,γ=1000情况下的cos估计值与实际值的对比,红(估计),蓝(实际)

可以看到,sin估计的还是比较准的,但是估计的cos明显有一个缓慢收敛的过程,这说明选择的观测器增益伽马γ还是太小了。

转速500r/min,γ=5000情况下的sin估计值与实际值的对比,红(估计),蓝(实际)
转速500r/min,γ=5000情况下的cos估计值与实际值的对比,红(估计),蓝(实际)

此时的sin和cos的估计值都挺准确的,而且收敛也很快。一开始时,因为转速比较低,所以此时的观测器没办法快速收敛,这也是无位置传感器控制技术在低速段受限的原因。

这里再注意一个点,就是论文中的电角度theta是根据式子(9),利用arctan进行了公式计算。在matlab里面,arctan得到的角度范围是-pi/2到+pi/2(如下图所示),而我们电机控制里面说的角度通常是0到2*pi,所以我们有必要给arctan的输出优化一下。

直接按照matlab原有的代码进行转子角度的输出
修改matlab原有的代码之后的转子角度的输出

可以看到这个转子位置/磁链观测器的观测效果还是很好的。

即使是在200r/min的时候,估计值和实际值还是基本完全重合,说明这个磁链观测器的观测效果还是非常好的呢

200r/min情况下,估计的电角度与实际电角度的对比

2.锁相环PLL的仿真搭建

搭建好磁链观测器之后,需要计算速度/转速,这篇英文文献中采用的锁相环PLL是传统的二阶PLL,其原理如下图所示。

搭建的锁相环仿真

上图是我自己搭建的PLL仿真图,这里值得注意的有两点:

1)在PLL的原理图中可以看到,PLL的输出及估计的电角度,来自于电角速度的积分,如果不进行适当的限幅(将其设置在0到2pi之间),那么其数值将会无限变大。限幅前后的对比如下图所示,蓝线就是没限幅之前的电角度输出。

 

2)角度的误差也要进行一定的处理。这句话是什么意思呢,我下面用几个图来解释。

先把某次电角度从2pi切换到0时的角度数值放大一下。

 

 

经过两次放大之后我们可以看到,会出现实际值先掉到0然后估计值再掉到0的情况(当然也有可能会出现估计值先掉到0然后实际值再掉到0的情况)。如果这时候不做相应的处理,而是用二者的差值直接相减,会导致此时的误差error为2pi左右,2pi的error经过PI,会导致估计的转速出现极大的波动。就如下图所示,就在电角度切换到0的时候,估计的转速数值非常非常大!实际转速500r/min,而估计转速都超过了1500r/min。

未经过误差处理前的PLL输出转速以及电角度
经过误差处理后的PLL输出转速以及电角度

二阶PLL的参数设计为:

 

 

3.整体仿真搭建

把PLL和观测器都搭建好了之后,就可以实行整个系统的闭环控制了。

 


仿真设置:

Tpwm = 1e-4;%开关周期

Tspeed = 1e-4;

Pn = 4;%电机极对数

Ls = 8.5e-3;%定子电感,采用隐极的,Ld=Lq=Ls

Rs = 3;%定子电阻

flux = 0.1688;%永磁体磁链

Vdc = 311;%直流母线电压

iqmax = 20;%额定电流

fc = 200;%电流环带宽

%PLL增益

c = 500;

%位置观测器增益

gama = 9000;


初始给定转速200r/min,0.25s加入10Nm负载,0.35s给定转速改为50r/min

定子三相电流、转矩、转速波形

从上面整个图中可以看到,电机没有办法启动,这是因为磁链观测器没有观测到准确的角度。0.25s负载加入之后,负载拖着电机旋转,此时电机开始旋转,观测器能够观测器到准确的电角度了,所以电机最终能够稳定在50r/min了。

3.1低速段d轴电流注入

论文中说,在低速段进行d轴电流注入可以提高低速段观测器的鲁棒性。

那我现在设定一个程序,在低速段(100r/min以内)的d轴电流给定值改为2A。可以看到,低速段注入d轴电流之后,电机能够直接启动了。不论是后来的突加负载,还是减速,性能都是OK的,能够稳定运行。这次启动完全属于瞎猫碰上死耗子,刚好使得观测器收敛了(这点在后面会解释)。

定子三相电流、转矩、转速

但是注意到,加速到200r/min时,转速的超调量非常大。主要原因就是一开始时,PLL估计的转速不太准。如下图所示。

接下来再看看高速段的表现,初始给定转速500r/min,0.25s加入10Nm负载,0.35s给定转速改为1500r/min。从下面的仿真来看,跑较高的转速的时候,观测器还是没问题的,我们一般还是比较关注低速段的性能。

3.3改进的启动措施

再回顾一下这篇英文文献——低速注入d轴电流的方法进行启动。这里有一点值得注意,我仿真中是设置低速时d轴电流参考值为2A。

但是呢,在启动的时候,非线性磁链观测器根本不知道d轴在哪。所以说,我刚才在设置d轴电流参考值为2A之后能够启动,完全属于瞎猫碰上死耗子。

那我们应该怎么样准确的注入d轴电流呢?那最简便的方法就是给让逆变器产生(100)电压矢量,此时会让转子d轴与电机A相轴线对齐,且A相电流为正,BC相电流为负。感兴趣的可以画个矢量图看看,此时d轴电流就是为正咯,然后q轴电流为0。

按照这个思路,我又搭了一个程序。这个程序的意思就是在0.05s之前,阿尔法轴电压给定为20V,贝塔轴电压为0,也就是给逆变器(100)电压矢量的指令了(毕竟阿尔法轴对应的就是A相轴线)。0.05s之后就进行无感启动。这里值得注意的是,这个程序代码里面,给的是20V的U阿尔法参考电压,直流母线电压是311V,所以20V参考电压的话只会产生一个比较小的占空比。所以也不是完全给100,而是相当于给100和000,这样的话,电流就只有几A而已。如果在0.05s前只给100的话,电机很容易过流的。

仿真工况:初始给定转速200r/min,0.05s前注入100电压矢量,0.05s正式启动,0.25s加入10Nm负载,0.35s给定转速改为50r/min。 

 

非线性磁链观测的角度值与实际电机角度值
PLL观测的转速值以及角度值

可以看到,采用100电压矢量来产生d轴电流的方法,是非常有效的,能够保证非线性观测器快速收敛以及PLL快速跟随实际转速。

3.3仿真展示

我们再随机选几个初始电角度来看看电机的启动情况:初始电角度30°、60°、90°、130°、160°、290°、330°。在0.1s之前,电压矢量都为100,0.1s后开始启动。

初始角度为30°时,电机的定子三相电流、转矩、转速波形
初始角度为30°时,观测器输出电角度与实际电角度的情况
初始角度为60°时,电机的定子三相电流、转矩、转速波形

 

初始角度为60°时,观测器输出电角度与实际电角度的情况
初始角度为90°时,电机的定子三相电流、转矩、转速波形
初始角度为90°时,观测器输出电角度与实际电角度的情况
初始角度为130°时,电机的定子三相电流、转矩、转速波形
初始角度为130°时,观测器输出电角度与实际电角度的情况
初始角度为160°时,电机的定子三相电流、转矩、转速波形
初始角度为160°时,观测器输出电角度与实际电角度的情况

 

 

初始角度为290°时,电机的定子三相电流、转矩、转速波形
初始角度为290°时,观测器输出电角度与实际电角度的情况

 

 

初始角度为330°时,电机的定子三相电流、转矩、转速波形
初始角度为330°时,观测器输出电角度与实际电角度的情况

从上述那么多组仿真来看,在所选取的这些电角度的情况下,电机都是可以在0.1s之后达到给定转速200r/min,并且在突加负载以及减速至50r/min的情况下都具有很好的表现。

这个非线性磁链观测器对应的论文也说了,在零转速的情况下,非线性磁链观测器没办法准确观测器转子角度。

而我们在0.1s前作用电压矢量100的话,相当于把d轴拉到A轴上,假如一开始d轴与A轴没有重合,那么转子就会转向A轴,在这个过程中,就有了一定的转速,所以能够使得观测器得到的转子角度接近于真实值。

从上面的仿真也可以看出,在很多情况下,0.1s之前,观测器得到的转子角度都没有完全等于实际的角度,但是其误差都相对比较小了,所以可以启动了。

以上仿真均为个人理解,如有不当之处请见谅。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1531049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具】vscode终端打不开

问题 1The terminal process failed to launch: A native exception occurred during launch (forkpty(3) failed.). 参考方案 下面参考链接是针对windows系统上vscode 出现的相同问题的解答 参考链接:https://blog.csdn.net/weixin_40921421/article/details/122…

农业四情监测设备—全面、准确地收集农田环境数据

型号推荐:云境天合TH-Q3】农业四情监测设备是一种高科技的农田监测工具,旨在实时监测和管理农田中的土壤墒情、作物生长、病虫害以及气象条件。这些设备综合运用了传感器、摄像头、气象站等技术手段,能够全面、准确地收集农田环境数据&#x…

机器学习之客户违约预测模型搭建之原理篇

前言 这一章主要介绍机器学习在金融领域一个重要应用:客户违约预测模型的搭建,其所用到原理为机器学习中的决策树模型。通过本章的学习,您能了解在信息时代下金融风险控制的新手段,并对机器学习有一个初步的了解。 1. 机器学习在…

【JavaScript】JavaScript 运算符 ⑤ ( 运算符优先级 )

文章目录 一、JavaScript 运算符优先级1、运算符优先级 概念2、运算符优先级 列举3、运算符示例 一、JavaScript 运算符优先级 1、运算符优先级 概念 JavaScript 的 运算符 是有 " 优先级 " 的 , " 运算符优先级 " 决定 一个表达式中 多个 运算符的 执行顺…

【每日一题】好子数组的最大分数

Tag 【单调栈】【暴力枚举】【数组】【2024-03-19】 题目来源 1793. 好子数组的最大分数 解题思路 本题和 84. 柱状图中最大的矩形 一样,计算的都是最大矩形的面积。只不过多了一个约束:矩形必须包含下标 k。 以下的方法一和方法二是 84. 柱状图中最…

你还在花钱看短剧吗?这些人做短剧推广已经通过短剧赚钱了

短剧分销,简单来说,就是你在抖音、快手、小红书等短视频平台浏览时看到的一半时,指引你去其他平台观看完整版的操作。 而使用“蜂小推”做短剧推广,你也能利用短剧快速致富~ 想要进行短剧分销,你需要经过一系列步骤&a…

23.python标准库之turtle库

一、窗体函数 turtle.setup(width, height, startx, starty) width:窗口宽度 height:窗口高度 startx:窗口与屏幕左侧距离(单位象素) starty:窗口与屏幕顶部距离(单位象素) 二、画笔状态函数 三、画笔运动函数

理清大数据技术与架构

大数据并不是一个系统软件,更不是一个单一的软件,它实际上是一种技术体系、一种数据处理方法,甚至可以说是一个服务平台。在这个技术体系中,涵盖了许多不同的部件,比如Hadoop服务平台。这一服务平台可以根据具体情况自…

Mybatis-Plus通用枚举介绍和使用

本文使用的是 Mybatis-Plus 从 3.4.2 版本来实现通用枚举配置,不同的版本,通用枚举配置会不一样,而且从Mybatis-Plus 从 3.5.2 版本开始只需使用 EnumValue 注解枚举属性,就可以实现一系列功能,而不需要其他配置。 这…

【python】python结合js逆向,让有道翻译成为你的翻译官,实现本地免费实时翻译

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者等等。 🏆《博客》:Python全栈,前后端开发,人工智能,js逆向,A…

Spring Cloud 整合 GateWay

目录 第一章 微服务架构图 第二章 Spring Cloud整合Nacos集群 第三章 Spring Cloud GateWay 第四章 Spring Cloud Alibaba 整合Sentinel 第五章 Spring Cloud Alibaba 整合SkyWalking链路跟踪 第六章 Spring Cloud Alibaba 整合Seata分布式事务 第七章 Spring Cloud 集成Auth用…

Jenkins通知目标服务器拉取Harbor镜像部署

1.告诉目标服务器拉取哪个镜像 2.判断当前有没有正在运行此容器,有就删除 3.接着查看拉取的镜像目标服务器上是否已存在,有就删除 4.拉取Harbor镜像 5.运行容器 目标服务器编写脚本 创建个部署脚本 vim deploy.sh告诉目标服务器Harbor地址、仓库、镜像…

零基础学python:5、循环语句的使用

循环 目标 程序的三大流程while 循环基本使用break 和 continuewhile 循环嵌套01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行代码分支 —— 根据条件判断,决定执行代码的 分支循环 —— 让 特定代码 重复 执行02. while 循环基本使用…

基于卷积神经网络实现手写数字识别

基于卷积神经网络实现手写数字识别 基于卷积神经网络实现手写数字识别。具体过程如下: (1) 定义ConvNet结构类及其前向传播方式 (2) 设置超参数以及导入相关的包。 (3) 定义训练网络函数和绘…

R语言实现多要素偏相关分析

偏相关分析是指当两个变量同时与第三个变量相关时,将第三个变量的影响剔除,只分析另外两个变量之间相关程度的过程,判定指标是相关系数的R值。 在GIS中,偏相关分析也十分常见,我们经常需要分析某一个指数与相关环境参…

基于Java中的SSM框架实现快餐店线上点餐系统项目【项目源码+论文说明】

基于Java中的SSM框架实现快餐店线上点餐系统演示 摘要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现,不仅增加了商户的销售量和营业额,而且为买家提供了极大的方便,足不出户,就能订…

Docker进阶教程 - 4 Docker网络

更好的阅读体验:点这里 ( www.doubibiji.com ) 4 Docker网络 先说我们现在遇到的问题: 我们现在有一个 Redis 容器,一个 SpringBoot 项目容器,在 SpringBoot 项目的代码中如何访问 Redis 容器中的服务呢…

Harbor镜像仓库的安装和使用

1 Harbor安装 参考文章: 银河麒麟v10离线安装harbor 由于配置了本地私有yum源,因此,直接使用yum命令安装docker和docker-compose 1.1 安装docker yum install docker-ce1.2 安装docker-compose yum install docker-compose1.3 安装harbo…

服务器被挖矿后修改密码报错Authentication token manipulation error

服务器被挖矿,需要修改密码,结果执行的时候发现报错 passwd: Authentication token manipulation error 尝试执行下列命令后再进行密码修改,修改成功 chattr -i /etc/passwd /etc/shadowchattr的主要用法 参考文章: https://c.biancheng.ne…

GEE遥感云大数据林业应用典型案例及GPT模型应用

近年来遥感技术得到了突飞猛进的发展,航天、航空、临近空间等多遥感平台不断增加,数据的空间、时间、光谱分辨率不断提高,数据量猛增,遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…