感应(异步)电机磁场定向控制电流环PI控制参数设计_异步电机focpi-程序员宅基地

技术标签: matlab  dsp  simulink  电机控制  

电机控制系列文章

感应(异步)电机磁场定向控制MATLAB/Simulink建模
感应(异步)电机磁场定向控制速度环PI控制参数设计



前言

大家在做感应(异步)电机磁场定向控制(FOC)的时候,是否还在疑惑PI参数怎么给,还在用PI参数整定口诀一点一点去试,或者按书籍论文的计算公式搞出来不对?那你的电机控制理论需要进一步深入了,如果按照书籍论文的计算公式算出来不能用,你可以来这里看看你的MATLAB/Simulink建模有没有问题:
感应(异步)电机磁场定向控制MATLAB/Simulink建模
如果是不知道PI参数怎么给,我来指导你设计合适的PI参数。
事实上TI(德州仪器)早就把这些东西工程化了,《InstaSPIN-FOC and InstaSPIN-MOTION User’s Guide》里有详细的指导,本人也是从其中窥得PI参数设计大法。如果你看过这个文档,没关系,也可以看看我写的,其中也有我个人的理解。
本文首先介绍电流环的PI参数设计。


一、并联型PI与串联型PI

下图是并联型PI:
并联型PI
下图是串联型PI:
串联型PI
我们搞控制的,一般都接触的是并联型PI吧。可是TI在InstaSPIN-FOC里推崇用串联型PI。TI说,并联型PI, K i K_{\text i} Ki负责低频增益, K p K_{\text p} Kp负责高频增益。把并联型PI传递函数的s换成ω较小时,第二项起主要作用。ω较大时,第一项起主要作用。这里也可以这样理解,调 K i K_{\text i} Ki不就是调静差吗,静差不就是低频吗,调 K p K_{\text p} Kp不就是调响应快慢吗,响应快慢不就是高频吗。
G parallel_PI ( j ω ) = K p + K i j ω G_{\text{parallel\_PI}}(j\omega) = K_{\text p} + \frac {K_{\text i}} {j\omega} Gparallel_PI(jω)=Kp+jωKi
并联型PI波特图
串联型PI里, K p series K_{\text p}^{\text{series}} Kpseries负责全频域增益,而 K i series K_{\text i}^{\text{series}} Kiseries只负责零点位置。
G series_PI ( j ω ) = K p series ( 1 + K i series j ω ) G_{\text{series\_PI}}(j\omega) = K_{\text p}^{\text{series}} (1+ \frac {K_{\text i}^{\text{series}}} {j\omega}) Gseries_PI(jω)=Kpseries(1+jωKiseries)
串联型PI波特图
说到这里,用哪一种并不重要,只是串联型PI在接下来的分析中比较方便,如果你习惯用并联型PI,就把系数转换一下。你用并联型PI去设计参数也是没有问题的。
但是,这里我有一个想法,之前习惯用并联型PI去调控制,一般是一个不动调另一个。借助串联型PI,调并联型PI的思路可以是这样,调整 K p K_{\text p} Kp K i K_{\text i} Ki的比例,使响应曲线形态比较好(比如一阶系统的阶跃响应),然后同时等比例增大或减小 K p K_{\text p} Kp K i K_{\text i} Ki,调整响应快慢。


二、被控对象模型

