伺服控制的三环控制原理及整定仿真和Simulink模型

  我们平时使用的工业伺服,通常是成套伺服,即驱动器和电机型号存在配对关系。但有些时候,我们要用电机定转子和编码器制作非成套电机——例如机床上使用的直驱转台、永磁同步电机直接驱动的主轴。这种时候,我们需要对驱动器进行各种设置才能驱动电机。此篇文章将通过介绍伺服控制的三环控制原理入手来说明我们调式非成套伺服时需要调什么参数,为什么要这么调。
  伺服电机本身是不能独立运行的,伺服电机的运行源于伺服驱动器的“驱动”。而伺服驱动器对伺服电机的驱动基于三环控制。所谓三环控制,是指控制环路包含三个控制环路——位置环、速度环、电流环。

电流环

  首先我们来观察三环中最内侧的电流环。这也许是一个挑战,因为电流环是三个控制环路中最复杂的一个。电流环的控制框图如下:

  左上方蓝色字体的“电流命令值”是该环路的输入,它是电机q轴电流的给定值;左上方蓝色字体的“0”是该环路的另一个输入,它是电机d轴电流的给定值。但是在伺服电机控制中,d轴电流的给定值一般永远为零,所以整个电流环可以看作只有一个“电流命令值”的输入。
  电流环在运行时首先会通过电流感器测得伺服电机的UVW三相电流,然后经过Clarke变换计算得到正交的两相电流,再经过Park变换获得电机当前的d、q轴电流。d、q轴电流分别与各自的给定值(0、电流给定值)相减,获得各自的误差值,该误差值通过PI控制器计算出当前修正的d、q轴电压,最终通过Park及Clarke逆变换得到UVW的三相电压目标值,然后经三相电桥逆变生成最终的UVW三相电压然后驱动伺服电机。
  在上述的控制中,PI控制器的整定值决定了电流环的响应速度、精度、稳定性。这是我们在实际操作中需要关注的一个地方①。
下方红色“转子位置(电角度)”是环路的一个内部输入,这个输入来源自电机编码器转换后的结果。Park变换及Park逆变换都需要这个输入来进行输出的计算。可见“转子位置(电角度)”也是电流环控制必不可少的一个环节。而“转子位置(电角度)”=(编码器位置*电机极对数+编码器偏移量)%360。也就是转子位置(电角度)等于 编码器的实际角度 乘以 电机的极对数 加上 编码器的偏移量 ,然后整个对360进行模运算的结果。
  由上可见,我们要获得必不可少的“转子位置(电角度)”,就必然需要编码器位置、电机极对数、编码器偏移量②(不同厂商对该名词定义不同,例如西门子叫换向角偏移,其它有的厂商叫编码器零点偏移量)。

Ps:如果驱动器单纯运行在电流环方式下(位置环及速度环均不运行,驱动器直接接收外界的电流命令),那么我们就称驱动器运行于力矩模式(对于同一个电机,其产生的力矩T=电流I*力矩常数Kt。所以给定了电流就等于给定了力矩)。

速度环

  当我们有了一个可靠的电流环,我们可以继续向电流环的外圈——速度环开始探索。对于速度环来说,电流环使它的一部分或者说是它的一个内环。在探索速度环时,我们假定它的内部的电流环是理想的,即我们要求多大的电流,电流环就真的生成多大的电流;同时我们把电流环复杂的内部运算简化成一个黑箱。

简化后的速度环结构如下图:

  我们可以看到,左上角有一个速度环的外部输入“速度设定值”,这是速度环的主要外部输入。速度环的运行目标便是让电机的运行速度等于速度设定值。速度环的运行逻辑是,接收到电机编码器传来的电机实际速度,然后用速度设定值减去电机实际速度获得电机速度的误差值,然后改误差值经过PI控制器的运算得到一个电流给定值。该给定值发送给电流环,然后电流环按照我们先前介绍的方式使电机通特定电流,最终电机在该电流的驱动下达到我们的速度设定值。
  下面我们来更具体的描述一个速度控制过程:一开始电机停止,我们给定一个速度值V,PI控制器获得一个输入(V-0),然后产生一个电流命令值发送给电流环,电流环随即产生对应的电流,电机有电流后产生一个力矩开始转;然后下一个周期,速度环得到了电机的新速度v1,PI控制器获得新输入(V-v1),然后产生一个电流命令值发送给电流环,电流环随即产生对应的新电流,电机在新电流下产生一个新的力矩,在新的力矩作用下,在原有速度的基础上产生新速度……。在若干个这样的控制周期后,电机的速度将动态的等于给定速度V,这就是速度环的作用。显然,PI控制器在速度环中起到了关键的作用③。

