品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

精选!浅析基于模糊PID的永磁同步电机矢量控制

永磁同步电机由于其转动惯量低、效率高、控制方式便捷等优点,已成为当今伺服系统中最佳的执行结构之一。速度、位置和电流组成了永磁同步电机伺服控制系统。实际控制的过程中,电机所带的转动惯量和负载转矩都会对系统的伺服性能造成不良的影响。高性能的永磁同步电机伺服控制系统需具备:稳态、抗干扰和鲁棒性强的特点。因此,针对永磁同步电机的控制策略需要很强的时变性和抗干扰性。

传统的控制策略有PID控制方法。PID控制策略由于其易实现、结构简单常应用于伺服系统中。但是当永磁同步电机受到外界因素干扰时,该方法往往无法保证得到理想的控制性能。目前,针对永磁同步电机的控制方法专家学者们提出了很多的方法。包括:滑模控制、智能算法控制及自适应控制等。


【资料图】

模糊PID控制方法是一种利用模糊控制器实现整定PID控制器参数的控制方法,其即有模糊控制器不依赖控制对象数学模型的优点,也具有PID控制器良好的稳态精度。因此,本期对永磁同步电机(以下简称PMSM)模型和矢量控制算法进行了分析,设计了一种基于模糊PID的复合控制策略,基于Simulink环境仿真下的结果表明,模糊PID控制具有良好的鲁棒性。

1、永磁同步电机原理

2、模糊PID控制器

模糊PID控制器可以根据PID参数整定经验或方法获得可行的控制效果,但整定过程具有一定盲目性;尽管初始论域、初始规则通过在线调整一般能保证系统的稳定性,但规则本身往往存在一定的粗造性和冗余性,带来在线调整时间长等问题。模糊控制器的结构如下图所示:

把输入的精确量进行模糊化变成模糊量,得到的模糊量可用相应的模糊语言表示,再由模糊控制规则根据推理的合成规则进行模糊决策,得到模糊控制量,最后进行解模糊处理,得到精确的控制量输入系统。

(1)论域和比例因子量化因子的选择

模糊控制器的输入输出都是精确数值,而模糊推理的决策量都是模糊值。为了进行模糊化处理,需要将输入输出变量从基本论域转化到相应的模糊论域中去。

设置误差、误差变化率、Kp和Ki的基本论域分别为:

则,误差的量化因子Ke、误差变化率的量化因子Kec、输出控制量的比例因子Kup和Kui可表示为:

合理的选择一个模糊控制器的输入变量的量化因子和输出控制量的比例因子是非常重要的。试验结果表明,量化因子和比例因子的大小及其不同量化因子之间的大小的相对关系,对模糊控制器的性能影响很大。实际过程中,需要根据系统要求的性能调节适合的量化因子和比例因子。

(2)模糊控制规则

这里主要以Matlab/Simulink的形式展示:

