电机控制学习之路:simulink仿真之龙伯格观测器+锁相环的参数设计

本文主要是介绍电机控制学习之路:simulink仿真之龙伯格观测器+锁相环的参数设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

        本例中使用的参数设计方法,主要思路为将状态观测器的系统矩阵(A+HC)的特征方程的解视作标准二阶系统传递函数的极点,然后根据不同的带宽设计观测器参数。就笔者的仿真结果来看只要带宽不设计的过于离谱,按本文的方法观测速度都能得到一个可用的结果。带宽越大时,观测器所得电角度的相位滞后越小,高频噪声带来的影响就越大。反之,观测器带宽越小,噪声越小,但是所得电角度相位滞后就越大。如果对观测器性能要求较高,还需要手动调整PI参数,或者换个更好的观测器模型。

        网上还有另一种常见的观测器参数设计方法,可以参考意法半导体的《STM32电动机控制应用系列讲座之三——ST MC SDK 5.x 相电流检测与重构 位置、速度信息获取》,链接:STM32电动机控制应用系列讲座之三:ST MC SDK 5.x 相电流检测与重构位置、速度信息获取 | STMCU中文官网

         从笔者的仿真结果来看,两种方法取得的效果基本相同。

         最后,如若本文有谬误之处,请于评论区指出,笔者会不断更正补充。

龙伯格观测器参数设计

