雙深位堆垛機(jī)的調(diào)度方法解析

立體倉庫
  1. 雙伸貨位的關(guān)鍵屬性:

a.內(nèi)側(cè)或外側(cè) ,又叫近貨位或遠(yuǎn)貨位(相對堆垛機(jī)的位置);

b. 當(dāng)前貨位稱之為兄弟貨位號,這個(gè)在程序關(guān)聯(lián)處理時(shí)將會非常有用;內(nèi)外側(cè)貨位,哪一個(gè)為兄,哪一個(gè)為弟;為了便于理解,內(nèi)側(cè)為弟,外側(cè)為兄;

c .兩個(gè)兄弟貨位的最小(或最大)入庫時(shí)間;這個(gè)屬性便于在出庫分配的時(shí)候做同時(shí)出庫的優(yōu)化處理;

d. 鎖定托盤號; 某個(gè)貨位上,可能指定托盤號;也就是說,只要是這個(gè)托盤號準(zhǔn)備入庫的時(shí)候,就一定要分配到這個(gè)位置上(除非這個(gè)貨位上有貨 或者 被外側(cè)擋?。?/p>

這個(gè)主要用在某些客戶,要求托盤 揀選后 ,托盤還要回到原來的位置;或者因?yàn)槿?nèi)側(cè)托盤弟弟導(dǎo)致的外側(cè)哥哥移庫,等內(nèi)側(cè)弟弟做完,外側(cè)哥哥還要移回來;

  1. 入庫貨位分配原則:

a. 內(nèi)側(cè)弟弟不在家即無貨但是外側(cè)哥哥有貨,這種情況下,內(nèi)側(cè)貨位弟弟不能被分配,否則,會被哥哥阻擋甚至暴揍!

b. 指定托盤號的貨位,如果正在入庫的托盤和它一致,直接分配該貨位 ;否則這些指定托盤號的貨位就不要用來分配,打個(gè)比喻;這種貨位,已經(jīng)“名花有主”了;

c. 內(nèi)側(cè)弟弟在即有貨,外側(cè)哥哥不在即無貨,將要入庫的產(chǎn)品和和內(nèi)側(cè)一致,生產(chǎn)日期也是同一天的(當(dāng)然也可能是其他條件,具體項(xiàng)目具體對待),就優(yōu)先把這個(gè)外側(cè)的貨位分配掉;這樣盡量讓兩個(gè)貨位同時(shí)填滿;打仗親兄弟,一起上戰(zhàn)場,再盡量一起同時(shí)為國捐軀;盡量兩個(gè)貨位同時(shí)填滿,再同時(shí)出庫;

d. “孤獨(dú)”貨位優(yōu)先使用,有的貨位因?yàn)榱⒅赖仍?,沒有兄弟貨位;屬于“鰥寡孤獨(dú)” ,這樣的貨位更適合多多使用,因?yàn)槭菃紊頋h,自在又瀟灑,來去無牽掛;使用起來就和單伸一樣,相對不容易出故障;

但也要考慮這些單身貨位是否距離出庫口太遠(yuǎn),如果都在遠(yuǎn)處,這個(gè)原則也可以不要;反正具體問題具體分析,而且很多規(guī)范的倉庫,往往沒有這樣的貨位;

e.內(nèi)外側(cè)都無貨的貨位,兄弟出去打架去了,家里即貨位空位同時(shí)“干凈“,老媽會疼愛弟弟 這種貨位優(yōu)先分配內(nèi)側(cè)弟弟,哥哥只有生氣的份兒!

f. 內(nèi)側(cè)有貨外側(cè)無貨,但是將要入庫的托盤上的貨物和內(nèi)側(cè)的不一致,這種情況是,在庫內(nèi)無其他貨位可分配的情況下,哥兩個(gè)只能和睦相處,被逼只能搭伙過日子;因?yàn)槌鰩斓臅r(shí)候,大概率是不會一起共同出庫的;所以這種分配形式的優(yōu)先級是最低的;

j.內(nèi)側(cè)有貨外側(cè)無貨,但是內(nèi)側(cè)托盤有待出庫的任務(wù),這個(gè)時(shí)候,萬萬不可分配到外側(cè)去,哪怕整個(gè)巷道就剩下這一個(gè)貨位了,也不行;

  1. 出庫備貨分配原則:

a. 絕對的精確到秒的先進(jìn)先出不行;因?yàn)榇蟾怕实氖窍热霂斓姆旁趦?nèi)側(cè);所以我們往往以天為單位,出入庫方式設(shè)計(jì)為同一天入庫的,先進(jìn)先出的級別是一樣的,也就是說早上8點(diǎn)和晚上5點(diǎn)入庫的兩個(gè)托盤,出庫的時(shí)候,先出后面的,也不算違反先進(jìn)先出;

b. 兄弟貨位作為一個(gè)整體,取他們兩個(gè)最小(或最大也行)以時(shí)間作為分配原則,這個(gè)可以精確到秒,分配的時(shí)候,以這個(gè)時(shí)間作為第二優(yōu)先級排序,這樣備貨分配的時(shí)候,基本上能盡量把兩個(gè)貨位同時(shí)分配,也兼顧了同一天入庫的,優(yōu)先出先入庫的;

c.外側(cè)貨位優(yōu)先出庫,這樣萬一備貨分配到兄弟貨位上,只需要一托的時(shí)候,就不會出里面的,減少不不要的移動;

d. 已經(jīng)在出庫“半路上”的揀選托盤,這種情況下,備貨的時(shí)候,也可能分配到這個(gè)托盤上,這種情況沒法避免的;而且我們需要最優(yōu)先分配這樣的托盤,因?yàn)檫@樣的好處是,盡量把一托上拼上多個(gè)揀選任務(wù),最好能夠把托盤出完,變成整托不用回庫;這就類似出租車最好多拼幾個(gè)人;當(dāng)然,從動作上來做,這里也分兩種情況:

1.到達(dá)揀選貨位之前,追加了任務(wù),這個(gè)最好處理,在PDA上確認(rèn)揀貨的時(shí)候,會顯示多條同時(shí)確認(rèn);

2.在回庫的半路上,如果追加了揀選任務(wù),就半路掉頭,繼續(xù)去相應(yīng)的揀選站臺;這就好比洲際導(dǎo)彈,本來去攻擊對方兵工廠的,半路上收到消息,對方把東西全部挪到一個(gè)新地方了,這時(shí)候可以給導(dǎo)彈發(fā)送變更目的地指示;

具體實(shí)現(xiàn)上:如果是AGV搬運(yùn)回庫,那么在給AGV發(fā)送任務(wù)指示的時(shí)候,就判斷一下,是否有新的追加的揀選任務(wù),如果有,就走了一半再給AGV發(fā)送變更指令;如果是輸送線搬運(yùn),那么就在讀碼器等交互位置,重新給PLC新的目的地指示;

如果托盤已經(jīng)回到堆垛機(jī)入口了,那么堆垛機(jī)就直接把它調(diào)度到出口,如果這個(gè)時(shí)候出口堵住,臨時(shí)入庫,不停判斷出口是否釋放,一旦釋放,再調(diào)度出來,然后再通過AGV或輸送線調(diào)度到相應(yīng)的揀選站臺;

這個(gè)看起來復(fù)雜,其實(shí)也不麻煩,就是我們的調(diào)度任務(wù)要能夠根據(jù)具體情況,能夠中途變更,變更的同時(shí),可能要馬上給相應(yīng)的調(diào)度設(shè)備發(fā)送變更指示,如果暫時(shí)不能發(fā)送,等下一個(gè)環(huán)節(jié),在按變更的流程處理;

  1. 出庫貨位選擇原則:

a.大的原則是,按照備貨生成的出庫任務(wù)的優(yōu)先級順序執(zhí)行;但是我們內(nèi)部要稍微微調(diào)一下順序,就是在同一個(gè)兄弟貨位上,優(yōu)先出外側(cè)的貨物,否則哥哥會趁著大人不在家收拾弟弟;

這樣就不會盡量避免先出內(nèi)側(cè)的,要導(dǎo)致外側(cè)移動,有些事情,需要哥哥先行,比如遇到另一個(gè)更強(qiáng)的哥哥的時(shí)候,我這個(gè)時(shí)候往往貓?jiān)诩依锊怀鰜淼模?/p>