function [antecedentOutputs,sumAntecedentOutputs] = fcn(inputs, ...    fis,SimulateUsing,diagnostics)if SimulateUsing==1 && coder.internal.canUseExtrinsic ...        && (isa(inputs,"double") || isa(inputs,"single"))    antecedentOutputs = zeros(fis.rfsSize,"like",inputs);    sumAntecedentOutputs = zeros(fis.sumSize,"like",inputs);    if fis.inputFuzzySetType==1        if isa(inputs,"double")            [antecedentOutputs(:),sumAntecedentOutputs(:)] = feval(...                "fuzzy.internal.codegen.evaluateRuleAntecedent_double_mex",...                inputs,fis,diagnostics);        else            [antecedentOutputs(:),sumAntecedentOutputs(:)] = feval(...                "fuzzy.internal.codegen.evaluateRuleAntecedent_single_mex",...                inputs,fis,diagnostics);        end    else        if isa(inputs,"double")            [antecedentOutputs(:),sumAntecedentOutputs(:)] = feval(...                "fuzzy.internal.codegen.evaluateRuleAntecedentType2_double_mex",...                inputs,fis,diagnostics);        else            [antecedentOutputs(:),sumAntecedentOutputs(:)] = feval(...                "fuzzy.internal.codegen.evaluateRuleAntecedentType2_single_mex",...                inputs,fis,diagnostics);        end    endelse    if fis.inputFuzzySetType==1        [antecedentOutputs,sumAntecedentOutputs] = ...            fuzzy.internal.codegen.evaluateRuleAntecedent(...            inputs,fis,diagnostics);    else        [antecedentOutputs,sumAntecedentOutputs] = ...            fuzzy.internal.codegen.evaluateRuleAntecedentType2(...            inputs,fis,diagnostics);    endendend
function aggregatedOutputs = fcn(inputs,antecedentOutputs, ...    fis,samplePoints,SimulateUsing)if SimulateUsing==1 && coder.internal.canUseExtrinsic ...        && (isa(inputs,"double") || isa(inputs,"single"))    aggregatedOutputs = zeros(fis.aggSize,"like",inputs);    if fis.inputFuzzySetType==1        if strcmp(char(fis.type),"mamdani")            if isa(inputs,"double")                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForMamdaniFIS_double_mex"],...                    antecedentOutputs,fis,samplePoints);            else                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForMamdaniFIS_single_mex"],...                    antecedentOutputs,fis,samplePoints);            end        else            if isa(inputs,"double")                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForSugenoFIS_double_mex"],...                    inputs,antecedentOutputs,fis);            else                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForSugenoFIS_single_mex"],...                    inputs,antecedentOutputs,fis);            end        end    else        if strcmp(char(fis.type),"mamdani")            if isa(inputs,"double")                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForMamdaniFISType2_double_mex"],...                    antecedentOutputs,fis,samplePoints);            else                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForMamdaniFISType2_single_mex"],...                    antecedentOutputs,fis,samplePoints);            end        else            if isa(inputs,"double")                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForSugenoFISType2_double_mex"],...                    inputs,antecedentOutputs,fis);            else                aggregatedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "evaluateRuleConsequentForSugenoFISType2_single_mex"],...                    inputs,antecedentOutputs,fis);            end        end    endelse    if fis.inputFuzzySetType==1        if strcmp(char(fis.type),"mamdani")            aggregatedOutputs = ...                fuzzy.internal.codegen.evaluateRuleConsequentForMamdaniFIS(...                antecedentOutputs,fis,samplePoints);        else            aggregatedOutputs = ...                fuzzy.internal.codegen.evaluateRuleConsequentForSugenoFIS(...                inputs,antecedentOutputs,fis);        end    else        if strcmp(char(fis.type),"mamdani")            aggregatedOutputs = ...                fuzzy.internal.codegen.evaluateRuleConsequentForMamdaniFISType2(...                antecedentOutputs,fis,samplePoints);        else            aggregatedOutputs = ...                fuzzy.internal.codegen.evaluateRuleConsequentForSugenoFISType2(...                inputs,antecedentOutputs,fis);        end    endendend
function defuzzifiedOutputs = fcn(sumAntecedentOutputs,...    aggregatedOutputs,fis,samplePoints,SimulateUsing,diagnostics)if SimulateUsing==1 && coder.internal.canUseExtrinsic ...        && (isa(aggregatedOutputs,"double") || isa(aggregatedOutputs,"single"))    defuzzifiedOutputs = zeros(fis.numOutputs,1,"like",aggregatedOutputs);    if fis.inputFuzzySetType==1        if strcmp(char(fis.type),"mamdani")            if isa(aggregatedOutputs,"double")                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applyMamdaniDefuzzificationMethod_double_mex"],...                    samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            else                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applyMamdaniDefuzzificationMethod_single_mex"],...                    samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            end        else            if isa(aggregatedOutputs,"double")                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applySugenoDefuzzificationMethod_double_mex"],...                    sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            else                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applySugenoDefuzzificationMethod_single_mex"],...                    sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            end        end    else        if strcmp(char(fis.type),"mamdani")            if isa(aggregatedOutputs,"double")                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applyMamdaniDefuzzificationMethodType2_double_mex"],...                    samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            else                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applyMamdaniDefuzzificationMethodType2_single_mex"],...                    samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            end        else            if isa(aggregatedOutputs,"double")                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applySugenoDefuzzificationMethodType2_double_mex"],...                    sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            else                defuzzifiedOutputs(:) = feval(["fuzzy.internal.codegen." ...                    "applySugenoDefuzzificationMethodType2_single_mex"],...                    sumAntecedentOutputs,aggregatedOutputs, ...                    fis,diagnostics);            end        end    endelse    if fis.inputFuzzySetType==1        if isequal(fis.type,uint8("mamdani"))            defuzzifiedOutputs = ...                fuzzy.internal.codegen.applyMamdaniDefuzzificationMethod(...                samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                fis,diagnostics);        else            defuzzifiedOutputs = ...                fuzzy.internal.codegen.applySugenoDefuzzificationMethod(...                sumAntecedentOutputs,aggregatedOutputs,fis,diagnostics);        end    else        if isequal(fis.type,uint8("mamdani"))            defuzzifiedOutputs = ...                fuzzy.internal.codegen.applyMamdaniDefuzzificationMethodType2(...                samplePoints,sumAntecedentOutputs,aggregatedOutputs, ...                fis,diagnostics);        else            defuzzifiedOutputs = ...                fuzzy.internal.codegen.applySugenoDefuzzificationMethodType2(...                sumAntecedentOutputs,aggregatedOutputs,fis,diagnostics);        end    endendend