Ps:如果驱动器直接运行于速度环方式下(位置环不生效,驱动器直接接收外界的速度命令),那么我们就称驱动器运行于速度模式。

位置环

  现在我们已经有了速度环,我们进而可以再向外推进,为速度环再套上一个位置控制环路来行程我们最终的位置环。位置环的基本控制结构如下图:

  可以看到,位置环接收外界的位置命令,然后用位置命令与编码器反馈的电机实际位置做差得到位置误差。然后该误差经过PI控制器的计算获得速度设定值,然后控制内部的速度环让电机产生对应的速度,最终产生的速度使得电机逼近设定的位置。
  我们来更具体的描述一个位置控制过程(注意,为了简化模型,我们把PI控制器简化为P控制器,即只有比例控制。实际上,现实中的位置控制往往也的确使用P控制器代替PI控制器,如西门子数控系统):一开始(记为0s)电机停止在0°位置,我们给定一个位置10°,P控制器获得一个输入10-0=10,我们假设P控制器的增益(gain)是20(单位1/s),则P控制器的输出为1020=200°/s。紧接着,速度环接收到这个命令,使得电机速度达到200°/s(我们假设速度环是理想的,没有任何的速度偏移,也没有加减速过程)。我们继续假设我们的速度环运算周期是0.01s,那么0.01s时,电机的位置为200°/s0.01s+0°=2°。然后此时位置误差为10-2=8,则P控制器的输出为820=160°/s。紧接着速度环接收到这个命令,使得电机速度变为160°/s。到0.02s时,电机位置变为160°/s0.01s+2°=3.6°……
  在上面的过程中,电机不断的逼近我们的命令位置,在若干个控制周期后到达目标位置。通过观察上面的例子我们不难看出,P控制器的增益决定了电机的响应速度。实际上,P控制器的增益越大,位置响应越快,动态的跟随误差越小;但是由于实际的速度环和电流环不是理想的,并且机械上存在各种间隙及扰动,所以过大的增益可能导致系统的震荡!可见,位置环P控制器的增益对于位置控制起到了至关重要的作用④。

伺服电机驱动设置归纳

  经过前文的叙述,我们在讲解伺服电机控制原理的同时也归纳了四个较为重要的重点:①电流环PI控制器对电流环的性能起到至关重要的作用;②电流环要正常运行编码器位置、电机极对数、编码器偏移量必不可少;③速度环PI控制器对速度性能起到至关重要的作用;④位置环PI控制器增益对位置性能起到至关重要的作用。
  实际上,我们在配置伺服驱动器驱动伺服电机时(普通伺服亦是)只要正确的保证了上面的几点就基本能够保证电机的正常运行。笔者在此推荐的顺序是:
1、 输入电机的电阻、电感、极对数、负载惯量等参数。在输入这些参数后,驱动器的内部算法会根据电机模型计算出电流环PI控制器的比例、积分增益,由此我们便保证了重点①;
2、 正确的设定驱动器的编码器协议,使得驱动器可以正常的获得电机的准确位置(在这里需要注意的是,我们需要保证编码器的正方向与电机的正方向一致,否则转子位置的计算将是错误的,电机将不能正常运行);
3、 完成上面两部动作后进行换向角偏移量的测定,换向角的测定可以使用驱动器自带的测定功能,也可以通过示波器测定后输入到驱动器中(示波器测试可以获得更精确的换向角偏移量,由此可以提高实际运转时的扭矩常数Kt,进而提高整体性能,但是示波器法较为复杂,操作不善往往事与愿违,故通常建议使用驱动器内置的测定程序);(至此,通过2、3步骤我们保证了重点②)
4、 开始试运行,选择速度模式,整定速度环控制器增益,使得速度运行精确稳定无震荡。作为位置环的内环,一个良好性能的速度环是位置环坚实的地基!(至此,我们保证了重点③)
5、 试运行切换到位置模式,根据电机的实际运行调整位置环增益。通常推荐先将位置环增益调整至较大值,使得位置环发生震荡。然后再把位置环增益设置为产生震荡增益的1/2,由此可兼顾性能与稳定性。
  在完成1至5条的操作后,伺服电机一般就可以正常使用。此过程可以作为直驱转台类非成套伺服的基础调试路径。