电流环输出电压控制电机,电机输出电流反馈回电流环。从定子侧看,电流环对应的电机模型可简化为
电机简化模型
R为电阻(对感应电机q轴,不是定子电阻),L为电感(对感应电机,既不是漏感也不是自感), ω K E \omega K_{\text E} ωKE为反电动势,反电动势主要由电机转速、磁链影响,而相较于电机电流,电机转速、磁链变化较慢,可认为是直流量,因此电机定子小信号模型传递函数为
G motor ( s ) = I ( s ) V ( s ) = 1 R 1 + L R s G_{\text{motor}}(s) = \frac {I(s)} {V(s)} = \frac {\frac 1 R} {1+{\frac L R} s} Gmotor(s)=V(s)I(s)=1+RLsR1
对应感应电机电压方程,如下式,简化模型中的L σ L s \sigma L_{\text s} σLs,d轴中R R s R_{\text s} Rs,q轴中R R s + L m 2 L r 2 R r R_{\text s} + \frac {L_{\text m}^2} {L_{\text r}^2}R_{\text r} Rs+Lr2Lm2Rr,TI文件中说是 R s + R r R_{\text s} + R_{\text r} Rs+Rr,应该是 L m L_{\text m} Lm L r L_{\text r} Lr很接近。后面的分析中仍然用RL来表示。
{ u sd = R s i sd + σ L s d i sd d t − ω s σ L s i sq + L m L r d ψ rd d t u sq = ( R s + L m 2 L r 2 R r ) i sq + σ L s d i sq d t + ω s σ L s i sd + ω r L m L r ψ rd \begin{cases} u_{\text {sd}} = R_{\text s}i_{\text {sd}} + \sigma L_{\text s}\frac {di_{\text {sd}}} {dt} - \omega_{\text {s}}\sigma L_{\text s}i_{\text {sq}} + \frac {L_{\text m}} {L_{\text r}}\frac {d\psi_{\text {rd}}} {dt} \\ u_{\text {sq}} = (R_{\text s} + \frac {L_{\text m}^2} {L_{\text r}^2}R_{\text r})i_{\text {sq}} + \sigma L_{\text s}\frac {di_{\text {sq}}} {dt} + \omega_{\text {s}}\sigma L_{\text s}i_{\text {sd}} + \omega_{\text {r}}\frac {L_{\text m}} {L_{\text r}}\psi_{\text {rd}} \end{cases} { usd=Rsisd+σLsdtdisdωsσLsisq+LrLmdtdψrdusq=(Rs+Lr2Lm2Rr)isq+σLsdtdisq+ωsσLsisd+ωrLrLmψrd


三、电流环闭环传递函数

还是用电机简化模型的传递函数,暂不考虑电流滤波器、计算延时、PWM采样延时,电流环闭环传递函数表示为下式
G curr_cl ( s ) = K p series K i series ( 1 + s K i series ) s × 1 R 1 + L R s 1 + K p series K i series ( 1 + s K i series ) s × 1 R 1 + L R s G_{\text{curr\_cl}}(s) = \frac {\frac {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}} (1+\frac s {K_{\text i}^{\text{series}}})} s \times \frac {\frac 1 R} {1+{\frac L R} s}} {1+\frac {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}} (1 + \frac s {K_{\text i}^{\text{series}}})} s \times \frac {\frac 1 R} {1+{\frac L R} s}} Gcurr_cl(s)=1+sKpseriesKiseries(1+Kiseriess)×1+RLsR1sKpseriesKiseries(1+Kiseriess)×1+RLsR1
整理一下
G curr_cl ( s ) = 1 + s K i series L K p series K i series s 2 + ( R K p series K i series + 1 K i series ) s + 1 G_{\text{curr\_cl}}(s) = \frac {1+\frac s {K_{\text i}^{\text{series}}}} {\frac L {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}}}s^2 + (\frac R {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}}}+\frac 1 {K_{\text i}^{\text{series}}})s + 1} Gcurr_cl(s)=KpseriesKiseriesLs2+(KpseriesKiseriesR+Kiseries1)s+11+Kiseriess
可以看出这是一个二阶系统,分子上有一个零点,分母有两个极点,最好零极对消,只剩一个极点,就变成了一个一阶系统。为什么要变为一阶系统呢?很多地方都要提降阶,降阶使系统变得更简单,更方便分析性能,更容易设计控制系统。一阶系统没有超调,只用调整一个参数就可以改变阶跃响应时间。
一阶系统的单位阶跃响应如下图所示
一阶系统单位阶跃响应曲线


四、电流环PI参数设计

为了零极对消,分母应该做如下因式分解,
G curr_cl ( s ) = 1 + s K i series ( 1 + R K p series K i series s ) ( 1 + s K i series ) G_{\text{curr\_cl}}(s) = \frac {1+\frac s {K_{\text i}^{\text{series}}}} {(1+\frac R {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}}}s) (1+\frac s {K_{\text i}^{\text{series}}})} Gcurr_cl(s)=(1+KpseriesKiseriesRs)(1+Kiseriess)1+Kiseriess
这个式子可以零极对消,但和之前的式子相比,有个问题,分母 s 2 s^2 s2的系数不一样,那就令他们一样,
L K p series K i series = R K p series ( K i series ) 2 \frac L {K_{\text p}^{\text{series}} K_{\text i}^{\text{series}}} = \frac R {K_{\text p}^{\text{series}} (K_{\text i}^{\text{series}})^2} KpseriesKiseriesL=Kpseries(Kiseries)2R
解得
K i series = R L K_{\text i}^{\text{series}} = \frac R L Kiseries=LR
将该结果代入闭环传函,得
G curr_cl ( s ) = 1 L K p series s + 1 G_{\text{curr\_cl}}(s) = \frac 1 {\frac L {K_{\text p}^{\text{series}}}s+1} Gcurr_cl(s)=KpseriesLs+11
这下就很简单了,将 K p series K_{\text p}^{\text{series}} Kpseries设计为
K p series = L × ω b K_{\text p}^{\text{series}} = L \times \omega_{\text b} Kpseries=L×ωb
传函变为
G curr_cl ( s ) = 1 s ω b + 1 G_{\text{curr\_cl}}(s) = \frac 1 {\frac s {\omega_{\text b}}+1} Gcurr_cl(s)=ωbs+11
ω b \omega_{\text b} ωb为一阶系统的带宽。这意味着我们可以自由设计电流环的带宽了!也就是像之前说的,我们可以调节电流环的阶跃响应时间,而且没有超调!


