【电机控制】PMSM无感FOC控制(三)SVPWM

2024-03-03 06:40
文章标签 控制 电机 foc 无感 pmsm svpwm

本文主要是介绍【电机控制】PMSM无感FOC控制(三)SVPWM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 前言

        本章节会详细介绍SVPWM,计划在下一章讲解过调制。学完这一章你就会理解第一章里面PID控制器输出的dq轴电压经过变换后得到的αβ轴电压的真正含义,为什么会会输出αβ轴电压,αβ轴电压是怎么被SVPWM利用的。

        之前我们讲过FOC是磁场定向控制,在进入SVPWM之前我们要清楚,这个定向的磁场是由什么产生的?怎么被控制的?

定向的磁场是由什么产生的?        

        上图是电机的刨面图,可以看到电机的定子是由一圈圈的线圈组成的,当线圈中有电流流过时就产生了磁场。那么要产生定向的磁场就需要产生定向的电流,要产生定向的电流就需要定向的电压。空间矢量脉宽调制(SVPWM)产生电压矢量的激发出电流流过线圈的绕组,从而产生磁场矢量;生成的磁场矢量不断旋转就带动了电机转动。到这里我们已经知道了,磁场是怎么被产生的,它是由电压矢量激发出的电流流过线圈所产生的。

最后一个问题这个磁场是怎么被控制的?

        在描述这个问题以及进入后续的内容之前我们需要了解一些名词,端电压、线电压、相电压

端电压:端电压就是电机三相线端相对于GND的电压,A相端电压记作UA,B相端电压记作UB,B相端电压记作UC;

线电压:线电压就是相相之间的电压Uab = UA - UB,Ubc = ...;

相电压:相电压就是电机三相线端相对于连接点N的电压,UAN = UA - UN,UBN = ...;

        首先先大家要理解Uα和Uβ代表的是αβ坐标系下的一个电压矢量。其次要理解FOC是磁场定向控制。线圈中有电流流过时就会产生磁场,所以我们要产生一个定向的磁场时就需要控制电机的三相上的相电流,通过控制三相静止坐标系中的三相电流我们就可以产生出在这个平面内的任意方向的磁场,这样就可以完成磁场的定向控制。那怎么控制三相的电流呢?那就是通过控制三相的相电压,不同大小的相电压可以激励出不同大小的相电流。

        第一章节我们说了为什么foc的控制流程的最后是SVPWM,而不是反Clark变换,因为通过PID控制以及反Park变换后得来的Uα和Uβ刚好又可以反Clark变换成我们想要的三相电压UAN、UBN、UCN。但是我们通过逆变电路能直接控制三相电压吗?很显然是不能的,逆变电路控制的是三相的端电压,那我们怎么通过三相的端电压来控制三相的相电压呢?

        SVPWM刚好可以胜任这份任务,空间矢量脉宽调制(SVPWM)中的空间矢量指的就是磁场矢量,这个磁场矢量是由电压矢量产生的。Uα和Uβ代表的是αβ坐标系下的一个电压矢量,SVPWM通过控制逆变器的开关状态(也就是控制端电压),合成所需电压矢量,从而产生转动电机转子所需的磁场矢量。


1. 什么是SVPWM

1.1 SVPWM的概念

        SVPWM(Space Vector Pulse Width Modulation)是一种空间矢量脉宽调制技术,也称为电压空间矢量脉宽调制技术。它是电力电子技术中一种非常重要的调制方法,广泛应用于交流电机控制、电力电子变换等领域。

        SVPWM的基本思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准,用逆变器不同的开关模式所产生的实际磁链矢量来追踪基准圆磁链矢量。具体实现方法是通过控制逆变器的开关状态,合成所需的电压矢量,使得电机的定子绕组中产生相应的电流矢量,从而产生所需的磁场矢量。

        相比于传统的SPWM方法,SVPWM具有更高的直流电压利用率和更好的动态性能,因此在电力电子领域中得到了广泛应用。


2. SVPWM(空间矢量脉宽调制)如何产生所需的空间矢量

