搜索
bottom↓
回复: 29

速度前馈、加速度前馈控制

[复制链接]

出0入0汤圆

发表于 2016-7-4 20:07:11 | 显示全部楼层 |阅读模式
现在通过MCU来控制伺服驱动器,驱动器设置为位置模式,控制电机跟随一个物体运动,始终保持一定的距离,现在就是物体运动速度过快后,导致电机响应速度跟不上,听说在MCU里面做速度前馈和加速度前馈控制算法可以提高响应速度,不知道谁有这方面的经验,希望可以指教一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2016-7-5 08:53:17 | 显示全部楼层
同向直行,子弹可以追上兔子,兔子用什么算法可以追上子弹;
用快些的电机吧

出0入0汤圆

 楼主| 发表于 2016-7-5 21:51:00 | 显示全部楼层
速度前馈和加速度前馈控制真的没人懂?

出0入0汤圆

发表于 2016-7-6 09:12:18 | 显示全部楼层
前馈的概念不懂,在控制系统中"前馈“是指 feedforward , 但是没有你所说的那种作用。 从控制系统角度来讲,如果想提高系统的响应速度,应该加 lead-compensator (超前补偿)。

出0入0汤圆

发表于 2016-7-6 09:33:47 | 显示全部楼层
速度前馈就是提前把兔子的预定路线(方向)和预定速度给电机,就是直接加在你位置控制的后面,电机都是有最大响应速度的,如果是电机本身的原因导致的那就换电机了只能。

出0入0汤圆

发表于 2016-7-6 09:34:47 | 显示全部楼层
不知道你玩儿过IMU没有,或者稳定平台控制,如果玩儿过的话给你解释起来就好解释了

出0入0汤圆

发表于 2016-7-6 23:01:04 来自手机 | 显示全部楼层
速度前溃就是把轨迹规划的速度乘以一个百分比,直接加到速度环。目的是加快匀速段的跟踪速度。加速度前溃同理,不过是为了加快加速段响应。也有把加速度前溃加到电流环的。

出0入0汤圆

发表于 2016-7-6 23:03:58 来自手机 | 显示全部楼层
注意是用于规划的速度,就是你设置的加减速和匀速。

出0入0汤圆

发表于 2016-7-6 23:05:56 来自手机 | 显示全部楼层
百分比根据情况调节,不同的负载参数不同,和调Pid类似

出0入0汤圆

发表于 2016-7-7 08:44:22 | 显示全部楼层
之前做前馈听一个前辈讲的很清楚,以加速度前馈为例,加速度前馈就是速度环给出目标速度后,目标速度和需要的加速度之间有一个比例系数,就是类似于转动惯量,目标速度乘以这个转动惯量就是理论上的目标加速度,即目标电流,直接将这个比例计算出来的目标电流加到电流环的输出上,相当于这个路径是一个 Vref 到 Iq out 的一个比例直通,这个部分就是前馈,PID 直接并联在这个上面,如果超调的时候 PID 就输出负值,如果不足 PID 就输出正值,相当于对于电流环来说,有个交流分量和一个直流分量,交流分量由 PID 输出,直流分量由前馈输出,这样减少了 PID 输出的变化范围,大动态由前馈输出,相当于 PID 在输出斜率(上升下降速度/带宽)不变的情况下,加快了响应速度,实际上就是带宽的提升,不过那个类似于转动惯量的值不太好调,貌似可以用模型算出来。速度环和位置环以此类推,不过一般是用来增加电流环的响应速度。

出0入0汤圆

 楼主| 发表于 2016-7-7 16:18:39 | 显示全部楼层
zcf287 发表于 2016-7-6 23:01
速度前溃就是把轨迹规划的速度乘以一个百分比,直接加到速度环。目的是加快匀速段的跟踪速度。加速度前溃同 ...

伺服驱动器已经做了位置环、速度环、以及电流环的控制了,MCU只是控制伺服驱动器,现在就相当于在位置环的外面了,只能发脉冲给伺服驱动器,没法控制速度环和电流环。

