陸中杰, 陳云宇, 王 婷
(中海網(wǎng)絡(luò)科技股份有限公司,上海 200135)
隨著信息技術(shù)的發(fā)展,信息化在企業(yè)的生產(chǎn)管理中發(fā)揮的作用越來(lái)越重要。生產(chǎn)管理信息系統(tǒng),是將生產(chǎn)信息與企業(yè)管理結(jié)合起來(lái),對(duì)生產(chǎn)過(guò)程數(shù)據(jù)實(shí)時(shí)采集并進(jìn)行處理和模型分析,統(tǒng)計(jì)結(jié)果進(jìn)行儲(chǔ)存并實(shí)時(shí)傳遞到企業(yè)的各個(gè)管理層面進(jìn)行監(jiān)控;管理者掌握生產(chǎn)信息的一手資料,及時(shí)進(jìn)行企業(yè)的生產(chǎn)調(diào)度和決策管理。
生產(chǎn)過(guò)程中的數(shù)據(jù)信息,通過(guò)可編程邏輯控制器(Programmable Logic Controller, PLC)采集,經(jīng)過(guò)加工處理并儲(chǔ)存,可視化處理后呈現(xiàn)給管理者。西門(mén)子公司上位機(jī)監(jiān)控軟件WinCC是生產(chǎn)過(guò)程自動(dòng)化中解決可視化和控制任務(wù)的監(jiān)控組態(tài)軟件,它提供了適用于工業(yè)的實(shí)時(shí)數(shù)據(jù)采集、顯示、數(shù)據(jù)的歸檔、報(bào)警以及報(bào)表等功能模塊。雖然WinCC處理數(shù)據(jù)的能力很強(qiáng)大,但具有一定的局限性,對(duì)于企業(yè)的管理部門(mén)和技術(shù)部門(mén)需要的統(tǒng)計(jì)、分析、查詢等更強(qiáng)功能無(wú)法實(shí)現(xiàn)。因此,研究把SQL SERVER2005數(shù)據(jù)庫(kù)、VB控件和WinCC結(jié)合起來(lái),開(kāi)發(fā)出具有信息管理等多功能的系統(tǒng),為生產(chǎn)系統(tǒng)管理與決策提供有效的數(shù)據(jù)支持。以紡絲工位生產(chǎn)管理為例,說(shuō)明如何進(jìn)行生產(chǎn)管理信息系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。
紡絲工位生產(chǎn)管理信息系統(tǒng)以PLC數(shù)據(jù)采集為基礎(chǔ),以服務(wù)器數(shù)據(jù)管理為中心,以信息顯示為平臺(tái),將生產(chǎn)過(guò)程數(shù)據(jù)進(jìn)行加工處理存儲(chǔ),實(shí)現(xiàn)生產(chǎn)的監(jiān)控和管理。

圖1 系統(tǒng)結(jié)構(gòu)圖
紡絲工位生產(chǎn)管理系統(tǒng)由PLC、工作站、服務(wù)器、客戶機(jī)和交換機(jī)組成(見(jiàn)圖1)。整個(gè)系統(tǒng)分為數(shù)據(jù)采集層、數(shù)據(jù)管理層和人機(jī)界面。數(shù)據(jù)采集層由PLC組成,采用西門(mén)子S7-300 PLC并配置3塊32路數(shù)字量輸入模塊。模塊采集36臺(tái)計(jì)量泵和36臺(tái)卷繞機(jī)的狀態(tài)信號(hào)并負(fù)責(zé)數(shù)據(jù)加工處理。數(shù)據(jù)管理層由服務(wù)器組成,主要由SQL SERVER數(shù)據(jù)庫(kù)管理系統(tǒng)所有的過(guò)程數(shù)據(jù)。人機(jī)界面由工作站和客戶機(jī)組成,工作站上安裝WINCC 7.0組態(tài)軟件,組態(tài)了紡絲工位監(jiān)控系統(tǒng)所有功能界面。通過(guò)配置WINCC的組件Web Navigator,使得遠(yuǎn)程客戶機(jī)能在瀏覽器上監(jiān)控設(shè)備狀態(tài)及查詢過(guò)程數(shù)據(jù)。
從軟件的邏輯架構(gòu)來(lái)劃分,系統(tǒng)可以分為采集控制層、通信層、業(yè)務(wù)層和應(yīng)用層。采集控制層包含了數(shù)據(jù)采集組件和數(shù)據(jù)處理組件;通信層包含工業(yè)以太網(wǎng)通信組件;業(yè)務(wù)層包含了狀態(tài)顯示組件、歷史數(shù)據(jù)查詢組件、生產(chǎn)效益組件和卷繞生產(chǎn)查詢組件;應(yīng)用層包含了WEB遠(yuǎn)程監(jiān)控組件。從軟件的物理架構(gòu)來(lái)劃分,系統(tǒng)可分為PLC、網(wǎng)絡(luò)交換機(jī)、工作站/服務(wù)器、客戶機(jī)。系統(tǒng)軟件架構(gòu)見(jiàn)圖2。