五、计算延时、PWM采样延时、滤波器的影响

本文的关键来了,前面所述均是在理想情况下的推算,实际上在一个电机控制系统里,DSP计算需要时间,不可避免地就引入了计算延时。PWM采样也会产生延时。而滤波器对dq电流也有延时作用。下面分别来分析。

1、计算延时

计算延时的关键在于计算出来的调制波什么时候送到PWM的比较模块。举个例子,一个DSP电机控制系统,在PWM载波波峰处触发PWM中断开始AD采样、控制计算,PWM模块配置为波峰处将调制波载入比较器,那么这个时候只能在下个波峰到来时载入此时计算出来的调制波。从PWM中断开始算起,到下一个载波波峰到来就是一个开关周期,即因为计算延迟了一个开关周期。
延迟环节的传递函数为 e − T s e^{-Ts} eTs,一般将它等效为一个一阶惯性环节 1 T s + 1 \frac 1 {Ts+1} Ts+11。以延迟200us为例,二者波特图如下所示,蓝色为延迟环节,红色为一阶惯性环节,在低频段,二者非常接近,所以这种近似是可以的。
延迟环节波特图

2、PWM采样延时

一般的DSP电机控制系统,都是规则采样,也就是对调制波周期采样。比如在载波波峰处将调制波载入比较器,那么只有在波峰处才进行了更新,其他时间都是保持更新后的值,表现为一个零阶保持器。举个例子,如下是开关频率5kHz的PWM规则采样,在载波波峰处将调制波载入比较器,蓝色为原始调制波,红色是经零阶保持的实际调制波,是一个阶梯波,而它的基波幅值与原始调制波一样,但时间上延迟了半个开关周期,如紫色虚线所示。
PWM采样
零阶保持器的传递函数为 1 − e − T s T s \frac {1-e^{-Ts}} {Ts} Ts1eTsT为采样周期,基波则延迟了0.5T,由前面所述的延迟环节等效关系,零阶保持器可等效为 1 0.5 T s + 1 \frac 1 {0.5Ts+1} 0.5Ts+11的一阶惯性环节。下图为二者波特图对比,蓝色为零阶保持器,红色为一阶惯性环节,可以看到,二者在低频非常接近,因此这种等效也是可以的。
零阶保持器波特图
结合计算延时和PWM采样延时,传递函数为 1 ( T s + 1 ) ( 0.5 T s + 1 ) = 1 0.5 T 2 s 2 + 1.5 T s + 1 \frac 1 {(Ts+1)(0.5Ts+1)} = \frac 1 {0.5T^2s^2+1.5Ts+1} (Ts+1)(0.5Ts+1)1=0.5T2s2+1.5Ts+11,忽略高阶项,传递函数变为 1 1.5 T s + 1 \frac 1 {1.5Ts+1} 1.5Ts+11,这就是很多书里面出现1.5的原因。忽略高阶项在控制里面很常见,比如非线性系统的线性化,很多都是忽略高阶项。

3、滤波器

很多电机控制系统里,对dq电流做了低通滤波,常见的就是一阶、二阶低通滤波。
一阶低通滤波的传递函数为 1 T s + 1 \frac 1 {Ts+1} Ts+11,可以直接当成一个延迟环节。
二阶低通滤波的传递函数为 ω n 2 s 2 + 2 ζ ω n s + ω n 2 = 1 1 ω n 2 s 2 + 2 ζ ω n s + 1 \frac {\omega_{\text n}^2} {s^2+2\zeta\omega_{\text n}s+\omega_{\text n}^2} = \frac 1 {\frac 1 {\omega_{\text n}^2}s^2+\frac {2\zeta} {\omega_{\text n}}s+1} s2+2ζωns+ωn2ωn2=ωn21s2+ωn2ζs+11,大胆一点,干掉高阶项,也变成一个延迟环节 1 2 ζ ω n s + 1 \frac 1 {\frac {2\zeta} {\omega_{\text n}}s+1} ωn2ζs+11

