摘 要:本文以實現(xiàn)水泥進出場管理為目的。運用了西門子上位機監(jiān)控軟件WinCC 及其自身集成的VBS 腳本,以及西門子S7400 系列PLC。實現(xiàn)了從銷售數(shù)據(jù)管理,槽車檔案數(shù)據(jù)管理,水泥定量灌裝,出場數(shù)據(jù)記錄,到日、月、年報表查詢即打印系統(tǒng),這五大部分整個進出廠管理過程的融合。
關鍵詞: WinCC;VBS;SQL;ACCESS;ActiveX
第一 引言
本項目是有梅特勒-托利多(常州)稱重系統(tǒng)有限公司配料事業(yè)部為中材建設集團在沙特水泥公司完成的水泥進出場管理系統(tǒng)。這個系統(tǒng)用一套西門子S7400 為執(zhí)行部分硬件基礎,三臺工控計算機作為管理部分硬件基礎。將執(zhí)行部分與數(shù)據(jù)管理有機的結合起來。
系統(tǒng)構成
本系統(tǒng)作為這個工廠的原料進廠,產(chǎn)品出場的管理系統(tǒng),有五大部分組成:
1、 原料進廠數(shù)據(jù)采集及管理
2、 產(chǎn)品銷售及客戶數(shù)據(jù)管理
3、 產(chǎn)品自動定量罐裝,出廠數(shù)據(jù)采集及管理
4、 全部數(shù)據(jù)查詢
5、 數(shù)據(jù)打印
這五部分及互想獨立又有機的結合在一起,本系統(tǒng)執(zhí)行部分有一套西門子S7 400 帶ET200 完成。本系統(tǒng)現(xiàn)場稱重終端采用十二臺了METTER-TOLEDO 的數(shù)字式靜態(tài)汽車衡,二次儀表為JagXtreme,通過Profibus 與S7 400 PLC 通訊,稱重終端的高精度穩(wěn)定運行為整個系統(tǒng)的穩(wěn)定運行提供了良好的基礎。數(shù)據(jù)處理及存儲則有西門子400PLC 和兩套WinCC 完成??傮w配置圖如下:
網(wǎng)絡配置和硬件配置比較簡單,但本系統(tǒng)卻實現(xiàn)了工廠發(fā)運系統(tǒng)的全部功能。下面我們來詳細討論。
第一 原料進廠數(shù)據(jù)采集及管理上位機的功能主要是采集原料車的各種信息和總重,然后將這些數(shù)據(jù)存儲在緩沖數(shù)據(jù)庫中,當卡車在卸完車后,再次回到汽車衡上時,系統(tǒng)記錄空車重量同時讀出總重,將數(shù)據(jù)整和后存入進料數(shù)據(jù)庫中。數(shù)據(jù)的存儲都有WinCC 自帶的VBS 編輯器中完成,數(shù)據(jù)庫同樣也用了WinCC 自帶的SQL Server 2000 數(shù)據(jù)庫,如果需要共享的則采用了ACCESS 數(shù)據(jù)庫。下面是部分操作界面(其中一臺汽車衡)
存儲數(shù)據(jù)用VBS 腳本如下:
Sub OnClick(Byval Item)
Dim database,server,uid,pwd
Dim strcn ,cn,rst,is_sql
Dim a,b
Dim NO
Set NO = HMIRuntime.Tags("NO")‘讀變量值
NO.Read
Dim Company
WinCC 在進出廠管理系統(tǒng)中的應用 胡紹明
4
Set Company = HMIRuntime.Tags("Company")‘讀變量值
Company.Read
Dim Product
Set Product = HMIRuntime.Tags("Product")‘讀變量值
Product.Read
Dim SheetNO
Set SheetNO = HMIRuntime.Tags("SheetNO")‘讀變量值
SheetNO.Read
Dim TrackNO
Set TrackNO = HMIRuntime.Tags("TrackNO")‘讀變量值
TrackNO.Read
Dim SetPoint
Set SetPoint = HMIRuntime.Tags("SetPoint")‘讀變量值
SetPoint.Read
Dim CurrentUser
Set CurrentUser = HMIRuntime.Tags("@CurrentUser")‘讀變用戶名
CurrentUser.Read
Dim Ltime
Set Ltime = HMIRuntime.Tags("time")‘讀變系統(tǒng)時間
Ltime.Read
Dim Ldate
Set Ldate = HMIRuntime.Tags("date")‘讀變系統(tǒng)日期
Ldate.Read
database = "hu"
server = "BABY\WINCC"
uid = "sa"
pwd = ""
strcn = "Provider = SQLOLEDB.1;DRIVER = SQL SERVER;SERVER =" &_
server & "; DATABASE=" & database & "; UID=" & uid & "; PWD=" & pwd
‘定義連接字符
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = strcn
cn.open
is_SQL = "insert into
Sheet1(nomber,trackno,compay,sheetno,product,setpoint,operator,ttime,ddate)" & _
"Values("& NO.Value &",'"& TrackNO.Value &"','"& Company.Value &"','"&
SheetNO.Value &"','"& Product.Value &"',"& SetPoint.Value &",'"& CurrentUser.Value
&"','"& Ltime.Value &"','"& Ldate.Value &"')" ‘存數(shù)據(jù)
cn.Execute(is_SQL)
cn.close
End Sub
第二 產(chǎn)品銷售及客戶管理
在此部分產(chǎn)品銷售和客戶管理的數(shù)據(jù)存儲部分和上一部分類似,在這里不再詳細介紹,主要講述客戶管理部分。
客戶管理主要任務是管理客戶資料,其中包括:客戶代碼,客戶名稱,槽車號碼,許可證號碼,最大裝車量等等。有WinCC 程序來存儲,更新,管理,檢查這些數(shù)據(jù),以保證出貨的安全性和快捷性。
下面是部分操作界面:
當用戶用到此車出廠時,系統(tǒng)自動比對,以上數(shù)據(jù),無誤后方可操作。
第三 產(chǎn)品自動定量罐裝
在此部分,主要是有PLC 執(zhí)行系統(tǒng),按銷售數(shù)量定量灌裝銷售的產(chǎn)品,然后出廠。首先 ,槽車按要求開上汽車衡后,當操作員輸入車號后,系統(tǒng)開始讀出曹車檔案,自動讀入銷售量,同時比對各項參數(shù),合法后系統(tǒng)自動控制稱重儀表去皮,然后開始灌裝,當達到銷售量時,為了保證灌裝精度系統(tǒng)自動分步停止灌裝,整個灌裝過程完成后,系統(tǒng)自動記錄各項數(shù)據(jù),將其存入服務器中,槽車便可以出廠,灌裝結束。在此部分,主要將WinCC 的管理功能和PLC 的執(zhí)行功能有機的結合。有西門子一家產(chǎn)品便很好的完成了比較復雜的數(shù)據(jù)存取,比對,現(xiàn)場灌裝執(zhí)行等功能。
操作界面如下:
WinCC 在數(shù)據(jù)方面用VBS 來完成還是很方便地, 特別是SQL 語言的應用,使得在SQL Server 2000,ACCESS 等數(shù)據(jù)庫中按用戶給出的條件進行查詢都能夠方便的實現(xiàn)。WinCC 在數(shù)據(jù)顯示方面還是有欠缺的,但是開放的ActiveX 控件可以彌補這部分的不足之處。在這里我注冊了Microsoft Visual Basic 6.0 的數(shù)據(jù)顯示控件Microsoft Hierarchical FlexGrid Control 6.0 。將其植入到WinCC 中用來顯示數(shù)據(jù),效果不錯,如下:
其原理是將各個查詢條件組合為一個查詢字符串,然后用SQL 語言去數(shù)據(jù)庫里查詢,最后將符合查詢要求的查詢結果付給FlexGrid 控件去顯示。其部分語句如下:
Sub OnClick(ByVal Item)
Dim database,server,uid,pwd
Dim strcn ,cn,rs,SQL
Dim a,b,c,d,e,f,g
Dim Text1,buff
Dim BeginDate
Set BeginDate = HMIRuntime.Tags("BRiQi")
Dim EndDate
Set EndDate = HMIRuntime.Tags("ERiQi")
BeginDate.Read
EndDate.Read
Dim strSQL
Set strSQL = HMIRuntime.Tags("strSQL")
Set d = ScreenItems("CheckBox1")
If d.Process = 1 Then
Dim Trans
Set Trans = HMIRuntime.Tags("Trans")
Trans.Read
Set e = ScreenItems("OptionGroup1")
If e.Process = 1 Then
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"'
and '"& EndDate.Value &"' and ICNO = '"& Trans.Value &"'"
End If
If e.Process = 2 Then
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"'
and '"& EndDate.Value &"' and CharterNO = '"& Trans.Value &"'"
End If
If e.Process = 4 Then
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"'
and '"& EndDate.Value &"' and TrackNO = '"& Trans.Value &"'"
End If
If e.Process = 8 Then
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"'
and '"& EndDate.Value &"' and CustemerName = '"& Trans.Value &"'"
End If
If e.Process = 16 Then
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"'
and '"& EndDate.Value &"' and ProductNO = '"& Trans.Value &"'"
End If
Else
SQL = "select * from Sheet1 where LoadDate between '"& BeginDate.Value &"' and
'"& EndDate.Value &"'"
End If
strSQL.Value = SQL
strSQL.Write
Set a = ScreenItems("Grid1")
database = "hu"
server = "BABY\WINCC"
uid = "sa"
pwd = ""
strcn = "Provider = SQLOLEDB.1;DRIVER = SQL SERVER;SERVER =" &_
server & "; DATABASE=" & database & "; UID=" & uid & "; PWD=" & pwd
‘定義連接字符
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = strcn
cn.open
End Sub
第五 數(shù)據(jù)打印
在西門子基本軟件包中有報表編輯器,提供了報表的創(chuàng)建和輸出功能,在編輯好頁面后,使用ODBC“數(shù)據(jù)庫表”對象,將數(shù)據(jù)庫中的內容以文本的形式打印出來,為了只打印我們需要的數(shù)據(jù),我們便可以利用上文說到的“查詢字符串”,將其合成為SQL 語句,賦予變量查詢,即可打印出所需的數(shù)據(jù)。
結論
本文中不僅僅實現(xiàn)了WinCC 的監(jiān)控和數(shù)據(jù)采集功能,報警紀錄,變量記錄等常規(guī)的功能,在這里WinCC 更深一層的功能得到了很好的應用,以VBS 對數(shù)據(jù)庫的操作和微軟控件的引入更是顯示出了WinCC 強大的功能。它獨立完成了從原材料進廠數(shù)據(jù)采集,產(chǎn)品銷售數(shù)據(jù)存儲與管理,產(chǎn)品出廠自動灌裝的監(jiān)控,出廠數(shù)據(jù)記錄,以及整個的數(shù)據(jù)查詢,數(shù)據(jù)打印等,一系列的進出廠管理系統(tǒng)的全部任務。
作者信息:
胡紹明,男(1996 年- 2000 年就讀于昌黎縣第一中學;2000-2004 就讀燕山大學電氣工程學院;2005 年- 2006 年 梅特勒-托利多稱重系統(tǒng)有限公司, 電氣工程師;2004 年- 2005 年 益海集團金海糧油工業(yè)有限公司, 電氣工程師)秦皇島開發(fā)區(qū)和平開發(fā)大廈5 樓 梅特勒托利多公司