最近做了一个200smart的通过Profinet控制两个禾川的伺服,完成同步运行的项目。200smart本身不支持同步运行,但是因为同步精度不高,所以笔者索性自己写了一个同步程序,大家可以做个思路参考。
同步的基本原理就是,主轴运行的时候,从轴跟着运行就行,所以最简单的同步方式就是把主轴的实际速度,实时发送给从轴运行就可以了。
方案一:主轴实际速度直接给从轴设定,这种方式下首先出现了速度干扰的问题,这个问题导致主轴即使在匀速运行,而从轴速度变化非常大。所以笔者对速度进行了滤波,采用了三次采样的取中值的方法,这样再进行测试发现两个轴做到了差不多的同步,但是在长时间旋转后,位置误差偏差较大,位置差值不断累积,最终无法同步。
方案二:由于长时间的累积导致了最终位置差值比较大,那么,可以做速度的积分→位置,来把位置纳入速度设定的参考里面,但是既然要做积分,那么每次的采样时间需要一致来保证参数调整稳定性,所以用PLC的扫描时间来做采样就不行了,但是200smart并没有固定周期扫描的程序块,所以笔者通过定时中断程序来做了一个固定扫描周期的程序。所以只要将主轴伺服的位置信息和从轴的位置信息做差,差值再乘一个参数Ki就是下一周期速度需要补偿的速度,这样一来加入了积分环,调试好参数后,经过测试发现运行过程中的位置同步几乎一致,误差在百分之十之内,能够达到笔者项目需求,但是同时发现一个问题,在高速定位时,主轴定位位置比如定位位置是20000,主轴在到达20000后停止,但是从轴由于通讯和扫描周期延迟,会多转半圈到一圈才停止后开始回转,回到20000位置,此时笔者认为,可引入速度的微分→加速度,当加速度急剧变化时来提前给从轴降速,做到减少误差。
方案三:加入了微分,但是效果并不明显,参数调整力度不大,笔者认为,可能是由于伺服本身加减速时间就很快,正常来说伺服默认是20ms/1000r的加速度,这个加速时间已经比笔者设定的速度滤波周期都要快,笔者尝试增加加减速时间,同时减小滤波周期,PLC的扫描周期在5ms左右,当把单周期固定在5ms时,发现PLC的周期要跟不上了,导致了例如正反转切换由于可能在一个PLC扫描周期内完成一次开关导致伺服控制时序不对无法完成正反转等,笔者想过不通过功能块索引,直接去操作通讯地址,但是由于时间问题,笔者放弃了,由于也没有工具去检测通讯时序具体时多少,写入和回复的反馈无法得知,无法判定通讯周期具体时间,同时还要重新开发功能块工作量较大。因此测试效果不理想。笔者觉得,如果再次基础上再要精度高,从轴不再使用速度模式控制,而是通过位置模式控制,利用插补法,来实时预测下一周期主轴的速度和位置,写入从轴,进而让伺服自身的PID位置控制来进行精度控制。由于项目周期和本身工作原因,此方案并没有测试。
楼主最近还看过