隨著我國經濟高速發展,現代物流行業和智能制造工廠也在快速發展,倉儲作為物流和工廠流水線中的重要環節,對整個系統運作起著至關重要的作用。立體倉庫能有效提高空間利用率和出入庫能力,是倉儲發展的大勢所趨,在倉儲流程中的使用越來越多[1,2,3,4]。在實際使用過程中,對立體倉庫中的工件按照一定規則進行預先排序優化,有助于減少后續工作流程的復雜度,提高工作效率。
立體倉庫的工件排序問題具有一定的復雜性,本文以上下兩層共6個倉位的立體倉庫為研究對象,研究其工件排序問題。此立體倉庫的6個倉位分別安裝有光電傳感器,用于檢測當前是否存放有工件,并用雙色指示燈進行指示,綠色表示有料,紅色表示無料,如圖1如示。
立體倉庫中工件的取放操作由工業機器人協助完成,為了使工業機器人存取工件方便,使用電磁閥控制氣缸實現工件托盤的推出和縮回,氣缸推出、縮回的狀態信號由安裝在氣缸兩頭的磁性開關檢測。這些信號都接入了PLC控制器,由PLC編程實現按要求推出或縮回料倉[5]。
立體倉庫中的6個倉位分別編號為1~6號倉位,6個倉位最多能放6個工件,這6個工件分別編碼為0001~0006,用二維碼標簽貼紙將編碼粘貼在工件正表面,可用工業相機獲取。初始狀態下6個倉位可以放滿工件,也可以不放滿,由于人眼無法自動識別二維碼,初始狀態下6個工件的順序是亂的,本文將研究通過排序算法將亂序的工件,按順序或逆序或工藝要求的其他排序方式進行排序。
另外,由于表示工件編碼的二維碼標簽貼紙粘貼在工件正表面,在用工業相機去檢測編碼前,必須確保工件是正面朝上擺放的。為了判斷工件是正面朝上還是反面朝上,工業機器人的末端工具采用吸盤工具,通過吸盤工具氣動回路上的真空表裝置返回的信號判定工件是正面朝上還是反面朝上,如果是反面朝上,則在用工業相機進行視覺檢測之前,還必須再加上一道對工件進行翻轉的工序。
立體倉庫的工件編碼通過工業相機和視覺檢測控制器進行檢測識別,并通過視覺控制器上的通信接口傳輸給工業機器人或PLC,在工業機器人或PLC控制器上編寫排序算法,則可實現對立體倉庫中的工件按工藝要求進行排序。
整個立體倉庫的系統框圖如圖2所示,立體倉庫上安裝有用于檢測和指示各料倉有無工件的光電開關和雙色指示燈,以及用于控制及檢測各料倉氣缸推出、縮回的電磁閥和磁性開關,這些信號都通過I/O接口接入PLC控制器,由PLC進行監測與控制。
立體倉庫中工件的取放操作由安裝在工業機器人末端的吸盤工具或夾爪工具完成,為了能與立體倉庫上的各信號進行配合工作,工業機器人上安裝有I/O板卡,并與PLC的擴展I/O模塊之間有輸入、輸出信號連接,通過兩者之間的信號傳輸,可實現PLC推出、縮回倉庫和工業機器人取放料動作之間的配合等操作。
本文以上述六倉位立體倉庫為研究對象,研究在其基礎上進行6個工件按編碼排序的問題。
除了立體倉庫中的6個倉位,為了實現工件的排序,在立體倉庫之外還要加一個可放置工件的過渡位,作為排序時的臨時工件存放地,給這個過渡位編號為7。工業機器人對7個工位進行求教對點,并將它們存放在一個一維數組Array_Storage[7]中,從而實現對工件的取放動作。
倉庫中工件排序的目標編號存在一維數組Array_Target[6]中,有效編號在1~6之間,值為0表示對應的倉位無工件。如按從小到大順序進行排放,則Array_Target[6]:={1,2,3,4,5,6};反之,如果按從大到小逆序排放,則Array_Target[6]:={6,5,4,3,2,1};如果有其他排序規則,修改Array_Target[6]的值即可實現。
倉庫中各工件初始編號由工業相機檢測得到,并存入一維數組Array_Current[7]中,第7個數據是過渡位當前工件的編號,初始為0,表示空倉。隨著工件排序過程的進行,當前工件編號Array_Current[7]中的值會發生變動,直到與目標工件編號Array_Target[6]中的值完全一致。
筆者對計算機算法中的十大經典排序算法進行了詳細分析,并用經典的冒泡排序法和插入排序法進行了工件排序的程序編寫和調試。經典排序算法具有算法簡單、編程量少的優點。實際測試下來發現存在頻繁使用過渡位導致取放動作過多、操作時間過長的問題,如冒泡排序法,每交換兩個相鄰的倉位編號,都需要使用到過渡位,最壞的情況下,需要使用15次;而每一次用到過渡位需要工業機器人和PLC配合執行3次工件取放操作,操作過程過于費時,生產效率低下。
另外,經典排序算法主要用于順序排序,如從小到大或從大到小排序,而對于有特殊要求的非順序排序方式,實現困難。
為了解決經典排序算法操作過程太費時費力的問題,本文使用了空位排序法,即排序過程中一直關注空位(如果當前倉庫沒有空位,則利用過渡位先制造一個空位),查找當前空位的目標工件編號所在的工位號,從中取出工件,從而創建出一個新的空位,再循環查空位和取空位目標工件多次,直到完成排序。圖3為空位排序法的一個示例。
空位排序法排序過程中一直關注空位,先查找當前空倉在Array_Target[6]數組中對應的目標工件編號,再查找空倉對應目標編號在當前工件編號Array_Current[7]中所在的倉位號,從而將當前空倉對應的目標工件取放過來。
在ABB工業機器人上,首先利用TCP/IP協議,通過Socket通信的方法,實現工業機器人與工業相機之間的通信,從而獲得工件上的標簽編碼,并存儲在工業機器人自身的存儲器中(存在當前工件編號數組Array_Current[7]中),以備后續程序調用。
在ABB工業機器人上采用RAPID程序編寫空位排序算法,流程圖如圖4所示。
如果當前6個倉位全滿沒有空位,則將第一個未排序倉位上的輪轂先取放至過渡位,制造出一個空位來。制造空倉的例行程序如下:
在當前倉庫中有空倉的情況下,需要再在Array_Target[6]數組中查找當前空倉所對應的目標工件編號,查找空倉對應的目標工件編號的例行程序如下:
工業相機的視覺檢測控制器可通過S7通信方式將二維碼編碼信息傳送給西門子PLC控制器,PLC得到初始編碼數據之后,使用SCL語言進行編程,其思路基本與使用ABB工業機器人編程一致,亦可實現空位排序法的操作。
本文詳細介紹了一個具有6個倉位的立體倉庫的基本結構,以此立體倉庫為研究對象,結合視覺檢測和網絡通信功能,研究了對立體倉庫的工件按編碼進行排序的方法,并在工業機器人及PLC控制器上進行了編程實現和驗證,為立體倉庫工件排序問題提出了一種具體的解決方案。
標簽:
上一篇: 基于32單片機的智能倉庫設計與實現
下一篇: 自動化立體倉庫輸送系統中變頻器的應用