4、三者结合

至此,我们把控制延时、PWM采样延时、滤波器都等效为一阶惯性环节,三者再结合一下,传递函数变为 1 ( T d_cal + T d_pwm + T d_filter ) s + 1 \frac 1 {(T_{\text {d\_cal}}+T_{\text {d\_pwm}}+T_{\text {d\_filter}})s+1} (Td_cal+Td_pwm+Td_filter)s+11。如果开关频率为5kHz,一阶低通滤波器截至频率选为2kHz,那么 T d_cal T_{\text {d\_cal}} Td_cal为200us, T d_pwm T_{\text {d\_pwm}} Td_pwm为100us, T d_filter T_{\text {d\_filter}} Td_filter为80us,数量级相近。

5、影响

一个时间常数为100us的一阶惯性环节波特图如下所示,如果电流环开环穿越频率为1000rad/s,那么从图上可知,一阶惯性环节造成-6°的相移,也即相位裕度减小6°,这对于控制来说影响不大。如果电流环开环穿越频率为转折频率10000rad/s,相位裕度减小45°,这个影响就大了。
开环的穿越频率与闭环的带宽频率比较接近,因此,在设计电流环闭环带宽时,带宽频率应小于一阶惯性环节的转折频率。小多少要看你对系统的要求,太小响应会变慢,大了系统会变得敏感,因此要根据具体性能要求来决定。
一阶惯性环节波特图


总结

本文介绍了感应(异步)电机磁场定向控制电流环PI控制参数设计,主要内容从《InstaSPIN-FOC and InstaSPIN-MOTION User’s Guide》中提取,同时包含我个人的理解,以期这篇文章能帮助大家设计电流环PI参数。


如果懒得搭模型,可以来这里下载
感应(异步)电机间接磁场定向控制MATLAB/Simulink仿真模型

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/devinbb/article/details/114828338

智能推荐

FTP命令字和返回码_ftp 登录返回230-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏13次。为了从FTP服务器下载文件,需要要实现一个简单的FTP客户端。FTP(文件传输协议) 是 TCP/IP 协议组中的应用层协议。FTP协议使用字符串格式命令字,每条命令都是一行字符串,以“\r\n”结尾。客户端发送格式是:命令+空格+参数+"\r\n"的格式服务器返回格式是以:状态码+空格+提示字符串+"\r\n"的格式,代码只要解析状态码就可以了。读写文件需要登陆服务器,特殊用..._ftp 登录返回230

centos7安装rabbitmq3.6.5_centos7 安装rabbitmq3.6.5-程序员宅基地

文章浏览阅读648次。前提:systemctl stop firewalld 关闭防火墙关闭selinux查看getenforce临时关闭setenforce 0永久关闭sed-i'/SELINUX/s/enforcing/disabled/'/etc/selinux/configselinux的三种模式enforcing:强制模式,SELinux 运作中,且已经正确的开始限制..._centos7 安装rabbitmq3.6.5

idea导入android工程,idea怎样导入Android studio 项目?-程序员宅基地

文章浏览阅读5.8k次。满意答案s55f2avsx2017.09.05采纳率:46%等级:12已帮助:5646人新版Android Studio/IntelliJ IDEA可以直接导入eclipse项目,不再推荐使用eclipse导出gradle的方式2启动Android Studio/IntelliJ IDEA,选择 import project3选择eclipse 项目4选择 create project f..._android studio 项目导入idea 看不懂安卓项目

浅谈AI大模型技术:概念、发展和应用_ai大模型应用开发-程序员宅基地

文章浏览阅读860次,点赞2次,收藏6次。AI大模型技术已经在自然语言处理、计算机视觉、多模态交互等领域取得了显著的进展和成果,同时也引发了一系列新的挑战和问题,如数据质量、计算效率、知识可解释性、安全可靠性等。城市运维涉及到多个方面,如交通管理、环境监测、公共安全、社会治理等,它们需要处理和分析大量的多模态数据,如图像、视频、语音、文本等,并根据不同的场景和需求,提供合适的决策和响应。知识搜索有多种形式,如语义搜索、对话搜索、图像搜索、视频搜索等,它们可以根据用户的输入和意图,从海量的数据源中检索出最相关的信息,并以友好的方式呈现给用户。_ai大模型应用开发