出0入0汤圆

 楼主| 发表于 2016-7-7 16:22:06 | 显示全部楼层
lyz1900 发表于 2016-7-7 08:44
之前做前馈听一个前辈讲的很清楚,以加速度前馈为例,加速度前馈就是速度环给出目标速度后,目标速度和需要 ...

MCU只是控制伺服驱动器,现在就相当于在位置环的外面了,只能发脉冲给伺服驱动器,没法控制速度环和电流环

出0入0汤圆

 楼主| 发表于 2016-7-7 16:22:41 | 显示全部楼层
zcf287 发表于 2016-7-6 23:01
速度前溃就是把轨迹规划的速度乘以一个百分比,直接加到速度环。目的是加快匀速段的跟踪速度。加速度前溃同 ...

MCU只是控制伺服驱动器,现在就相当于在位置环的外面了,只能发脉冲给伺服驱动器,没法控制速度环和电流环

出0入0汤圆

 楼主| 发表于 2016-7-7 16:23:10 | 显示全部楼层
中星讯达 发表于 2016-7-6 09:33
速度前馈就是提前把兔子的预定路线(方向)和预定速度给电机,就是直接加在你位置控制的后面,电机都是有最 ...

MCU只是控制伺服驱动器,现在就相当于在位置环的外面了,只能发脉冲给伺服驱动器,没法控制速度环和电流环

出0入0汤圆

发表于 2016-7-7 17:28:52 来自手机 | 显示全部楼层
位置系统加前馈,等于串联一个微分环节(超前环节),来提取速度分量以补偿位置系滞后响应。但是,前馈微分同时也引入了扰动和干扰,做得不好会使系统稳定性变差。

出0入0汤圆

 楼主| 发表于 2016-7-7 19:18:09 | 显示全部楼层
wiser803 发表于 2016-7-7 17:28
位置系统加前馈,等于串联一个微分环节(超前环节),来提取速度分量以补偿位置系滞后响应。但是,前馈微分 ...

我想知道怎么去增加前馈,可以指教一下吗?
前馈不是开环控制吗,怎么会引入干扰呢?

出0入0汤圆

发表于 2016-7-7 22:10:07 来自手机 | 显示全部楼层
我以为你要自己做伺服,原来是现成的驱动器。驱动器里已经做好前馈了,你自己调参数就可以了。没听过还要自己额外再加前馈的

出0入0汤圆

发表于 2016-7-8 08:52:48 | 显示全部楼层
zhang849920 发表于 2016-7-7 16:22
MCU只是控制伺服驱动器,现在就相当于在位置环的外面了,只能发脉冲给伺服驱动器,没法控制速度环和电流 ...

。。。看到楼主你的回复,略想骂人。。。
都直接给脉冲数控制位置了,还前馈啥,连反馈都没有了,环路都没有了,啥都没有了。。。。咋控制,咋控制,咋控制。。。
但是,想一想,总会有办法,从简单到复杂:
1)换一个更 NB 的伺服驱动器,换更 NB 的电机,提高伺服驱动器和电机的功率,劲大了加速度就大了,这个牛顿说的。
2)目的是为了提高位置环带宽,提高响应速度,所以证明可以调参数增加伺服驱动器的响应速度,可以调的变量有速度环 P、I、 前馈参数(即转动惯量),位置环 P,I,不过一般比较低级的驱动器才可以单独调这些参数,不太好调,建议楼主看下驱动器的说明书,看下哪些参数可以调的,哪些不可以调的,另外看下伺服驱动器的说明书里面有没有介绍他们驱动器的性能指标,看下是否达到了极限性能,如果没有,我觉得可以调下前馈参数,做到和转动惯量匹配就可以达到很好的效果了,如果实在不知道怎么搞,可可以去咨询下驱动器的售后 FAE。
3)对于一些高级一点的驱动器,直接给脉冲数或者模拟量的方式进行位置伺服可能不如总线方式直接给数值相应速度快,精度高,觉得可以换成 CanOpen 给控制信号,或者有 PowerLink / EtherCat 给控制信号的方式控制,有可能会增加相应速度。
4)实现起来可能会复杂一些,一般伺服驱动器带有力矩模式、速度模式,就是直接控制力矩(仅有电流环)或者直接控制速度(仅有电流环速度环),可以直接用这两种模式,在你的 MCU 里面实现位置环速度环或者位置环,在自己实现的位置环和速度环上增加积分分离、积分抗饱和、前馈之类的,或者其他高级算法,针对你自己系统的特点设计这些反馈环路,一般能够达到效果,反馈信号直接用你系统上追踪的那个东西的位置、速度直接反馈回来,速度、力矩可以使用脉冲或者模拟量的方式给,针对系统进行设计的话,牺牲精度、震荡、或者超调量,来提高带宽和速度。这个方法如果达不到,只能用1)中的方法了,基本上算是终极方法了。
╮(╯▽╰)╭,希望楼主不是大学生,因为如果是大学生的话我说多少都没有用。。。。

