首先要知道灌装设备的传动部分是靠凸轮分度器,使杯板的运行为步进式,主轴每转一周,杯板前进一个工位。
根据图1所示,热封2是最后一个需要控制的工位,那么把它的位置设定为第0位,这样热封1是第3位,落盖是第6位,灌装是第9位,光电传感器在第12位。
下面看程序:
接近传感器的下降沿,也就是杯板即将运动的一瞬间,如果有杯子,光电传感器信号为ON,执行逻辑或功能块,一开始的时候VD20的值是0,所以执行完以后 VD24的值为1000000000000。执行右移1位以后,VD20的值为0100000000000,如果下一排有杯,在接近传感器的下降沿继续执行逻辑或,VD24的值变为1100000000000,移位后VD20的值为0110000000000,如果下一排没有杯,那么在接近开关的下降沿光电传感器信号为OFF,执行双字传送功能块,VD24的值就是刚才VD20的值0110000000000,移位后VD24的值变为 0011000000000,如果下一排又有杯了,那么接近传感器下降沿执行逻辑或,VD24的值变为1011000000000,移位后VD20变为 0101100000000。
有的朋友用移位的时候,喜欢用一个边沿检测触发一次,其实没有必要,因为只要被移位的值不变,例如VD20=2#1000,触发多少次移位功能块都是把1000移位成0100,所以我用SM0.0触发移位,控制被移位变量的数值就可以了。
做完移位后要控制各工位的动作,只需要知道该工位的位值是1还是0,是1时工作,0时不工作。后面的几个逻辑与功能块就是做这个用的。比如灌装在第9位,那么用1000000000与VD20进行逻辑与运算。如果VD20的第9位是1,那么VD28=1000000000,如果是0,那么VD28=0,用比较功能就可以知道杯板里有没有杯子。后面几个工位也是这样检测的。这样的效果就是:哪个杯板里有杯,杯板运行到相应的工位后有动作,无杯就不动。