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

2023-10-31

电机控制系列文章

感应(异步)电机磁场定向控制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
与TI文件不同,我们将参考转矩作为速度环PI的输出,则被控对象传递函数为
ω m ( s ) T e ∗ ( s ) = i sq ∗ ( s ) T e ∗ ( s ) × i sq ( s ) i sq ∗ ( s ) × T e ( s ) i sq ( s ) × ω m ( s ) T e ( s ) = 2 3 L r N p L m ψ r × 1 s ω b_curr + 1 × 3 2 N p L m L r ψ r × 1 J s = 1 J s ( s ω b_curr + 1 ) \begin{aligned} \frac {\omega_{\text m}(s)} {T_{\text e}^*(s)} &= \frac {i_{\text {sq}}^*(s)} {T_{\text e}^*(s)} \times \frac {i_{\text {sq}}(s)} {i_{\text {sq}}^*(s)} \times \frac {T_{\text e}(s)} {i_{\text {sq}}(s)} \times \frac {\omega_{\text m}(s)} {T_{\text e}(s)} \\ &= \frac 2 3 \frac {L_{\text r}} {N_{\text p}L_{\text m}\psi_{\text r}} \times \frac 1 {\frac s {\omega_{\text {b\_curr}}}+1} \times \frac 3 2 N_{\text p}\frac {L_{\text m}} {L_{\text r}}\psi_{\text r} \times \frac 1 {Js} \\ &= \frac 1 {Js(\frac s {\omega_{\text {b\_curr}}}+1)} \end{aligned} Te(s)ωm(s)=Te(s)isq(s)×isq(s)isq(s)×isq(s)Te(s)×Te(s)ωm(s)=32NpLmψrLr×ωb_currs+11×23NpLrLmψr×Js1=Js(ωb_currs+1)1
ω b_curr \omega_{\text {b\_curr}} ωb_curr为电流环设计带宽, ω b_curr = K p series L \omega_{\text {b\_curr}} = \frac {K_{\text p}^{\text{series}}} L ωb_curr=LKpseriesJ为转动惯量。
速度环开环传递函数为
G spd_ol ( s ) = s p d K p series s p d K i series ( 1 + s s p d K i series ) s × 1 J s ( s ω b_curr + 1 ) = s p d K p series s p d K i series ( 1 + s s p d K i series ) J s 2 ( 1 + s ω b_curr ) \begin{aligned} G_{\text{spd\_ol}}(s) &= \frac {spdK_{\text p}^{\text{series}} spdK_{\text i}^{\text{series}} (1+\frac s {spdK_{\text i}^{\text{series}}})} s \times \frac 1 {Js(\frac s {\omega_{\text {b\_curr}}}+1)} \\ &= \frac {spdK_{\text p}^{\text{series}} spdK_{\text i}^{\text{series}} (1+\frac s {spdK_{\text i}^{\text{series}}})} {Js^2(1+\frac s {\omega_{\text {b\_curr}}})} \end{aligned} Gspd_ol(s)=sspdKpseriesspdKiseries(1+spdKiseriess)×Js(ωb_currs+1)1=Js2(1+ωb_currs)spdKpseriesspdKiseries(1+spdKiseriess)


二、速度环开环传递函数零极点配置

开环传函有两个零极点,所以从零频开始,增益就以每十倍频40dB的斜率下降。此外,有一个PI零点,可以减少每十倍频20dB斜率,还有一个电流环极点,可以增加每十倍频20dB斜率。
TI文件里的思想是,首先为了保证稳定性,将电流环极点放在最远处。然后令电流环极点与穿越频率之比等于穿越频率与PI零点之比,即
ω pole ω 0dB = ω 0dB ω zero = δ \frac {\omega_{\text {pole}}} {\omega_{\text {0dB}}} = \frac {\omega_{\text {0dB}}} {\omega_{\text {zero}}} = \delta ω0dBωpole=ωzeroω0dB=δ
速度环开环波特图
这样做的目的是在波特图上让穿越频率正好在零点与极点的中间。穿越频率对应的相位影响着相位裕度。TI这样做只用调节这一个参数δ,就可以调整速度环的低频、中频、高频,就很方便。这两个比例也可以不相等,比如把PI零点设为零,那么只有 s p d K p series spdK_{\text p}^{\text{series}} spdKpseries,也是可行的,只不过低频增益弱一点。
由等比例关系可得到
s p d K i series = ω b_curr δ 2 s p d K p series = J δ s p d K i series \begin{aligned} spdK_{\text i}^{\text{series}} &= \frac {\omega_{\text {b\_curr}}} {\delta^2} \\ spdK_{\text p}^{\text{series}} &= J\delta spdK_{\text i}^{\text{series}} \end{aligned} spdKiseriesspdKpseries=δ2ωb_curr=JδspdKiseries
δ应大于1,否则穿越频率大于电流环极点,会导致相位裕度不够,系统不稳定。由下面的开环波特图可以看到,δ越小,增益就越大,带宽越宽,但相位裕度越小,越不稳定。
速度环开环波特图


