一、項目簡介
項目的所在地位於山東省煙台市經濟技術開發區內的上海通用東嶽汽車有限公司。其油漆車間新上的一套AVI(自動汽車識別)系統通過採用安裝在車體滑橇上的西門子MOBY感測器將實時車體信息傳遞到主控PLC上,再由上位監控計算機採集存入資料庫並最終由用戶有選擇地以報表形式將信息列印輸出。各AVI信息採集站除裝有MOBY自動讀寫頭外,還各有一套ET200S遠程站和操作員面板採集現場其他信號。整套AVI系統的現場級均採用西門子Profibus-DP匯流排來傳遞信息, PLC與上位監控計算機採用工業乙太網進行實時通訊。
二、系統介紹
1.工藝需求
由於油漆車間有其自身的生產工藝,諸如電泳、噴漆、烘房等,因此,各車輛的車體信息會在其進入油漆車間之前被自動存儲在車體所對應的滑橇上的MOBY存儲單元中。當車體到達首個固定的AVI讀寫站時,自動條碼掃描槍會讀取貼在車體上的條形碼信息,同時,MOBY讀寫頭會自動從滑橇上的MOBY存儲單元中讀出車體信息並與掃描槍掃到的信息進行對比,如果兩者比較結果一致,則主控PLC會返回機運線放行信號將此車輛放行。如果比較結果不一致,操作員會以條形碼信息為準,通過AVI站的操作員面板將信息手動寫入MOBY存儲單元中。因此,首個AVI站不但能諺別車體的信息,還具有寫入信息的能力。在整個油漆車間的AVI自動讀寫站中,首尾兩站是非常重要的,它們均具有讀出和寫入的功能。其他AVI站無特殊的要求,只具有讀出信息的功能。原理巨(見圖1)表明了現場數據流是如何傳遞的。
圖1 現場數據流動原理圖
2.控制系統構成
除以上所描述的工藝需求外,現場邏輯控制和採集系統的硬體組成由圖2加以說明。
(1)各AVI讀寫站均採用西門子MOBY移動存儲單元與讀寫頭。
(2)各AVI讀寫站的控制與狀態信號的採集均採用ET200S遠程站實現。
(3)各AVI讀寫站的人機界面均採用西門子OP37型操作員面板。
(4)通過PROFIBUS現場總現實現PCL與ET200S分散式I/O模塊,MOBY存儲單元的信號通訊。
(5) PLC與上位監控與採集計算機採用乙太網的方式連接。
三、管理功能實現
上位機現場管理功能的實現主要由三大步驟組成,即先獲取數據到上位機、通過編寫SQL語句自動存儲數據到資料庫中,再通過SQL語句將數據查詢出並顯示到界面上的可視化控制件中,最後以報表的格式輸出列印。數據源的獲取及SQL語句的編寫可以在WinCC V6.0自帶的VBScript編輯器中完成,資料庫使用WinCC V6.0自帶的SQL Server 2000資料庫,無需另行安裝。
1.存儲數據到數據厙
在採集數據環節,WinCC可以很方便地通過西門子專用通道,以變數標籤的形式將數據採集上來。之後利用其自帶的VBScript編輯器編寫標準的SQL語句將實時信息插入到資料庫中,訪問資料庫的方法種類很多:建立ODBC連接、使用ADO控制項、使用DAO控制項等等。以下是通過使用 ADO控制項實現訪問資料庫的程序。
圖2硬體網路原理圖
Sub OnClick(Byval Item)
Dim database,server,uid,pwd
Dim strcn,cn Dim is_SQL
' 定義內部變數和對象
database=」DB_Name"
server= 』』ServerName"
uid="User"
pwd=」PassWord"
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 表名 (欄位1,欄位2,欄位3,欄位4)」 &_」Values(' 」 &控制項名稱.Text&」 ' ' " & 控制項名稱.Text & 」 ',' 」 &控制項名稱.Text &_ 或變數名稱.Value 變數名稱.Value 變數名稱.Value」 ' ' 」&控制項名稱.Text&" ')「
變數名稱.Value
『拼寫存儲到資料庫的SQL語句
cn. Execute is_SQL
『執行此操作
cn. Close
『結束訪問資料庫
End Sub
所有數據都存儲於WinCC自帶的SQL Sen,er 2000運行庫的數據表中,表的位置及結構見圖3。
圖3表的位置及結構
2.查詢數據到界面的可視化控制項中
查詢數據由兩部分動作組成:先將數據按用戶的要求從資料庫中讀出,再將其放入界面的可視化控制項中。查詢資料庫需要編寫SQL查詢語句,所不同的是SQL語句的寫法,我們採用微軟標準的ListView可視化控制項來顯示查詢的結果。
有條件讀取數據的SQL語句:
strSQL=SELECT*FROM 表名WHERE(欄位名=『」& 限制條件&」』)」
在做時間段的有條件查詢時,要使用between...and語句將起始和結束時間聲明在SQL語句中:
strSQL=」 selectfrom表名where欄位名between #」& 起始時間 &_
「#and#」& 結束時間 &」# order by欄位名」
最後再將查詢出的歷史數據放入界面中的ListView控制項中,其語法如下程序所示,查詢效果見圖4。
圖4查詢效果
With ListView1
. Listltems.Clear
.ColumnHeaders. Add , , "No. " , 30
.ColumnHeaders. Add , , CStr ( RS. Fields ( 0 ). Name ) , 70
.ColumnHeaders. Add , , CStr ( RS. Fields ( 1 ). Name ) , 150
.ColumnHeaders. Add , , CStr ( RS. Fields (2 ). Name ) , 150
End With
Row=O
Do While Not RS. EOF
Row=Row+1
If Row<10 Then
Row=」0"&Trim (Row)
End If
Set oltem=ListViewl. Listltems. Add()
Oltem. Text=Left( CStr (Row),5)
Oltem. Sublterms(1)=CStr( RS .Fields(0).Value)
Oltem. Sublterms(2)=CStr( RS .Fields(1).Value)
Oltem. Sublterms(3)=CStr( RS .Fields(2).Value)
RS. MoveNext
Loop
3.以EXCEL表格的形式輸出成報表
最後一步將控制項查詢出的數據以EXCEL的形式輸出成報表,這樣從現場實時數據到最終的歷史數據報表這一信息流程完成。將數據導入到EXCEL表格的語法如下面程序所示,結果見圖5。
Set objEW=GetObject(」」,」Excel. Application")
If Err Then
Err.Clear
Set objEW=CreateObject(」Excel. Application」)
If Err Then
MsgBox Err. Description
Exit Function
End If
ObjEW. Visible=True
ObjEW. Workbooks. Add」 D:\WinCC \query. xit"
For i=1 To MSFGl. Rows -1
objEW. Sheets ( 1 ). Range (" A" & Trim ( i )). Value = MSFGl. TextMatrix (i, 0)
objEW. Sheets ( 1 ). Range (" B" & Trim ( i )). Value = MSFGl. TextMatrix (i, 1)
objEW. Sheets ( 1 ). Range (" C" & Trim ( i )). Value = MSFGl. TextMatrix (i, 2)
Next
圖5 AVI讀寫站歷史記錄查詢
四、結束語
在現代化汽車廠的油漆車間中,自動汽車檢測與識別系統是目前應用最普遍的車身信息追蹤與採集系統。在這套系統中,WinCC不但擔當了數據採集、分析、查詢以及輸出的職能,而且運行可靠、維護性高,將現場監控和數據分析兩大功能很好地展示出來,在目前高度集成化的工業現場扮演了極其重要的角色。