水平货架调度说明
水平货架提供的各种信息
入/出库站台状态
提升机:编码器位置,货叉是否有货(Input光电信号),货叉跟踪的条码
每层旋转货架的工作状态(停止,顺时针,逆事针);
每层旋转货架的零点(入口)位置(如果零点位置有光电就更好,可以把入口位置是否有货的信息抛出来)
每层出库缓存位的信息
调度思路说明
水平货架优于堆垛机的地方:
出库可以每层同时出库;
入库可以让每层的旋转货架提前把空位置放到入口;
入出库可以同时进行,并行作业;
所以入出库效率都大大优化堆垛机;
水平货架调度的时候,要考虑省电,高效运作;
之前调度都是有PLC自身调度,它的思路很简单,每次入出库作业完成后,如果零点位置有货,就马上转移到无货的位置,这样确保入口都是无货的;
至于入库各层的分配,是做1~N层来回平均分配的;
个人觉得有两个不好:
不管入出库,每层货架的动作刚做完,提前预先旋转到一个空货位,没有太大意义,因为你不知道后面的作业就是入库,如果连续出库,这个准备工作就是白做的;而且费电;
由于出库的不均匀,粗暴的1~N层平均分配不是一个好的策略;当然这样程序实现简单;
如何做到高效动作,兼顾省电,是一个比较关键的问题;
主要考虑入库,出库两个方便去考虑优化:
入库优化:
动作分段
并不是要把整个动作做完,才可以做第二个入库;
只要入库提升机动作完成(但是箱子还没有在旋转货架里放好),我们就可以做后面的入库;
每层的循环分配原则
优先使用零点位置正好无货的层,这样就不用额外的去让水平货架旋转;
这种零点“正好无货”的情况,一般是由于出库碰巧造成;
要兼顾每层的空货位的比例大致相等;
时间最久没入库的层;
旋转货架提前准备零点空位置,这个时机如何控制;
根据实践,感觉提前准备很多时候是没有太大必要的;
原因有3个:
a.如果入库量不大,不会造成堆积,没有太大必要提前;
b.提升机动作本身也要时间,就算不提前准备,有可能提升机本身的动作时间就超过旋转货架旋转获取空货位到零点的时间;
c.提前准备经常“不小心”因为出库而白白准备了;
那么什么情况下需要提前准备呢?
连续入库的时候:
就像中学课文里的高尔基的《时间》里说的:一秒刚诞生,第二秒便随之而来,把前者推进到未知的深渊;
提前准备零点也是有逻辑的;
这层货架是没有出库任务的,否者也白准备了;
(如果每层货架都有出库任务,那就不准备了)
在没有出库任务,并且是静止的这几层,挑选一个最合适的;
原则是最久没使用的,货位空闲率偏高的;
3.出库优化:
出库优化主要体现在多任务的时候,如何指导plc动作上如何路径最短;
这就需要把这几个任务同时判断,看那个方向旋转,总路径最短
这里有个注意点:
多个出库任务在进行中的时候,可能有新的任务穿插,所以为了提高效率,要每做完一个,要重新判断,有可能本来顺时针的要变成逆时针方向;或者多任务之前,方向也会拉锯式的调整,这个算法还小有难度,不过也不算很难,就算要遍历所有运动的情况,取一种总路径最短的;
总之,水平货架的调度做好,还是挺有难度的;简化的做法,就是会浪费效率;
复杂的做法就是程序实现费力; 正在做的时候要权衡;
No comment