首页/文章/ 详情

电机控制核心技术-PWM死区补偿(电压补偿法)

1天前浏览11

前言:在电机控制中,SVPWM必须要加入一段死区时间来防止IGBT的上下桥臂直通而造成炸机的可能。但死区时间的引入也会造成电机控制性能劣化,特别是在低速区域时造成电压、电流波形畸变。本期文章介绍一种基于电压补偿法的策略来降低死区时间的影响,并进行对应的验证说明该方法的可行性和有效性。    

一、PWM死区相关的背景介绍    

1、死区时间的设置:在一个特定的时间段,必须保持IGBT中控制极开关信号使得上下开关管都处于关断状态。这个时间段就称为死区时间。在PWM中只要保证上升沿滞后下降沿即可完成死区时间的设置,如图(1.1)所示。

图1.1 理想出发信号和实际开关信号  

2、设置死区时间带来的影响:在这段死区时间内,逆变器输出的每相极电压取决于每相的电流极性,并且此时的极电压已经不受控制。此外,死区会引起交流电机的输入电压和电流产生畸变,畸变的电流可能会导致转矩脉动并产生噪声。  

3、死区补偿的基本原则:通过考虑电流的极性和开关的开通关断顺序来调整控制极信号的宽度,使得输出的极电压与参考电压相同。  

4、死区补偿的要求:在绝大多数脉宽调制逆变器控制中都必须进行死区补偿,特别是参数精度要求较高的无速度传感器矢量控制以及通用变频器控制等,因此从实用性出发,设计一种无需添加很多硬件、简单通用、易于集成和移植的死区补偿算法显得尤为重要。  

二、死区效应分析  

电机是感性负载,电流不可突变。在死区时刻,电流会通过与开关管并联的二极管来续流。  

2.1 电流极性和方向的定义  

以逆变器中一桥臂的A相为例进行死区效应分析,如图(2.1)和(2.2),其负载为三相交流电机。受死区效应的影响,元件导通或关断时,逆变器的输出电压影响电流的极性。在理想状态下,功率管VT1和VT2的开关状态是互补的。但是置入死区时间Td后,功率管延迟Td才能导通(这里忽略了开关管的导通和关断时间)。因此,在死区时间内,VT1和VT2都处于关断状态。由于交流电机是感性负载,输出电流经过二极管续流。假设电流流进电机的方向为正,流出方向为负。在死区时间内,i>0时,VD2导通,相当于下桥臂开关管导通,a点连接到中间电压的负端(图2.1).同理,i<0,VD1导通,a点连接到中间电压的正端(图2.2)。  

2.2 死区效应分析  

图2.3 理想出发信号和实际设置死区的PWM开关信号  

一个载波周期内,开关管的理想与实际开关状态如图(2.3)所示。图中,Sa+和Sa-分别为上下管的触发导通信号,(a)和(b)为上、下桥臂的理想触发信号;(c)和(d)为实际开关信号,阴影部分时,上、下管均处于关断状态。i>0时,下桥臂二极管导通,就上管而言,输出正电压的脉冲宽度减少了Td,而下管的实际导通时间则比理想导通时间延长了Td。由于信号的互补性,下管的理想导通时间应该缩短Td,才能使实际与理想的相一致,从而保证实际脉冲与给定脉冲信号的一样性。同理可知,i<0时,补偿的方法是将上管的理想导通时间缩短Td。  

总结:根据电流的方向:+:上桥臂增加d/2(单边);-:上桥臂减少d/2.    

三、逆变器PWM死区补偿过程  

SVPWM逆变器控制是通过空间电压矢量合成的方法实现的,通过零矢量U0和U7的配置,可采用矢量合成的方法进行补偿。  

图3.1 电压空间矢量图  

假设三相电流ia、ib、ic相序为正负负(+--),以电压矢量合成的第一扇区为例进行分析,如图(3.2)所示。  

图3.2 第一扇区补偿前后触发信号图  

实线部分是原理想电压矢量作用区间。根据上述补偿方法,将Sa+的理想高电平延长Td,同理将Sb+、Sc+的理想高电平缩短Td。由于对称性,Sa+左半边和右半边各延长Td/2,Sb+、Sc+则各缩短Td/2。从图(3.2)中可以看出,在一个调制周期内,U2实际作用时间减少了2Td,U6实际作用时间延长了2Td,零矢量的作用时间无变化。由此可得到图(3.3)所示的矢量图:  

图3.3 补偿电压矢量合成图  


 