根据上述过程的仿真调节

  在完成了上面的分析后,我们可以设计一个三环控制系统的仿真来观察和试验我们总结的过程。在这里,我使用python根据三环控制原理和力学原理设计了一个仿真程序。

  这个程序将会仿真一个位置运动的过程,并将位置命令、实际位置,速度命令、实际速度,电流命令、实际电流分三个子图显示出来。在每个子图中,红色为命令值,蓝色为实际值。
  我将各环节的比例增益都初始为1,积分增益为0.001,并没有开启延时环节(实际机械传动有弹性环节的存在,形成一个传递延时)。要注意的是,位置环只设置了比例增益,因为位置环是无偏的(实际上,西门子的控制器位置环也是没有积分增益的)。
  运行后,的结果如下图(子图从上到下分别为位置环、速度环、电流环):

  可以看出,无论是位置环还是速度环还是电流环都有很大的偏差。我们先调整电流环的比例增益,将其增加到2.5试一试。结果程序发生了错误,经检查发现curcmds的最大值是inf也就是无穷,对应实际的伺服就是电流环发生了震荡。如下图:


  如果在真实的驱动器上发生这样的电流环震荡,驱动器将发生报警。如果震荡很厉害,严重的时候甚至有可能对伺服驱动有损伤。我们把比例增益降到2,然后把积分增益提高到0.01。结果发现开始时的电流误差的确变小了,但是后期电流值变得高频震荡。整个电流环依然是欠稳定的,但是已经开始接近了。如下图:

  因为比例增益为2的时候,积分增益稍稍提高就震荡,而要消除偏差又需要增大积分增益,所以将比例增益稍稍降低至1.8,后调节积分至0.02,发现电流环相应较好。如下图:

  在电流环整定的较好后,我们开始调整速度环,先将速度环比例增益调整为10,发现速度环的响应已经很好,并且能够发现,随着速度环变好,位置环也变好了,这就是之前提到的内环对外环的影响。(需要注意的是,模型中的延时环节是没有开启,待后面开启后,速度环可就没这么稳定了)如下图:

  在我看来,这样的速度环应该已经足够了,所以开始进行位置环的调节。将位置环的增益跳到10,可以看出,位置环的控制精度已经大大提高了,基本运动位置能够根据运动命令随动。如下图:

  但我之前已经多次强调过了,我们一直没有开启延时环节。而延时环节由于实际机械传动不可避免的存在弹性是不可能消除的。那么如果增加了延时环节会怎么样呢?下图可以看,尽管所有参数都没有变更,但在单纯增加了延时环节后,系统又变得震荡了。所以机械传动的刚性对整个控制系统至关重要。这也说明了为什么直驱系统的控制性能大于有机械传动的系统。
  在开启延时环节后,我们再次尝试调整各个增益至较好的控制性能。此次的具体过程不表。最终的调节结果如下图:
  可以看出,加入延时环节后的系统在调整到能调整到的较好水平时位置环的控制性能明显较之前没有延时环节的情况恶化了。所以,我们一定要避免过长的机械传动链产生的弹性环节,因为弹性环节的存在将使得在增益较低的情况下机械就发生震荡,从而使得我们只能使用较低的增益,而较低的增益意味着较低的性能(对于位置环来说就是更大的随动误差)

Simulink仿真

  为了更一步精确的对电机进行仿真,作者又根据前面提到的控制原理进行了Simulink的三环控制建模。

  在仿真中,首先获得电机的机械角度,并根据电机的磁极对数和换向角偏移计算出磁极的电角度位置。

  然后采集的电机d、q轴电流和磁极位置被传入电流环。电流环则由电流环PI控制器先进行d、q轴电压的计算,而后通过Park反变换和Clark反变换得到ABC三相电压的设定值。

  在获得ABC三相电压的设定值后,在驱动脉冲模块内通过与基波计算获得六个IGBT的开关状态,并将六个开关脉冲发送到逆变器,从而驱动逆变器以SPWM的方式调制三相正弦波对永磁同步电机PMSM进行驱动。

在模型内,除了电流环,还设置了速度环和位置环,并可以通过开关进行切换。

python仿真的源码

Simulink永磁同步电机三环控制仿真