(3)模糊推理及解模糊化

3、仿真验证

为验证算法的可行性,基于Simulink搭建永磁同步电机仿真模型。

本期对基于矢量控制策略的永磁同步电机数学模型进行了分析,根据系统性能需要,提出了模糊PID策略,将其应用到基于矢量控制的永磁同步电机伺服系统中,对系统负载扰动和惯量扰动的仿真结果表明,相对于传统PID控制器,模糊PID控制器具有更好的动静态性能和鲁棒性。

标签:

(责任编辑:)

相关文章

精选!浅析基于模糊PID的永磁同步电机矢量控制

​浅析基于模糊PID的永磁同步电机矢量控制-永磁同步电机由于其转动惯量低

2023-06-29 11:37:37

天气丨“暴力梅”已在路上 7月11日将入伏

​高温再现会提前出梅吗“暴力梅”已在路上7月11日将入伏苏城昨天阳光火

2023-06-29 11:03:13

福州买家具去哪里买比较好又实惠_福州办公家具哪里买的好又便宜

​买的好,有便宜?这很难讲的。不过似乎福州天安办公家具还行,价格就不

2023-06-29 10:58:27

天天微资讯!南通风水大师带你了解驱龙喝山(呼龙)口诀

​今天南通风水大师和你聊聊驱龙喝山(呼龙)口诀驱龙喝山(呼龙)口

2023-06-29 10:07:48

甘肃创新推行“一枚印章管验收” 解工程项目多头盖章等难题

​(闫姣)“我们探索推行‘一枚印章管验收’‘多段式’联合验收,加快验收

2023-06-29 10:14:14

力劲科技将于10月3日派发末期股息每股0.045港元 当前短讯

​来源:新浪港股力劲科技(00558)发布公告,该公司将于2023年10月3日派

2023-06-29 09:39:59

世界微资讯!境外公司年报下载网站 年报下载网站

​1、下载的地方通常是证券交易平台,当然这种智能一个个下载,要是需要

2023-06-29 09:09:32

“最美茶园”木耳山-环球热推荐

​群山逶迤,环抱万亩茶园;云雾缭绕,轻拢绿浪万顷——刚到湖北省鹤峰县

2023-06-29 09:03:47

天天热消息:经纬恒润(688326)6月28日主力资金净卖出2058.02万元

​截至2023年6月28日收盘,经纬恒润(688326)报收于148 99元,下跌2 2%,

2023-06-29 08:18:13

每日观察!夏天吃“花毛”看颜值不如讲卫生

​夏天吃“花毛”看颜值不如讲卫生

2023-06-29 07:54:47

痛经最有效的止疼办法_痛经怎么办 15个妙招帮你快速止痛_今日聚焦

​1、一、痛经快速解决法    快速的解决方法是,一旦痛经就要躺在床

2023-06-29 06:56:51

男子欲跳河轻生 救援现场像说相声 基本情况讲解 观点