圖2 軟件系統(tǒng)架構(gòu)圖
WINCC通過(guò)建立通訊變量能與PLC進(jìn)行數(shù)據(jù)通訊,讀取PLC內(nèi)存地址的數(shù)值,將過(guò)程數(shù)據(jù)通過(guò)接口程序保存到服務(wù)器的數(shù)據(jù)庫(kù)內(nèi)。服務(wù)器上安裝SQL SERVER 2005關(guān)系數(shù)據(jù)庫(kù),配置ODBC指向數(shù)據(jù)庫(kù),在WINCC中通過(guò)ADO對(duì)象為接口實(shí)行對(duì)數(shù)據(jù)庫(kù)的操作。

圖3 數(shù)據(jù)存取方式
WINCC支持VBS腳本,可以使用VBS編寫(xiě)腳本函數(shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。但是需要使用到的接口函數(shù)較多,用VBS腳本編寫(xiě)較繁瑣且運(yùn)行效率低。為了方便WINCC對(duì)SQL SERVER數(shù)據(jù)庫(kù)操作,用VB 6.0編寫(xiě)了以ADO為接口對(duì)數(shù)據(jù)庫(kù)操作的類(lèi)模塊,這樣在WINCC中只需要?jiǎng)?chuàng)建該類(lèi)的1個(gè)對(duì)象并調(diào)用其成員函數(shù)即可,減輕了代碼的工作量使腳本盡可能減少錯(cuò)誤并提高了運(yùn)行效率。
數(shù)據(jù)的實(shí)時(shí)性和準(zhǔn)確性在系統(tǒng)中極其重要,如果數(shù)據(jù)的實(shí)時(shí)性差,就不能客觀的反應(yīng)某一時(shí)刻的生產(chǎn)狀態(tài);準(zhǔn)確性不高,則數(shù)據(jù)統(tǒng)計(jì)的結(jié)果沒(méi)有意義。該紡絲生產(chǎn)系統(tǒng)中共有36個(gè)工位,每個(gè)工位需要同步的數(shù)據(jù)有幾十個(gè),系統(tǒng)需要每隔1周期同步所有工位的近千個(gè)數(shù)據(jù)。同步數(shù)據(jù)的方式是通過(guò)PLC將數(shù)據(jù)準(zhǔn)備好之后通知WINCC同步,WINCC收到同步命令后執(zhí)行同步腳本。
WINCC讀取PLC的實(shí)時(shí)數(shù)據(jù)時(shí)需要通訊時(shí)間,當(dāng)讀取少數(shù)數(shù)據(jù)時(shí)累計(jì)的通訊時(shí)間十分短暫,但是如果將36個(gè)工位將近1 000個(gè)數(shù)據(jù)同時(shí)讀取時(shí),通訊時(shí)間將需要很長(zhǎng)。這樣會(huì)導(dǎo)致同步的數(shù)據(jù)出錯(cuò),使有些工位讀不到數(shù)據(jù)。為了減少通訊時(shí)間對(duì)同步數(shù)據(jù)的影響,將36個(gè)工位的數(shù)據(jù)分2部分同步,PLC先通知WINCC同步前18個(gè)工位的數(shù)據(jù),等結(jié)束后再進(jìn)行剩余18個(gè)工位的數(shù)據(jù)同步,這樣能大大減少通訊時(shí)間對(duì)數(shù)據(jù)同步的影響,經(jīng)過(guò)驗(yàn)證這樣能夠保證數(shù)據(jù)正確的同步。
各層管理者通過(guò)現(xiàn)有的網(wǎng)絡(luò)方式獲取信息,可以減少硬件和工程的支出,也方便管理者有選擇地獲取信息。基于Web的自動(dòng)化監(jiān)控是利用計(jì)算機(jī)自動(dòng)控制技術(shù)、網(wǎng)絡(luò)通信技術(shù)、仿真技術(shù)、多媒體技術(shù)、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù)以及Web技術(shù)組成的網(wǎng)絡(luò)遠(yuǎn)程高級(jí)控制系統(tǒng),解決了工業(yè)現(xiàn)場(chǎng)設(shè)備網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控的問(wèn)題,為現(xiàn)場(chǎng)設(shè)備實(shí)現(xiàn)在局域網(wǎng)內(nèi)的遠(yuǎn)程化管理提供了整套完整的解決方案。
基于Web遠(yuǎn)程局域網(wǎng)訪問(wèn)是基于公司局域網(wǎng)技術(shù)的產(chǎn)品,可以為公司所有管理人員提供訪問(wèn)權(quán)限,形成資源廣泛共享。直接通過(guò)任意辦公室內(nèi)局域網(wǎng)電腦遠(yuǎn)程監(jiān)控設(shè)備運(yùn)行狀態(tài),大大提高了設(shè)備的維護(hù)效率,降低故障處理的時(shí)間。同時(shí),企業(yè)決策層可以隨時(shí)通過(guò)WEB頁(yè)面瀏覽報(bào)表,為迅速?zèng)Q策提供幫助,具有很好的實(shí)用價(jià)值。
紡絲工位由計(jì)量泵和卷繞機(jī)組成,這些設(shè)備的運(yùn)行信號(hào)通過(guò)電纜接入PLC的數(shù)字量輸入模塊并由CPU獲取信號(hào)。根據(jù)信號(hào)的狀態(tài),PLC程序判斷當(dāng)前工位的狀態(tài)。按照模塊化程序設(shè)計(jì),在不同的狀態(tài)下執(zhí)行不同的程序模塊處理過(guò)程數(shù)據(jù)。
3.1.1 程序編碼
PLC程序編碼基于SIMATIC Manager,運(yùn)用模塊化編程的方式將程序按照功能封裝成程序塊,目的是為了降低程序復(fù)雜度,使程序設(shè)計(jì)、調(diào)試和維護(hù)等操作簡(jiǎn)單化。
3.1.1.1 程序功能塊
紡絲工位監(jiān)控系統(tǒng)的程序塊主要有:OB1 主程序塊OB100 初始化程序塊OB35 時(shí)間中斷程序塊FC10 #1工位~#18工位工況處理程序塊FC11 #19工位~#36工位工況處理程序塊FB101 單個(gè)工位工況及數(shù)據(jù)處理程序塊DB100~DB135 工位數(shù)據(jù)輸入的數(shù)據(jù)存儲(chǔ)塊DB200~DB235 存儲(chǔ)工位過(guò)程數(shù)據(jù)的數(shù)據(jù)庫(kù)DB300~DB335 每個(gè)工位調(diào)用FB101的背景數(shù)據(jù)塊。程序塊調(diào)用順序見(jiàn)圖4。

