整体撸一遍PMSM的滑模观测器(SMO)公式+模型+代码

news2024/9/23 5:33:41

 滑模的基本原理参照这一系列文章:

 滑模系列文章链接:

永磁同步电机矢量控制到无速度传感器控制学习教程(PMSM)(一)

永磁同步电机矢量控制基础补充(五)——什么是低通滤波器?

永磁同步电机无速度传感器控制(一)——滑模观测器(一)【位置估计原理】

永磁同步电机无速度传感器控制(一)——滑模观测器(二)【滑模观测器设计过程】

永磁同步电机无速度传感器控制(一)——滑模观测器(三)【由扩展反电势得到电机位置和速度信息】

永磁同步电机无速度传感器控制(一)——滑模观测器(四)【仿真搭建及其结果分析】

该文章中包含其他滑模观测器更为详细部分的讲解链接。在进入代码学习之前,可以先对这个部分进行阅读与学习。

本篇文章意图记录模观测器代码学习和调试过程。在此先仅考虑表贴式(隐极)电机,即Ld = Lq。

1、电机公式模型及观测器的设计原理

根据前面的一些基础的理解,滑模观测器观测器最终得到角度的方法是对反电动势 Ealpha 和 Ebeta 求取反正切得到的,因此需要分析的数学模型将从矢量控制中的dq坐标系转到 alpha-beta 两相静止坐标系中,两相静止坐标系的电压方程如下所示:

 其中反电动势的表达式如下所示:(注意这些分析都是基于表贴式永磁同步电机Ld=Lq,需要研究凸极电机的这个公式并不适用)

 由于电压一般进作为激励物理量,而电流才是响应物理量,另外由于电机电流模型中包含常微分方程形式(y'  = f (x,y) ),这种形式的观测器结构更利于稳定性的推导与证明。因此电机中观测器的设计一般是基于电流模型。博客中介绍的MARS其实也是一种电流模型,其稳定性推导就是基于常微分方程展开的popov稳定性理论,滑模也选择这个模型进行。为此将上面两个公式所示的电压模型进行一定的公式变化,得到如下图所示的电流方程:

 依据电机模型,等阶次的、格式对应的建立滑模观测器模型,如下所示:

 其中观测所得的反电动势表达式如下图所示:

误差方程表达式为(用估测模型 - 实际电机模型)

2、滑模观测器的稳定性分析

一个观测器能否渐进稳定是决定观测器是否能够使用的关键,上面虽然设计了滑模观测器结构,但是它具体能不能够正常使用,还是一个未知的问题。因此有必要对齐进行稳定性证明。稳定性的证明需要用到李雅普诺夫稳定性理论中的稳定性判据。

李亚普诺夫稳定性理论基于李亚普诺夫函数的概念,该函数是一个实值函数,能够度量系统状态的变化情况。根据李亚普诺夫函数的性质,可以推导出系统的稳定性条件。如果李亚普诺夫函数对于系统的所有状态都是非正的,并且在系统中存在一个李亚普诺夫函数值为零的稳定点,那么系统就被认为是稳定的。

简单来说,如果平衡状态 x 受到扰动后,仍然停留在 x 附近,我们就称 x 在李雅普诺夫意义下是稳定的(Lyapunov stable)。

更进一步,如果平衡状态 xe 受到扰动后,最终都会收敛到 x ,我们就称 x 在李雅普诺夫意义下是渐进稳定的(Asymptotically stable)。

再进一步,如果平衡状态 x 受到任何扰动后,最终都会收敛到 x ,我们就称 x 在李雅普诺夫意义下是大范围内渐进稳定的(Asymptotically stable in large)

由于滑模是基于开关函数的,因此滑模观测器并不属于一种线性系统,属于非线性系统。因此应用李亚普诺夫第二法较为合适(李亚普诺夫第一方法需要讨论线性化系统的特征值分布来研究原非线性系统的稳定性问题,这是一种间接的证明方法也称间接法)。李亚普诺夫第二法的判据为:

  1. 李亚普诺夫第二法则:对于连续时间系统,如果存在一个连续可微的李亚普诺夫函数V(x),满足以下两个条件:

    • V(0) = 0,当且仅当 x = 0 时成立。
    • V(x) > 0,对于所有 x ≠ 0 成立。
    • 对于系统的状态变化,V(x) 的导数满足 dV(x)/dt < 0,即 V(x) 随时间递减。

    则系统是渐近稳定的。总结成方程形式就是  

通过李亚普诺夫第二法则,能够证明稳定的系统能量总是不断被耗散的,李雅普诺夫通过定义一个标量函数 V(x)(通常能代表广义能量)来分析稳定性。这种方法避免了复杂的方程求解和线性化,直接证明系统的稳定性,因此称为直接法。对于滑模观测器(其他观测器也类似),稳定判据中的V(x)其实就是误差函数。因为误差函数代表了系统的熵增和熵减,对应李亚普诺夫函数的能量耗散原理。

误差函数为:

 根据电流方程及电流误差方程:

可以推出:

β轴的与此同理,满足下面条件即可证明稳定性:

由于平方项必定大于0,因此得到如下推导:

 最终得到系统稳定的条件为

 这样就能产生滑动运动,这样误差动态方程就是渐进稳定的,也就保证了滑模观测器的全局稳定性,用起来就不担心。

3、连续域仿真模型的搭建

3.1 滑模前期的仿真基础

依据上述阐述的原理对仿真模型进行搭建,验证算法的有效性。首先需要准备一个基础的双闭环仿真,先尝试用实际速度做闭环时,滑模是否能够估计到真实转速。电机参数如下图所示。

3.2 搭建滑模观测器 

在此基础上搭建滑模观测器,避免大家上面再去翻,再次粘贴一次公式:

 3.3 滑模参数调试

滑模观测器中除了电机参数需要填入外,还需要填入两个关键参数——滑模增益和低通滤波器戒指频率。由于本文所使用的电机母线电压只有24V,反电动势比不可能大于24,根据前文稳定性推导部分可知,设置滑模增益为24系统必定处于全局可收敛。本仿真系统的开关频率时10kHz,电机额定频率为250Hz,因此考虑设置滑模后端的低通滤波器为中间值即1000Hz(1000Hz对应的wc = 1000*2*pi = 6280)。带入上述参数进行调试,下图为观测所得Ealpha和Ebeta波形。

 根据上图所示波形,可知该滑模观测器已基本实现反电动势波形的观测,但是明显可以看到此时的波形毛刺较大,抖振较为严重,考虑降低滑模增益调试。初始给定的24V仅仅是一个较为保守的值,将其缩小根号3倍,即 24/1.732 = 13.85。该滑模增益时反电动势波形如下图所示,此时抖振已被减小的较小了。

 此时仍然存在的一些谐波是滑模观测器自身在上下滑动过程中造成的,并非滑模增益设置不够合适,而是低通滤波器的截止频率可能太高了,许多谐波没有被滤掉。因此考虑降低低通滤波器的截止频率到2倍额定频率 = 250Hz*2 = 500Hz,将其转化为wc = 500*2*pi = 3140。反电动势波形如下图所示,其实调到如下程度就可以了,可进行转速和位置的提取。

  3.3 基于反正切函数的转子位置角度提取

根据电机反电动势表达式,对反电动势求反正切即可得到电机的角度信息。

 电机转子位置表达如下所示:

 搭建仿真实现其过程,仿真模块搭建如下图所示:

         此时将电机转子位置角与滑模估算角度放在一个示波器中进行观察,如下图所示,此时波形非常的奇怪,电机位置角(红色)一直在累加,这是因为simulink仿真自带的PMSM模块出来的电角度就是会一直叠加,为此我们需要在其前级加上一个取余函数。编写一个s-function或者搭建一个取余模块,为什么这里写出来呢,因为我在这里被坑了好久,有的版本找不到mod模块,最好用s-function写一个mod()函数的处理一下。

         最终得到的转子位置对比图如下图所示:

         由于arctan函数的输出值(-pi/2,pi/2),其函数图像如下图所示。

        需要具体的分析 arctan函数输出值与实际电机位置角的关系,当acrtan(-Ealpha /Ebeta) = 1时,实际存在两个可能的结果,一个是pi/4,一个是5pi/4,因为sin(pi/4) = 0.707 ,cos(pi/4)=0.707,但是sin(5pi/4)=-0.707,cos(5pi/4)=-0.707。因此仅凭acrtan(-Ealpha /Ebeta) = 1无法确定具体是pi/4还是5pi/4,根据一系列推论总结可得

其模块代码为:

function y = fcn(Ealpha,Ebeta,Acrtan)
%#codegen
x = 0;
if Acrtan > 0 
    if Ebeta < 0
        x = pi + Acrtan;
    elseif  Ebeta > 0
        x =  Acrtan;
    elseif Ebeta == 0
        x = 0.5*pi;
    end
elseif Acrtan<0
    if Ebeta < 0
        x = pi + Acrtan;
    elseif  Ebeta > 0
        x = 2*pi + Acrtan;
    elseif Ebeta == 0
        x = 1.5*pi;
    end
elseif Acrtan == 0
     if Ebeta < 0
        x = pi;
    elseif  Ebeta > 0
        x = 0;
     elseif Ebeta == 0
        x = 0;
    end       
end
y = x;

 最终结果对比,蓝色为滑模观测器结果,黄色为电机实际角度,可以看到基本一致,由于低通滤波器的存在,有一定的延迟。

     低通滤波器造成的延迟会影响电机转子位置的准确性,因此需要对这个延迟进行一定的补偿,其实低通滤波器的截止频率我们是知道的,补偿这个延迟理论上是较好进行的。j将低通滤波器的传递函数转化为幅频和相频公式可得:

         将滑模所用的低通滤波器传递函数转换一下可得:

         其相位延迟等于:

         最终得到补偿相位公式为:

         将其补偿到输出电机角度上后结果如下图所示,估算角度基本与实测电机角度重合。但是此时我的补偿角度是拿电机实际we算出来的,所以波形效果相当好。(注意这里如果直接补偿上去,会导致出现大于2pi的角度,此时就需要稍微处理一下,把超出2pi的角度转为小角度,也就是减去2pi即可)

         实际是需要通过反电动势去算取we,其计算公式为:

         最终观测输出结果如下图所示,效果也是挺好的。 

整体获取角度+补偿过程的仿真截图如下图所示

最终实现转速闭环控制效果如下图所示:

四、滑模观测器的离散化

        仿真中可以按照连续模型去搭建,在代码中则必须考虑MCU的离散环境,先看连续域的电机电流方程,如下图所示。式子中 R 代表定子电阻,L 为定子电感,Valpha 为两相静止坐标系下的alpha 电压,ealpha 为两相静止坐标系下的 alpha 反电动势。根据 ealpha 和 ebeta 的表达式可知假如能够观测反电动势的大小,对齐求反正切即可得到电机电角度信息。

依据前向欧拉方程进行离散化推导,离散化操作可参照这篇文章。

数字滤波器的实现——低通滤波器再探究_低通滤波器差分方程_沉沙丶的博客-CSDN博客

        

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

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

相关文章

【MSP432电机驱动学习—上篇】TB6612带稳压电机驱动模块、MG310电机、13线霍尔编码器

所用控制板型号&#xff1a;MSP432P401r 今日终于得以继续我的电赛小车速通之路&#xff1a; 苏轼云 “ 素面常嫌粉涴 &#xff0c; 洗妆不褪朱红。 ” 这告诫我们不能只注重在表面粉饰虚伪的自己&#xff0c;要像梅花一样&#xff0c;不断磨砺自己的内在~ 后半句是 “…

记录一次磁盘修复的过程

系统无法远程ssh进入&#xff0c;连接显示器查看终端&#xff0c;发现如上错误。 开始按照网上的流程进入单用户模式&#xff0c;fsck命令始终没找到。看来切换的方式不对。经过一番查阅&#xff0c;最终找到了&#xff0c;原来进入单用户有好几种模式&#xff0c;大家普遍记住…

存储笔记11 商业连续性

Introduction to Business Continuity Ÿ Define Business Continuity and Information Availability Ÿ Detail impact of information unavailability Ÿ Define BC measurement and terminologies Ÿ Describe BC planning process Ÿ Detail BC technology solutions 何为…

C语言标准库(常用函数)详解(含示例)数学公式:math.h

目录 math.h的介绍 math.h的概述 库中定义的宏&#xff1a; HUGE_VAL 库函数&#xff08;只讲解常用函数&#xff09; 三角函数 示例代码 输出 双曲函数 示例代码 输出 指数和对数函数(只含常用函数) 示例代码 输出 常用函数pow&#xff0c;sprt&#xff0c;cbrt&…

监督学习和无监督学习

文章目录 监督学习和无监督学习监督学习算法包括无监督学习算法包括OpenCV十个子类举例&#xff1a; 监督学习和无监督学习 监督学习和无监督学习是机器学习领域中两种不同的学习范式&#xff0c;它们之间的区别在于数据的标签或标记的可用性以及学习任务的性质。 监督学习&am…

与chagpt对话记录

每日chagpt对话记录 关注我一下 vscode 浏览器版本 c 函数 无法跳转 C/C IntelliSense, debugging, and code browsing. C/C IntelliSense、调试和代码浏览是指在使用VS Code进行C/C开发时的一些核心功能。下面是对这些功能的简要说明&#xff1a; IntelliSense&#xff08;智能…

CSS基础学习--18 导航栏

一、导航栏链接列表 作为标准的 HTML 基础一个导航栏是必须的。 在我们的例子中我们将建立一个标准的 HTML 列表导航栏。 导航条基本上是一个链接列表&#xff0c;所以使用 <ul> 和 <li>元素非常有意义 <!DOCTYPE html> <html> <head> <…

山西电力市场日前价格预测【2023-06-19】

日前价格预测 预测明日&#xff08;2023-06-19&#xff09;山西电力市场全天平均日前电价为396.37元/MWh。其中&#xff0c;最高日前价格为468.17元/MWh&#xff0c;预计出现在21: 45。最低日前电价为345.23元/MWh&#xff0c;预计出现在13: 00。 以上预测仅供学习参考&#x…

端口进程内存查看操作(linux、windows)

一 windows操作命令 1、查看某个端口的信息 netstat -aon | findstr "端口" 2、查看PID对应的应用程序名 tasklist | findstr "PID" 3、taskkill /f /t /im 进程名称 然后结束该进程&#xff1a;taskkill /f /t /im 程序名.exe &#xff08;当然你也…

SpringBoot第12讲:SpringBoot接口如何对参数进行校验

SpringBoot第12讲&#xff1a;SpringBoot接口如何对参数进行校验 本文是SpringBoot第12讲&#xff0c;使用SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的&#xff0c;同时还需要给出校验的返回信息&#xff0c;放到上文我们统一封装的结构中。那么如何…

经典问题解析一

关于 const 的疑问 const 什么时候为只读变量&#xff1f;什么时候为常量&#xff1f; const 常量的判别标准 只有用字面量初始化的 const 常量才会进入符号表 (const 引用除外) 使用其他变量初始化的 const 常量仍然是只读变量 被 volatile 修饰的 const 常量不会进入符号…

TOGAF10®标准中文版--(架构开发方法)开发周期

1.2.1 关键点 以下是关于 ADM 的关键点&#xff1a; ADM 在整个过程中、阶段之间和阶段内都是迭代的&#xff08;参见TOGAF 标准 — ADM 技术&#xff09; 对于 ADM 的每次迭代&#xff0c;都必须做出新的决定&#xff1a; — 企业覆盖范围待定 — 要定义的详细程度 — 目…

ETCD安装部署与etcdctl常用命令

ETCD安装部署与etcdctl常用命令 单机部署集群部署静态配置服务发现etcd自发现模式DNS自发现模式 etcdctl常用命令key的常规操作key的历史与watchwatch压缩 租约 etcd常用配置参数member相关参数cluster相关参数proxy相关参数安全相关参数日志相关参数不安全相关参数统计相关参数…

存储笔记10 虚拟化

存储虚拟化 识别不同的虚拟化技术 描述块级虚拟化技术 描述文件级虚拟化技术 讨论虚拟资源调配 Virtualization Overview 何为虚拟化 物理资源抽象到逻辑视图IT利用率和表现集中/共享资源简化资源管理减少停机时间 planned or unplanned 提高IT资源性能 虚拟内存虚拟网…

如何下载并安装Ubuntu22.04

Info 用于帮助不熟悉Ubuntu的朋友安装Ubuntu系统。 Herman Ye Auromix 2023-06-18 1.下载Ubuntu镜像 首先&#xff0c;前往Ubuntu官网下载镜像。 选择 Ubuntu 22.04.2 LTS&#xff0c;点击Download 22.04.2进行下载。 2.准备镜像烧录工具 前往balena官网下载烧录工具. 点击…

ER图和对应关系模式(只写关键)

本图用Visio进行绘图&#xff1a; ●矩形框内表明实体名 ●菱形框内表明联系类型 ●椭圆框内表明属性&#xff0c;可以是实体的属性&#xff0c;也可以是联系类型的属性 ●关键码的属性&#xff0c;在属性名下加下划线 ER图转关系模式说明&#xff1a; ER图中间含1&#xf…

永磁同步直线电机学习笔记——什么是直线电机?

永磁同步直线电机&#xff08;Permanent Magnet Linear Synchronous Motor&#xff0c;简称PMLSM&#xff09;是一种电动机&#xff0c;它通过将永磁体和线圈组合在一起&#xff0c;将电能转化为机械运动。与传统的旋转电机不同&#xff0c;PMLSM是一种直线运动电机&#xff0c…

AI 绘画(2):Ai模型训练,实现“人物模型“自由

文章目录 文章回顾感谢人员题外话Ai绘画公约Ai模型训练硬件要求显存设置查看显存大小显存过小解决方法 视频教程前期准备SD配置设置SD设置配置SD训练配置pt生成训练集收集训练集要求截图软件推荐训练集版权声明一键重命名图片训练图片来源批量修改图片尺寸 开始训练导入训练集&…

mybatis02 CRUD

CRUD代表四个基本功能&#xff1a;创建&#xff08;Create&#xff09;、检索&#xff08;Retrieve&#xff09;、更新&#xff08;Update&#xff09;和删除&#xff08;Delete&#xff09;。它们是大多数应用程序所需要的最基本的持久化操作。 - 创建&#xff08;Create&…

【Java入门】-- Java基础详解之 [Java面向对象编程(初级)]

目录 1.类与对象 2.类与对象的区别与联系 3.对象在JVM内存中的存在形式(重要) 4.属性/成员变量/字段 5.如何创建对象 6.类和对象的内存分配机制 7.面向对象的三大特征&#xff1f; 8.面向对象和面向过程&#xff1f; 9.匿名对象 10.方法(method) 11.方法的重载(over…