出0入0汤圆

 楼主| 发表于 2016-7-9 11:02:14 | 显示全部楼层
lyz1900 发表于 2016-7-8 08:52
。。。看到楼主你的回复,略想骂人。。。
都直接给脉冲数控制位置了,还前馈啥,连反馈都没有了,环路都 ...

系统是有位置传感器反馈位置信号的,这样就构成了位置闭环控制,给定(参考输入)为位置信号大小,反馈为位置信号,伺服驱动器只是执行机构,同样可以是步进电机也是同样的,是要在这样的一个系统上做速度前馈、加速度前馈。
http://www.iyeya.cn/portal.php?mod=view&aid=929这篇文章没理解

出0入0汤圆

 楼主| 发表于 2016-7-9 11:03:58 | 显示全部楼层
lyz1900 发表于 2016-7-8 08:52
。。。看到楼主你的回复,略想骂人。。。
都直接给脉冲数控制位置了,还前馈啥,连反馈都没有了,环路都 ...

在位置控制或全闭环控制时,从内部位置控制器计算出的速度控制信号与速度前馈信号相叠加,再与位置反馈信号进行比较,采用速度前馈信号,可以使位置偏差、速度偏差减小,从而提高伺服系统的响应性。怎么理解?

出0入0汤圆

 楼主| 发表于 2016-7-9 11:15:37 | 显示全部楼层
lyz1900 发表于 2016-7-8 08:52
。。。看到楼主你的回复,略想骂人。。。
都直接给脉冲数控制位置了,还前馈啥,连反馈都没有了,环路都 ...

给定为X(s),Gp(s)为PID控制,Gb(s)为执行机构(伺服驱动器),反馈为Y(s),如果是速度前馈,则将X(s)通过前馈输去到PID控制Gp(s),因为X(s)是固定的,一旦前馈系数确定,前馈的输出也就固定了,那这样前馈还有什么用,还怎么样提高响应速度?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-7-11 14:29:04 | 显示全部楼层
zhang849920 发表于 2016-7-9 11:02
系统是有位置传感器反馈位置信号的,这样就构成了位置闭环控制,给定(参考输入)为位置信号大小,反馈为 ...