2.1 合成空间矢量需要的八个基础矢量

        前面我们说过SVPWM通过控制逆变器的开关状态(也就是控制三相的端电压),合成所需电压矢量,从而产生转动电机转子所需的磁场矢量。在了解具体的合成过程之前我们首先要了解合成空间矢量所需要的8个基本矢量8个基本矢量对应的驱动电路的6个开关管的状态、以及8个基本矢量对应的相电压

        首先我们知道电机驱动器的逆变电路有六个开关管,每两个开关管对应控制电机的一相的端电压,M1、M2控制A相的端电压UA,M3、M4控制B相的端电压UB,M5、M6控制C相的端电压UC。

        我们可以定义一个开关函数Sx (x = a, b, c),当Sx等于1时代表x相的上管导通,下管断开(x相的端电压等于Vdc);当Sx等于0时代表x相的上管断开,下管导通(x相的端电压等于GND)。

        Sa = 1代表M1导通,M2断开,Sa = 0代表代表M1断开,M2导通;

        Sb = 1代表M3导通,M4断开,Sb = 0代表代表M3断开,M4导通;

        Sc = 1代表M5导通,M6断开,Sc = 0代表代表M5断开,M6导通。

        上下管是不能同时导通的,上管导通时下管就只能关断,下官导通时上管就只能关断,因为如果上下管同事导通了,那么Vdc就和GND直接接到了一起,电源就短路了,会烧坏电路以及电源。

        那么通过对这三对开关管的状态进行组合我们就能得出8种不同的状态,这8种不同的状态代表了8个基础矢量Vx(x = 0,1,2,3,4,5,6,7),x的值与开关管的状态相关,我们可以把开关管的状态看成一个三位二进制数,Sa代表最高位,Sc代表最低位,当Sa = 1,Sb = 0,Sc = 0时x = 100(二进制表示),换算成十进制表示就是x = 4;

        接下来我们要去计算这8种状态下的三相的相电压(计算这八个基础矢量的相电压是为了在三相静止坐标系(A-B-C)内画出这八个基础矢量),首先来分析V4(100)矢量的相电压情况,V4矢量代表着A相的上管导通,下管断开(A相端电压等于Vdc);B相的上管断开,下管导通(B相端电压等于GND),C相的上管断开,下管导通(C相端电压等于GND)。

        因为三相星型电机一般都是对称绕组,相电阻一样,所以我们可以化简上图,用R代表三相绕组的阻抗如下图:

        根据分压的原理可得出以下结论:

        UAN = 2/3Vdc;

        UBN = -1/3Vdc;

        UCN = -1/3Vdc;

        另外七种矢量的相电压推导过程同上,最后我们能得出如下表格:

2.2 SVPWM的六个扇区

         在第一章我们学了三个坐标系,其中有一个坐标系叫做三相静止坐标系(A-B-C),现在我们知道每个基础矢量对应的相电压,就可以在这个坐标系以三相的相电压为坐标轴中画出这8个基础矢量。

        根据三相系统向两相系统变换保持幅值不变的 原则定子电压的空间矢量可表示为:

       

式中

        我们首先根据上面的表格在坐标系(正半轴用实线表示,负半轴用虚线表示)里画出V4矢量的各个相电压:

        根据矢量合成的平行四边形法则,我们最终得到了一个在A轴正方向上,大小为Vdc的矢量,由于等幅值变换需要乘以一个2/3的系数,最终得到的矢量大小为2/3Vdc,如下:

        我们按照上述的方法画出另外七个矢量,最终得到了如下的图形(其中V0和V7是坐标系零点上的两个点):

        然而光只有这八个矢量还是不行的,SVPWM的目的是要在这个平面空间里面产生更多的矢量轨迹,从而使得电机平滑转动。

        为了讲解后面的如何在这个平面内合成任意矢量,我们需要回顾一下PWM来做个过渡,我们知道如果电源电压为10V我们想得到1v的电压需要使用PWM脉宽调制,调整一个载波周期内高电平占空比为10%,如果想要得到10v的电压就要调整一个载波周期内高电平的占空比为100%。

        SVPWM也是类似的思想,如果想在平面内得到方向与V4的矢量相同,大小为2/3Vdc大小的矢量,那我们必须控制开关管处于Sa = 1,Sb = 0,Sc = 0的状态持续一整个载波周期;如果想得到方向与V4的矢量相同,大小为1/3Vdc大小的矢量,就需要控制一个载波周期内的V4矢量的作用时间占整个载波周期的50%(也就是开关管一半时间为100状态),零矢量(V0和V7矢量称为零矢量)的作用时间占到50%(一半时间为111和000的状态)。

        回到上面的图,这六个矢量将这个平面空间划分成了六份,这个平面内我们想合成的任意一个矢量都会落在这六个扇区的其中一个扇区,并且任意一个扇区的矢量我都可以通过这个扇区的两个矢量来合成,比如扇区1内的矢量我们可以通过调整V4、V6以及零矢量(V0、V7)的作用时间来合成。

