王德權(quán) 吳 盼 黃 鵬
(大連工業(yè)大學(xué)機(jī)械工程與自動(dòng)化學(xué)院,遼寧大連116034)
汽車發(fā)動(dòng)機(jī)廠發(fā)動(dòng)機(jī)裝配線數(shù)據(jù)管理系統(tǒng)的數(shù)據(jù)采集是發(fā)動(dòng)機(jī)生產(chǎn)的重要環(huán)節(jié)。質(zhì)量數(shù)據(jù)的采集、查詢直接影響發(fā)動(dòng)機(jī)質(zhì)量的改進(jìn)、維護(hù)和追溯。針對(duì)這個(gè)要求,本文介紹利用OPC技術(shù)[1]和數(shù)據(jù)庫技術(shù)為上海某公司開發(fā)的一套發(fā)動(dòng)機(jī)裝配線監(jiān)控系統(tǒng)。本系統(tǒng)運(yùn)用Visual C#編程語言編寫[2],采用SQL Server 2000作為后臺(tái)數(shù)據(jù)庫[3]。
如圖1所示,該系統(tǒng)PLC采用SIEMENS公司的S7-300,所有PLC通過CP343-1T工業(yè)以太網(wǎng)中的交換機(jī)連接至OPC服務(wù)器[4]。OPC服務(wù)器上本監(jiān)控系統(tǒng)以O(shè)PC技術(shù)實(shí)現(xiàn)PLC與PC的通訊,將PLC中的數(shù)據(jù)采集出來存儲(chǔ)到OPC服務(wù)器中的SQL Server中。當(dāng)每一臺(tái)發(fā)動(dòng)機(jī)下線時(shí),數(shù)據(jù)從PLC中采集至OPC服務(wù)器,打印機(jī)自動(dòng)打印該發(fā)動(dòng)機(jī)號(hào),雙面LED屏幕即時(shí)更新日產(chǎn)量及年產(chǎn)量。采集到的數(shù)據(jù)隨即被傳給實(shí)時(shí)服務(wù)器。實(shí)時(shí)服務(wù)器和備份服務(wù)器裝有SQL Server數(shù)據(jù)庫,對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。IIS服務(wù)器裝有數(shù)據(jù)后處理的SPC軟件,用于對(duì)實(shí)時(shí)服務(wù)器數(shù)據(jù)的查詢、分析。當(dāng)實(shí)時(shí)服務(wù)器中的數(shù)據(jù)量太大以至于影響到正常的數(shù)據(jù)存儲(chǔ)以及查詢功能時(shí),可以將數(shù)據(jù)上傳給備份服務(wù)器。SPC軟件可以對(duì)實(shí)時(shí)服務(wù)器的數(shù)據(jù)進(jìn)行查詢分析,按日期查詢合格和不合格數(shù)據(jù),以工位查詢發(fā)動(dòng)機(jī)加工數(shù)據(jù),質(zhì)量數(shù)據(jù)圖譜分析,各工位歷史加工狀態(tài)和報(bào)警頻率等。本文側(cè)重討論監(jiān)控系統(tǒng)如何采集數(shù)據(jù)并保存至實(shí)時(shí)服務(wù)器。
本系統(tǒng)數(shù)據(jù)庫主要設(shè)計(jì)如表1所示。
表1 數(shù)據(jù)庫功能說明表
BaseData_tagTable是數(shù)據(jù)庫中最主要的數(shù)據(jù)模板表,包含變量的所有信息,如變量標(biāo)識(shí)、變量名稱、變量長度、地址、工位號(hào)、數(shù)據(jù)類型、是否顯示等。
“測(cè)量數(shù)據(jù)合格”表中存儲(chǔ)發(fā)動(dòng)機(jī)加工中產(chǎn)生的合格數(shù)據(jù)。當(dāng)每臺(tái)發(fā)動(dòng)機(jī)下線時(shí),把數(shù)據(jù)全部存儲(chǔ)在測(cè)量數(shù)據(jù)表中,并且在索引表中增加一條該發(fā)動(dòng)機(jī)數(shù)據(jù)的索引,以備后續(xù)SPC分析軟件從索引表中進(jìn)行查詢。根據(jù)實(shí)際測(cè)量數(shù)據(jù)流程,先將數(shù)據(jù)存放在索引表中,然后從對(duì)應(yīng)的索引表中將測(cè)量數(shù)據(jù)提取出來。因此,建立如圖2的主外鍵關(guān)系,即合格數(shù)據(jù)來自合格數(shù)據(jù)索引,這樣的設(shè)計(jì)既保證數(shù)據(jù)關(guān)系的正確,又避免數(shù)據(jù)冗余。
該監(jiān)控系統(tǒng)主要實(shí)現(xiàn)對(duì)生產(chǎn)線現(xiàn)場(chǎng)設(shè)備的實(shí)時(shí)監(jiān)控、生產(chǎn)數(shù)據(jù)的采集及顯示、報(bào)警的采集及顯示。實(shí)時(shí)監(jiān)控模塊如圖3所示。實(shí)時(shí)監(jiān)控模塊主要顯示整個(gè)發(fā)動(dòng)機(jī)裝配主線的所有工位,并顯示部分工位的狀態(tài)。界面中工位的狀態(tài)均有機(jī)床通電、下料堵塞、上料無件、工位生產(chǎn)、技術(shù)中斷和循環(huán)開始狀態(tài);另外,若總成裝配線上某個(gè)工位的狀態(tài)為下料堵塞、上料無件或技術(shù)中斷,則相應(yīng)工位的工位狀態(tài)顯示閃爍。
程序設(shè)計(jì)中,定義一個(gè)自定義控件,即圖3中小圈,或紅或綠或者無顏色。此控件有以下重要屬性:ColorNoSet一般為背景色,ColorSet為狀態(tài)被激活時(shí)顯示的顏色,ColorTagNameID為變量標(biāo)識(shí),ColorTagBit為該工位機(jī)床狀態(tài)序號(hào),從0到6共7個(gè)狀態(tài)。比如工位OP020的機(jī)床狀態(tài)變量標(biāo)識(shí)為102010001,采集到的數(shù)據(jù)為4,然后將4和OP020的ColorTagBit分別作邏輯與運(yùn)算,如果大于零,則重繪該控件。部分代碼如下:
于是,各機(jī)床狀態(tài)的顏色會(huì)被分別重繪,如圖3。機(jī)床狀態(tài)存儲(chǔ)于MachineStatusView表中。
總成裝配線從機(jī)體上線到裝配完成后下線共有從OP010到OP770的77個(gè)工位(Operation Panel,縮寫OP),有手動(dòng)、半自動(dòng)和自動(dòng)3種不同狀態(tài)。自動(dòng)和半自動(dòng)狀態(tài)的工位有機(jī)床狀態(tài)和機(jī)床報(bào)警。有些工位有質(zhì)量數(shù)據(jù)。每臺(tái)發(fā)動(dòng)機(jī)經(jīng)過每個(gè)工位的時(shí)候,質(zhì)量數(shù)據(jù)存儲(chǔ)于該發(fā)動(dòng)機(jī)下托盤中的Moby中,最后在下線工位通過OPC的接口讀出,被一起傳給實(shí)時(shí)服務(wù)器,經(jīng)過拆分送入各表中。拆分功能主要由數(shù)據(jù)庫存儲(chǔ)過程來完成,主要有 PLC_InsertFromCoordinationFlag-VariableToWorksData等。
調(diào)試時(shí)可以用SimatiC.NET的OpcScout進(jìn)行測(cè)試。在OPC Server上執(zhí)行存儲(chǔ)過程“創(chuàng)建變量測(cè)試文件OpcScout”,生成一個(gè)帶有數(shù)據(jù)變量一切信息的數(shù)據(jù)表OpcScout_Item,將其導(dǎo)入記事本。然后將其文件類型改為OPP,打開此文件,可以查看監(jiān)控系統(tǒng)與PLC的實(shí)際通訊狀態(tài)以及PLC中的數(shù)據(jù)內(nèi)容等[5]。
每個(gè)工位有若干報(bào)警變量,如表1變量為工位OP090的140900001變量。每個(gè)變量由8條報(bào)警文本,如表2所示。采集到的報(bào)警變量數(shù)據(jù)和2的MSGBT次冪進(jìn)行邏輯與運(yùn)算,如果結(jié)果大于零,如報(bào)警變量140900001采集到數(shù)據(jù)64,64&(26)>0,則序號(hào)為1409000016的報(bào)警變量顯示,背景為紅色。如果64&(26)=0,報(bào)警解除顯示,該報(bào)警背景為黃色,如圖3下部。部分程序如下:
表2 報(bào)警文本表
對(duì)報(bào)警數(shù)據(jù)的存儲(chǔ)由數(shù)據(jù)庫PLC_AlarmInsert存儲(chǔ)過程進(jìn)行拆分并分別置放。對(duì)報(bào)警進(jìn)行查詢時(shí)需要對(duì)報(bào)警文本表和變量表BaseData_tagTable綜合查詢。依據(jù)NR和工位可以查詢各個(gè)工位或者總線體的報(bào)警內(nèi)容,并進(jìn)行報(bào)警頻率分析以及追溯,從而改進(jìn)生產(chǎn)效率,提高生產(chǎn)質(zhì)量。
該模塊處理生產(chǎn)現(xiàn)場(chǎng)中的突發(fā)事件,保證了加工數(shù)據(jù)不會(huì)丟失。OPC服務(wù)器用于采集質(zhì)量數(shù)據(jù)并將之即時(shí)上傳到實(shí)時(shí)服務(wù)器。但是當(dāng)采集系統(tǒng)與實(shí)時(shí)服務(wù)器斷開連接,采集到的數(shù)據(jù)會(huì)保存在OPC服務(wù)器本地臨時(shí)數(shù)據(jù)庫中,采集系統(tǒng)與實(shí)時(shí)服務(wù)器重新連接時(shí)可以將先前的數(shù)據(jù)手動(dòng)上傳至實(shí)時(shí)服務(wù)器。
發(fā)動(dòng)機(jī)生產(chǎn)線能夠裝配5種類型的發(fā)動(dòng)機(jī),因此要求按類型生成該發(fā)動(dòng)機(jī)數(shù)據(jù)報(bào)表。本系統(tǒng)實(shí)現(xiàn)該目標(biāo)方案如下:系統(tǒng)采集每個(gè)被定義地址內(nèi)的數(shù)據(jù),而不考慮該發(fā)動(dòng)機(jī)是否有該加工數(shù)據(jù)。定義各發(fā)動(dòng)機(jī)為1,2,4……16五個(gè)類型。GangTiType為能夠產(chǎn)生該加工數(shù)據(jù)的發(fā)動(dòng)機(jī)類型之和。數(shù)據(jù)模板表BaseData_tag-Table中每一條需采集數(shù)據(jù)位置的GangTiType需各自計(jì)算。定義發(fā)動(dòng)機(jī)類型為“零件類型”,對(duì)“GangTiType&零件類型“與“零件類型”比較。如果相等,則輸出該條數(shù)據(jù),否則不輸出。比如(1+4+8+16)&2不等于2,于是不輸出該數(shù)據(jù)。
該系統(tǒng)現(xiàn)在已實(shí)際應(yīng)用于上海某汽車發(fā)動(dòng)機(jī)廠。裝配線發(fā)動(dòng)機(jī)日產(chǎn)量達(dá)到每日380臺(tái)以上。沒有質(zhì)量數(shù)據(jù)采集串位以及報(bào)警錯(cuò)誤。并且經(jīng)過10萬臺(tái)發(fā)動(dòng)機(jī)的質(zhì)量數(shù)據(jù)模擬測(cè)試,完全不影響對(duì)數(shù)據(jù)的后續(xù)的查詢分析。該系統(tǒng)以O(shè)PC技術(shù)為基礎(chǔ),采集PLC中的數(shù)據(jù)并對(duì)其進(jìn)行顯示和存儲(chǔ),為后續(xù)SPC分析軟件的查詢提供數(shù)據(jù)支持。系統(tǒng)描述了該監(jiān)控系統(tǒng)的總體結(jié)構(gòu)及數(shù)據(jù)流程;機(jī)床加工狀態(tài)數(shù)據(jù)的采集并且顯示在界面上;加工數(shù)據(jù)的采集方法以及調(diào)試注意事項(xiàng);報(bào)警數(shù)據(jù)的采集、顯示原理和存儲(chǔ)等內(nèi)容。
[1]肖宏偉,肖健.OPC接口技術(shù)在工業(yè)控制中的應(yīng)用[J].煉油與化工,2006(2).
[2]Simon Robinson Ollie Comes,等.c#高級(jí)編程[M].北京:清華大學(xué)出版社,2002.
[3]Michael Otey,Paul Conte.SQL Server 2000開發(fā)指南[M].北京:清華大學(xué)出版社,2002.
[4]劉曉陽.基于模板結(jié)構(gòu)和數(shù)據(jù)庫技術(shù)定制發(fā)動(dòng)機(jī)裝配線監(jiān)控系統(tǒng)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2008(1).
[5]劉麗,羅德凌.利用SQL Server實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入和導(dǎo)出[J].長沙航空職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004(3):37-38.