你是否经历过一个人独自摸索前进磕磕碰碰最终体无完肤,然后将胜利的旗帜插到山顶的时刻,如果有,本文也许能帮你在调试FOC电流环的时候给你带来一些帮助和思路。
如果本文帮到了您,请帮忙点个赞 ;
如果本文帮到了您,请帮忙点个赞 ;
如果本文帮到了您,请帮忙点个赞 ;

1 系统架构

系统架构是双闭环架构,从内而外分别是电流环速度环位置环,有感FOC算法可以参考这篇文章《有感FOC算法学习与实现总结》。所以在这环环相扣的系统中,内环的电流环显得格外重要,电流环需要快速响应,稳点性好的特点。
系统架构图如下:

在FOC算法中,将系统交流同步电机的控制系统解耦为以转子为参考坐标的DQ交直轴旋转坐标,相关坐标变换可以参考《FOC中的Clarke变换和Park变换详解(动图+推导+仿真+附件代码)》,因此最终只需要控制IqI_qIq​,IdI_dId​就可以像控制直流电机一样的方式对交流同步电机进行控制。
这里比较关键的是如何对IqI_qIq​,IdI_dId​进行PID控制器的参数整定。

2 转矩模型

2.1 交直轴电压方程

这里先不讨论前面的电流采样和坐标变换,在得到IqI_qIq​和IdI_dId​之后,就要通过PI控制器,具体如下:

  • IqI_qIq​在经过PI控制器之后,可以得到 UqU_qUq​;
  • IdI_dId​在经过PI控制器之后,可以得到 UdU_dUd​;
    这里也就是为什么使用PI控制器的原因了,下面看一下在电机模型中,IqI_qIq​和UqU_qUq​,IdI_dId​和UdU_dUd​的关系如下;
    {ud=Rid+Lddiddt−wrLqiquq=Riq+Lqdiqdt+wr(ψd+Ldid)\begin{cases} u_d = Ri_d+L_d\cfrac{di_d}{dt} - w_rL_qi_q\\ u_q = Ri_q+L_q\cfrac{di_q}{dt} +w_r(\psi_d+L_di_d)\\ \end{cases}⎩⎪⎨⎪⎧​ud​=Rid​+Ld​dtdid​​−wr​Lq​iq​uq​=Riq​+Lq​dtdiq​​+wr​(ψd​+Ld​id​)​

ddd 轴:

  • udu_dud​为电机直轴电压;
  • idi_did​为电机直轴电流;
  • LdL_dLd​为电机直轴电感;

qqq 轴:

  • uqu_quq​为电机直轴电压;
  • iqi_qiq​为电机直轴电流;
  • LdL_dLd​为电机直轴电感;

其他:

  • RRR 为电子定子电阻;
  • ψd\psi_dψd​为永磁体的磁链,因为磁链方向和 ddd 轴方向相同,因此后面都用ψd\psi_dψd​表示;

该空间抽象如下图所示;

2.2 转矩方程

永磁同步电机的转矩方程为:
Te=npiq[id(Ld−Lq)+ψd]T_e = n_pi_q[ i_d(L_d-L_q)+\psi_d]Te​=np​iq​[id​(Ld​−Lq​)+ψd​]
关于永磁同步电机的类型区别可以参考《永磁同步电机 spmsm 和 ipmsm 的区别总结》,本文只讨论SM-PMSM,表贴式的永磁同步电机因为隐极特性的存在所以Ld=LqL_d = L_qLd​=Lq​;所以电机的输出转矩方程可以简化为:
Te=npiqψdT_e = n_pi_q\psi_dTe​=np​iq​ψd​

npn_pnp​为电机极对数;

所以不难发现,npn_pnp​为常数,ψd\psi_dψd​为永磁体的磁链,在无弱磁的情况下,通常为常量;
因此这里在另id=0i_d = 0id​=0的时候,只要控制 iqi_qiq​,就实现对了电机输出转矩的控制。

补充一下运动方程对于转速控制的解释;

3 PI 控制器

idi_did​和iqi_qiq​经过PI控制器之后的输出被变换成实际的电压VdV_dVd​和VqV_qVq​,作用于后续的电机模型,因此通过 udu_dud​ 和 uqu_quq​ 电压方程可以知道,PI控制器对电机的参数依赖性比较强,同样的,因此这里有几种方法可以进行参数的整定;

  • 直接整定法,通过经验试凑进行整定;
  • 参数测量法,先测量电机LdL_dLd​,LqL_qLq​,RRR等参数,大致计算出PI控制器参数范围,然后进行细调整;
  • 自适应PI参数,这是在TI文档看到的一种方法,能力有限,暂不能展开;

所以,本文最终介绍的是经验试奏法

4 参数调节

具体按照经典的PID参数调节方法即可,先调节KpK_pKp​参数,然后再KiK_iKi​参数,这里需要时刻将反馈值和设定值进行比较,直到达到满意的效果位置。

4.1 相关理论

先看PID整定的口诀:

参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢,微分时间应加长
理想曲线两个波,前高后低四比一
一看二调多分析,调节质量不会低

4.2 调试过程

由于Ld=LqL_d = L_qLd​=Lq​,这里通过先调试D轴,将Q轴PI控制器设置为零,这样可以排除Q轴的影响,在单轴达到比较好的响应效果之后,将D轴PI控制器参数拷贝一份送给Q轴的PI控制器即可,这里很关键

只加入比例环节,设定值为1000
单纯加入比例环节的时候,可以将KpK_pKp​的系数逐渐增大,会发现反馈值逐渐靠近给定值,因为没有积分环节的作用,最终反馈值无法达到给定值;

加入积分环节
发现系统虽然存在超调,但是最终反馈可以稳定在给定值;

对于较大的超调可以适当减少KpK_pKp​参数,或者使用积分分离PID进行控制;

关于超调
因为在启动过程中,电流会很大,所以在频繁启动和制动的过程中,如果无法减少超调,就会出现启动直接过流的情况,这里一定要想办法避免。
接下来逐步修改参数,直到达到自己满意的效果为止,只能慢慢积累调试的经验,没有太多捷径可言。

5 总结

本文介绍了表贴式永磁同步电机FOC矢量控制中电流环PI控制器参数的调试过程,电流环的性能直接影响到整体系统的性能,所以该环节是十分关键的,另外传统的PI控制器可能无法满足系统的性能要求,需要在此基础引入更多的优化算法,比如积分先行,积分分离,积分限幅,模糊PID,神经网络PID等等,具体就需要根据系统的资源和系统指标进行选择。

笔者能力和水平有限,文中难免有错误和纰漏之处,请大佬们不吝赐教;
创作不易,如果本文帮到了您;
如果本文帮到了您,请帮忙点个赞 ;
如果本文帮到了您,请帮忙点个赞 ;
如果本文帮到了您,请帮忙点个赞 ;

FOC中电流环调试的宝贵经验总结(有理有据+全盘拖出)的更多相关文章

  1. AWS云使用100条宝贵经验分享

    在今天的文章中,我整理出了大量当初曾经错过.而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得.在几年来的实践当中,我通过在AWS之上新手构建及部署各类应用程序而积累到 ...

  2. AWS使用心得:当初我曾错过的那些宝贵经验

    在今天的文章中,我整理出了大量当初以前错过.而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得. 在几年来的实践其中,我通过在AWS之上新手构建及部署各类应用程序而积累 ...

  3. Android NDK中的C++调试踩坑标记

    RT, Android NDK中的C++调试, GDB调试比较麻烦,在ADT Eclipse中: 1.配置好NDK给工程加上Native Support 2.编译中加上NDK_DEBUG=1 3.然后 ...

  4. RS485 VS 20mA 电流环

    RS485采用差分信号负逻辑,+2V-+6V表示“0”,- 6V-- 2V表示“1”.RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种 ...

  5. vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb

    vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb << 返回vim使用进阶: 目录 本节所用命令的帮助入口: :help vimgdb 在UNIX系统最初设计时,有一 ...

  6. 4~20mA模拟输出(电流环)应用笔记(转)

    https://zm12.sm-tc.cn/?src=http%3A%2F%2Fwww.aichengxu.com%2Fview%2F5397788&uid=d2f68cd7fd230c162 ...

  7. 程序异常崩溃后用windbg辅助调试解决的经验 以及 堆栈问题调试经验

    1,程序异常崩溃后用windbg辅助调试解决的经验  状况:我的程序调用别人的库做 文件写入工作. 在这一过程中出现异常,程序崩溃. 经反复检查,认为自己的程序没有错,但无法判断在别人库里哪里有错. ...

  8. [LeetCode] Linked List Cycle II 单链表中的环之二

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...

  9. Visual Studio工具栏中无法选择调试设备

    Visual Studio工具栏中无法选择调试设备 在Visual Studio工具栏中,默认显示已经识别的设备.用户可以从中选择对应的设备,进行调试和部署App.但是由于误操作,可能导致该选项丢失. ...

随机推荐

  1. TcxGrid

    一.列的宽度为64时,其宽度会自动根据字段的长度调整,设置其他值即为固定值: 二.cell中显示按钮:选中某列,在properties中更改为ButtonEdit,点击子属性buttons添加butt ...

  2. 8行代码帮你python建立UDP通信

    首先我们要搭建一个UDP通信,首先我们就要知道什么UDP: UDP用户数据报传输协议,它位于TCP/IP协议的传输层,是一种无连接的协议,它发送的报文不能确定是否完整地到达了另外一端.UDP广泛应用于 ...

  3. 从联想昭阳到MacBook Pro,致我的那些败家玩意——电脑

    对于程序员来说,你懂的,电脑就是我们的女朋友,在很多层面上,它都是,打游戏.敲代码,以及看影片. 我第一台电脑是联想的笔记本(昭阳系列),花了 4000 多块买的. 那时候,家里很是缺钱,4000 多 ...

  4. 74HC595芯片的特性及使用方法和点评

    一 它能干什么?   74HC595是一个8位串行输入.平行输出的位移缓存器:平行输出为三态输出.在SCK的上升沿,单行数据由SDL输人到内部的8位位移缓存器,并由Q7‘输出,而平行输出则是在LCK的 ...

  5. python信息收集(三)

        前两篇介绍了利用python编写一些脚本实现二层主机的发现,这一篇介绍一下三层主机的发现.     一般来说,三层主机的发现主要是通过ICMP协议来实现的.其中ICMP协议中的ping命令可以 ...

  6. vim的常用指令

    vim的常用指令如下: 光标运动: h,j , k, l (上/下/左/右) 删除字符: x 删除行 : dd 模式退出 : Esc,Insert(或者i) 退出编辑器 : q 强制退出不保存: q! ...

  7. Hadoop的下载和安装

    Hadoop的下载和安装 一:Hadoop的简介 Apache的Hadoop是一个开源的.可靠的.可扩展的系统架构,可利用分布式架构来存储海量数据,以及实现分布式的计算. Hadoop许使用简单的编程 ...

  8. CSS中“~”(波浪号)、“,”(逗号)、“+”(加号)、“>”(大于号)、“ ”(空格)详解

    “~”:$('pre ~ brother')表示获取pre节点的后面的所有兄弟节点,相当于nextAll()方法: “+”:$('pre + nextbrother')表示获得pre节点的下一个兄弟节 ...

  9. 0day学习笔记(3)Windows定位API引起的惨案(原理)

    段选择器FS与TEB WinNT内核下内存采用保护模式,段寄存器的意义与实模式汇编下的意义不同.另外,FS存的是段选择子,而不是实模式下的高16位基地址. FS寄存器指向当前活动线程的TEB结构(线程 ...

  10. QT bug ig9icd64.dll

    QT bug ig9icd64.dll bugintel ig9icd64.dll 处有未经处理的异常 遇到了一个 奇奇怪怪的bug, 一般的QT程序中 在main.cpp 中初始化一个窗口进行显示后 ...