吳喆建,田 杰,李 昂
(合肥工業大學 機械工程學院,安徽 合肥 230009)
我國制造業中的鈑金制造技術已取得很大發展,但在智能化、自動化方面仍存在一定不足[1]?,F仍有相當數量的鈑金加工企業,其生產線上各設備之間相對獨立,需要人工操控堆垛機完成出庫入庫工作,并手動修改板材的庫存信息;需要人工監視激光切割機,在切割完畢的節點手動操控上下料機完成上下料動作;需要人工向切割機錄入訂單。生產線效率低下、關鍵信息錄入繁瑣且易錯、信息采集不全、人力成本高。在實際生產過程中,由于板材型號迥異、訂單任務錯綜復雜、臨時插隊任務時常出現。一旦人工出現錯誤,將導致生產節奏隨之混亂,相關板材也需要全部出庫清點,造成較大的經濟損失。
近年來,鈑金制造行業慢慢地從少品種大批量生產模式衍變為多品種小批量生產模式、從庫存生產模式衍變為JIT(準時制生產或無庫存生產)生產模式、從以人力為主的生產模式衍變成設備自動化為主流的生產模式[2]。為了適應這一需求,從自動化生產的角度出發,探索訂單任務分解、觸發的方法,采用數據庫對產線信息實時存儲,在不需要對現有生產線大規模改造的基礎上,聯動生產線上的各設備,提升生產效率[3,4]。
鈑金切割生產線架構如圖1所示,三個切割單元共用一套立體倉庫和一個RGV出料小車形成一個完整的鈑金切割生產線。
立體倉庫[5]架構如圖2所示,其存儲有未加工板材以及臨時緩存已加工板材,并提供板材出庫功能。堆垛機負責將板材在各個庫位之間或者庫位與小車之間轉運。供料小車可以在立體倉庫與上下料機旁移動。入料小車負責將新的板材運至入庫口。堆垛機、入料小車及三個供料小車由一個PLC統一控制。
鈑金切割單元如圖3所示,由以下核心設備組成:上下料機、激光切割機。上下料機配有專門的梳齒機構和吸盤,可以抓取單張板材,將之在供料小車、交換工作臺以及RGV小車之間轉運。RGV小車負責將加工完畢的工件運出生產線。上下料機和激光切割機分別由獨立的控制器控制。RGV小車由所有的上下料機控制器聯合控制。
生產過程中的基本動作有:出庫、返庫、上料、下料、切割。出庫,即堆垛機將板材從立體倉庫取出至對應出庫口的供料小車,供料小車移動至上下料機旁以供上料。返庫,即供料小車移回庫內,堆垛機取回供料小車上的板材(或空托盤)至原庫位。上料,即上下料機從供料小車取一塊板材至交換工作臺。下料,即上下料機從交換工作臺取已加工的板材至RGV出料小車。切割,即根據事先輸入進切割機的加工程序完成鈑金的激光切割。一般的生產流程為:①目標板材出庫;②板材上料;③工作臺交換并開始切割;④切割完畢后工作臺交換,已加工板材下料;⑤若已完成目標加工數量,則剩余板材返庫,否則繼續上料。

圖1 產線整體架構

圖2 立體倉庫架構

圖3 鈑金切割單元架構
生產線的每個基本動作都已在各個PLC內部實現,但是動作之間沒有聯動。為了實現全自動生產,使用一臺工業計算機作為上位機,聯動各下位設備。
系統以工業計算機為核心,通過以太網經交換機和下位設備通信,并實時將關鍵信息寫入數據庫[6]。上位機控制立體倉庫堆垛機的出庫、入庫動作并接收動作完成信號;控制上下料機的上料、下料動作并接收動作完成信號;控制激光切割機的工作臺交換并接收交換完成信號;向激光切割機發送加工程序號。數據庫中存儲有各個倉位的板材信息、歷史任務、排隊任務、當前任務。系統自動根據當前任務和排隊任務信息,結合各下位設備的實時狀態,控制所有下位設備運行,實現鈑金切割生產線的全自動生產。
為了根據訂單,全自動完成鈑金切割,基于Windows操作系統,利用Visual Studio開發工具,使用C#語言開發了該系統。C#是一種簡單的,現代的,通用的,面向對象的語言,且可以使用.Net代碼庫提供的各種功能[7]。
如圖4所示,系統包含六個模塊。任務的新建、觸發、執行和恢復模塊建立在數據庫模塊和通信模塊之上,實現了以任務為核心的基本結構。系統運行時,通過數據庫模塊備份任務信息,通過通信模塊采集關鍵信息并將基本動作的執行信號發送至下位設備。