為了安全起見,程序會做個(gè)鎖處理,凡是外側(cè)貨位有出庫任務(wù),那么內(nèi)側(cè)貨位的出庫任務(wù)就會臨時(shí)被屏蔽掉,直到這個(gè)外側(cè)貨位的出庫任務(wù)做完,這個(gè)內(nèi)側(cè)貨位的出庫任務(wù)才重新被激活;

b.如果備貨就是分配到內(nèi)側(cè)了,而外側(cè)沒有任務(wù),這種情況下:我們程序一旦發(fā)現(xiàn)找到的出庫任務(wù)的貨位是這種情況,就會馬上生成外側(cè)貨位的移庫任務(wù),移到那里,不立刻分配;

等下一個(gè)任務(wù)掃描周期到來,按照優(yōu)先級,必然會先處理這個(gè)外側(cè)貨位的移庫任務(wù),這時(shí)候再做動態(tài)分配,正常情況下,會分配當(dāng)前巷道的另一個(gè)貨位以供使用,但是萬一這時(shí)候可用貨位沒了,那就分配到出庫站臺去,臨時(shí)讓這個(gè)外側(cè)的托盤出庫,然后再通過AGV或輸送線把這個(gè)托盤再調(diào)回到入庫站臺,重新入庫;

如果出庫站臺也堵死了,上天無路入地?zé)o門,沒法像土行孫那樣能到處亂竄;還有一招,竄到其他巷道去,有些客戶的項(xiàng)目,各個(gè)巷道的中間,也有站臺互相連著,就跟赤壁之戰(zhàn)曹操的戰(zhàn)船都互相連著類似,當(dāng)年意氣風(fēng)發(fā)的阿瞞站在固若金湯的甲板上,感嘆“對酒當(dāng)歌人生幾何”;

可以像穿地鼠那樣竄到左邊或右邊巷道,但是竄到其他巷道后,那對方巷道也是滿了,怎么辦,那就是其他巷道的事情了,它也可以再把它甩給其他巷道,做一個(gè)踢皮球的游戲;

就像垃圾分類之前,很多城市垃圾消化不了的時(shí)候,就趁月黑風(fēng)高的時(shí)候,偷偷運(yùn)地到其他城市;當(dāng)然,貨位爆倉應(yīng)該是個(gè)小概率事件,但是很多客戶就好這口,就喜歡把貨位全部用完,不留一個(gè)活口,就像我們下圍棋,也要至少留出兩個(gè)眼才能活

;所以你在設(shè)計(jì)的時(shí)候都要防備著;當(dāng)然你可以說,就留部分貨位不允許入庫,以防不測;但是有些客戶不愿意,就是喜歡挑戰(zhàn)那種極限的感覺;我們在監(jiān)控和看板上做紅色預(yù)警,也是視而不見;

c. 固定貨位處理,有些項(xiàng)目,客戶要求,一些特殊的產(chǎn)品,托盤一旦入到某個(gè)貨位,就不能動了;如果要出內(nèi)側(cè)的托盤,那么你可以把這個(gè)外側(cè)的臨時(shí)移走,但是把內(nèi)側(cè)的拿走后,外側(cè)的還得挪回來,就像回旋鏢一樣;

這里處理的時(shí)候,我們要注意這個(gè)移回的時(shí)機(jī),一定要等內(nèi)側(cè)出來后,我們才能生成外側(cè)的回庫任務(wù);所以我們可以在內(nèi)側(cè)出庫的這個(gè)任務(wù)上做一個(gè)標(biāo)記,記錄上外側(cè)需要移動的托盤;

這就類似于大學(xué)課程里《數(shù)據(jù)結(jié)構(gòu)》里的鏈表,把需要關(guān)聯(lián)的任務(wù)通過類似指針的方法串起來;這里有個(gè)細(xì)節(jié),對于要求某個(gè)托盤指定貨位的需求;

上位系統(tǒng)在下達(dá)任務(wù)的時(shí)候,不要直接在任務(wù)里指定貨位,因?yàn)槎讯鈾C(jī)的調(diào)度邏輯全是動態(tài)分配,而且萬一上位指定的位置不對或者外側(cè)擋住不可去內(nèi)側(cè),就導(dǎo)致沒法調(diào)度,你只要在指定貨位上標(biāo)記這個(gè)托盤就行,調(diào)度的時(shí)候會優(yōu)先考慮這個(gè),但也不能保證100%,因?yàn)橹付ǖ呢浳豢赡懿粷M足真實(shí)的場景;