你的系统是 MCU 作为运动控制器,直接给驱动器脉冲方向信号是吧,那你 MUC 有没有接你执行机构的编码器或者位置传感器之类的东西,MCU 能不能实时的知道你伺服驱动的电机到底实际运动到哪里了?如果不能知道,就是没有反馈环路在你的控制系统中,你系统中的反馈环路在伺服驱动器上,所以你 MCU 无论怎样也不能反馈控制,因为反馈没有反馈到 MCU 上,反馈跟你 MCU 的控制没关系。如果有反馈信号到你 MCU 上,那么反馈的是什么信号?是代表绝对位置的脉冲数码?如果是这样,你的 MCU 除了能给伺服驱动器位置信号,还能不能给速度信号?因为位置前馈是加到速度上的,速度前馈是加到加速度上的。如果能给速度信号给伺服驱动器,控制伺服驱动器的速度环,那么就是着么理解的,所谓位置前馈,就是你要让伺服驱动器走20米,那么基本上一般来说,在通常情况下,你的伺服驱动器会按照1m/S 的平均速度来走,但是启动时候是加速,快到地方是减速,那么就先直接给速度环的输出加上一个1m/S,让 PID 去调节完成加减速过程,这样pid输出只是输出了速度的加减速这个变化量,没有输出1m/S 这个绝对量,于是相应速度就会快一点点。所以你应该搞清楚你 MCU 的输入是什么输出是什么,能控制什么,能知道什么,才能搞是不是前馈,另外我写了这么多,希望你能好好看看,不要直接去找烂书本的东西,那些东西你也看不懂,因为你没有学到这个程度,给你一些简单实用的经验和建议比较有用,你研究书本要研究半天也不明白,另外如果你是大学生、研究生,请当我什么都没说,因为说什么都没有用

出0入0汤圆

发表于 2016-7-11 14:48:16 | 显示全部楼层
zhang849920 发表于 2016-7-9 11:15
给定为X(s),Gp(s)为PID控制,Gb(s)为执行机构(伺服驱动器),反馈为Y(s),如果是速度前馈,则将X(s) ...

这个图,按照我的理解,Gr(s) 是一个前馈,就是把 X(s)乘以一个前馈变量,Gp(s)是位置环 PID ,X(s) 是位置环输入,Gb(s) 并不是伺服驱动器,而是伺服驱动器的速度环和电流环,可以理解为一个伺服驱动器设置为速度跟踪模式,实际上如果这么理解,那么伺服驱动器就是运行在 速度环模式下,并没有位置环,给定输入是目标速度,输出是 Y(s) 可以是电机的速度,也可以看成是给电机输入的电流之类的。所以这个图实际上就是我给你说的(4)这种方法。实现起来比较复杂。
简单解释我在另一个回复里面有解释为什么前馈会增加相应速度。

出0入0汤圆

发表于 2017-4-9 13:38:19 | 显示全部楼层
学习一下谢谢!

出0入0汤圆

发表于 2017-4-10 11:45:28 | 显示全部楼层
抓到牛人一枚,mark~

出0入0汤圆

发表于 2017-12-6 17:12:25 | 显示全部楼层
学习了,前馈控制讲解的非常好。

出0入0汤圆

发表于 2017-12-6 18:15:46 | 显示全部楼层
本帖最后由 ywlzh 于 2017-12-6 18:18 编辑

看了楼主层的描述 很明显是驱动器不给力 想要用自己的MCU去干涉电机运动,别费劲了,换个好的私服电机和驱动器吧

就我目前使用的私服电机,想要动起来,128W个脉冲转一圈 在这种条件下 还要去想S-cure运动?MCU做的来吗?

出0入0汤圆

发表于 2017-12-6 21:44:21 | 显示全部楼层
ywlzh 发表于 2017-12-6 18:15
看了楼主层的描述 很明显是驱动器不给力 想要用自己的MCU去干涉电机运动,别费劲了,换个好的私服电机和驱 ...

不是驱动器不给力,楼主的项目估计是,mcu+伺服+末端反馈的大闭环控制

伺服最好设定为速度模式,mcu根据末端执行器的反馈值做大闭环控制,给速度环指令前,除了PID,外加一个速度前馈,最终的跟踪误差才会很好。

出215入169汤圆

发表于 2021-12-22 19:59:59 | 显示全部楼层
有一招可解,就是比较复杂:用MPC(模型预测控制)
只要能预测电机的滞后量,可以提前给位置指令。软件弄个虚拟的马达,计算需要给多少提前量就刚好现在能到达,发出去就可以了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-16 08:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表