兄弟们,今天聊一个让我之前折腾了小半个月的活儿——用S7-1200做电子凸轮,让四台伺服跟着主轴同步转。
事情是这样的。上个月接了个包装机械厂的改造项目,一条枕式包装机,原来用的是机械凸轮+链条传动。老机器用了十几年,凸轮磨损了,链条一松,包装膜的封口位置天天跑偏。老板想改成伺服驱动,但又不想把原来的机械结构全拆了重做——成本太高,停机时间也不允许。
说白了,他要的就是电子凸轮:主轴(包装膜牵引轴)走多少,四个从轴(横封刀、纵封刀、送膜辊、切刀)按照固定的比例关系跟着动。原来机械凸轮靠凸轮曲线实现的事情,现在要用程序来实现。
电子凸轮到底是个啥玩意儿
别被名字吓到,其实电子凸轮不难理解。
机械凸轮你们都知道吧?主轴上装一个异形轮子,从动杆沿着轮子轮廓走,主轴转一圈,从动杆就按照凸轮形状做一次往复运动。电子凸轮就是把这个凸轮曲线数字化了——主轴的角度(或者位置)对应从轴的位置,我把这个对应关系写成一个数据表(凸轮表),PLC根据主轴当前的编码器值,查表算出从轴该走到哪。
西门子S7-1200从固件V4.0以上就开始支持工艺对象,其中的”凸轮”功能(Cam)就是干这个的。但说实话,博图里这个功能的配置界面,第一次打开真让人头大。
项目配置:四台伺服一个主轴
先说说硬件:
- 主轴:原来那台3kW变频电机+增量式编码器(2500线),主轴不需要伺服,能转就行
- 从轴1(横封刀):0.75kW伺服,控制封口辊旋转
- 从轴2(纵封刀):0.4kW伺服,纵封往复运动
- 从轴3(送膜辊):0.75kW伺服,间歇送膜
- 从轴4(切刀):0.4kW伺服,每包切断
- PLC:S7-1200 1215C DC/DC/DC,加了两个SB1222信号板扩展高速脉冲输出
- V90伺服驱动器 × 4,PTO脉冲+方向控制
一开始我其实想用Profinet总线的方式控V90 PN,但客户说现场已经有Profinet走别的设备了,怕通讯负载太大。我就退了一步,用了脉冲+方向的方式。S7-1200本体最多4路高速脉冲输出(100kHz),加上信号板能扩到6路,够用了。
凸轮表才是核心
这个项目最折腾人的地方就是凸轮表的数据。
机械凸轮的轮廓是物理上磨出来的,电子凸轮的数据表是逻辑上编出来的。怎么编?
我的做法是:把主轴一圈(0-360°,对应编码器0-10000个脉冲)分成360个点,每个点给定一个从轴位置值。
拿横封刀举例:主轴从0°转到180°的时候,横封刀要从初始位置转到封口位置(完成一次压封);主轴从180°到360°,横封刀复位。这听起来简单,但问题是凸轮曲线不能是直角拐弯的——伺服加减速要平滑,曲线要在起点和终点都做到速度和加速度连续(即S型曲线),不然机器跑起来会抖。
我第一版直接用线性插值,结果机器跑到180°拐点的时候,哐当一声,封口辊猛地一冲——伺服报过载了。
后来老老实实用了五次多项式曲线来做凸轮表。道理也不复杂:主轴的每个位置点,不仅要算从轴的位置,还要算速度和加速度的连续性。五次多项式能保证位置、速度、加速度的三阶连续。
博图里其实有自带的凸轮编辑器(Cam Editor),可以选多项式、样条、正弦等多种曲线类型。但我发现它的多项式阶数有限,而且对于复杂曲线(比如送膜辊需要间歇运动,中间有一段静止不动),内置编辑器生成的曲线不太理想。
最后我用Excel写了个宏,把凸轮曲线数据算好,然后复制到博图的Cam数据表里。笨是笨了点,但数据自己可控。
调试踩的三个坑
坑一:主轴编码器信号抖动
主轴编码器是2500线的增量式,通过HTL信号直接进S7-1200的高速计数器。一上电,主轴还没动,高速计数器就在那儿跳——十几二十个脉冲的跳。这一跳,从轴的位置也跟着抖。
解决:在主轴编码器通道上加了个数字滤波器,博图里把滤波器时长从0.1μs调到10μs,高频干扰就吃掉了。再在程序里做了个死区处理,编码器变化量低于3个脉冲不做响应。
坑二:电子凸轮同步启动时机
一开始我是主轴一转起来就切电子凸轮同步。结果主轴从静止加速到工作速度这1秒钟,从轴伺服直接跟丢——主轴加速过程中电子凸轮的表还没跟稳。后来改成:主轴到速度稳定之后,收到一个”同步使能”信号,再切凸轮同步。而且切同步的时候做了个渐进式切入——第一圈只按50%的凸轮行程走,第二圈75%,第三圈才100%。
坑三:多从轴之间的干涉
横封刀和纵封刀在某个位置会有机械干涉——两个刀具在同一时刻会撞到同一个空间位置。机械设计上这个问题是存在的,但原来用机械凸轮的时候,凸轮轴的相位是固定的,天然避开了。换成电子凸轮之后,每个从轴各自按表走,如果在启动或者停机的时候相位乱了,两把刀就会撞。
解决:在PLC里写了一段逻辑,每次启动前检查四个从轴的相位关系,任何一个从轴的相位偏差超过允许范围,就不让机器启动。停机的时候也是按固定顺序——先退切刀和纵封刀,再退横封刀,最后主轴减速停机。
最终效果和总结
调试了大概五天,机器跑起来了。封口位置偏差从原来的±3mm(机械凸轮磨损后)降到了±0.5mm以内。更重要的是,以后换产品规格,不用再换凸轮了——直接在博图里改凸轮表数据就行。
老板挺满意。但说实话,这个项目比我预想的累多了。电子凸轮这个东西,看着博图里几个配置界面挺简单,真跑起来坑一个接一个。特别是曲线设计那部分,不懂一点运动学原理真的搞不定。
写这个文章也是想给后来做类似项目的兄弟参考。如果你也在折腾S7-1200的电子凸轮,有问题欢迎留言交流。