實(shí)際上如果堆垛機(jī)調(diào)度邏輯里,既有動態(tài)分配又有指定分配,這就加大了復(fù)雜度,可能要寫很多支離破碎的分支,網(wǎng)上看到那些加班猝死的工程師,可能就是到處是多層IF 嵌套,如意大利面條那樣,最終因客戶的各種新需求而難以繼續(xù)補(bǔ)丁下去;所以設(shè)計(jì)的時(shí)候要深度思考,遏制個(gè)性化高成本的開發(fā)思路;

  1. 異常處理:

異常處理是個(gè)相對麻煩的問題,很多項(xiàng)目這個(gè)地方都是處理的不夠完善的;而且每個(gè)項(xiàng)目,因?yàn)橐筒煌纳舷掠魏献鳎看味加行╈?,不知道會有哪些以前沒考慮到的異常再去構(gòu)思,也不知道是否有能力去搞定;

正常流程做的勢如破竹,而異常投入的精力往往不足;異常包含的環(huán)節(jié)很多,比如上位系統(tǒng)提供的不嚴(yán)謹(jǐn)?shù)臄?shù)據(jù),下位設(shè)備反饋的錯誤矛盾的信息;甚至自身邏輯在一些特殊場景下的也會出錯;

雙伸堆垛機(jī)特有的異常主要有下面兩點(diǎn):

a. 取深淺有,就是取內(nèi)側(cè)的托盤的時(shí)候,發(fā)現(xiàn)外側(cè)擋住了,一般是出庫操作;3個(gè)可能:

1.設(shè)備假報(bào)警 ;

2.軟件調(diào)度自身有漏洞;

3.之前有人工手動操作在外側(cè)放了托盤;

對付這些情況的處理邏輯:

1.給堆垛機(jī)發(fā)送任務(wù)取消指令;

  1. 如果系統(tǒng)里記錄的外側(cè)確實(shí)有貨,那說明之前的調(diào)度處理有誤,就把外側(cè)的托盤生成一個(gè)移庫任務(wù)(理論上不應(yīng)該發(fā)生,但是如果莫名其妙的發(fā)生了,也要處理);

否則貨位上標(biāo)記一個(gè)虛擬的貨物,托盤號用一個(gè)特殊的隨機(jī)條碼,把該托盤生成一個(gè)出庫任務(wù);

這樣的話,堆垛機(jī)的調(diào)度程序,下一個(gè)掃描周期,就會先把外側(cè)的托盤出出來(如果出口堵住,這時(shí)候堆垛機(jī)會停住或做其他任務(wù),直到出口釋放)或移庫;

當(dāng)然如果這種異常是堆垛機(jī)誤報(bào)的,就會導(dǎo)致后面的空出,空出報(bào)警時(shí),該任務(wù)和虛擬托盤號 也會清除掉;一切還原,繼續(xù)做當(dāng)初的任務(wù);如果再報(bào)假警,就會死循環(huán)的做下去;

a. 放深淺有,就是放內(nèi)側(cè)托盤的時(shí)候,發(fā)現(xiàn)被外側(cè)擋住了,一般是入庫操作;處理和上面的類似,也要給外側(cè)生成一個(gè)移走的任務(wù),但是比上面那個(gè)異常稍微麻煩一些,因?yàn)檫@時(shí)候堆垛機(jī)貨叉上已經(jīng)有貨了,不能取消掉,要給它先分配另外一個(gè)貨位入庫;

  1. 總結(jié):

1.每一步的調(diào)度都動態(tài)控制,利用上設(shè)備,任務(wù)所有提供的所有信號;

  1. 所有的判斷以托盤和貨位的關(guān)系表為準(zhǔn);其他數(shù)據(jù),如庫存,任務(wù);這些數(shù)據(jù)只使用他們的托盤號,貨位從 托盤貨位的關(guān)系表 里帶出;這就類似手表定律;只以一個(gè)地方為源頭;否則數(shù)據(jù)矛盾,到底以哪個(gè)為準(zhǔn);

  2. 不要相信上一步的邏輯,走一步看一步,任意環(huán)節(jié)都要考慮異常,異常不僅來自別人,也可能是自己上一步的處理就有問題,所以當(dāng)前步驟也要考慮;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容