楼主这个控制就是相当于双位置闭环控制了:伺服驱动器本身自己有个位置环,所以在上位机将一定的驱动脉冲发完后等一段时间(如果这个时间用户可以接受),伺服系统会准确的停在相应的位置上。这个方式对客户来说,相当于一个半闭环控制(可能不是很准确)。当采用楼主上面这种方式时(姑且称之为双闭环控制方式),等到编码器反馈的位置到达客户需要的位置时,由于存在滞后,其实上位机已经发送了多余的一部分脉冲,所以这个时候不管采取什么办法,肯定存在位置偏差,这个时候无非就是想办法让这个位置偏差尽量的小,小到客户可以接受的误差范围之内。那只有两种办法,一种是提高伺服系统的跟随特性;一种是减小停机前的速度(就是楼主说的提前减速)。如果从伺服系统的跟随性入手,楼上很多兄弟已经说过了,提高位置增益等,但这个时候就可能会出现楼主所说的系统启停时柔性变差的问题,刚性太强,机械振动太大。所以归根结底还是要回到改善减速特性上面来。但这个时候有存在一个问题,本身驱动器有自己的减速曲线和跟随特性,它会实时的根据驱动脉冲的频率和位置来调整减速(这个过程对上位机来说是个黑盒子),再加上上位机自己的加减速曲线,对于整个系统的加减速来说就是不可预知的了,肯定不会按照设计者的初衷来加减速。所以这个减速点的选择(或者计算)是个非常困难的事情。能不能通过这种方式,上位机也对编码器的反馈进行测速。当采用一定的加速过程到达目标速度(反馈回来电机实际的速度)时,这个时候离启动位置的距离(姑且称之为加速偏移)上位机可以获得,根据对称原理(前提是加减速过程对称),在预订的停止位减去这个加速偏移的位置开始减速,不知道会不会取得理想效果。说了很多,可能没什么帮助,或者也有错误。我想这个问题,做伺服的肯定最清楚,不知道他们会建议客户采用什么方式,楼主可以联系下他们的客服啊
如果不是参数没调好就是伺服性能太差,或者伺服电机选型不当。
如同楼上所说,做成双位置环基本上可以说是错误的方法。
根据我的经验,用某些开环但是带有反馈检测的CNC控制器,可以看到编码器反馈回来的脉冲和发出去的脉冲之间的差值,如果伺服没调好,即使在匀速运动的阶段有时也会超过1mm。如果把伺服的位置环增益、位置环前馈、速度环增益、速度环时间常数等参数都调好了,这个误差可以控制在0.003mm以内。所以说,在伺服出于位置模式时,这个跟随误差其实不是上位机能够控制的(上位机该发的脉冲都发完了,再继续发脉冲只能导致错误结果),关键在于伺服本身。楼主还是好好去调整伺服参数吧。
加大增益不见得就会导致运动不平缓,因为你完全可以在上位机实现较长的加减速。只要不发生振荡或者啸叫,把伺服增益和前馈调大一些会好点。
回复内容:
对: coolzhpfree 这位兄台说的很对,确实是存在你说的情况,怎么样做减速才... 内容的回复!
如果是恒定负载,就好办些。用直线减速,伺服工作在速度模式,直线减速,加快位置采集控制环响应时间,至少达到1/10误差响应时间,才能获得良好的性能。
是可变负载吗?
如果是,那本身就是一个非常困难的课题。
这是个稳、准、快的案例,本就是伺服追求的目标。如果依靠伺服本身的位置控制模式无法满足你的控制要求的话,用单片机,估计不太可能满足你的要求。至少控制算法是个非常困难的课题。
说白了,你想用单片机完成目前你用的台达伺服还无法完成的性能。
建议更换性能更高的伺服器。
回复内容:
对: 第五纪冰川 回复内容:对: coolzhpfree 这位兄台说的... 内容的回复!
负载是恒定的,我用的是脉冲+方向控制模式。直线加减速就是 Fm = F0 + aT;控制模式,伺服的扭矩为 10N/米,最高转速1200R/min,伺服传动比为4:1,电子此轮比为 1:1,负载的最高速度为1米/秒,负载运行 1米,伺服电机要旋转15转,负载在长度为 1.5米的车床上反复来回运动。要想负载运行在最高速,伺服电机的转速要达到900R/min。每次往复运行时都有一个加减速过程。每次运行时都有一个定位过程。我现在用ARM控制。通过输出脉冲个数来定位,通过扫描编码器来纠正位置。现在想要找一个合适的加减速控制算法,或者是一个好的方案,来确定怎么给伺服脉冲,才能让电机运行的稳、准、快。
回复内容:
对: coolzhpfree 回复内容:对: 第五纪冰川 回复内容:对: cool... 内容的回复!
编码器扫描周期多长?
编码器分辨率多少,毫米/个脉冲?
最大误差多少?毫米。
“等反馈位置等于目标位置时停止给脉冲”,这个方法不对。
走梯形曲线,伺服用速度模式,上位机只给定速度,速度环由伺服自己控制,速度环响应也快。伺服会自己按加速曲线(我认为直线更容易控制)加速到最大转速,这个加速曲线是稳定、可控的。然后在到达目标之前就必须开始减速,到速度减为0时,刚好到达给定目标位置。加减速段所走过的距离是可以精确计算的,上面有兄弟已经说过了。至于加减速时间,这个由系统惯量来决定,你现在能在规定时间内到达目标,只是定位精度不高,证明伺服器选择合理,加速度没有问题。
为了定位准确,减速曲线应该尽量长(在时间允许的情况下),越长运行越平稳,这个时间确定了,就能确定需要在什么位置开始减速,上位机只要检测到到达这个位置,就让伺服减速,到伺服速度减为0时,正好为目标值。重复定位精度就得看实际效果了,想必能达到你的要求。
这个控制方法唯一要求的就是你必须以足够快的扫描速度来检测位置,如果扫描周期过长,如一个扫描周期位置变化速度超过了你多误差的要求,那么无论如何都不可能精确定位。我的感觉是扫描速度必须控制到1/10误差位置时间。这样能得到很好的效果。其实你可以用硬件计数高速中断,不要用扫描。单片机更方便,速度更快,应该没问题。
我用PLC、变频器控制一个提升机械,2T重,速度10mm/S,最终定位重复精度能控制优于0.1mm的精度。扫描速度2mS。
你这个项目和我以前设计过的一个磨床高速机械手相仿,移动长度1200mm,当时计算最高速度是500mm/S,这个项目最后没敢接,速度太快了。发过帖子,你参考下:http://bbs.gongkong.com/d/201110/399112_1.shtml
10楼有过实际案例。
感谢你的回复:
我的项目是用在电脑横机上的,机器长度为 1.5M左右,伺服传动皮带,皮带带着机头在导轨上运行,负载重为 20KG左右。负载要在机床上来回反复运行。
编码器的扫描周期为 0.5ms。
编码器的分辨率为 0.035mm/脉冲
最大误差 10mm
电子齿轮比 1:1
伺服扭矩 10N/m
伺服功率 1500W
最大转速 1200R/min
负载运行最高速度 1200mm/s (也就是说 算上加减速的时间1秒钟机头要走1100mm)
伺服控制模式 位置控制模式(脉冲 +方向)。
现在我的脉冲频率可以到达200KHZ,但是在减速的时候 存在严重的脉冲滞留现象。已经远远超出了我计算的误差范围。