2.3 SVPWM空间矢量的合成

2.3.1 矢量的合成       

        接下来我们定义载波周期为时间T,按照我们之前讲的,我们控制开关管处于100状态持续一整个载波周期T就能得到与V4矢量方向相同,大小为2/3Vdc的矢量。如果我们想在扇区一与α轴夹角30°的地方生成下图的黑色矢量(矢量长度为√3/3Vdc)。就需要先控制开关管处于100状态(V4矢量)作用1/2T,然后再控制开关管处于110状态(V6矢量)作用1/2T的时间,这样我们就能生成一个与黑色箭头方向一致的磁场。

        如果我们是想在扇区一与α轴夹角30°的地方合成长度为√3/6Vdc矢量,那是不是先控制开关管处于100状态(V4矢量)作用1/4T,然后再控制开关管处于110状态(V6矢量)作用1/4T的时间,最后留下的1/2T的时间控制开关管处于000和111的状态(零矢量)。

        第一个矢量(V4)的作用时间是t1 = 1/4T;

        第二个矢量(V6)的作用时间是t2 = 1/4T;

        零矢量(V0、V7)的作用时间是t0 = 1/2T;

        现在大家理解SVPWM是怎么合成矢量了吧,其实就是在控制开关管不同的状态持续时间,从而合成出平面内的矢量。

2.3.2 矢量的合成的范围

        上面一节我们知道了SVPWM调制怎么合成不同的电压矢量,那通过上述的方法我们可以合成这个平面内的任意一个矢量吗?

        解答上个问题之前,我们先达成一个共识,SVPWM调制是为了产生不同的电压矢量合成,产生的一个在空间中旋转的电压矢量的轨迹,从而产生一个旋转的磁场带动电机转子转动。这个轨迹是个圆形,我们把它叫做矢量圆,它的半径反映了在标准的SVPWM调制下,能够达到的最大电压矢量幅值。

        我个人理解这个矢量圆的半径反应了能够产生的磁场的大小,因为产生磁场是因为电流流过了线圈,电压矢量不会无限大,产生的电流也就不会无限大,因此生成的磁场也不会无限大。

        那么SVPWM调制的矢量圆的半径最大是多大呢?答案就是我们上一节里面合成的第一个矢量,它的长度为√3/3Vdc。

        那这是为什么呢?

        我们看下面的图,当三角形OAB的B点落在由边长为Vdc的六边形上时,我们OA + AB刚好等于Vdc,也就是说:

        矢量OA的作用时间t1 + 矢量AB的作用时间t2 = 载波周期T;

        这也就表明了,我们不能合成超过这个六边形范围外的矢量,那我们矢量圆的半径是不是就确定了就是这个六边形的内切圆,半径为√3/3Vdc。

        当然通过某些手段我们可以把矢量圆的半径拓宽到Vdc,这个方法就是过调制,这个我们后面再讲。

