任澤兵 盛步云 殷希彥
(武漢理工大學(xué)機(jī)電工程學(xué)院 武漢 430070)
隨著汽車工業(yè)快速發(fā)展,消費(fèi)者已不再滿足于車型單一,配置千篇一律的產(chǎn)品,人們對(duì)汽車的個(gè)性化需求越來越強(qiáng)烈。個(gè)性化的汽車伴隨而來的是越來越豐富的產(chǎn)品配置,從而導(dǎo)致總裝車間裝配線上需要的零件物料種類越來越多[1~2]。因此,生產(chǎn)管控模式精益化成為了個(gè)性化定制生產(chǎn)環(huán)境下重要的任務(wù)。傳統(tǒng)控制方式已無法滿足于汽車生產(chǎn)各車間越來越高的車身序列需求,必須通過一種柔性化、靈活性更高的手段來實(shí)現(xiàn)這一目標(biāo),而在汽車生產(chǎn)的四大工藝車間(沖壓車間、焊裝車間、涂裝車間、總裝車間)之外增加一個(gè)立體的車身分配中心(Body Distribution Center,BDC),是提高各車間生產(chǎn)序列的符合性,同時(shí)達(dá)到精益生產(chǎn)的一種合理有效的方法。監(jiān)控管理系統(tǒng)作為BDC 監(jiān)控、調(diào)度管理的核心,其設(shè)計(jì)合理性、有效性、智能性是決定整個(gè)BDC發(fā)揮其作用的關(guān)鍵因素。
目前,國(guó)內(nèi)外已有眾多學(xué)者對(duì)BDC 及立體倉庫的監(jiān)控管理系統(tǒng)進(jìn)行了不同深度的研究及應(yīng)用,文獻(xiàn)[3~5]研究了汽車零部件立體倉庫的監(jiān)控,通過建立零部件物料監(jiān)控系統(tǒng)提高了物料保障整個(gè)制造過程的零部件有效供給實(shí)現(xiàn)物流供應(yīng)鏈的科學(xué)管理。文獻(xiàn)[6~10]研究了立體倉庫的物料出庫和入庫的路徑優(yōu)化算法,旨在尋求一種最優(yōu)的物料存取規(guī)則,充分利用有限的立庫空間,為提高汽車物流效率提供助力。文獻(xiàn)[11~13]通過研究基于射頻識(shí)別技術(shù)(Radio Frequency Identification,RFID),從數(shù)據(jù)采集方面來解決貨物信息的監(jiān)控問題。BDC 通過立體倉庫對(duì)焊接白車身和涂裝漆后車身進(jìn)行存取,是汽車生產(chǎn)過程中保障沖壓車間、焊裝車間、涂裝車間、總裝車間四大工藝車間的所有車身按照計(jì)劃順序執(zhí)行的重要組成部分,其中監(jiān)控與管理是整個(gè)BDC 的核心部分。國(guó)內(nèi)外學(xué)者對(duì)汽車分配中心監(jiān)控系統(tǒng)的研究多集中于對(duì)立體倉庫物流路徑規(guī)劃和圖像信息采集方面,而在對(duì)汽車生產(chǎn)中車身與四大工藝車間的調(diào)度和監(jiān)控系統(tǒng)的研究較少。因此,本文通過結(jié)合自動(dòng)化物料立體倉庫監(jiān)控及管理系統(tǒng)的設(shè)計(jì)思路,對(duì)BDC 的監(jiān)控與管理系統(tǒng)進(jìn)行設(shè)計(jì)與開發(fā),能最大程度優(yōu)化生產(chǎn)過程中車身調(diào)度,解決資源瓶頸等問題。
BDC 是基于物流管理技術(shù)、現(xiàn)代信息技術(shù)、計(jì)算機(jī)通訊技術(shù)和自動(dòng)控制技術(shù)等發(fā)展起來,對(duì)汽車工廠的焊接白車身和漆后車身進(jìn)行自動(dòng)化、智能化管理的綜合應(yīng)用系統(tǒng)[14]。從系統(tǒng)監(jiān)控管理層面劃分,可將BDC分為管理層、監(jiān)控層及執(zhí)行層三層。
管理層通過Webservice 接收制造執(zhí)行系統(tǒng)(Manufacturing Execution System,MES)[15]下發(fā)的焊裝、涂裝及總裝的生產(chǎn)計(jì)劃信息,并依據(jù)生產(chǎn)計(jì)劃、庫存及車身BSN(Body Serial Number)碼,生成車身去向編碼,并通過Socket將車身去向編碼發(fā)送到監(jiān)控層。
監(jiān)控層通過接收管理層下發(fā)的車身去向編碼,并依據(jù)設(shè)備狀態(tài)信息生成執(zhí)行層的控制指令,通過OPC(OLE for Process Control)發(fā)布到執(zhí)行層[16]。
執(zhí)行層接收到監(jiān)控層指令后,通過可編程控制器(Programmable Logic Controller,PLC)[17]對(duì)輸送設(shè)備及堆垛機(jī)進(jìn)行運(yùn)動(dòng)控制,實(shí)現(xiàn)白車身及漆后車身的快速入庫及出庫,從而達(dá)到通過計(jì)劃信息對(duì)車身進(jìn)行快速、智能化調(diào)度及存取的目的。
圖1為BDC監(jiān)控管理系統(tǒng)體系結(jié)構(gòu)圖。
通過對(duì)監(jiān)控管理系統(tǒng)的體系結(jié)構(gòu)及流程進(jìn)行分析,依據(jù)統(tǒng)一建模語言(Unified Modeling Lan?guage,UML)[18]提出管理層及監(jiān)控層的總體用例需求,然后基于用例需求分別對(duì)管理層和監(jiān)控層進(jìn)行功能架構(gòu)設(shè)計(jì)。執(zhí)行層則通過模塊化的方式對(duì)PLC程序進(jìn)行設(shè)計(jì)。
圖1 BDC監(jiān)控管理系統(tǒng)體系結(jié)構(gòu)圖
管理層用例需求包括:系統(tǒng)管理、基礎(chǔ)信息、生產(chǎn)計(jì)劃、系統(tǒng)查詢、系統(tǒng)報(bào)表以及輔助功能。以上用例的描述如下。
1)系統(tǒng)管理
系統(tǒng)管理包括用戶管理以及數(shù)據(jù)庫管理。用戶管理是對(duì)登錄管理層系統(tǒng)的所有用戶進(jìn)行權(quán)限控制,以及增加、刪除、修改用戶登錄信息。數(shù)據(jù)庫管理則是對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行備份及恢復(fù)處理,以及按照要求對(duì)系統(tǒng)數(shù)據(jù)庫進(jìn)行定期備份,必要時(shí)對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。
2)基礎(chǔ)信息
基礎(chǔ)信息主要包括車身、立庫、設(shè)備及MES 相關(guān)的基礎(chǔ)配置信息的管理。車身信息包含車型類別、車身BSN 碼的配置信息;立庫信息是對(duì)立庫的排、行、列等信息的配置管理[19~20];設(shè)備信息是對(duì)立庫中所用到的堆垛機(jī)的可用狀態(tài),以及與之對(duì)應(yīng)的庫位進(jìn)行配置;MES 信息則是系統(tǒng)與MES 接口信息的配置管理。
3)生產(chǎn)計(jì)劃
生產(chǎn)計(jì)劃是對(duì)從MES 中接收過來的生產(chǎn)計(jì)劃信息進(jìn)行管理,主要包含焊接計(jì)劃、涂裝計(jì)劃、總裝計(jì)劃、焊裝出庫計(jì)劃以及涂裝出庫計(jì)劃。
4)系統(tǒng)查詢
系統(tǒng)查詢是對(duì)整個(gè)BDC 中庫存信息、庫位信息的查詢,并通過監(jiān)控層上傳的相關(guān)車身位置信息對(duì)車身的工藝位置進(jìn)行跟蹤,同時(shí),通過對(duì)BDC 中正在執(zhí)行的計(jì)劃信息進(jìn)行管理。
5)系統(tǒng)報(bào)表
系統(tǒng)報(bào)表是對(duì)BDC 倉庫的預(yù)警、庫位利用率、車身的在庫庫齡以及車身的出入庫流水信息進(jìn)行管理。
6)輔助功能
輔助功能則是對(duì)系統(tǒng)的操作日志、設(shè)備的故障報(bào)警信息通過數(shù)據(jù)庫進(jìn)行管理并查詢,實(shí)現(xiàn)對(duì)監(jiān)控管理層及執(zhí)行層的所有在線信息進(jìn)行管理和查詢。
圖2為BDC管理層系統(tǒng)架構(gòu)圖。
圖2 BDC管理層系統(tǒng)結(jié)構(gòu)圖
監(jiān)控層系統(tǒng)用例需求包括:立庫操作、狀態(tài)信息、數(shù)據(jù)信息、輔助功能。以上用例的描述如下。
1)立庫操作
立庫操作是可以通過系統(tǒng)對(duì)BDC 中的車身進(jìn)行手動(dòng)出入庫操作。
2)狀態(tài)信息
狀態(tài)信息是對(duì)執(zhí)行層中的設(shè)備、指令的狀態(tài)信息進(jìn)行管理,主要包含指令狀態(tài)、出入庫設(shè)備狀態(tài)、堆垛機(jī)狀態(tài)、設(shè)備通訊狀態(tài)以及設(shè)備故障報(bào)警信息。
3)數(shù)據(jù)信息
監(jiān)控層與執(zhí)行層之間的數(shù)據(jù)通訊采用OPC 技術(shù),為便于系統(tǒng)對(duì)PLC 變量數(shù)據(jù)信息的實(shí)時(shí)監(jiān)控,通過OPC瀏覽器對(duì)PLC變量進(jìn)行管理,主要實(shí)現(xiàn)對(duì)OPC 數(shù)據(jù)的變量名、所屬設(shè)備及當(dāng)前值的管理,OPC數(shù)據(jù)服務(wù)器對(duì)象的結(jié)構(gòu)如圖3所示。
4)輔助功能
輔助功能則是對(duì)系統(tǒng)的操作日志、設(shè)備的故障報(bào)警信息通過數(shù)據(jù)庫進(jìn)行管理并查詢,實(shí)現(xiàn)對(duì)監(jiān)控管理層及執(zhí)行層的所有在線信息進(jìn)行管理和查詢。
圖4為BDC監(jiān)控層系統(tǒng)架構(gòu)圖。
圖3 OPC服務(wù)器對(duì)象的結(jié)構(gòu)圖
圖4 BDC監(jiān)控層系統(tǒng)結(jié)構(gòu)圖
執(zhí)行層設(shè)備主要包含輸送設(shè)備和堆垛機(jī),堆垛機(jī)作為BDC 執(zhí)行監(jiān)控層下發(fā)指令的核心設(shè)備,對(duì)其PLC 控制程序采用模塊化開發(fā)的方式編寫。首先編寫各個(gè)子功能的控制程序,然后將各個(gè)子功能程序通過調(diào)用的方式集成到主程序中。圖5 是系統(tǒng)執(zhí)行層設(shè)備主控制程序流程圖。
圖5 執(zhí)行層設(shè)備主控制程序流程圖
執(zhí)行層設(shè)備在上電后自動(dòng)運(yùn)行自檢程序,用于檢測(cè)機(jī)械設(shè)備是否處于零位狀態(tài),以及檢測(cè)各電氣設(shè)備是否處于正常工作狀態(tài)。當(dāng)檢測(cè)正常后,系統(tǒng)才能進(jìn)行正常的指令執(zhí)行操作。若系統(tǒng)自檢出現(xiàn)報(bào)警,需要BDC 管理人員對(duì)系統(tǒng)故障進(jìn)行排查。圖6是執(zhí)行層設(shè)備自檢程序流程圖。
圖6 執(zhí)行層設(shè)備自檢程序流程圖
執(zhí)行層設(shè)備取貨與放貨指令是由監(jiān)控層將系統(tǒng)的出庫與入庫任務(wù)進(jìn)行分解后發(fā)送到執(zhí)行層設(shè)備,由執(zhí)行層設(shè)備進(jìn)行取貨和放貨指令的執(zhí)行。圖7是執(zhí)行層設(shè)備取貨與放貨子程序流程圖。
圖7 執(zhí)行層取貨與放貨子程序流程圖
BDC 監(jiān)控管理系統(tǒng)中的管理層和監(jiān)控層之間以及監(jiān)控層和執(zhí)行層之間需要進(jìn)行通信來完成協(xié)作,下面分別對(duì)這兩組通信接口進(jìn)行設(shè)計(jì)和說明。
管理層與監(jiān)控管理層之間通過Socket 進(jìn)行通信,為節(jié)省系統(tǒng)之間通信資源的占用,采用Json 數(shù)據(jù)格式將結(jié)構(gòu)化的車身去向編碼信息發(fā)送到監(jiān)控層,管理層下發(fā)的Json格式數(shù)據(jù)信息如下:
"message":"…",//附加信息
"command_data":[{"BSN":"...",//車 身 BSN 碼 "com?mand_type":"...",//指 令 類 型 "car_type":"...",//車 型 信 息"command_time":"...",//指令生成時(shí)間"Result":"...",//執(zhí)行結(jié)果}]
監(jiān)控管理層與執(zhí)行層之間通過OPC 進(jìn)行雙向通信,監(jiān)控管理層將設(shè)備控制指令信息發(fā)送到執(zhí)行層設(shè)備,執(zhí)行層設(shè)備將指令執(zhí)行狀態(tài)、設(shè)備運(yùn)行狀態(tài)、車身位置信息發(fā)送到監(jiān)控管理層,為監(jiān)控管理層對(duì)車身的調(diào)度與指令的生成提供判斷依據(jù),監(jiān)控管理層與執(zhí)行層之間的通訊信息如下。
監(jiān)控層發(fā)送到執(zhí)行層數(shù)據(jù)信息:
<item name="DB101,B0" vt="UI2" owner="DDJ1" alias="start"remark="起始符"/>
<item name="DB101,B1" vt="UI2" owner="DDJ1" alias="version"remark="版本號(hào)=1"/>
<item name="DB101,B2" vt="UI2" owner="DDJ1" alias="mode" remark="工作模式0-維修;1-手動(dòng);2-單機(jī)自動(dòng);3-聯(lián)機(jī)自動(dòng);4-不明."/>
<item name="DB101,B3" vt="UI2" owner="DDJ1" alias="busy"remark="作業(yè)狀態(tài)0-待機(jī);1-取貨中;2-取貨完成;3-放貨中;4-請(qǐng)求卸貨(申請(qǐng)卸貨);5-放貨完成;6-取貨準(zhǔn)備(回庫臺(tái)位);7-召回;8-急停;9-不明."/>
<item name="DB101,D4" vt="I4" owner="DDJ1" alias="jobNo"remark="任務(wù)號(hào)"/>
<item name="DB101,B8" vt="UI2" owner="DDJ1" alias="gzbj" remark="故障報(bào)警0-無故障;1-貨物超限;2-作業(yè)條件不滿足;3-與輸送線通訊故障;4-傳送地址錯(cuò);5-指定庫位滿入;6-空出;7-行走變頻器報(bào)警;8-升降變頻器報(bào)警;9-貨叉變頻器報(bào)警;10-行走超時(shí);11-升降超時(shí);12-貨叉超時(shí);13-水平測(cè)距出錯(cuò);14-垂直測(cè)距出錯(cuò);15-放貨異常;16-淺貨位有貨;17-貨叉數(shù)據(jù)出錯(cuò)"/>
<item name="DB101,B9" vt="UI2" owner="DDJ1" alias="line"remark="作業(yè)地址中的排號(hào)"/>
<item name="DB101,B10" vt="UI2" owner="DDJ1"alias="column"remark="行走位置"/>
<item name="DB101,B11" vt="UI2" owner="DDJ1"alias="layer"
remark="載貨臺(tái)位置"/>
<item name="DB101,B12"vt="UI2" owner="DDJ1"alias="kg_column" remark="行走開關(guān)信號(hào)"/>
<item name="DB101,B13" vt="UI2" owner="DDJ1"alias="lg_layer" remark="載貨臺(tái)開關(guān)信號(hào)"/>
<item name="DB101,B14" vt="UI2" owner="DDJ1"alias="xzsjxh"remark="行走和升降動(dòng)作信號(hào)"/>
<item name="DB101,D15" vt="I4" owner="DDJ1" alias="xzbmq"remark="行走編碼器或激光數(shù)值"/>
<item name="DB101,D19" vt="I4" owner="DDJ1" alias="qsbmq"remark="起升編碼器或激光數(shù)值"/>
<item name="DB101,B23" vt="UI2" owner="DDJ1"alias="zhtcxxh"remark="載貨臺(tái)超限信號(hào)"/>
<item name="DB101,B24" vt="UI2" owner="DDJ1"alias="hcthxh"remark="貨叉探貨信號(hào)"/>
<item name="DB101,B25" vt="UI2" owner="DDJ1"alias="hcwzxh"remark="貨叉位置信號(hào)"/>
<item name="DB101,B26" vt="UI2" owner="DDJ1"alias="hcdzxh"remark="貨叉動(dòng)作信號(hào)"/>
執(zhí)行層發(fā)送到監(jiān)控層數(shù)據(jù)信息:
<item name="DB100,B0" vt="UI2" owner="DDJ1" alias="start"active="false"remark="起始符"/>
<item name="DB100,B1" vt="UI2" owner="DDJ1" alias="version" active="false"remark="版本號(hào)=1"/>
<item name="DB100,B2" vt="UI2" owner="DDJ1" alias="zyml" active="false" remark="作業(yè)命令1-取貨(空載行走到指定位置并伸叉取貨);2-放貨(雙重入庫)(帶貨行走到指定位置并伸叉放貨);3-通知可卸貨;4-解警;5-取貨準(zhǔn)備(行走到指定地址,叉不動(dòng)作);6-召回(到指定位置);7-急停;8-確認(rèn)收到放貨完成."/>
<item name="DB100,D4" vt="I4" owner="DDJ1" alias="jobNo"active="false"remark="任務(wù)號(hào)"/>
<item name="DB100,B8" vt="UI2" owner="DDJ1" alias="zyLine"active="false"remark="作業(yè)地址排"/>
<item name="DB100,B9" vt="UI2" owner="DDJ1" alias="zyColumn" active="false"remark="作業(yè)地址列"/>
<item name="DB100,B10" vt="UI2" owner="DDJ1"alias="zyLayer"active="false"remark="作業(yè)地址層"/>
<item name="DB100,B11" vt="UI2" owner="DDJ1"alias="end" active="false"remark="結(jié)束符"/>
在完成BDC 監(jiān)控管理系統(tǒng)的總體體系結(jié)構(gòu)、各層級(jí)架構(gòu)及各層之間的通信設(shè)計(jì)之后,采用C#語言對(duì)管理及監(jiān)控層系統(tǒng)進(jìn)行開發(fā),執(zhí)行層則采用西門子TIA portal進(jìn)行PLC程序的編寫。
管理層主要是對(duì)整個(gè)BDC 進(jìn)行生產(chǎn)計(jì)劃及日常的管理和操作,該操作軟件主要從功能性、穩(wěn)定性、易用性和美觀協(xié)調(diào)性等角度出發(fā)完成的開發(fā)。
監(jiān)控層采用OPC 技術(shù)將指令信息下發(fā)到執(zhí)行層,并對(duì)執(zhí)行層設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控,如圖9 所示為監(jiān)控層主界面圖。
圖8 管理層主界面圖
圖9 監(jiān)控層主界面圖
執(zhí)行層采用西門子的TIA portal軟件進(jìn)行主程序和各子模塊程序的開發(fā),同時(shí)完成人機(jī)界面(Hu?man Machine Interface,HMI)的開發(fā),實(shí)現(xiàn)對(duì)執(zhí)行層設(shè)備的狀態(tài)、指令信息、故障信息等的實(shí)時(shí)在線查看,系統(tǒng)具備手動(dòng)、自動(dòng)和維修三種模式,使系統(tǒng)使用及維護(hù)更方便。
通過對(duì)BDC 監(jiān)控管理系統(tǒng)的管理層、監(jiān)控層、執(zhí)行層,以及各個(gè)層級(jí)之間的通信接口進(jìn)行設(shè)計(jì)和程序開發(fā),實(shí)現(xiàn)對(duì)BDC 的自動(dòng)化管控。通過本研究,對(duì)BDC 的整體控制過程及信息流有了更深的認(rèn)識(shí)。但未就汽車生產(chǎn)的排產(chǎn)問題對(duì)智能化調(diào)度BDC 庫進(jìn)行更深入的研究,通過對(duì)BDC 庫的智能調(diào)度研究,優(yōu)化汽車生產(chǎn)的排產(chǎn)問題將是下一步研究工作的重點(diǎn)。