圖4 上位機軟件結構
將一個生產訂單視為一個任務,主要包含板材型號、加工數量、加工程序號。每個任務只有一種板材型號和加工程序號,并且可以分解為數個基本動作,由系統統一調配。在用戶新建任務后,系統逐一觸發并執行。
任務按照狀態分為排隊任務、當前任務和歷史任務。排隊任務指的是新建后添加到隊列等待被觸發的任務,這些任務對應的板材未上料。當前任務指的是已被觸發且未完成的任務。歷史任務指的是已經加工完畢的任務。
任務按照優先級可以分為普通任務、緩插隊任務和急插隊任務。普通任務是最低優先級的任務,只有當急插隊任務和緩插隊任務執行完畢后才會執行。緩插隊任務是中等優先級的任務,在當前任務完成后,執行緩插隊任務。急插隊任務是最高優先級的任務,當前任務將被暫停,直接執行急插隊任務。
用戶指定板材型號、加工數量、加工程序號、任務優先級以及目標切割機后,即可新建一個任務??梢詫⑿陆ㄈ蝿账鑵狄訣xcel表格形式批量導入該系統,亦可在界面上直接輸入參數。任務新建完成后,將被移入排隊任務隊列依次觸發。排隊任務隊列在系統中以List<>的形式存在,List<>中strcut類型的元素用來表示每一個正在排隊中的任務。除了用戶指定的參數外,其余均由系統自動生成。
如表1所示,排隊任務的類型是BasicTask,它的成員有9個,解釋如下。①port:用于指明該任務對應哪一臺切割機;②sn:序號;③taskNum:任務號,是對任務的唯一標識;④progNum:加工程序號;⑤goodInfo:板材信息,包括尺寸、材料、數量;⑥techName:工藝文件號;⑦amount:需求量,即需要加工的數量;⑧creationTime:任務創建的時間;⑨taskPriority:任務優先級,包括普通、急插隊、緩插隊。
新建任務時,普通任務被添加到排隊任務隊列底部,緩插隊任務將被添加到排隊任務頂部,而急插隊任務將直接執行,不添加到排隊任務隊列。
多個切割單元的任務觸發都需要較高的實時性,而計算機中的多線程技術特別適用于實時性強的多任務系統[8]。系統中有一個單獨的線程保持啟動,用于循環觸發任務,提升軟件的運行效率。

表1 排隊任務數據結構
如圖5所示,該線程循環讀取當前任務和排隊任務隊列,若當前任務不為空,則直接執行當前任務,待當前任務完成,將當前任務添加到歷史任務隊列,而后清空當前任務。若當前任務為空,則判斷排隊任務隊列是否為空,若不為空,則將排隊任務隊列的頂端任務(即最先加入隊列的任務)添加至當前任務,而后將其移出排隊任務隊列。如此循環往復,即可自動觸發任務。

