感应(异步)电机磁场定向控制速度环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控制参数设计 的相关文章

  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • MATLAB 滚动图

    我有一个脑电图数据库 我想绘制它 数据库是一个19 1000 134的矩阵 其中 19 是通道数 在第一种方法中 我只使用一个渠道 1000 个样本大小 采样率为 500 Hz 时为 1000 个点 即 2 秒数据 134 epochs的数
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b
  • 给定协方差矩阵,在Matlab中生成高斯随机变量

    Given a M x M期望的协方差 R 以及所需数量的样本向量 N计算一个N x M高斯随机向量 X在普通 MATLAB 中 即不能使用r mvnrnd MU SIGMA cases 不太确定如何解决这个问题 通常你需要一个协方差并且意
  • 从动态 Java 类路径导入 Java 类时出现 Matlab 编译器 MCC 错误

    我怎样才能得到mcc识别来自用户提供的 Java 库的导入 还是简单地忽略无法解析的导入 我有一个使用 Matlab 编译器构建的 Matlab 代码库 但构建正在中断 因为mcc遇到的时候会报错importMatlab 动态类路径上的 J
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan

随机推荐

  • 多年收集的一些稀有软件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控制参数设计 目录 电机控制系列文章 前言 一 速度环开环传递函数 二 速度环开环传递函数零极点配置 三 速度环闭环性能