一、龙伯格观测器观测原理

        龙伯格观测器即为状态观测器,它的原理可以参考《现代控制理论(第3版》(刘豹,唐万生) ,或者参考:STM32G0无刷电机控制--龙伯格观测器建立_哔哩哔哩_bilibili

        可以将一个线性系统表示为状态空间方程:

     

         对于 PMSM电机,其定子电流和反电动势模型如下:

         其中:

         我们可以将以上模型表示成状态空间方程的形式,首先,将两相旋转电流的微分和两相旋转反电动势的微分作为状态量,于是有:

        然后将两相旋转电压(已知的设定量)作为输入量矩阵, 两相静止电流(可用传感器测量的量)作为输出量矩阵:

                                        

        此后,通过对比观察我们建立的模型方程组可以得出状态转移矩阵A为:

         输入控制矩阵B为:

         最后,因为我们可以直接测出三相电流后直接转换成两相静止电流,且输出量中没有反电动势,所以C矩阵为:

         综上,我们根据物理模型和实际的测量量构建出了一个实际的系统,该系统的输入输出量皆为真实量。但是,该系统中包含了速度信息的反电动势部分是无法测量的。此外,从输入控制矩阵和输出矩阵中都没有三、四两行可知:我们无法直接通过输入输出构建出反电动势的值。

        因此,我们需要观测器来观测出无法直接得到的状态量。

        构造龙伯格观测器,首先需要构建出一个各个系数矩阵与实际系统相同的观测系统,形式仍为:

        然而,观测系统只有输入量是真实的已知的,状态量和实际系统测量得出的输出量均为“估计值”。

         显然,光有观测系统毫无意义,观测系统中不但同样无法得到反电动势的数值,甚至连实际系统中可以测量的电流量,在观测系统中也是一个不准确的任意值。

        于是,我们需要需要对观测系统中的各个状态量进行“修正”,修正的方法就是“反馈”:

        如图所示,上半部分为实际系统,有着真实的测量得出的输出量。真实输出量与下半部分中的观测系统的观测输出量的差值,乘一个反馈增益矩阵之后,和输入量一起修正状态量的观测值。

        于是有:

         

        重新观察A矩阵:

        显然,前两行系数错位但相同。后两行虽然系数不同,但是we是一个变化值,为了便于计算,都会作去耦(we=0)处理。去耦后,A矩阵后两行完全相等。于是,我们可以把原来四阶的A矩阵可以视作两个错位但系数相同的两阶的矩阵拼合而成(一、三两行;二、四两行),这就是龙伯格观测器的降阶处理。

        降阶后,反馈增益矩阵也变得只需要两个系数:h1、h2。

         

        此时,结合易得(A+HC)为反馈调节后观测系统的新状态转移矩阵,且有:

         于是,观测系统的状态量估计值与实际系统的状态量实际值的差值为:

         易知,只要(A+HC)这个状态转移矩阵的特征值均有负实部,该差值必然在经过足够长的时间后收敛到零,于是观测系统便得到了真实系统中各个状态量的实际值。   

        以上就是龙伯格观测器的原理,一句话概括:通过观测输出和实际输出的差值来修正观测系统的所有状态量,当观测系统中电流项修正到真实值(测量值)时,不可测量的反电势也会被修正到真实值。

二、龙伯格观测器反馈增益系数计算

法一:

        对于一个状态空间方程,其状态转移矩阵又被称为系统矩阵。系统矩阵的零、极点,即为系统传递函数的零、极点。

        在前文中,我们已经知道了加入输出反馈后,观测系统新的系统矩阵为:A+HC

        因此,令|λI-(A+HC)|=0,即可得出系统矩阵的特征方程:

         简单计算后可解出λ的值:

        为了使观测值和实际值差值最终能收敛到0,系统矩阵所有极点都应该具有负实部,于是h1、h2的值应该满足:h1<r/Ls,h2>0.

        对上式变形可知:

         于是,我们得到了反馈增益系数h1、h2与系统传递函数极点λ1、λ2的关系。

         然后,可以把系统视为一个有两个极点的二阶系统,参考胡寿松的《自动控制原理》:

        于是,h1、h2的值为:

        其中,阻尼比ξ可直接设为1,然后调节Wn的值即可:

        Wn的值取决于系统带宽和ξ,二者的关系为:

         带宽越大,对高频信号的响应越大,能使得系统响应速度提高,但是高频噪声的影响也会变大。

当带宽较小时,例如,将Wn设为600Hz时:

        速度观测效果:

        滤波后:

        角度观测效果:

当带宽较大时,例如,将Wn设为6000Hz时:

        速度观测效果:

        滤波后:

        角度观测效果:

         由上可知,带宽越大,角度观测效果越好。速度观测效果滤波后都差不多,影响不大,但是观测器带宽接近速度环带宽时,即使不滤波,响应曲线也足够平滑。

法二:

        可以直接参考意法半导体的《STM32电动机控制应用系列讲座之三——ST MC SDK 5.x 相电流检测与重构 位置、速度信息获取》,链接:STM32电动机控制应用系列讲座之三:ST MC SDK 5.x 相电流检测与重构位置、速度信息获取 | STMCU中文官网

         或者参考B站视频:STM32G0无刷电机控制--龙伯格观测器建立_哔哩哔哩_bilibili

        该方法会对状态空间方程通过向前欧拉的方式进行离散化,然后只需要选定不同的k值,然后即可根据公式计算h1、h2参数:

        

当k取1.5时:

        速度观测效果:

        滤波后:

        角度观测效果:

当k取4时:

        速度观测效果:

        滤波后:

        角度观测效果:

小结

        由上可知:两种方法就效果来说差不多,法二的k越大,相当于法一的带宽越大。相对来说,法一在设计h1、h2时可以设定的参数多了一个阻尼比ξ,且带宽的选择更直观。所以设计过程中法一更灵活,法二更方便。 此外,法二在设计时考虑到了离散步长,法一在设计时未进行离散化。所以法二可能拥有更好的效果?但是就笔者的仿真结果来看,未发现法二的观测效果有明显优势。

              

 锁相环参数设计

          锁相环的作用是提取龙伯格观测器观测出的反电动势信号中包含的角速度信息,并对其积分后得出电角度。

        模型获取可以去B站UP欧拉电子的个人空间_哔哩哔哩_bilibili的相关视频中扫码关注他的淘宝店铺后找客服获取,为避免影响UP主引流效果,本处只贴一个锁相环和龙伯格观测器连接结构。   

        网上有很多讲述锁相环结构和原理的文章,笔者建议参考这两篇:SPMSM控制——无感锁相环参数是怎么来的 - 知乎 (zhihu.com)

手撕系列(3):锁相环(SRF-PLL) - 知乎 (zhihu.com)

         锁相环结构如下:

        锁相环传递函数如下:

        显然:该锁相环为二阶系统

        PI参数计算公式如下:       

       其中,wc的位置上其实应该是自然频率wn,但是在这里被近似当做带宽wc来计算。带宽代表着系统的响应速度,带宽越大,响应越快,高频噪声影响越大。

        ξ是二阶系统阻尼比,主要影响超调量和调节时间。此处可参考胡寿松的《自动控制原理》:     

        ξ越大,衰减震荡过程受到的阻尼越大,对波形的影响如上图。

        

注意:

        1.带宽最好取速度环带宽的10%到20%,阻尼比取在0.707到1之间。

        2.就笔者仿真结果来看,锁相环参数主要影响观测器阶跃响应曲线的波形和曲线的平滑程度,对电角度的相位滞后产生的影响极小。

        3.观测器是否能成功观测速度信号,观测出的角度和实际角度之间的误差大小主要取决于观测器反馈系数矩阵。

        4.设计参数时应该优先确定好龙伯格观测器的反馈系数矩阵,待观测器能正常使用后再细调锁相环参数来得到一个较好的响应信号波形。
       

这篇关于电机控制学习之路:simulink仿真之龙伯格观测器+锁相环的参数设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290371

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]