非常详细的阻抗测试基础知识_阻抗实部和虚部-程序员宅基地

文章浏览阅读8.2k次,点赞12次,收藏121次。为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字,认真读完大概需要2小时。一、阻抗测试基本概念阻抗定义:阻抗是元器件或电路对周期的交流信号的总的反作用。AC 交流测试信号 (幅度和频率)。包括实部和虚部。​图1 阻抗的定义阻抗是评测电路、元件以及制作元件材料的重要参数。那么什么是阻抗呢?让我们先来看一下阻抗的定义。首先阻抗是一个矢量。通常,阻抗是_阻抗实部和虚部

小学生python游戏编程arcade----基本知识1_arcade语言 like-程序员宅基地

文章浏览阅读955次。前面章节分享试用了pyzero,pygame但随着想增加更丰富的游戏内容,好多还要进行自己编写类,从今天开始解绍一个新的python游戏库arcade模块。通过此次的《连连看》游戏实现,让我对swing的相关知识有了进一步的了解,对java这门语言也有了比以前更深刻的认识。java的一些基本语法,比如数据类型、运算符、程序流程控制和数组等,理解更加透彻。java最核心的核心就是面向对象思想,对于这一个概念,终于悟到了一些。_arcade语言 like

随便推点

【增强版短视频去水印源码】去水印微信小程序+去水印软件源码_去水印机要增强版-程序员宅基地

文章浏览阅读1.1k次。源码简介与安装说明:2021增强版短视频去水印源码 去水印微信小程序源码网站 去水印软件源码安装环境(需要材料):备案域名–服务器安装宝塔-安装 Nginx 或者 Apachephp5.6 以上-安装 sg11 插件小程序已自带解析接口,支持全网主流短视频平台,搭建好了就能用注:接口是公益的,那么多人用解析慢是肯定的,前段和后端源码已经打包,上传服务器之后在配置文件修改数据库密码。然后输入自己的域名,进入后台,创建小程序,输入自己的小程序配置即可安装说明:上传源码,修改data/_去水印机要增强版

verilog进阶语法-触发器原语_fdre #(.init(1'b0) // initial value of register (1-程序员宅基地

文章浏览阅读557次。1. 触发器是FPGA存储数据的基本单元2. 触发器作为时序逻辑的基本元件,官方提供了丰富的配置方式,以适应各种可能的应用场景。_fdre #(.init(1'b0) // initial value of register (1'b0 or 1'b1) ) fdce_osc (

嵌入式面试/笔试C相关总结_嵌入式面试笔试c语言知识点-程序员宅基地

文章浏览阅读560次。本该是不同编译器结果不同,但是尝试了g++ msvc都是先计算c,再计算b,最后得到a+b+c是经过赋值以后的b和c参与计算而不是6。由上表可知,将q复制到p数组可以表示为:*p++=*q++,*优先级高,先取到对应q数组的值,然后两个++都是在后面,该行运算完后执行++。在电脑端编译完后会分为text data bss三种,其中text为可执行程序,data为初始化过的ro+rw变量,bss为未初始化或初始化为0变量。_嵌入式面试笔试c语言知识点

57 Things I've Learned Founding 3 Tech Companies_mature-程序员宅基地

文章浏览阅读2.3k次。57 Things I've Learned Founding 3 Tech CompaniesJason Goldberg, Betashop | Oct. 29, 2010, 1:29 PMI’ve been founding andhelping run techn_mature

一个脚本搞定文件合并去重,大数据处理,可以合并几个G以上的文件_python 超大文本合并-程序员宅基地

文章浏览阅读1.9k次。问题:先讲下需求,有若干个文本文件(txt或者csv文件等),每行代表一条数据,现在希望能合并成 1 个文本文件,且需要去除重复行。分析:一向奉行简单原则,如无必要,绝不复杂。如果数据量不大,那么如下两条命令就可以搞定合并:cat a.txt >> new.txtcat b.txt >> new.txt……去重:cat new...._python 超大文本合并

支付宝小程序iOS端过渡页DFLoadingPageRootController分析_类似支付宝页面过度加载页-程序员宅基地

文章浏览阅读489次。这个过渡页是第一次打开小程序展示的,点击某个小程序前把手机的开发者->network link conditioner->enable & very bad network 就会在停在此页。比如《支付宝运动》这个小程序先看这个类的.h可以看到它继承于DTViewController点击左上角返回的方法- (void)back;#import "DTViewController.h"#import "APBaseLoadingV..._类似支付宝页面过度加载页

推荐文章

热门文章

相关标签