工控肥仔
工控肥仔
级别: 网络英雄
精华主题: 0
发帖数量: 675 个
工控威望: 5673 点
下载积分: 4301 分
在线时间: 779(小时)
注册时间: 2018-11-17
最后登录: 2024-12-23
查看工控肥仔的 主题 / 回贴
楼主  发表于: 2022-05-10 10:21
图片:
各位大师帮我想想,从CCD过来给出一组数据,M300----M307,一共八个产品,

          假如:M300 ----M307为一组数据,
                    1,如果全部置ON就是良品,可以一次全部摆放过去
                    2,如果产品中间有不良品出现,丢掉不良品后再去摆盘,此时有空缺位,
                          假如M307,M306为良品,M305为不良品,M304后面全是良品,
                          这时就需要先放M307 M306,在往前 前进一位,在一次放下其他产品
                          整个摆放流程最多不能超过四次,就是说有几个良品先放几个,空缺位一次往前补,知道有良品为止
                      

                       大家帮我想这种程序怎么写方便些


                        产品用三轴摆盘,下面是手工画的平面图
sjbandmm
级别: 略有小成
精华主题: 0
发帖数量: 237 个
工控威望: 407 点
下载积分: 987 分
在线时间: 168(小时)
注册时间: 2008-08-23
最后登录: 2024-11-19
查看sjbandmm的 主题 / 回贴
1楼  发表于: 2022-05-10 22:08
这个算法要根据你的机械机构来设计的,你没说清楚,怎么剔除NG产品,是抓取后先剔除NG,你都没说,我只能跟据你说的来猜了,看你的要求是:8个产品中,无论哪几个产品有问题,在码盘的时候要紧密摆放,剔除NG产品的空位。
看你的算法要求一次性抓取所有的产品,然后将最后的几个连续的OK品放下后,再移动前面未放下的产品的,消除空位。
如果是这样的话:使用for-next指令就行,从8开始到1,先搜索到第一个NG的位置,再搜索NG后第一个OK品,第一个NG减第一个OK位置,就是需要移动的位置。
比如M305和M304、302为异常,那么第一次搜索到NG位置位6,第一次OK位置位4,那么6-4=2(移动距离),第一次释放的产品为M300+4=M304到M307,释放4个抓具,然后移动2个位置。
第二次循环从4-1开始,第二次搜索到NG位置为3,OK位置位2,移动距离位3-2=1,再次释放复位M300+2=M302到M307,第二次移动一个位置。
下次问问题还是描述清楚,不是你明白别人也明白。