圖5 任務的觸發流程
當前任務的數據結構含有BasicTask成員,擁有上文排隊任務的所有信息。除此之外添加了以下成員:①finishCount:已加工數量;②timeS:開始加工時間;③state:狀態,包括正在進行、暫停;④order:次序,即前序、后序或本次任務;⑤isExisting:指示此任務是否存在;⑥processedNum:已加工板材序號;⑦unprocessedNum:未加工板材序號;⑧processingNum:正在加工板材序號。只有存在對應板材的時候,⑥⑦⑧才不為零,否則為零。由此可以用來判定交換工作臺上的板材加工與否。例如,若unprocessedNum=0,processingNum=10,processedNum=9,即說明工作臺上有兩張板材,一張是正在加工的第10塊板材,另一張是已加工的第9塊板材。
每當任務被觸發,系統依據合產線的關鍵信息,將任務分解至各個基本動作,逐一進行。任務采用實時分解的原則,根據每個時刻的關鍵信息,判斷當前應執行的基本動作。
關鍵信息有:供料小車上板材信息、交換工作臺上板材信息、切割機內板材信息、堆垛機可用信號、上下料機可用信號。各位置的板材信息全部寫入數據庫,以便恢復。
上位機檢測到出庫完成信號后,聯合供料小車上的對射開關判定小車上有料,并記錄板材信息。若是返庫完成,聯合對射開關判定供料小車無料。上位機檢測到上料完成信號后,聯合供料小車上的板材信息,判定交換工作臺上的板材是未加工的板材,并記錄板材信息;上位機檢測到交換工作臺交換完成信號后,聯合當前任務信息,即可判定交換工作臺上的板材是已加工板材,并記錄板材信息。根據當前任務,即可確定切割機內正在加工的板材信息??捎眯盘?,即代表該設備是否可以執行動作,若是設備故障或正在執行動作,則可用信號為FALSE。該信號由下位設備提供,通過MODBUS協議[9]直接讀取。
為了提高產線的整體效率,需要根據返庫及出庫動作所需的時間總和來提前進行板材需求判斷,即比較當前已出庫的板材和下個任務所需的板材是否相同。若不同,則需要將當前已出庫的板材返回對應庫位,下個訂單所需的板材出庫。
上下料機任務執行流程如圖6所示,待出庫完成后,執行上料動作,上料完成后上位機向激光切割機發送上料完成信號。激光切割機空閑時收到上料完成信號后會自動將工作臺交換并開始切割。激光切割機工作臺交換后,若有加工完畢的板材,則執行下料任務,若無,則繼續上料。激光切割機加工完畢后,工作臺交換,發送命令執行下料任務。下料任務執行完畢后,再次上料,以此類推。若是當天最后一塊板材加工完畢,則不執行上料,所有訂單生產完畢。

圖6 上下料機任務執行流程圖
某些情況下可能會需要恢復任務信息,如:程序異常崩潰、外部電源突然中斷等。為了可以隨時恢復任務信息,只要排隊任務列表或當前任務被更新,系統都會對應地寫入數據庫中,保持數據庫和系統內存一致。使得系統可以在需要的時候從數據庫中讀取任務信息,恢復當前任務以及排隊任務隊列。
MySQL數據庫中存儲有各個倉位的板材信息、出入庫記錄、設備運行記錄以及各類任務信息。使用MySQL數據庫進行數據的儲存和關系型管理,重點是使用了RDBMS(關系型數據庫管理系統)的功能,該功能不僅能夠對繁雜種類的數據進行十分靈活的管理,也可以通過其中的表很容易地定位出需要提取的數據[10]。
通信模塊實現了設備端和監控端之間網絡層和傳輸層的互聯互通,基于多線程在網絡層和傳輸層打通了設備端和監控端,設計Socket[11]通信接口實現了IP協議和TCP協議通信的過程[9]。將監控端作為客戶端,設備端作為服務端,可以有效減少工作量。只需在監控端構建客戶端程序并使用PLC提供的MODBUS TCP/IP服務器就可以實現穩定的通信。
通過實際使用,該系統在.Net平臺上完成了對下位設備的任務管理,系統穩定可靠、可移植性強。簡單修改后可以擴展到任意數量的激光切割機,適配不同的數據庫。在該系統的基礎上,可以擴展可視化監控系統、報表系統,與工廠MES系統實現對接。