伺服控制的三环控制原理及整定仿真和Simulink模型相关推荐

  1. 双馈风机虚拟惯性控制+下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落

    双馈风机虚拟惯性控制+下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率19.4% ...

  2. 双馈风机调频,风电调频,风火水调频,虚拟惯性控制,下垂控制 参与系统一次调频的Matlab Simulink模型

    双馈风机调频,风电调频,风火水调频,虚拟惯性控制,下垂控制 参与系统一次调频的Matlab Simulink模型 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率20% 也可研究风火 ...

  3. 双馈风机虚拟惯性控制参与系统一次调频的Matlab Simulink模型

    双馈风机虚拟惯性控制参与系统一次调频的Matlab Simulink模型 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率19.4% 风机采用虚拟惯性控制,转速回复模块,在系统频率跌 ...

  4. 频率二次跌落,双馈风机虚拟惯性控制+下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落

    Matlab/simulink 频率二次跌落,双馈风机虚拟惯性控制+下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落 系统为三机九节点模型,所有参数已 ...

  5. 三相电非线性负载仿真电路--simulink模型

    三相电非线性负载仿真simulink模型,可通过调试串联RLC模块参数来获取各相电流与电压之间的关系: simulink模型免费下载地址:https://download.csdn.net/downl ...

  6. DFIG虚拟惯性控制+下垂控制的系统一次调频的simulink模型

    双馈风机虚拟惯性控制+下垂控制参与系统一次调频的Matlab/Simulink模型,调频结束后转速回复,造成频率二次跌落 系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电渗透率19.4% ...

  7. 伺服控制、步进控制和变频控制原理及区别

    目录 伺服控制 步进控制 变频控制 来源:网络 伺服控制 交流伺服电机的工作原理 伺服电机内部的转子是永磁铁,驱动器控制的U/V/W三相电形成电磁场,转子在此磁场的作用下转动,同时电机自带的编码器反馈 ...

  8. 伺服控制中的震动问题

    来源:网络 直流伺服电机的速度和位置控制原理是什么?  运动伺服一般都是三环控制系统,从内到外依次是电流环.速度环和位置环. 1.首先电流环:电流环的输入是速度环PID调节后的输出,我们称为" ...

  9. svpwm仿真_【好物推荐】《现代永磁同步电机控制原理及MATLAB仿真》

    为什么推荐这本书? 学习FOC已经学习了有一段时间了,期间了记录了挺多笔记,有些整理了发了出来,可以查看我的主页,有些暂时没有发,经验点还需要完善.说实话,电机是挺难的,尤其是期间有很多次遇到问题无从 ...

  10. 该模型为PMSM的伺服控制系统仿真,对位置进行控制,外环为位置环,位置环输出为和给定速度

    该模型为PMSM的伺服控制系统仿真,对位置进行控制,外环为位置环,位置环输出为和给定速度,速度环的输出之后为电流环,仿真结果表明其能稳定跟踪给定位置. ID:85188677132331890Keep ...

最新文章

  1. 从旁观者到贡献者:经历 OpenYurt 的“开源之夏”,我们想让更多人体验社区的魅力
  2. 网银系统服务器架构设计,网上银行建设架构精选.pdf
  3. 支付宝上线新功能:家长们放心了!
  4. TensorFlow总结(2020版)
  5. MySQL 操作 —— group by(按组)
  6. win7+vs2015+pcl1.8.0配置
  7. 黑色的cms商城网站后台管理模板——后台
  8. 微信公众号 自定义菜单跳转html页面 前端获取code,openid
  9. git deamon 一个简单的git服务器
  10. 斐波那契数列几个公式
  11. Android 常用控件详解
  12. AIO-rk3399j Linux-开机自动连接wifi
  13. android 官方ui库,腾讯出品的一个超棒的 Android UI 库
  14. 韩国5G产品定价及营销策略剖析
  15. 【转载】sdcard中平添文件总是提示Failed to push the item(s)Failed to push XXXXX.txt on emulato...
  16. ThreadLocal是什么
  17. Translation idea插件
  18. OpenLayer学习之加载天地图在线地图
  19. static应用知识:代码块
  20. 【看板】看板软件/项目管理软件记录

热门文章

  1. BMZCTF misc1
  2. Unity ToLua LuaFramework_UGUI学习笔记
  3. Unity 编辑器扩展 子物体材质替换
  4. 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第7章 数据挖掘
  5. 产品经理—怎么用KANO模型给众多需求进行优先级排序?
  6. 小米笔记本充电实测追求速度牺牲兼容性小米笔记本充电驱动_开学劲薄之高性价比笔记本电脑选购指南...
  7. 分享5个宝藏文字转语音配音软件,错过太可惜
  8. mysql 唯一索引为null_mysql 唯一索引与null.md
  9. oracle简单函数的写法,Oracle 简单函数
  10. 软件测试面试题和简历模板(面试前准备篇)