吳喆建,田 杰,李 昂
(合肥工業(yè)大學(xué) 機(jī)械工程學(xué)院,安徽 合肥 230009)
我國(guó)制造業(yè)中的鈑金制造技術(shù)已取得很大發(fā)展,但在智能化、自動(dòng)化方面仍存在一定不足[1]?,F(xiàn)仍有相當(dāng)數(shù)量的鈑金加工企業(yè),其生產(chǎn)線上各設(shè)備之間相對(duì)獨(dú)立,需要人工操控堆垛機(jī)完成出庫(kù)入庫(kù)工作,并手動(dòng)修改板材的庫(kù)存信息;需要人工監(jiān)視激光切割機(jī),在切割完畢的節(jié)點(diǎn)手動(dòng)操控上下料機(jī)完成上下料動(dòng)作;需要人工向切割機(jī)錄入訂單。生產(chǎn)線效率低下、關(guān)鍵信息錄入繁瑣且易錯(cuò)、信息采集不全、人力成本高。在實(shí)際生產(chǎn)過(guò)程中,由于板材型號(hào)迥異、訂單任務(wù)錯(cuò)綜復(fù)雜、臨時(shí)插隊(duì)任務(wù)時(shí)常出現(xiàn)。一旦人工出現(xiàn)錯(cuò)誤,將導(dǎo)致生產(chǎn)節(jié)奏隨之混亂,相關(guān)板材也需要全部出庫(kù)清點(diǎn),造成較大的經(jīng)濟(jì)損失。
近年來(lái),鈑金制造行業(yè)慢慢地從少品種大批量生產(chǎn)模式衍變?yōu)槎嗥贩N小批量生產(chǎn)模式、從庫(kù)存生產(chǎn)模式衍變?yōu)镴IT(準(zhǔn)時(shí)制生產(chǎn)或無(wú)庫(kù)存生產(chǎn))生產(chǎn)模式、從以人力為主的生產(chǎn)模式衍變成設(shè)備自動(dòng)化為主流的生產(chǎn)模式[2]。為了適應(yīng)這一需求,從自動(dòng)化生產(chǎn)的角度出發(fā),探索訂單任務(wù)分解、觸發(fā)的方法,采用數(shù)據(jù)庫(kù)對(duì)產(chǎn)線信息實(shí)時(shí)存儲(chǔ),在不需要對(duì)現(xiàn)有生產(chǎn)線大規(guī)模改造的基礎(chǔ)上,聯(lián)動(dòng)生產(chǎn)線上的各設(shè)備,提升生產(chǎn)效率[3,4]。
鈑金切割生產(chǎn)線架構(gòu)如圖1所示,三個(gè)切割單元共用一套立體倉(cāng)庫(kù)和一個(gè)RGV出料小車形成一個(gè)完整的鈑金切割生產(chǎn)線。
立體倉(cāng)庫(kù)[5]架構(gòu)如圖2所示,其存儲(chǔ)有未加工板材以及臨時(shí)緩存已加工板材,并提供板材出庫(kù)功能。堆垛機(jī)負(fù)責(zé)將板材在各個(gè)庫(kù)位之間或者庫(kù)位與小車之間轉(zhuǎn)運(yùn)。供料小車可以在立體倉(cāng)庫(kù)與上下料機(jī)旁移動(dòng)。入料小車負(fù)責(zé)將新的板材運(yùn)至入庫(kù)口。堆垛機(jī)、入料小車及三個(gè)供料小車由一個(gè)PLC統(tǒng)一控制。
鈑金切割單元如圖3所示,由以下核心設(shè)備組成:上下料機(jī)、激光切割機(jī)。上下料機(jī)配有專門的梳齒機(jī)構(gòu)和吸盤(pán),可以抓取單張板材,將之在供料小車、交換工作臺(tái)以及RGV小車之間轉(zhuǎn)運(yùn)。RGV小車負(fù)責(zé)將加工完畢的工件運(yùn)出生產(chǎn)線。上下料機(jī)和激光切割機(jī)分別由獨(dú)立的控制器控制。RGV小車由所有的上下料機(jī)控制器聯(lián)合控制。
生產(chǎn)過(guò)程中的基本動(dòng)作有:出庫(kù)、返庫(kù)、上料、下料、切割。出庫(kù),即堆垛機(jī)將板材從立體倉(cāng)庫(kù)取出至對(duì)應(yīng)出庫(kù)口的供料小車,供料小車移動(dòng)至上下料機(jī)旁以供上料。返庫(kù),即供料小車移回庫(kù)內(nèi),堆垛機(jī)取回供料小車上的板材(或空托盤(pán))至原庫(kù)位。上料,即上下料機(jī)從供料小車取一塊板材至交換工作臺(tái)。下料,即上下料機(jī)從交換工作臺(tái)取已加工的板材至RGV出料小車。切割,即根據(jù)事先輸入進(jìn)切割機(jī)的加工程序完成鈑金的激光切割。一般的生產(chǎn)流程為:①目標(biāo)板材出庫(kù);②板材上料;③工作臺(tái)交換并開(kāi)始切割;④切割完畢后工作臺(tái)交換,已加工板材下料;⑤若已完成目標(biāo)加工數(shù)量,則剩余板材返庫(kù),否則繼續(xù)上料。
圖1 產(chǎn)線整體架構(gòu)
圖2 立體倉(cāng)庫(kù)架構(gòu)
圖3 鈑金切割單元架構(gòu)
生產(chǎn)線的每個(gè)基本動(dòng)作都已在各個(gè)PLC內(nèi)部實(shí)現(xiàn),但是動(dòng)作之間沒(méi)有聯(lián)動(dòng)。為了實(shí)現(xiàn)全自動(dòng)生產(chǎn),使用一臺(tái)工業(yè)計(jì)算機(jī)作為上位機(jī),聯(lián)動(dòng)各下位設(shè)備。
系統(tǒng)以工業(yè)計(jì)算機(jī)為核心,通過(guò)以太網(wǎng)經(jīng)交換機(jī)和下位設(shè)備通信,并實(shí)時(shí)將關(guān)鍵信息寫(xiě)入數(shù)據(jù)庫(kù)[6]。上位機(jī)控制立體倉(cāng)庫(kù)堆垛機(jī)的出庫(kù)、入庫(kù)動(dòng)作并接收動(dòng)作完成信號(hào);控制上下料機(jī)的上料、下料動(dòng)作并接收動(dòng)作完成信號(hào);控制激光切割機(jī)的工作臺(tái)交換并接收交換完成信號(hào);向激光切割機(jī)發(fā)送加工程序號(hào)。數(shù)據(jù)庫(kù)中存儲(chǔ)有各個(gè)倉(cāng)位的板材信息、歷史任務(wù)、排隊(duì)任務(wù)、當(dāng)前任務(wù)。系統(tǒng)自動(dòng)根據(jù)當(dāng)前任務(wù)和排隊(duì)任務(wù)信息,結(jié)合各下位設(shè)備的實(shí)時(shí)狀態(tài),控制所有下位設(shè)備運(yùn)行,實(shí)現(xiàn)鈑金切割生產(chǎn)線的全自動(dòng)生產(chǎn)。
為了根據(jù)訂單,全自動(dòng)完成鈑金切割,基于Windows操作系統(tǒng),利用Visual Studio開(kāi)發(fā)工具,使用C#語(yǔ)言開(kāi)發(fā)了該系統(tǒng)。C#是一種簡(jiǎn)單的,現(xiàn)代的,通用的,面向?qū)ο蟮恼Z(yǔ)言,且可以使用.Net代碼庫(kù)提供的各種功能[7]。
如圖4所示,系統(tǒng)包含六個(gè)模塊。任務(wù)的新建、觸發(fā)、執(zhí)行和恢復(fù)模塊建立在數(shù)據(jù)庫(kù)模塊和通信模塊之上,實(shí)現(xiàn)了以任務(wù)為核心的基本結(jié)構(gòu)。系統(tǒng)運(yùn)行時(shí),通過(guò)數(shù)據(jù)庫(kù)模塊備份任務(wù)信息,通過(guò)通信模塊采集關(guān)鍵信息并將基本動(dòng)作的執(zhí)行信號(hào)發(fā)送至下位設(shè)備。
圖4 上位機(jī)軟件結(jié)構(gòu)
將一個(gè)生產(chǎn)訂單視為一個(gè)任務(wù),主要包含板材型號(hào)、加工數(shù)量、加工程序號(hào)。每個(gè)任務(wù)只有一種板材型號(hào)和加工程序號(hào),并且可以分解為數(shù)個(gè)基本動(dòng)作,由系統(tǒng)統(tǒng)一調(diào)配。在用戶新建任務(wù)后,系統(tǒng)逐一觸發(fā)并執(zhí)行。
任務(wù)按照狀態(tài)分為排隊(duì)任務(wù)、當(dāng)前任務(wù)和歷史任務(wù)。排隊(duì)任務(wù)指的是新建后添加到隊(duì)列等待被觸發(fā)的任務(wù),這些任務(wù)對(duì)應(yīng)的板材未上料。當(dāng)前任務(wù)指的是已被觸發(fā)且未完成的任務(wù)。歷史任務(wù)指的是已經(jīng)加工完畢的任務(wù)。
任務(wù)按照優(yōu)先級(jí)可以分為普通任務(wù)、緩插隊(duì)任務(wù)和急插隊(duì)任務(wù)。普通任務(wù)是最低優(yōu)先級(jí)的任務(wù),只有當(dāng)急插隊(duì)任務(wù)和緩插隊(duì)任務(wù)執(zhí)行完畢后才會(huì)執(zhí)行。緩插隊(duì)任務(wù)是中等優(yōu)先級(jí)的任務(wù),在當(dāng)前任務(wù)完成后,執(zhí)行緩插隊(duì)任務(wù)。急插隊(duì)任務(wù)是最高優(yōu)先級(jí)的任務(wù),當(dāng)前任務(wù)將被暫停,直接執(zhí)行急插隊(duì)任務(wù)。
用戶指定板材型號(hào)、加工數(shù)量、加工程序號(hào)、任務(wù)優(yōu)先級(jí)以及目標(biāo)切割機(jī)后,即可新建一個(gè)任務(wù)??梢詫⑿陆ㄈ蝿?wù)所需參數(shù)以Excel表格形式批量導(dǎo)入該系統(tǒng),亦可在界面上直接輸入?yún)?shù)。任務(wù)新建完成后,將被移入排隊(duì)任務(wù)隊(duì)列依次觸發(fā)。排隊(duì)任務(wù)隊(duì)列在系統(tǒng)中以List<>的形式存在,List<>中strcut類型的元素用來(lái)表示每一個(gè)正在排隊(duì)中的任務(wù)。除了用戶指定的參數(shù)外,其余均由系統(tǒng)自動(dòng)生成。
如表1所示,排隊(duì)任務(wù)的類型是BasicTask,它的成員有9個(gè),解釋如下。①port:用于指明該任務(wù)對(duì)應(yīng)哪一臺(tái)切割機(jī);②sn:序號(hào);③taskNum:任務(wù)號(hào),是對(duì)任務(wù)的唯一標(biāo)識(shí);④progNum:加工程序號(hào);⑤goodInfo:板材信息,包括尺寸、材料、數(shù)量;⑥techName:工藝文件號(hào);⑦amount:需求量,即需要加工的數(shù)量;⑧creationTime:任務(wù)創(chuàng)建的時(shí)間;⑨t(yī)askPriority:任務(wù)優(yōu)先級(jí),包括普通、急插隊(duì)、緩插隊(duì)。
新建任務(wù)時(shí),普通任務(wù)被添加到排隊(duì)任務(wù)隊(duì)列底部,緩插隊(duì)任務(wù)將被添加到排隊(duì)任務(wù)頂部,而急插隊(duì)任務(wù)將直接執(zhí)行,不添加到排隊(duì)任務(wù)隊(duì)列。
多個(gè)切割單元的任務(wù)觸發(fā)都需要較高的實(shí)時(shí)性,而計(jì)算機(jī)中的多線程技術(shù)特別適用于實(shí)時(shí)性強(qiáng)的多任務(wù)系統(tǒng)[8]。系統(tǒng)中有一個(gè)單獨(dú)的線程保持啟動(dòng),用于循環(huán)觸發(fā)任務(wù),提升軟件的運(yùn)行效率。
表1 排隊(duì)任務(wù)數(shù)據(jù)結(jié)構(gòu)
如圖5所示,該線程循環(huán)讀取當(dāng)前任務(wù)和排隊(duì)任務(wù)隊(duì)列,若當(dāng)前任務(wù)不為空,則直接執(zhí)行當(dāng)前任務(wù),待當(dāng)前任務(wù)完成,將當(dāng)前任務(wù)添加到歷史任務(wù)隊(duì)列,而后清空當(dāng)前任務(wù)。若當(dāng)前任務(wù)為空,則判斷排隊(duì)任務(wù)隊(duì)列是否為空,若不為空,則將排隊(duì)任務(wù)隊(duì)列的頂端任務(wù)(即最先加入隊(duì)列的任務(wù))添加至當(dāng)前任務(wù),而后將其移出排隊(duì)任務(wù)隊(duì)列。如此循環(huán)往復(fù),即可自動(dòng)觸發(fā)任務(wù)。
圖5 任務(wù)的觸發(fā)流程
當(dāng)前任務(wù)的數(shù)據(jù)結(jié)構(gòu)含有BasicTask成員,擁有上文排隊(duì)任務(wù)的所有信息。除此之外添加了以下成員:①finishCount:已加工數(shù)量;②timeS:開(kāi)始加工時(shí)間;③state:狀態(tài),包括正在進(jìn)行、暫停;④order:次序,即前序、后序或本次任務(wù);⑤isExisting:指示此任務(wù)是否存在;⑥processedNum:已加工板材序號(hào);⑦unprocessedNum:未加工板材序號(hào);⑧processingNum:正在加工板材序號(hào)。只有存在對(duì)應(yīng)板材的時(shí)候,⑥⑦⑧才不為零,否則為零。由此可以用來(lái)判定交換工作臺(tái)上的板材加工與否。例如,若unprocessedNum=0,processingNum=10,processedNum=9,即說(shuō)明工作臺(tái)上有兩張板材,一張是正在加工的第10塊板材,另一張是已加工的第9塊板材。
每當(dāng)任務(wù)被觸發(fā),系統(tǒng)依據(jù)合產(chǎn)線的關(guān)鍵信息,將任務(wù)分解至各個(gè)基本動(dòng)作,逐一進(jìn)行。任務(wù)采用實(shí)時(shí)分解的原則,根據(jù)每個(gè)時(shí)刻的關(guān)鍵信息,判斷當(dāng)前應(yīng)執(zhí)行的基本動(dòng)作。
關(guān)鍵信息有:供料小車上板材信息、交換工作臺(tái)上板材信息、切割機(jī)內(nèi)板材信息、堆垛機(jī)可用信號(hào)、上下料機(jī)可用信號(hào)。各位置的板材信息全部寫(xiě)入數(shù)據(jù)庫(kù),以便恢復(fù)。
上位機(jī)檢測(cè)到出庫(kù)完成信號(hào)后,聯(lián)合供料小車上的對(duì)射開(kāi)關(guān)判定小車上有料,并記錄板材信息。若是返庫(kù)完成,聯(lián)合對(duì)射開(kāi)關(guān)判定供料小車無(wú)料。上位機(jī)檢測(cè)到上料完成信號(hào)后,聯(lián)合供料小車上的板材信息,判定交換工作臺(tái)上的板材是未加工的板材,并記錄板材信息;上位機(jī)檢測(cè)到交換工作臺(tái)交換完成信號(hào)后,聯(lián)合當(dāng)前任務(wù)信息,即可判定交換工作臺(tái)上的板材是已加工板材,并記錄板材信息。根據(jù)當(dāng)前任務(wù),即可確定切割機(jī)內(nèi)正在加工的板材信息??捎眯盘?hào),即代表該設(shè)備是否可以執(zhí)行動(dòng)作,若是設(shè)備故障或正在執(zhí)行動(dòng)作,則可用信號(hào)為FALSE。該信號(hào)由下位設(shè)備提供,通過(guò)MODBUS協(xié)議[9]直接讀取。
為了提高產(chǎn)線的整體效率,需要根據(jù)返庫(kù)及出庫(kù)動(dòng)作所需的時(shí)間總和來(lái)提前進(jìn)行板材需求判斷,即比較當(dāng)前已出庫(kù)的板材和下個(gè)任務(wù)所需的板材是否相同。若不同,則需要將當(dāng)前已出庫(kù)的板材返回對(duì)應(yīng)庫(kù)位,下個(gè)訂單所需的板材出庫(kù)。
上下料機(jī)任務(wù)執(zhí)行流程如圖6所示,待出庫(kù)完成后,執(zhí)行上料動(dòng)作,上料完成后上位機(jī)向激光切割機(jī)發(fā)送上料完成信號(hào)。激光切割機(jī)空閑時(shí)收到上料完成信號(hào)后會(huì)自動(dòng)將工作臺(tái)交換并開(kāi)始切割。激光切割機(jī)工作臺(tái)交換后,若有加工完畢的板材,則執(zhí)行下料任務(wù),若無(wú),則繼續(xù)上料。激光切割機(jī)加工完畢后,工作臺(tái)交換,發(fā)送命令執(zhí)行下料任務(wù)。下料任務(wù)執(zhí)行完畢后,再次上料,以此類推。若是當(dāng)天最后一塊板材加工完畢,則不執(zhí)行上料,所有訂單生產(chǎn)完畢。
圖6 上下料機(jī)任務(wù)執(zhí)行流程圖
某些情況下可能會(huì)需要恢復(fù)任務(wù)信息,如:程序異常崩潰、外部電源突然中斷等。為了可以隨時(shí)恢復(fù)任務(wù)信息,只要排隊(duì)任務(wù)列表或當(dāng)前任務(wù)被更新,系統(tǒng)都會(huì)對(duì)應(yīng)地寫(xiě)入數(shù)據(jù)庫(kù)中,保持?jǐn)?shù)據(jù)庫(kù)和系統(tǒng)內(nèi)存一致。使得系統(tǒng)可以在需要的時(shí)候從數(shù)據(jù)庫(kù)中讀取任務(wù)信息,恢復(fù)當(dāng)前任務(wù)以及排隊(duì)任務(wù)隊(duì)列。
MySQL數(shù)據(jù)庫(kù)中存儲(chǔ)有各個(gè)倉(cāng)位的板材信息、出入庫(kù)記錄、設(shè)備運(yùn)行記錄以及各類任務(wù)信息。使用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的儲(chǔ)存和關(guān)系型管理,重點(diǎn)是使用了RDBMS(關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))的功能,該功能不僅能夠?qū)Ψ彪s種類的數(shù)據(jù)進(jìn)行十分靈活的管理,也可以通過(guò)其中的表很容易地定位出需要提取的數(shù)據(jù)[10]。
通信模塊實(shí)現(xiàn)了設(shè)備端和監(jiān)控端之間網(wǎng)絡(luò)層和傳輸層的互聯(lián)互通,基于多線程在網(wǎng)絡(luò)層和傳輸層打通了設(shè)備端和監(jiān)控端,設(shè)計(jì)Socket[11]通信接口實(shí)現(xiàn)了IP協(xié)議和TCP協(xié)議通信的過(guò)程[9]。將監(jiān)控端作為客戶端,設(shè)備端作為服務(wù)端,可以有效減少工作量。只需在監(jiān)控端構(gòu)建客戶端程序并使用PLC提供的MODBUS TCP/IP服務(wù)器就可以實(shí)現(xiàn)穩(wěn)定的通信。
通過(guò)實(shí)際使用,該系統(tǒng)在.Net平臺(tái)上完成了對(duì)下位設(shè)備的任務(wù)管理,系統(tǒng)穩(wěn)定可靠、可移植性強(qiáng)。簡(jiǎn)單修改后可以擴(kuò)展到任意數(shù)量的激光切割機(jī),適配不同的數(shù)據(jù)庫(kù)。在該系統(tǒng)的基礎(chǔ)上,可以擴(kuò)展可視化監(jiān)控系統(tǒng)、報(bào)表系統(tǒng),與工廠MES系統(tǒng)實(shí)現(xiàn)對(duì)接。