PLC程序,总共5个工位,判断去哪个工位接料
简述现场情况:现场总共有5条生产线,2台RGV,一条汇总输送线(生产线的料需要运到汇总输送线上),目前只写了一台RGV程序,RGV与总控是通过无线通讯,我把生产线的请求接料信号进行了编号,例如,1号线请求接料位号=10,2号线请求接料位号=20.........,回到空闲工位为60, 以此为例,排好序后,做程序逻辑判断(PLC采用汇川AM403)。
这里我采用的计数的方法,利用一秒定时器,每过一秒进行加一,比较那条线计数Zui大,那去那条线。
创建一秒逻辑定时器:
FB_1S定时器(IN:=(NOT FB_1S定时器.Q) , PT:= T#1S, Q=> , ET=>);
根据逻辑判断,假如此条线有请求接料信号,用if语句,进行累计:
IF hb_1出垛输送请求接料 THEN
IF FB_1S定时器.Q THEN
vd_1号线请求接料计数 := vd_1号线请求接料计数+1;
END_IF
ELSE
vd_1号线请求接料计数 := 0;
END_IF
判断那条线的计数Zui大,此处我采用Zui大值函数,先求出Zui大值:
vd_5条工位计数Zui大值 := MAX(vd_1号线请求接料计数,vd_2号线请求接料计数,vd_3号线请求接料计数,vd_4号线请求接料计数,vd_5号线请求接料计数);
得出Zui大值后,在来判断Zui大值与那条线的计数相等,等于的就可以判断该去那条线接料,程序如下:
IF (hi_模式选择 =30)THEN //模式等于10,只负责5、4、3、2、1五个工位 AND (hi_2号RGV运行状态 =30)
IF (vd_5条工位计数Zui大值 = vd_1号线请求接料计数) AND (vd_1号线请求接料计数 >0)THEN
hi_判断前往工位 := 10;
ELSIF (vd_5条工位计数Zui大值 = vd_2号线请求接料计数) AND (vd_2号线请求接料计数 >0)THEN
hi_判断前往工位 := 20;
ELSIF (vd_5条工位计数Zui大值 = vd_3号线请求接料计数) AND (vd_3号线请求接料计数 >0)THEN
hi_判断前往工位 := 30;
ELSIF (vd_5条工位计数Zui大值 = vd_4号线请求接料计数) AND (vd_4号线请求接料计数 >0)THEN
hi_判断前往工位 := 40;
ELSIF (vd_5条工位计数Zui大值 = vd_5号线请求接料计数) AND (vd_5号线请求接料计数 >0)THEN
hi_判断前往工位 := 50;
ELSIF (vd_1号线请求接料计数 = 0) AND (vd_2号线请求接料计数 = 0) AND (vd_3号线请求接料计数 =0) AND (vd_4号线请求接料计数 = 0) AND (vd_5号线请求接料计数 = 0)THEN
hi_判断前往工位 := 60; //模式等于60时,小车回到2号线位置
END_IF
END_IF
注意:在if语句中,“(vd_5条工位计数Zui大值= vd_1号线请求接料计数) AND (vd_1号线请求接料计数>0) ”,把条件“(vd_1号线请求接料计数>0)”放进去,是为了防止当计数都等于0时,Zui大值也是0,在ifelsif语句中,只要第一个满足,就不会判断后面的逻辑,得限制判断逻辑。