摘 要:本文以實現水泥進出場管理為目的。運用了西門子上位機監控軟件WinCC 及其自身集成的VBS 腳本,以及西門子S7400 系列PLC。實現了從銷售數據管理,槽車檔案數據管理,水泥定量灌裝,出場數據記錄,到日、月、年報表查詢即打印系統,這五大部分整個進出廠管理過程的融合。
關鍵詞: WinCC;VBS;SQL;ACCESS;ActiveX
第一 引言
本項目是有梅特勒-托利多(常州)稱重系統有限公司配料事業部為中材建設集團在沙特水泥公司完成的水泥進出場管理系統。這個系統用一套西門子S7400 為執行部分硬件基礎,三臺工控計算機作為管理部分硬件基礎。將執行部分與數據管理有機的結合起來。
系統構成
本系統作為這個工廠的原料進廠,產品出場的管理系統,有五大部分組成:
1、 原料進廠數據采集及管理
2、 產品銷售及客戶數據管理
3、 產品自動定量罐裝,出廠數據采集及管理
4、 全部數據查詢
5、 數據打印
這五部分及互想獨立又有機的結合在一起,本系統執行部分有一套西門子S7 400 帶ET200 完成。本系統現場稱重終端采用十二臺了METTER-TOLEDO 的數字式靜態汽車衡,二次儀表為JagXtreme,通過Profibus 與S7 400 PLC 通訊,稱重終端的高精度穩定運行為整個系統的穩定運行提供了良好的基礎。數據處理及存儲則有西門子400PLC 和兩套WinCC 完成。總體配置圖如下:
網絡配置和硬件配置比較簡單,但本系統卻實現了工廠發運系統的全部功能。下面我們來詳細討論。
第一 原料進廠數據采集及管理上位機的功能主要是采集原料車的各種信息和總重,然后將這些數據存儲在緩沖數據庫中,當卡車在卸完車后,再次回到汽車衡上時,系統記錄空車重量同時讀出總重,將數據整和后存入進料數據庫中。數據的存儲都有WinCC 自帶的VBS 編輯器中完成,數據庫同樣也用了WinCC 自帶的SQL Server 2000 數據庫,如果需要共享的則采用了ACCESS 數據庫。下面是部分操作界面(其中一臺汽車衡)
存儲數據用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 在進出廠管理系統中的應用 胡紹明
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")‘讀變系統時間
Ltime.Read
Dim Ldate
Set Ldate = HMIRuntime.Tags("date")‘讀變系統日期
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 &"')" ‘存數據
cn.Execute(is_SQL)
cn.close
End Sub
第二 產品銷售及客戶管理
在此部分產品銷售和客戶管理的數據存儲部分和上一部分類似,在這里不再詳細介紹,主要講述客戶管理部分。
客戶管理主要任務是管理客戶資料,其中包括:客戶代碼,客戶名稱,槽車號碼,許可證號碼,最大裝車量等等。有WinCC 程序來存儲,更新,管理,檢查這些數據,以保證出貨的安全性和快捷性。
下面是部分操作界面:
當用戶用到此車出廠時,系統自動比對,以上數據,無誤后方可操作。
第三 產品自動定量罐裝
在此部分,主要是有PLC 執行系統,按銷售數量定量灌裝銷售的產品,然后出廠。首先 ,槽車按要求開上汽車衡后,當操作員輸入車號后,系統開始讀出曹車檔案,自動讀入銷售量,同時比對各項參數,合法后系統自動控制稱重儀表去皮,然后開始灌裝,當達到銷售量時,為了保證灌裝精度系統自動分步停止灌裝,整個灌裝過程完成后,系統自動記錄各項數據,將其存入服務器中,槽車便可以出廠,灌裝結束。在此部分,主要將WinCC 的管理功能和PLC 的執行功能有機的結合。有西門子一家產品便很好的完成了比較復雜的數據存取,比對,現場灌裝執行等功能。
操作界面如下:
WinCC 在數據方面用VBS 來完成還是很方便地, 特別是SQL 語言的應用,使得在SQL Server 2000,ACCESS 等數據庫中按用戶給出的條件進行查詢都能夠方便的實現。WinCC 在數據顯示方面還是有欠缺的,但是開放的ActiveX 控件可以彌補這部分的不足之處。在這里我注冊了Microsoft Visual Basic 6.0 的數據顯示控件Microsoft Hierarchical FlexGrid Control 6.0 。將其植入到WinCC 中用來顯示數據,效果不錯,如下:
其原理是將各個查詢條件組合為一個查詢字符串,然后用SQL 語言去數據庫里查詢,最后將符合查詢要求的查詢結果付給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
第五 數據打印
在西門子基本軟件包中有報表編輯器,提供了報表的創建和輸出功能,在編輯好頁面后,使用ODBC“數據庫表”對象,將數據庫中的內容以文本的形式打印出來,為了只打印我們需要的數據,我們便可以利用上文說到的“查詢字符串”,將其合成為SQL 語句,賦予變量查詢,即可打印出所需的數據。
結論
本文中不僅僅實現了WinCC 的監控和數據采集功能,報警紀錄,變量記錄等常規的功能,在這里WinCC 更深一層的功能得到了很好的應用,以VBS 對數據庫的操作和微軟控件的引入更是顯示出了WinCC 強大的功能。它獨立完成了從原材料進廠數據采集,產品銷售數據存儲與管理,產品出廠自動灌裝的監控,出廠數據記錄,以及整個的數據查詢,數據打印等,一系列的進出廠管理系統的全部任務。
作者信息:
胡紹明,男(1996 年- 2000 年就讀于昌黎縣第一中學;2000-2004 就讀燕山大學電氣工程學院;2005 年- 2006 年 梅特勒-托利多稱重系統有限公司, 電氣工程師;2004 年- 2005 年 益海集團金海糧油工業有限公司, 電氣工程師)秦皇島開發區和平開發大廈5 樓 梅特勒托利多公司