利用表1根据三相定子电流的极性进行电压补偿。一般来说,SVPWM是在alpha、beta轴系内完成调制算法的,也就是说进入调制的参考电压一般被转换为Ualpha和Ubeta。为方便计算,补偿的电压矢量也转换成alpha和beta轴系内的分量,例如U6comp的alpha、beta分量为:  

其它的补偿电压矢量也按照同样的方法进行分解。补偿后的参考电压矢量的alpha、beta分量分别为:  

四、三相定子电流极性的判断  

三相电流极性的准确判断是死区补偿的关键技术环节。由于检测到的电机电流谐波含量高,特别是低频状态下存在零电流钳位现象和脉宽调制噪声,利用直接检测电流过零点无法准确地判断出电流的极性。而通常采用的直接对定子电流进行滤波的方法也有局限性,滤波环节的引入使检测信号滞后,更增加了对电流极性实时检测的难度,严重的滞后甚至会导致死区的错误补偿。因此寻求一种简便而又适合死区补偿的方案至关重要。  

本期文章通过旋转坐标系变换,使三相定子电流的基波分量在同步旋转坐标系中表现为直流分量(对该直流分量进行滤波,对幅值和相位均不会产生影响),利用滤波后的直流分量可计算得到电流矢量的绝对位置角,以此判断三相定子电流的极性。  

假设检测到的三相定子电流分别为:  

式中,iah、ibh、ich三相定子电流的高频谐波分量。  

利用坐标变换公式把静止abc坐标系下的三相定子电流转换到同步旋转dq坐标系下。设转换后的isd、isq为三相定子基波电流转换而来的直流量,idh、iqh为三相定子电流高频分量转换而来的旋转轴系下的高次谐波。idh、iqh可由低通滤波器滤除,而isd、isq不会因为增加了滤波器而造成幅值上的变化及相位的滞后。定子电流矢量的空间位置变化如图(3.1)所示,其中theta_s为定子角频率的积分角,fei为定子电流矢量与d轴的夹角。由此可见,经过坐标变换再加以低通滤波处理后得到的theta的精度得以很大的提高,使得定子电流矢量绝对位置角更加接近于真实值。  

图4.1 定子电流矢量位置  

三相定子电流的极性分布如图(4.2)所示,据此可以得到theta于三相定子电流极性的对应关系(表2).利用theta可以方便、准确地判断出三相定子电流的极性。  

图3.2 三相定子电流极性空间分布  

五、仿真搭建与验证分析    

5.1 建模思路    

在SVPWM模块的基础上增加延时模块,使上升沿滞后下降沿来模拟死区。然后以电压矢量补偿的思路对PWM死区进行补偿。1、计算三相电流的相位;2、计算补偿电压值;3、将补偿电压加到软件计算中的静止坐标系下的电压参考值上。知道每一相的电流相位才能知道电流方向,电流方向决定了是增加或减小补偿电压值。  

5.2 模型搭建    

上图是在常规的七段式SVPWM模块上增加延时模块,模拟PWM添加死区的设置。  

图5.3 在sfunction模块中用M语言实现  

图(5.3)是在sfunction模块中实现的PWM死区模块的补偿。根据三、四章节介绍的原理和步骤进行实现PWM死区电压补偿值的计算。  

图5.4 A相电流方向的获取  

图(5.4)是A相电流方向的获取。从上述的原理介绍可知,PWM死区补偿的重点就是电流的极性和方向的获取。  

图5.5 加入3微秒的PWM死区对应的三相电流波形变化  

从图(5.5)中可以看出,在加入PWM死区后,电流波形畸变特别是在过零点处。图(5.6)中加入PWM死区补偿策略,可以明显地发现电流波形的正弦度明显得到提高,以此证明所介绍的基于电压补偿PWM死区方法的可行性。  

图5.6 加入PWM死区补偿的三相电流波形变化  



来源:浅谈电机控制
通用通信电机控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-06-07
最近编辑:1天前
清风烈酒
硕士 签名征集中
获赞 44粉丝 2文章 40课程 0
点赞
收藏
作者推荐

玩转电机控制MATLAB几种类型的仿真验证框架

