王德權 吳 盼 黃 鵬
(大連工業大學機械工程與自動化學院,遼寧大連116034)
汽車發動機廠發動機裝配線數據管理系統的數據采集是發動機生產的重要環節。質量數據的采集、查詢直接影響發動機質量的改進、維護和追溯。針對這個要求,本文介紹利用OPC技術[1]和數據庫技術為上海某公司開發的一套發動機裝配線監控系統。本系統運用Visual C#編程語言編寫[2],采用SQL Server 2000作為后臺數據庫[3]。
如圖1所示,該系統PLC采用SIEMENS公司的S7-300,所有PLC通過CP343-1T工業以太網中的交換機連接至OPC服務器[4]。OPC服務器上本監控系統以OPC技術實現PLC與PC的通訊,將PLC中的數據采集出來存儲到OPC服務器中的SQL Server中。當每一臺發動機下線時,數據從PLC中采集至OPC服務器,打印機自動打印該發動機號,雙面LED屏幕即時更新日產量及年產量。采集到的數據隨即被傳給實時服務器。實時服務器和備份服務器裝有SQL Server數據庫,對數據進行存儲。IIS服務器裝有數據后處理的SPC軟件,用于對實時服務器數據的查詢、分析。當實時服務器中的數據量太大以至于影響到正常的數據存儲以及查詢功能時,可以將數據上傳給備份服務器。SPC軟件可以對實時服務器的數據進行查詢分析,按日期查詢合格和不合格數據,以工位查詢發動機加工數據,質量數據圖譜分析,各工位歷史加工狀態和報警頻率等。本文側重討論監控系統如何采集數據并保存至實時服務器。
本系統數據庫主要設計如表1所示。

表1 數據庫功能說明表
BaseData_tagTable是數據庫中最主要的數據模板表,包含變量的所有信息,如變量標識、變量名稱、變量長度、地址、工位號、數據類型、是否顯示等。

“測量數據合格”表中存儲發動機加工中產生的合格數據。當每臺發動機下線時,把數據全部存儲在測量數據表中,并且在索引表中增加一條該發動機數據的索引,以備后續SPC分析軟件從索引表中進行查詢。根據實際測量數據流程,先將數據存放在索引表中,然后從對應的索引表中將測量數據提取出來。因此,建立如圖2的主外鍵關系,即合格數據來自合格數據索引,這樣的設計既保證數據關系的正確,又避免數據冗余。
該監控系統主要實現對生產線現場設備的實時監控、生產數據的采集及顯示、報警的采集及顯示。實時監控模塊如圖3所示。實時監控模塊主要顯示整個發動機裝配主線的所有工位,并顯示部分工位的狀態。界面中工位的狀態均有機床通電、下料堵塞、上料無件、工位生產、技術中斷和循環開始狀態;另外,若總成裝配線上某個工位的狀態為下料堵塞、上料無件或技術中斷,則相應工位的工位狀態顯示閃爍。

程序設計中,定義一個自定義控件,即圖3中小圈,或紅或綠或者無顏色。此控件有以下重要屬性:ColorNoSet一般為背景色,ColorSet為狀態被激活時顯示的顏色,ColorTagNameID為變量標識,ColorTagBit為該工位機床狀態序號,從0到6共7個狀態。比如工位OP020的機床狀態變量標識為102010001,采集到的數據為4,然后將4和OP020的ColorTagBit分別作邏輯與運算,如果大于零,則重繪該控件。部分代碼如下:

于是,各機床狀態的顏色會被分別重繪,如圖3。機床狀態存儲于MachineStatusView表中。
總成裝配線從機體上線到裝配完成后下線共有從OP010到OP770的77個工位(Operation Panel,縮寫OP),有手動、半自動和自動3種不同狀態。自動和半自動狀態的工位有機床狀態和機床報警。有些工位有質量數據。每臺發動機經過每個工位的時候,質量數據存儲于該發動機下托盤中的Moby中,最后在下線工位通過OPC的接口讀出,被一起傳給實時服務器,經過拆分送入各表中。拆分功能主要由數據庫存儲過程來完成,主要有 PLC_InsertFromCoordinationFlag-VariableToWorksData等。
調試時可以用SimatiC.NET的OpcScout進行測試。在OPC Server上執行存儲過程“創建變量測試文件OpcScout”,生成一個帶有數據變量一切信息的數據表OpcScout_Item,將其導入記事本。然后將其文件類型改為OPP,打開此文件,可以查看監控系統與PLC的實際通訊狀態以及PLC中的數據內容等[5]。
每個工位有若干報警變量,如表1變量為工位OP090的140900001變量。每個變量由8條報警文本,如表2所示。采集到的報警變量數據和2的MSGBT次冪進行邏輯與運算,如果結果大于零,如報警變量140900001采集到數據64,64&(26)>0,則序號為1409000016的報警變量顯示,背景為紅色。如果64&(26)=0,報警解除顯示,該報警背景為黃色,如圖3下部。部分程序如下:


表2 報警文本表
對報警數據的存儲由數據庫PLC_AlarmInsert存儲過程進行拆分并分別置放。對報警進行查詢時需要對報警文本表和變量表BaseData_tagTable綜合查詢。依據NR和工位可以查詢各個工位或者總線體的報警內容,并進行報警頻率分析以及追溯,從而改進生產效率,提高生產質量。
該模塊處理生產現場中的突發事件,保證了加工數據不會丟失。OPC服務器用于采集質量數據并將之即時上傳到實時服務器。但是當采集系統與實時服務器斷開連接,采集到的數據會保存在OPC服務器本地臨時數據庫中,采集系統與實時服務器重新連接時可以將先前的數據手動上傳至實時服務器。
發動機生產線能夠裝配5種類型的發動機,因此要求按類型生成該發動機數據報表。本系統實現該目標方案如下:系統采集每個被定義地址內的數據,而不考慮該發動機是否有該加工數據。定義各發動機為1,2,4……16五個類型。GangTiType為能夠產生該加工數據的發動機類型之和。數據模板表BaseData_tag-Table中每一條需采集數據位置的GangTiType需各自計算。定義發動機類型為“零件類型”,對“GangTiType&零件類型“與“零件類型”比較。如果相等,則輸出該條數據,否則不輸出。比如(1+4+8+16)&2不等于2,于是不輸出該數據。
該系統現在已實際應用于上海某汽車發動機廠。裝配線發動機日產量達到每日380臺以上。沒有質量數據采集串位以及報警錯誤。并且經過10萬臺發動機的質量數據模擬測試,完全不影響對數據的后續的查詢分析。該系統以OPC技術為基礎,采集PLC中的數據并對其進行顯示和存儲,為后續SPC分析軟件的查詢提供數據支持。系統描述了該監控系統的總體結構及數據流程;機床加工狀態數據的采集并且顯示在界面上;加工數據的采集方法以及調試注意事項;報警數據的采集、顯示原理和存儲等內容。
[1]肖宏偉,肖健.OPC接口技術在工業控制中的應用[J].煉油與化工,2006(2).
[2]Simon Robinson Ollie Comes,等.c#高級編程[M].北京:清華大學出版社,2002.
[3]Michael Otey,Paul Conte.SQL Server 2000開發指南[M].北京:清華大學出版社,2002.
[4]劉曉陽.基于模板結構和數據庫技術定制發動機裝配線監控系統[J].組合機床與自動化加工技術,2008(1).
[5]劉麗,羅德凌.利用SQL Server實現數據導入和導出[J].長沙航空職業技術學院學報,2004(3):37-38.