有一个流水线,有7个工位,依次是扫码上料、视觉检测1、热熔、锁螺丝、视觉检测2、检测通断、喷码,其中在检测通断后,如果当前工件不管是视觉检测1不合格,还是视觉检测2不合格,以及通断不合格全都在这里推出流水线。
扫码和喷码是买某厂家的整套系统,大致流程就是在上料工位先进行扫码,二维码经过处理后生成一个新的二维码,先存在喷码系统里,然后工件放入流水线,然后经过视觉检测1、热熔、锁螺丝、视觉检测2、检测通断工位后,如果工件合格,那么继续前行,在喷码工位将扫码生成的新的二维码喷在工件上,如果其中任何一个检测不合格,那么就在检测通断后边由设备自动推出流水线,而且在视觉检测1时检测不合格的话,那么在后边的热熔、锁螺丝等工位全部不执行动作,到了推出的地方直接推出。任何时候不允许从流水线上往下或往上拿工件,不许调换工件的顺序。
工件是连续放料的,在流水线上工件与工件可能是一个挨一个的。
每个工位都有一个单独的PLC,以便将来可以将每个工位单独拿出来使用,PLC用欧姆龙的CP1E系列,具体型号还没确定。
有一个问题,就是在这个传送线上怎么做工件的跟踪呢,打比方,在视觉检测1时如果NG,那么怎么让这个工件经过后边的工位时全都不加工呢,最主要的是喷码工位喷的二维码是由第一个工位扫码运算得出的,扫一个码就生成一个新的二维码,等工件来的时候再喷出来,但是如果任一检测不合格的话就在喷码前推出了,那么要怎么告诉喷码系统这个工件已经推出了呢,让他将这个工件的二维码跳过不喷,等再下一个工件来时再喷出其相应的二维码。
我之前考虑过用计数器,从开机后第一个工件就开始计数,然后就可以记录第几个工件是不合格的了,但是有2个问题,第一就是计数器最大的计数也就65535,但是这个设备一个白班的加工量就是7000个,如果赶上忙的时候早晚班连续运转,几天的加工量就超出计数器最大计数了。第二就是计数器只能计数,想要存储信息的话还是要用到D或者W之类的,一个计数器数值对应一个D或者W,单说计数器最大值65535的话D或W没有这么多的寄存器啊!!
然后我还想过用位移,从视觉检测1开始,如果合格就给一个1,不合格就给一个0,然后再后边的视觉检测2和检测通断的地方一样,来的工件是0就不检测,直接放到推出位置推出,如果是1就继续检测,根据检测结果给1或0,感觉这个方法还行,但是这个具体要怎么写还真蒙了,因为感觉还是要涉及到用计数器,不然检测NG的话怎么才能知道这是第几个工件呢,而且有3个检测工位,就算第一个工位合格的话,在第2个或第3个不合格的话,那要怎么才能知道是要将第几个1给变成0呢,最主要的是PLC要告诉喷码系统,是哪个工件已经推出去了,让喷码将那个工件对应的二维码删掉,避免喷到后边的工件上。
我也不知道我的叙述清楚不,现在就是这个工件跟踪的逻辑不会,具体要怎么写程序呢,几个工位的PLC准备用PC LINK连接,然后上料工位的PLC做主站,用RS232的HOST LINK与上位连接,因为要有个上位信息记录一些数据之类的。
请大神帮忙看看,第一这个跟踪的逻辑怎么写(CP1E用不了堆栈指令),第二我这几个PLC、上位的通讯方法是否可行。谢谢