​大家好,今日关于【男子欲跳河轻生救援现场像说相声】迅速上了的热搜榜

2023-06-29 06:18:42

广东女子高尔夫公开赛首轮曾莉棋王梓萱并列领先

​曾莉棋曾三次在女子中巡夺冠,三次都是从落后追赶上去取得胜利,她希望

2023-06-29 05:28:47

焦点讯息:清华大学辟谣:毕业生80%出国不实,国防科大成首选,00后觉醒

​“清华北大”国内的顶尖名校,一下子就冲上了热搜,今年的气氛有些古怪

2023-06-29 04:03:49

天天即时:住宅小区消防通道要求多宽_住宅小区消防通道要求

​1、一、小区消防通道规定为给火灾扑救工作创造方便条件,保障建筑物的

2023-06-29 01:46:17

今晚,上调!

​2023年6月28日24时起国内成品油价格按机制上调根据近期国际市场油价变

2023-06-28 23:30:40

世界快讯:新希望:今年生猪养殖将逐步减亏 目标完全成本降至16元/kg以内

​“今年整体上生猪养殖会逐步减亏,其他业务稳步提升。”6月28日,新希

2023-06-28 22:09:58

广播频道推荐_广播频道_当前速讯

​1、188 5南京JINFM288 8转播106 9南京新闻389 0金坛市台489 7江苏音乐590

2023-06-28 21:47:40

视焦点讯!首批4家上市房企再融资获批,募资投向和经营情况被重点问询

​首批4家上市房企再融资获批,募资投向和经营情况被重点问询,募投,经营,

2023-06-28 20:53:38

哪种美白补水面膜最有效?排行榜真实吗?

​作为一名经验丰富的美容师,我经常被问到哪种美白补水面膜最有效。事实

2023-06-28 20:20:09

《赛博朋克 2077》的重大更新将损害低端硬件的性能

​CDProjektRed制定了雄心勃勃的计划赛博朋克2077与幻影自由DLC。开发者

2023-06-28 20:02:41

腾讯:7月起陆续向Visa等国际信用卡组织开放微信支付商户网络

​【腾讯:7月起陆续向Visa等国际信用卡组织开放微信支付商户网络】6月28

2023-06-28 19:15:36

特斯拉开始打广告了!竟不在官方推文中

​特斯拉,作为全球最领先的电动车制造商,自创立以来,一直未在广告上花

2023-06-28 18:42:57

直击夏季达沃斯|东京大学全球公共事务中心主任Naoko Ishii:日本能够在2050年实现净零排放,这需要政策监管、融资等多重努力

​东京大学全球公共事务中心主任NaokoIshii(左二)图片来源:每经记者郑

2023-06-28 18:35:36

港澳青年学子体验万顷沙番石榴采摘,开启生态研学游|全球今日讯

​近日,记者了解到,广州市南沙区万顷沙镇经济发展和市场监管办公室(农

2023-06-28 17:55:14

动态焦点:中马传动(603767.SH):新能源汽车减速器自2017年产生收入以来收入规模未有增长,占营业收入比例极小

​格隆汇6月28日丨中马传动(603767 SH)公布股票交易风险提示公告,公司主

2023-06-28 17:34:37

天使与恶魔的榨汁大战在线观看樱花动漫(天使与恶魔的榨汁大战在线观看)

​1、天使 と 悪魔 が  爱 し 合う なんかあるわけないてんしと

2023-06-28 17:09:32

天天观速讯丨楚能新能源孝感基地一期“闪电”投产 年产能超30GWh

​楚能新能源孝感基地一期“闪电”投产年产能超30GWh---湖北日报讯(记者

2023-06-28 16:59:09

莱斯信息上市首日涨32.4% 募10.3亿经营现金净额连降|讯息

​中国经济网北京6月28日讯今日,南京莱斯信息技术股份有限公司(简称“

2023-06-28 16:28:15

赵露思再演调皮捣蛋少女,让我们看到了中医这样有趣的一面 焦点速讯

​1我对赵露思的印象还停留在《星汉灿烂》里那个调皮捣蛋又可爱的少商

2023-06-28 15:48:20