前言:电机控制的开发验证有多种途径和方式,常见的分为模型仿真验证和硬件测试两大类。接下来以MATLAB+CCS的IDE开发环境来进行仿真模型框架的搭建和对比。 一、内容安排 本期文章主要介绍并对比几种不同类型的仿真框架搭建,模块化搭建、M语言实现、C集成和CCS工程代码搭建(硬件测试)。从几个方面来比较不同类型的仿真验证框架优势和缺点。 表1 不同类型的仿真模型对比 在接下来的电机控制学习过程中,除控制理论外还需要加强自己的验证工具和编程能力的提高。 二、不同类型的仿真框架的搭建 学习本章内容的前提需要安装MATLAB(内置C编译器)和CCS软件,并具备一定的C语言的编程能力。以前期文章介绍的SVPWM为仿真验证内容进行对比。 2.1 模块化仿真框架 MATLAB模块化仿真,就是从封装器件库里直接拖取现成的作用模块,根据控制理论(一般是微分方程)进行搭建形成验证系统。但如果系统复杂,模块化仿真未必能够进行准确地模拟。 模块化仿真通用性差且不利于后续持续性开发。个人觉得搭建控制验证仿真框架,此类型的应当只是备选方案。图2.1 模块化搭建的SVPWM系统 图2.2 马鞍波 2.2 M语言实现的仿真框架 图2.3 M语言实现的SVPWM系统 图2.4 马鞍波 M语言实现的控制系统,像基本的硬件模拟(电机、逆变器)可以采用封装模块,控制部分可以采用M语言进行实现,过程简单方便且通用性强、利于后续的持续性开发。 2.3 C集成类型的仿真框架 C集成类型的仿真搭建具有一定的难度,本节简单介绍一下该类型的仿真框架的搭建过程。首先MATLAB得安装C编译器,模型代码存放得路径得全英文。 2.3.1 什么是S-Function S-Function为你提供了一种在Simulink模型中增加自制块的手段,你可以使用MATLAB和C语言来创建自己的块。按照下面一套简单的规则,你可以在S-Function中实现自己的算法。在你编写一个S-Function函数,并将函数名放置在一个S-Function块中(在用户定义的函数块库中有效)之后,通过使用masking定制用户界面。 2.3.2 在模型中使用S-Function 为了将一个S-Function组合到一个Simulink模型中,首先从Simulink用户定义的函数库中拖出一个S-Function块,然后在S-Function块对话框中的S-Function name区域指定S-Function的名字。如下图所示:图2.5 S-Function块、对话框、及决定块功能的源文件之间的关系 在本例中,模型包含了两个S-Function块,这两个块使用同一个源文件(mysfun,可以是一个C MEX文件,或者是一个M文件)。如果一个C MEX文件与一个M文件具有相同的名字,则C MEX文件被优先使用,即在S-function块中使用的是C MEX文件。 2.3.3 S-Function的工作原理 要创建S-Function,你必须了解S-Function是如何工作的。要了解S-Function如何工作,则需要了解Simulink是如何进行模型仿真的,那么由需要了解块的数学公式。因此本节首先从一个块的输入、状态和输出之间的数学关系开始介绍。 仿真过程: Simulink模块的执行分几个阶段进行。首先进行的是初始化阶段,在此阶段,Simulink将库块合并到模型中来,确定传送宽度、数据类型和采样时间,计算块参数、确定块的执行顺序,以及分配内存。然后,Simulink进入到“仿真循坏”,每次循环可认为是一个“仿真步”。在每个仿真步期间,Simulink按照初始化阶段确定的块执行顺序依次执行模型中的每个块。对于每个块而言,Simulink调用函数来计算块在当前采样时间下的状态、导数和输出。如此反复,一直持续到仿真结束。图2.6 Simulink执行仿真的步骤 2.3.4 S-Function的回调程序 2.3.5 S-function实现过程的解析 simstruc.h 文件定义了一个名为SimStruct 的数据结构,Simulink 使用它来维护S-function的有关信息。simstruc.h 文件也定义了一些宏,可让你的MEX 文件在SimStruct 中设置某些值,或从SimStruct 中获取某些值。 2.3.6 CMEX仿真的搭建 只需要搞明白输入/输出即可,sfunction内部的模板可以参考范例。 图2.8 C MEX仿真波形变化 2.4 CCS工程代码实现的验证框架 使用CCS软件编程涉及到的就是硬件验证,后续会重点介绍CCS工程模板的搭建实现过程和配套硬件的验证内容。 三、总结 基于MATLAB+CCS的IDE开发环境,方便后续持续性开发,首选M语言实现或C MEX类型的仿真验证框架。 讨论:采用状态机类型的仿真类型在电机控制领域是否常见? 来源:浅谈电机控制

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