2.4 如何求解SVPWM基础矢量的作用时间

        假设我们要合成如图所示的扇区1中的矢量OB,我们怎么求出矢量V4的作用时间t1和矢量V6的作用时间t2?

        首先我们知道三角形的每条边与它对角的正弦值的比值相等即:

        我们可以知道∠CAB = π / 3,那么∠OAB = 2π / 3,∠ABO =  π / 3 - θ;代入上式得:

        先分析  ,把代入得:

        接下来方法分析,把代入得:

        上面t1、t2得等式中T、Vdc是已知的,那么我们只要知道|OB|以及θ的值就能求出t1、t2的值了。

        大家回想一下第一章我们讲的FOC框图里面SVPWM模块的输入是什么?

        是不是Uα和Uβ?那么通过Uα和Uβ我们能不能算出t1、t2?

        答案是可以的,因为|Uα| = |OB| * cosθ,|Uβ| = |OB| * sinθ,那么上面t1、t2的式子就可以化简为:

        同理我们能计算出另外五个扇区的t1、t2矢量的作用时间如下表:

(把公式前面的系数用X表示)

        既然我们知道了每个扇区的矢量都是有两个基础矢量和零矢量合成出来的,在知道两个基本矢量的作用时间后,就可以求出零矢量的作用时间t0 = T - t1 - t2。


3. 七段式SVPWM

        以上图为例,我们要合成该黑色的矢量,矢量V4和矢量V6的作用时间是0.25T,矢量V4的作用时间为t1,矢量V6的作用时间为t2,零矢量的作用时间为t0。

        根据t0 + t1 + t2 = T,可得t0 = 0.5T,通过之前的知识我们可以得知零矢量分为两种分别是V0(000)和V7(111),在这0.5T的时间内V0和V7各自作用力0.25T的时间。

        什么式七段式SVPWM?就是我们把一个周期T划分成7段,每一段对应着一个矢量状态,通过七次矢量合成最终得到目标矢量。

        既然通过七段式合成上面需要4个矢量(V4、V6、V0、V7),这4个矢量对应着六个管子不同的动作,功率管要开关那肯定会开关损耗,因此我们需要找出一种开关损耗最小的开关方式。

为了保证这七个状态切换时,开关损耗最好,我们每次要尽可能让开关的动作次数最少。

如下下图(下图的波形我们可以看成Sa、Sb、Sc的状态,也可以看成三个上桥臂的PWM波的波形):

        我们要合成扇区1里面的黑色矢量,分7段(其实图中的时间段分为了八段,但是中间的111连续视为一段,这样的话就只有七段了):

                第1段:合成矢量V0(000)作用时间1/8T(t0/4);

                第2段:合成矢量V4(100)作用时间1/8T(t1/2);

                第3段:合成矢量V6(110)作用时间1/8T(t2/2);

                第4段:合成矢量V7(111)作用时间1/4T(t0/2);

                第5段:合成矢量V6(110)作用时间1/8T(t2/2);

                第6段:合成矢量V4(100)作用时间1/8T(t1/2);

                第7段:合成矢量V0(000)作用时间1/8T(t0/4);

        每一段切换时我们都只改变了Sa、Sb、Sc其中的一个状态,也就是只改变了一个半桥上的两个开关管,如果我们把第3段和第2段对调,那么开关的次数是不是就增多了,开关损耗就增加了。

        总结一下六个扇区内各自矢量的合成方式如下(可以看成三相上的PWM每个载波周期内的占空比中心对称):

        那么有人可能会疑惑了,既然都是零矢量,那作用效果都是一样的为什么不只用其中一个矢量?这就是七段式和五段式SVPWM的区别了,七段式的零矢量多一个,开关管的切换次数会比五段式多,开关损耗会比五段式大,但是七段式的谐波会比五段式小。在这里我们只讲七段式,对五段式感兴趣的小伙伴自己下去可以了解一下。

4. 总结

本章主要讲了SVPWM的原理、各个矢量作用时间的推导、七段式调制方式;没有讲解如何讲SVPWM如何和MCU的PWM模块结合,感兴趣的可以自己去看看科学出版社出版 上官致远 张健编著的《深入理解无刷直流电机矢量控制技术》,里面有结合stm32的PWM模块做详细的讲解。

这篇关于【电机控制】PMSM无感FOC控制(三)SVPWM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版