三、速度环闭环性能

下面分别是速度环闭环幅频特性和阶跃响应,可以看出,δ越小,带宽越宽,响应越快,但超调和振荡越大。因此,TI建议δ取值范围为2~30。
速度环闭环波特图
速度环阶跃响应


四、速度滤波器的影响

速度一般要经过一个一阶低通滤波器,相当于在开环传函里又引入了一个极点。这时在设计 s p d K i series spdK_{\text i}^{\text{series}} spdKiseries时,选择滤波器极点和电流环极点中最小的就行。
s p d K i series = min ⁡ ( ω b_curr , ω filter ) δ 2 spdK_{\text i}^{\text{series}} = \frac {\min(\omega_{\text {b\_curr}},\omega_{\text {filter}})} {\delta^2} spdKiseries=δ2min(ωb_curr,ωfilter)


总结

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


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

感应(异步)电机磁场定向控制速度环PI控制参数设计 的相关文章

  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • 在 MATLAB 中将数据拟合到 B 样条

    我正在尝试估计矩阵形式的时间序列数据中的缺失值 列代表时间点 即现在 我想将矩阵的每一行拟合到 B 样条曲线 并用它来估计缺失值 我可以使用 MATLAB 将数据拟合到普通样条曲线 但我完全陷入尝试找出如何拟合数据以创建 B 样条曲线的困境
  • 使用 java 执行 Matlab 函数

    我正在编写一个应用程序 它使用 matlab 进行图像处理 然后使用 Java 接口显示结果 由于某些原因 我必须同时使用 Java 和 Matlab 如何在java中使用matlab函数 如何创建和访问界面 MATLAB控制 http m
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾

随机推荐

  • 多年收集的一些稀有软件3

    QQ 365543212 Digital Canal Multiple Load Footing v4 5 1CD 定义出梯形的 带状的或矩形的脚柱的多种负重 Digital Canal Quick Wall v5 7 1CD 保留墙设计软
  • 证明sinx/x的极限等于1(x趋向于0)

    洛比达法则 上下都对x求导 得1 cosx 1
  • 区块链P2P网络

    区块链P2P网络 阅读大概需要10分钟 前言 上两篇文章中我们聊了共识机制 今天我们聊一下区块链技术中的另外一个核心技术点 P2P网络 Peer to peer networking 首先澄清一点的是这里讲的P2P这个概念跟平时我们在互联网
  • Windows上运行Linux

    在Windows上运行linux有多种方案 我一个个说吧 WSL 这是微软官方支持的方案 因为WSL就是操作系统自带的内容 我的机器是Windows11系统 所以我可以直接在power shell里使用 第一步是用WSL安装linux虚拟机
  • k8s篇之Pod 干预与 PDB

    文章目录 自愿干预和非自愿干预 PDB PDB 示例 分离集群所有者和应用程序所有者角色 如何在集群上执行中断操作 自愿干预和非自愿干预 Pod 不会消失 除非有人 用户或控制器 将其销毁 或者出现了不可避免的硬件或软件系统错误 我们把这些
  • 路由器dhcp服务异常不能上网_网络连接配置错误和DHCP服务存在问题导致无法..._网络编辑_帮考网...

    枫月舞 2019 07 15 13 28 908 请安以下方法查找原因 一 网络设置的问题 这种原因比较多出现在需要手动指定IP 网关 DNS服务器联网方式下 及使用代理服务器上网的 仔细检查计算机的网络设置 二 DNS服务器的问题 当IE
  • SpringBoot+Druid+MyBatis实现多数据源

    我们使用动态的方式进行多数据源的配置 更加灵活方便 1 配置文件 spring datasource druid one type com alibaba druid pool DruidDataSource driver class na
  • OpenAI开发系列(八):基于思维链(CoT)的进阶提示工程

    授权声明 本文基于九天Hector的原创课程资料创作 已获得其正式授权 原课程出处 九天Hector的B站主页 感谢九天Hector为学习者带来的宝贵知识 请尊重原创 转载或引用时 请标明来源 全文共9000余字 预计阅读时间约18 30分
  • jdbc批量操作的三种方法

    Jdbc批量操作 方法一 Connection conn DriverManager getConnection url name password conn setAutoCommit false 关闭连接的自动提交 String sql
  • windows 下重置mysql root 密码

    其中第3步和第8步 对于不同版本的mysql 版本有变化 1 关闭正在运行的MySQL服务 可以打开任务管理器 gt 服务 找到mysql 停止 2 通过cmd 转到mysql bin目录 例如 cd C Msql mysqlxxxxx b
  • warning:dereferencing type-punned pointer will break strict-aliasing rules

    中文警告 提领类型双关的指针将破坏强重叠规则 warning dereferencing type punned pointer will break strict aliasing rules 在 gcc 2 x 下编译没有任何 warn
  • 螺旋输出矩阵

    给定一个mmm行 nnn列的矩阵 按照顺时针螺旋的顺序输出矩阵中所有的元素 从 0 0 位置开始 具体请参见下图 输入格式 测评机会反复运行你写的程序 每次程序运行时 首先在第一行输入 222 个整数 分别对应题目描述中的 m 和 n 1
  • 华为防火墙 双机热备负载均衡实验

    双机热备 FW1的配置 FW2的配置 interface GigabitEthernet 1 0 1 ip address 10 1 1 2 255 255 255 0 vrrp vrid 1 virtual ip 10 1 1 1 255
  • VCED:学习Jina的简单操作

    文章目录 VCED 学习Jina的简单操作 在pycharm里连接docker环境 几个简单的jina demo image text video VCED 学习Jina的简单操作 在pycharm里连接docker环境 在pycharm里
  • keepalived实现lvs高可用

    keepalived是什么 Keepalived 软件起初是专为LVS负载均衡软件设计的 用来管理并监控LVS集群系统中各个服务节点的状态 后来又加入了可以实现高可用的VRRP功能 因此 Keepalived除了能够管理LVS软件外 还可以
  • 异常(exception)

    异常 什么是异常 程序在运行过程中发生的意外情况 称之为异常 除数为0 数组小标越界 异常是一种信号 用于调用者传递信息 表示程序发生了意外情况 程序运行时一旦出现了异常 将会导致程序立即终止 异常之后的代码都无法继续执行 那么为了保持程序
  • 酒令

    劝酒者起身敬酒 被劝者会说 屁股一抬 喝了重来 意让劝酒者再喝一个 此时劝酒者应对 屁股一动 表示尊重 男人不喝酒 交不到好朋友 感情深一口闷 感情浅舔一舔 女士劝酒 激动的心 颤抖的手 我给领导到杯酒 领导不喝嫌我丑 女士和领导碰杯 领导
  • 鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单

    项目场景 提示 这里简述项目相关背景 例如 项目场景 示例 网站右侧导航 无法移入二级菜单 鼠标移出一级菜单 二级内容立刻消失 从而鼠标无法移入二级内容区域 类似CSDN官网右侧 鼠标hover到二维码图标后 显示左侧关注公众号和下载APP
  • C语言中几种输入方式

    当我们输入一串字符或者数字时 需要一种标志作为输入结束的标志 所以我总结了以下几种 1 输入一串字符串以回车键作为输入结束的标志 char ch while ch getchar n 例1 输入一行字符 分别统计出其中英文字母 空格 数字
  • 感应(异步)电机磁场定向控制速度环PI控制参数设计

    电机控制系列文章 感应 异步 电机磁场定向控制MATLAB Simulink建模 感应 异步 电机磁场定向控制电流环PI控制参数设计 目录 电机控制系列文章 前言 一 速度环开环传递函数 二 速度环开环传递函数零极点配置 三 速度环闭环性能