4a118
级别: 略有小成
精华主题: 0
发帖数量: 31 个
工控威望: 276 点
下载积分: 818 分
在线时间: 25(小时)
注册时间: 2006-09-06
最后登录: 2024-11-20
查看4a118的 主题 / 回贴
楼主  发表于: 2024-06-14 17:53
图片:
如图,这个是自动清洗搬运装置,1.7号为进出产品输送带,234为清洗工位,时间3分钟(每框产品必须过),4,5工位烘干位,过其中一个位(空的),时间也3分钟。过程其中有的位置必须等,有的位置清洗时间长,搬运机构必须去干其他活,感觉程序要移位指令,但又挺复杂,大家有没好的意见,谢谢了!!
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 373 个
工控威望: 521 点
下载积分: 1466 分
在线时间: 324(小时)
注册时间: 2017-06-12
最后登录: 2024-11-22
查看zmrs163的 主题 / 回贴
1楼  发表于: 2024-06-19 08:39
这个问题可简单可难。最简单的,产品一个个过每个槽,烘干二选一。每个槽就完成不完成两个状态,完成了去触发机械手状态的动作,你这槽子不多直接把所有排列组合拼起来都可以。如果槽子多,30个槽,这么写就吃力了。如果机械手要提前停在最快完成的槽上面,难度就增大了。以前还有某客户跟我说他们烘干一次发现水不干,能不能过两次烘干槽,同时因为烘干慢,他们有3个烘干槽,3选2,难度直接提升一个档次,后来又说有的药槽太慢了,能不能弄M个相同的药槽,过N次,并且保证M个槽子清洗产品的次数要均匀错开,这样换液不影响效率,要把上面这些情况都考虑进去,算法很复杂了,而且因为清洗很慢,测试起来一天跑不了多少产品,很容易有Bug测试不出来。其实即使是最基础的提前等待,不用排列组合的方式写算法难度也不小,我那时还弄了个软件模拟跑清洗算法,测试出来不少实机很难跑出来的bug
[ 此帖被zmrs163在2024-06-19 16:29重新编辑 ]
zmrs163
级别: 家园常客
精华主题: 0
发帖数量: 373 个
工控威望: 521 点
下载积分: 1466 分
在线时间: 324(小时)
注册时间: 2017-06-12
最后登录: 2024-11-22
查看zmrs163的 主题 / 回贴
2楼  发表于: 2024-06-19 10:45
引用
引用第8楼zmrs163于2024-06-19 08:39发表的  :
这个问题可简单可难。最简单的,产品一个个过每个槽,烘干二选一。每个槽就完成不完成两个状态,完成了去触发机械手状态的动作,你这槽子不多直接把所有排列组合拼起来都可以。如果槽子多,30个槽,这么写就吃力了。如果机械手要提前停在最快完成的槽上面,难度就增大了。以前还有某客户跟我说他们烘干一次发现水不干,能不能过两次烘干槽,同时因为烘干慢,他们有3个烘干槽,3选2,难度直接提升一个档次,后来又说有的药槽太慢了,能不能弄M个相同的药槽,过N次,并且保证M个槽子清洗产品的次数要均匀错开,这样换液不影响效率,要把上面这些情况都考虑进去,算法很复杂了,而且因为清洗很慢,测试起来一天跑不了多少产品,很容易有Bug测试不出来。其实即使是最基础的提前等待,不用排列组合的方式写算法难度也不小,我那时还弄了个软件模拟跑清洗算法,测试出来不少实机很难跑出来的bug

我是这么写的,首先每个槽有手自动,屏蔽,功能码(功能码相同代表只需要进入任意一个槽即可,比如烘干),槽中有无产品,当前清洗时间这几个信息,机械手可以抽象为待机,移动到取产品的槽位,抓(上升下降),移动到放产品的槽位,放(上升下降)这几个状态,首先维护一个数组,存放了未被屏蔽的槽的编号,另外一个数组存放了这个槽的产品能否抓出来的判断,然后从头到尾遍历,得到那几个槽的产品可以抓出来,然后机械手在它的移动范围里面取一个剩余时间最短的提前去等待,到时间抓即可。
[ 此帖被zmrs163在2024-06-19 16:30重新编辑 ]
本帖最近评分记录:
  • 下载积分:+1(miusten) 再配合移位指令,做好互 ..