cwm0848
级别: 探索解密
精华主题: 0
发帖数量: 66 个
工控威望: 184 点
下载积分: 492 分
在线时间: 73(小时)
注册时间: 2017-03-21
最后登录: 2024-05-13
查看cwm0848的 主题 / 回贴
楼主  发表于: 2022-01-07 09:40
传送带产送3种规格的工件,分别是10克、20克和30克。PLC通过气缸将工件推入对应的槽。现在要求给槽分拣出300克的工件,该如何编程。请教各位大神提供编程思路。(传送带过来的工件时随机的,可能是3种工件中的任何一种,且不能只推一种规格的工件,比如只推入10克的工件,这样效率太低)。谢谢。
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 664 个
工控威望: 1042 点
下载积分: 139 分
在线时间: 535(小时)
注册时间: 2019-09-22
最后登录: 2024-05-15
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2022-01-07 11:03
凑整算法呗,你这三种重量正好都可以凑最大30克,所以考虑最后的终止条件,缓冲区累计重量达到270克时,根据倒数第二个来的物料的重量决定下一个的动作逻辑,一共也没有几种组合,以下以设X=270

X+30+0,直接结束
X+20+10,再等一个确定值
X+10+20,再多做一级分支,20克就结束
X+10+10+10,最后一种情况

倒推后可以获得:

通过4种组合方式你就可以得到一个最小30克的package,累计10个package就达到了目标重量
也就是说,我系统只接受上面4种组合,从第一个物料进来开始就进入这个组合的逻辑链中,结果是必然的.
当然上述算法不是最优的,会抛掉大量的30克和20克物料,理论上可以通过增加组合数量的方式容纳更多的组合方式来模拟随机的物料进入顺序,比如用60克作为最小计量单位,但是这样逻辑分支马上就会膨胀的非常快,在执行效率和程序复杂度上需要取一个平衡.
楼主留言:
我同意您的看法,组合非常多,远不止4种,所以不是最优的方式,在执行效率和程序复杂度上需要取一个平衡。谢谢。
是否还有别的思路呢?谢谢。