本文介绍了SYSMAC NJ系列新一代PLC在16轴直线灌装机上的应用,通过现场调试及试生产,系统满足了客户的要求,运行效果良好。
1引言
直线饮料灌装机主要用于灌装各种各样的瓶装饮料,适合于大中型饮料生产厂家。直线饮料灌装机主要包括进瓶、抓瓶、灌装、拧盖、抓瓶、出瓶等几个步骤,在进瓶阶段,通过带有10个固定夹的皮带一次带入10个瓶,在第一个抓瓶阶段,10个抓手同时把10个瓶抓入输送链,在灌装阶段,2组10根罐装管分2次向10个瓶中罐液体,在拧盖阶段,一个伺服带动10个拧盖机构进行拧盖,在第二个抓瓶阶段,把装满的10个瓶从输送链中抓出,送上输出皮带,在出瓶阶段,输出皮带送出已罐瓶,直线饮料灌装机的系统框图如图1所示。
图1 直线饮料灌装机的系统框图
客户原先用传统的PLC开发过直线灌装机,各轴伺服通过运动控制模块进行控制。各轴的动作时序采用位置判断,然后分别以一定的速度和位置启动各个轴的方式来完成。在过去3年中卖出过5、6套设备,运行效果不好,发生异常停机的频率很高,而且没有暂停功能,每次停机都要全部重新寻原点,生产效率比较低。采用欧姆龙SYSMAC NJ系列新一代PLC进行改造之后,用电子凸轮功能来替代以往的普通运动指令,故障率低,并且很容易完成“暂停”功能。
2系统工作原理及控制需求
饮料灌装机主要包括三大部分:恒压储液罐、夹瓶及灌装头部分、变频调速传送带部分,系统控制功能结构如图2所示。主机的上部是恒压储液罐,里面有上限位和下限位液位传感器,液面低于下限位时恒压储液罐为空,饮料通过进液电磁阀流入恒压储液罐,液面达到上限位时进液电磁阀断电关闭,使液位保持稳定。
图2 系统控制功能结构图
恒压储液罐下面是夹瓶及装瓶头部分,共有20个灌装头。夹瓶装置由气压缸驱动下降,下降到位后,夹瓶装置由另一组气缸夹紧定位,下降及夹紧由行程开关控制位置。夹紧定位后,灌装头由第三组气缸驱动下降,到位后灌装头电磁阀打开,开始灌液,延时后电磁阀关闭,通过控制电磁阀的开启时间达到灌装容量控制。放瓶动作流程如图3所示。
图3 放瓶动作流程
[DividePage:NextPage]
传送带电动机由变频器控制,实现无级变速,达到系统经济运行的目的。电机启动1s后,进瓶气缸缩回、开始进瓶,3s后出瓶处气缸伸出挡住空料瓶。进瓶处设置光电开关检测进瓶个数,当达到相应数量后传送带电动机停止。灌装头下降到瓶口,由通过触摸屏输入的时间,使PLC控制灌装头的开启时间。灌装结束后,灌装头上升,夹瓶装置放松、上升。出瓶处气缸缩回,传送电动机又开始转动,1s后进瓶处气缸缩回,光电开关又开始检测进瓶个数。出瓶动作流程如图4所示。
图4 出瓶动作流程
在本项目中,需要研究的重点课题有以下几点:(1)电子凸轮代替时序控制;(2)暂停功能;(3)工位判断;(4)回零停止;(5)急停保护;(6)曲柄的线性处理;(7)凸轮表的变换。其中,暂停功能和曲柄的线性处理是客户以往旧设备未能实现的功能。
3系统解决方案
3.1方案配置(见表1)
表1 系统方案配置表
NJ-PA3001 |
1 |
NJ501-1400 |
1 |
R88D-KN10H-ECT-Z |
3 |
R88M-K1K020T-BS2-Z |
3 |
R88D-KN15H-ECT-Z |
4 |
R88M-K1K520T-S2-Z |
4 |
R88D-KN20H-ECT-Z |
4 |
R88M-K2K020T-BS2-Z |
4 |
R88D-KN30H-ECT-Z |
2 |
R88M-K3K020T-S2-Z |
2 |
R88D-KN50H-ECT-Z |
1 |
R88M-K4K020T-S2-Z |
1 |
R88D-KN50H-ECT-Z |
2 |
R88M-K5K020T-BS2-Z |
2 |
3.2系统功能实现
(1)电子凸轮代替时序控制
以“进瓶水平”(MC_BottleInHorizontal)为例,主轴为虚轴,从轴为实轴。时序图如图5所示。
图5 时序控制图
主轴以360为一个周期,进行循环速度控制。主轴、从轴都在零位。从轴开始的时候并不启动,而是在主轴位置到达285时开始启动,当主轴位置到达360时,从轴停止。在下一个周期,主轴到达120的时候,从轴开始返回(反转),主轴位置到达220的时候,从轴停止(回零位)。进瓶水平轴与主轴构成的电子凸轮表如图6所示。
图6 进瓶水平轴与主轴构成的电子凸轮表
[DividePage:NextPage]
从图6可以看到,主轴为0的时候,从轴也是0,而根据时序图的要求,从轴的“0”应该在主轴的“285”。显然这样的动作是不正确的。这样编制凸轮表的原因在于,NJ的电子凸轮表的起始点必须为两个“0”,即主轴、从轴都从0开始,如图7所示。
图7 NJ电子凸轮表
解决这个问题的办法是对编制好的凸轮表进行“偏移”,偏移的程序如图8所示。
图8 偏移程序
通过MasterOffset将主轴向后偏移280,这时的动作时序和凸轮形状就与工艺要求相符了,但要注意的是,这时的从轴起始位置不为0,会造成起始速度“无穷大”,从而引发伺服报警。将MasterScaling设置为280,就可以将从轴的起始点推迟到“主轴280”的位置,当主轴启动时,从轴并不启动,而是等到主轴到达280位置时再启动,这样就可以实现客户的工艺要求了。
(2)暂停功能
这套系统相比以前用CS、CJ来做的系统而言,一个很重要的亮点就是可以很容易的实现“暂停功能”,具体程序如图9所示。
图9 暂停功能程序1
虚轴的启动采用速度控制指令,以360为周期循环运动,见图10。
图10 暂停功能程序2
当需要暂停设备时,只需执行MC_Stop指令即可。当再次启动时,只需再次执行MC_Velocity指令,设备会从当前停止的位置继续运行。暂停的好处是,当操作人员需要暂时停止设备,做简单处理,后面又需要快速恢复生产状态时,不需要重新寻原点。对生产效率的提高帮助很大。
(3)工位判断
每排模板上应该夹住10个瓶子进行灌装、加盖、整盖、拧盖、判断缺盖等工序,但由于各种客观情况(风道等问题),并不能保证每次都夹满10个瓶子。当少于10个瓶子的时候,整排都不能进行任何操作,否则设备会产生严重故障(比如无瓶加盖会卡住模板)。解决这个问题的办法是,采用位移指令进行工位判断,具体程序如图11所示。
图11 工位判断程序
[DividePage:NextPage]
(4)回零停止
当按下停止按钮后,各轴的最终停止位置必须是自己的“原点”,这样,在下一次启动时,就不需要重新全体寻原点了(全体回零时间较长)。另外一方面,如果各轴都在原点的话,绝对不会出现“撞车”的现象,否则如果其中一根轴不在原点就停止动作,其它的轴在回零过程中很容易撞上它。回零停止的方法采用Cam_Out指令,程序如图12所示。
图12 回零停止程序
如图12程序所示,当需要停止主拖动轴时,必须要等待主拖动当前动作完成后。根据虚轴的位置判断,当虚轴处于90到140之间时,主拖动处于停止状态,这时执行MC_CamOut指令,就可以将这个从轴顺利脱出凸轮表。
在启动和停止过程中,必须特别注意一个问题,那就是回零停止和启动过程一样,必须要按照严格的顺序来执行。例如,停止时,“出瓶”早于“主拖动”,“主拖动”早于“进瓶”,而进瓶时刚好相反。这样才能保证在下次启动时,出瓶工位的瓶子刚好被抓出,而进瓶工位则是空的,刚好可以开始放瓶。如果不按照顺序启动,则会使进瓶工位“有瓶”状态下打开模板,导致瓶子掉落;或者出瓶工位“有瓶”,但不抓瓶,导致瓶子转到机器底下。这些都是不允许的。
(5)急停保护
对于“撞车”的保护,是整个系统设计中非常重要的一部分。如果所有轴都能够严格按照自己凸轮曲线进行运动,并且没有挂进凸轮的轴也能够正常动作的话,“撞车”原则上是不会发生的。但由于伺服故障、气缸故障等诸多因素的产生,会使得“撞车”发生的概率增加。
“撞车”的情况可以分为两大类,一类是“凸轮动作”内部碰撞,另一类是凸轮动作与非凸轮动作之间的碰撞。例如:进瓶抓瓶机构与进瓶皮带之间,由于进瓶抓瓶的原点位于进瓶皮带上方,下移放瓶时需要水平和垂直两根轴同时动作,才能绕过皮带。如果此时进瓶水平轴由于种种原因没有动作,只有垂直轴在动作,气爪将直接砸在皮带上,造成设备严重的损坏。这属于凸轮动作内部撞车。再例如:当拧盖机构进行拧盖时,拧盖爪抓在瓶子上,如果此时拖板提前开始动作,则会将瓶子拉坏,甚至将模板掀翻。这属于凸轮轴与非凸轮轴之间的碰撞。为避免这些问题的产生,编写了一系列程序,部分程序如图13所示。
图13 进、出瓶模板的空间保护程序
图13所示两段程序是对进、出瓶模板的空间保护,当模板被气缸顶起时,模板绝对不能拖动,否则会被掀翻。这里依旧采取通过对主轴位置的判断,来判断从轴。当主轴位置处于320和360之间时,模板被气缸顶起,同时由模板开合轴将模板分开。如果此时气缸突然下降,模板将来不及合拢,而被掀翻。此时可通过MC_ImmediateStop指令完成急停操作。
(6)曲柄的线性处理
整套设备采用了多个曲柄机构,比如灌装、拧盖升降等等。根据曲柄机构的特性,当伺服匀速旋转时,曲柄机构的垂直速度并不是匀速的,并且垂直位置也不是线性变化的。而灌装机构需要一个相对稳定的速度(主要是防止液体飞溅),和一个线性的标定(可以通过对伺服位置的设定,直接标定灌装量)。解决速度基本恒定的方式如下:
IF 30>=MC_Fill1.Act.Pos OR (180>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>150) THEN
Fill1_Velocity_Out:=LREAL#1*灌装1速度HMI;
ELSIF (60>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>30) OR (150>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>120) THEN
Fill1_Velocity_Out:=LREAL#0.8*灌装1速度HMI;
ELSIF (80>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>60) OR (120>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>100) THEN
Fill1_Velocity_Out:=LREAL#0.5*灌装1速度HMI;
ELSIF 100>=MC_Fill1.Act.Pos AND MC_Fill1.Act.Pos>80 THEN
Fill1_Velocity_Out:=LREAL#0.3*灌装1速度HMI;
END_IF;
[DividePage:NextPage]
用以上公式,可以在灌装伺服到达各个位置时,给予不同的速度,通过对角速度赋予“多段速”来实现垂直速度的基本恒定。再通过每10ms写入一次速度的方式,来实现速度的变换。解决位置可标定的方法如下:
纠偏角度转弧度:=DegToRad(REAL#15);
Fill1_Feed_rad:=ACOS(临时数字1);
Fill1_Feed:=RadToDeg(Fill1_Feed_rad)-REAL#15;
临时数字:=REAL#3.14*REAL#16*REAL#7.5;
临时数字1:=COS(纠偏角度转弧度)-HMI气缸1进给量/临时数字;
通过平面解析几何和三角函数运算,求得伺服角位置和曲柄垂直位置之间的线性关系。
最终实现,触摸屏上面可以直接设定以“毫升”为单位的灌装量值。
(7)凸轮表的变换
凸轮表编制好以后,每根轴都会按照自己的凸轮表数据进行重复运动。但是,如果更换了产品(主要是瓶子大小有变化),个别轴的动作就要发生变化。例如:把220mm高的瓶子换成了300mm,那么出瓶放瓶时,气爪距离传送带的高度就要增加,这就要求凸轮表可以通过程序进行变换,程序如下:
FOR IndexOutUp := UINT#10#0 TO UINT#10#360 DO
IF IndexOutUp<=UINT#10#70 THEN
Cam_BottleOutUp[IndexOutUp].Distance:= Cam_BottleOutUp00[IndexOutUp].Distance*2*BottleOutUpFeed1;
ELSIF IndexOutUp>UINT#10#70 and IndexOutUp<=UINT#10#85 THEN
Cam_BottleOutUp[IndexOutUp].Distance:= (Cam_BottleOutUp00[IndexOutUp].Distance-0.5)*2*(BottleOutUpFeed2 - BottleOutUpFeed1)+BottleOutUpFeed1;
ELSE
Cam_BottleOutUp[IndexOutUp].Distance:= Cam_BottleOutUp00[IndexOutUp].Distance * BottleOutUpFeed2;
END_IF;
END_FOR;
在上述程序中,Cam_BottleOutUp00[IndexOutUp].Distance是出瓶顶升凸轮表的点,IndexOutUp是FOR循环语句的循环变量,通过FOR循环语句,将凸轮表内的若干个点依次更改,再通过如下指令进行保存,这样,这根从轴就会按照新的凸轮表来进行运动了。
4结束语
通过系统现场调试及客户的试生产,所有控制要求的解决方案都得以验证,满足客户的改造需求,并且效果良好。
(欧姆龙自动化(中国)有限公司 FAE中心 王琦、陈志杰)
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容,以保证您的权益!联系电话:010-58612588 或 Email:editor@mmsonline.com.cn。
- 暂无反馈