3.2系统功能实现
(1)电子凸轮代替时序控制
图5 时序控制图
图6 进瓶水平轴与主轴构成的电子凸轮表
图7 NJ电子凸轮表
图8 偏移程序
通过MasterOffset将主轴向后偏移280,这时的动作时序和凸轮形状就与工艺要求相符了,但要注意的是,这时的从轴起始位置不为0,会造成起始速度“无穷大”,从而引发伺服报警。将MasterScaling设置为280,就可以将从轴的起始点推迟到“主轴280”的位置,当主轴启动时,从轴并不启动,而是等到主轴到达280位置时再启动,这样就可以实现客户的工艺要求了。
(2)暂停功能
这套系统相比以前用CS、CJ来做的系统而言,一个很重要的亮点就是可以很容易的实现“暂停功能”,具体程序如图9所示。
图9 暂停功能程序1
图10 暂停功能程序2
当需要暂停设备时,只需执行MC_Stop指令即可。当再次启动时,只需再次执行MC_Velocity指令,设备会从当前停止的位置继续运行。暂停的好处是,当操作人员需要暂时停止设备,做简单处理,后面又需要快速恢复生产状态时,不需要重新寻原点。对生产效率的提高帮助很大。
(3)工位判断
图11 工位判断程序
(4)回零停止
图12 回零停止程序
如图12程序所示,当需要停止主拖动轴时,必须要等待主拖动当前动作完成后。根据虚轴的位置判断,当虚轴处于90到140之间时,主拖动处于停止状态,这时执行MC_CamOut指令,就可以将这个从轴顺利脱出凸轮表。
在启动和停止过程中,必须特别注意一个问题,那就是回零停止和启动过程一样,必须要按照严格的顺序来执行。例如,停止时,“出瓶”早于“主拖动”,“主拖动”早于“进瓶”,而进瓶时刚好相反。这样才能保证在下次启动时,出瓶工位的瓶子刚好被抓出,而进瓶工位则是空的,刚好可以开始放瓶。如果不按照顺序启动,则会使进瓶工位“有瓶”状态下打开模板,导致瓶子掉落;或者出瓶工位“有瓶”,但不抓瓶,导致瓶子转到机器底下。这些都是不允许的。
(5)急停保护
对于“撞车”的保护,是整个系统设计中非常重要的一部分。如果所有轴都能够严格按照自己凸轮曲线进行运动,并且没有挂进凸轮的轴也能够正常动作的话,“撞车”原则上是不会发生的。但由于伺服故障、气缸故障等诸多因素的产生,会使得“撞车”发生的概率增加。
图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;
用以上公式,可以在灌装伺服到达各个位置时,给予不同的速度,通过对角速度赋予“多段速”来实现垂直速度的基本恒定。再通过每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;
4结束语