圖4 程序塊調(diào)用順序圖
3.1.1.2 程序流程圖
FB101是單個(gè)工位工況及數(shù)據(jù)處理的功能塊,功能主要是根據(jù)工位設(shè)備的不同狀態(tài)判斷紡絲工位當(dāng)前的工作狀態(tài),記錄設(shè)備的啟動(dòng)時(shí)間和停止時(shí)間并根據(jù)輸入的基礎(chǔ)數(shù)據(jù)通過(guò)數(shù)學(xué)公式計(jì)算出結(jié)果。程序塊的流程見(jiàn)圖5。

圖5 程序塊流程圖
類(lèi)模塊是WINCC與SQL SERVER之間數(shù)據(jù)交互的接口。類(lèi)模塊的開(kāi)發(fā)環(huán)境基于VISUAL BASIC 6.0,以ADO為基礎(chǔ)。
3.2.1 ADO
ADO 是Microsoft提出的應(yīng)用程序接口(API)用以實(shí)現(xiàn)訪問(wèn)關(guān)系或非關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。與Microsoft的其它系統(tǒng)接口一樣,ADO是面向?qū)ο蟮摹?/p>
3.2.2 ADO 在VB 6.0中的應(yīng)用
在Visual Basic 6.0中引用Microsoft ActiveX Data Objects 2.8 Library,建立Connection 對(duì)象和Recordset對(duì)象:Connection對(duì)象包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息;Recordset對(duì)象包含某個(gè)查詢返回的記錄,以及那些記錄中的游標(biāo)。
3.2.3 編寫(xiě)ClassOfWinCC類(lèi)
在VB6.0中創(chuàng)建DBLibExe工程,編寫(xiě)ClassOfWinCC類(lèi)模塊,模塊中定義數(shù)據(jù)庫(kù)操作的函數(shù)。
(1) ConstDSNStr As String = "DSN=GWCL "
說(shuō)明:定義數(shù)據(jù)源字符串;
(2) Public Sub OpenSQLServer()
說(shuō)明:用缺省的連接字符串進(jìn)行數(shù)據(jù)庫(kù)連接;
(3) Public Sub CloseSQLServer()
說(shuō)明:關(guān)閉數(shù)據(jù)庫(kù)連接;
(4) Public Function DBGetRecordset(ByValSQLStr As String) As ADODB.Recordset
說(shuō)明:獲取SQL字符串指定的數(shù)據(jù)庫(kù)記錄集;
(5) Public Sub WriteHistoryRecord(ByVal Station As Integer,ByvalSt_Dt As Date,……)
說(shuō)明:在表中插入記錄;
(6) Public Sub UpdateHistoryRecord(ByVal Station As Integer,Byval Type As String, ByvalTeam_Id As integer,ByvalTeam_Status As integer)
說(shuō)明:在表中更新記錄。
3.2.4 WINCC中使用ClassOfWinCC類(lèi)
打開(kāi)ODBC數(shù)據(jù)源管理器配置本機(jī)的數(shù)據(jù)源。添加系統(tǒng)DSN,選擇SQL Server為數(shù)據(jù)源的驅(qū)動(dòng)并配置正確參數(shù)。編譯DBLibExe工程并運(yùn)行。在WINCC 7.0全局腳本的VBS編輯器中創(chuàng)建項(xiàng)目模塊,在模塊中定義并創(chuàng)建對(duì)象后在VBS的全局腳本或事件腳本中使用ClassOfWinCC類(lèi)對(duì)SQL Server進(jìn)行讀寫(xiě)。
3.2.5 創(chuàng)建SQL Server 2005觸發(fā)器
WINCC對(duì)數(shù)據(jù)庫(kù)中的T_History表進(jìn)行了Insert和Update的操作,根據(jù)Insert和Update分別創(chuàng)建Tri_Insert和Tri_Update觸發(fā)器。Tri_Insert觸發(fā)器用于將T_History表中符合條件的記錄插入到T_Team表和T_Volume表中。當(dāng)有記錄插入T_History表后,觸發(fā)器根據(jù)記錄的TEAM_STATUS字段判斷記錄是否為班次更換時(shí)的記錄,如果是則將記錄的數(shù)據(jù)重新組織后插入T_Team中,反之則插入T_Volume中。Tri_Update觸發(fā)器用于將T_History表中更新后的記錄數(shù)據(jù)更新至T_Team中記錄的FULL_ RATE字段統(tǒng)計(jì)滿卷率。
人機(jī)界面采用西門(mén)子WINCC 7.0組態(tài)軟件進(jìn)行組態(tài),主要界面有:工位設(shè)備實(shí)時(shí)狀態(tài)監(jiān)控、工位設(shè)備狀態(tài)歷史趨勢(shì)、歷史生產(chǎn)數(shù)據(jù)查詢、生產(chǎn)效益情況查詢、卷繞生產(chǎn)情況查詢和系統(tǒng)參數(shù)設(shè)置。
3.3.1 建立通訊變量
人機(jī)界面建立通訊變量后就能讀取PLC中對(duì)應(yīng)內(nèi)存地址的數(shù)據(jù)。紡絲工位系統(tǒng)中有36個(gè)工位,每個(gè)工位需要與PLC通訊的數(shù)據(jù)數(shù)量和類(lèi)型都是一致的。為了減少建立變量的工作量及提高以后維護(hù)變量的效率,使用了結(jié)構(gòu)變量。對(duì)工位的通訊變量建立結(jié)構(gòu)變量模板,建立模板時(shí)結(jié)構(gòu)元素的內(nèi)存地址必須是連續(xù)的。創(chuàng)建工位通訊變量時(shí)選擇次模板即可自動(dòng)生成該工位的所有變量,變量名的命名格式為:結(jié)構(gòu)變量名.結(jié)構(gòu)元素名。此外運(yùn)用結(jié)構(gòu)變量還利用窗口畫(huà)面中的變量前綴屬性訪問(wèn)不同的結(jié)構(gòu)變量,減少了畫(huà)面重復(fù)組態(tài)的工作量。
3.3.2 畫(huà)面組態(tài)
在WINCC的圖形編輯器中組態(tài)人機(jī)界面的畫(huà)面。組態(tài)的過(guò)程中主要使用了以下幾個(gè)方法實(shí)現(xiàn)功能:
(1) 利用圖形或者字體的顏色變化實(shí)現(xiàn)設(shè)備當(dāng)前狀態(tài)的識(shí)別;
(2) 利用MSHFlexGrid控件實(shí)現(xiàn)數(shù)據(jù)查詢結(jié)果等的顯示;
(3) 利用按鈕、下拉框、多選框等控件的事件驅(qū)動(dòng)實(shí)現(xiàn)界面操作,例如用下拉框選擇需要查詢的工位號(hào),點(diǎn)擊按鈕進(jìn)行結(jié)果查詢等;
(4) 利用WINCC的變量記錄實(shí)現(xiàn)設(shè)備狀態(tài)歷史趨勢(shì)查詢。
3.3.3 WINCC WEB NAVIGATOR頁(yè)面發(fā)布
WINCC Web Navigator基于標(biāo)準(zhǔn)HTTP協(xié)議,允許用戶通過(guò)局域網(wǎng)或者互聯(lián)網(wǎng)對(duì)遠(yuǎn)程設(shè)備進(jìn)行監(jiān)控。Web Navigator包括安裝在主機(jī)上的Web Navigator Server組件和客戶機(jī)上的Web Navigator Client組件。安裝Web Navigator Server之前需要在主機(jī)上安裝IIS。安裝完畢后按以下步驟組態(tài)Web發(fā)布:
(1) 打開(kāi)Web Configurator對(duì)Web站點(diǎn)進(jìn)行參數(shù)設(shè)置,輸入Web站點(diǎn)名,IP地址設(shè)置為本機(jī)的地址,端口為80,完畢后啟動(dòng)Web站點(diǎn);
(2) 在WINCC工程項(xiàng)目中打開(kāi)Web View Publisher,選擇遠(yuǎn)程發(fā)布畫(huà)面的路徑、發(fā)布的畫(huà)面和位圖等完成畫(huà)面發(fā)布組態(tài);
(3) 在WINCC工程項(xiàng)目中打開(kāi)用戶管理器創(chuàng)建用戶級(jí)分配訪問(wèn)權(quán)限;
(4) 設(shè)置瘦客戶機(jī)的IE瀏覽器,在Internet 選項(xiàng)的安全屬性頁(yè)中把“對(duì)標(biāo)記為安全可執(zhí)行腳本的ActiveX控件執(zhí)行腳本”和“下載已簽名的ActiveX控件”的屬性設(shè)置為Enable;
(5) 在客戶機(jī)的IE瀏覽器地址欄中輸入Web Navigator Server主機(jī)的IP地址,如果是第一次訪問(wèn)主機(jī)將會(huì)提示下載安裝Web Navigator Client,安裝完成后客戶機(jī)的IE瀏覽器會(huì)彈出登陸頁(yè)面,輸入用戶名和密碼后就能訪問(wèn)之前所組態(tài)的發(fā)布頁(yè)面。
3.3.4 數(shù)據(jù)庫(kù)設(shè)計(jì)
該系統(tǒng)定義了名稱DB_GWCL數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)內(nèi)建立了以下數(shù)據(jù)表:
歷史生產(chǎn)數(shù)據(jù)表(T_History):存放各個(gè)工位的歷史過(guò)程數(shù)據(jù);生產(chǎn)效益表(T_Team):存放各個(gè)工位每個(gè)班組時(shí)間內(nèi)的累計(jì)過(guò)程數(shù)據(jù);卷繞生產(chǎn)情況表(T_Volume):存放每個(gè)工位每卷產(chǎn)品的過(guò)程數(shù)據(jù);班次時(shí)間表(T_Class):存放生產(chǎn)班次的數(shù)據(jù);人員數(shù)據(jù)表(T_User):存放操作人員的數(shù)據(jù)。
系統(tǒng)運(yùn)用了SQL SERVER、VB控件及ADO接口等技術(shù)在WINCC的平臺(tái)上進(jìn)行2次開(kāi)發(fā)并結(jié)合PLC應(yīng)用,在紡絲生產(chǎn)中實(shí)現(xiàn)了紡絲生產(chǎn)系統(tǒng)數(shù)據(jù)的監(jiān)控與管理。該系統(tǒng)運(yùn)行半年來(lái),穩(wěn)定可靠,數(shù)據(jù)正確無(wú)誤,提高了企業(yè)的生產(chǎn)管理水平和整體經(jīng)濟(jì)效益。
這種將工業(yè)化與信息化相結(jié)合,將生產(chǎn)信息融入到企業(yè)管理中的生產(chǎn)管理信息系統(tǒng),對(duì)提高企業(yè)的生產(chǎn)效率,對(duì)提升企業(yè)的核心競(jìng)爭(zhēng)力具有積極的作用。
參考文獻(xiàn):
[1] Visual Basic 6.0程序設(shè)計(jì)教程:第3版[M].北京:人民郵電出版社,2009.
[2] SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)[M].北京:清華大學(xué)出版社,2010.
[3] ADO.NET 2.0技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,2007.