目錄
-
- 1 <概述>
- 2 <建立模闆>
- 3 < Wincc變量>
- 4 <建立全局動作>
-
- 4.1 動作1腳本:建立檔案及拷貝報表
- 4.2 全局動作2:整點存儲資料
- 5 <制作報表畫面>
-
- 5.1 控件添加
- 5.2 腳本
- 6 <運作結果>
1 <概述>
在工業生産中報表一直占有非常重要的部分,它一般用來記錄現場的工藝參數、能耗資訊和統計資訊,作為分析企業營運情況的依據。
本文以Wincc V7.5 SP1 為例,介紹Wincc如何擷取裝置運作資料統計并通過報表的形式展現統計資料,如圖1所示:
可實作如下功能:
- 自動記錄裝置的運作資料(整點統計)
- 定時存儲日報表(excel格式)
- 利用Web控件顯示htm報表檔案
2 <建立模闆>
在Wincc項目檔案夾下建立report檔案夾,如圖2、圖3所示:
3 < Wincc變量>
本例中需要用到兩種Wincc變量。一種是和裝置運作資料相關的Wincc外部變量,包括運作資料、能耗資料等,根據項目實際情況建立。另外一種是用于整點存儲相關的變量,這裡将介紹利用Wincc系統變量讀取目前時間(H值)。如圖4所示
4 <建立全局動作>
全局動作有兩個檔案:
- 動作1:
- 利用模版建立臨時存儲檔案
- 每天00:00:02秒觸發動作
- 按“檔案名-日期”格式copy資料到指定報表路徑下
- 動作2:
- 整點讀取讀取資料,并存入臨時存儲檔案
4.1 動作1腳本:建立檔案及拷貝報表
全局動作腳本如下:
Option Explicit
Function action
Dim objexcelapp,objexcelbook,objexcelsheet
Dim sheetname
Dim dstr,path,fn,cow,fso
Dim MyFile
Dim TempFileName,TemplateFileName,DestFile
TemplateFileName = HMIRuntime.ActiveProject.Path & "\report\日報表\智慧空壓站運作日報表_模版.xlsx"
TempFileName = HMIRuntime.ActiveProject.Path & "\report\日報表\智慧空壓站運作日報表.xlsx"
DestFile = "E:\報表"
dstr = CStr(Year(Now)) & "-" & CStr(Month(Now)) & "-" & CStr(Day(Now)) & " " & CStr(Hour(Now)) & ":" & CStr(Minute(Now))
fn = CStr(Year(Now)) & CStr(Month(Now)) & CStr(Day(Now)) & CStr(Hour(Now)) & CStr(Minute(Now))
sheetname = "空壓機"
Set fso = CreateObject("scripting.FileSystemObject")
Set objexcelapp = CreateObject("Excel.Application")
Set MyFile = fso.GetFile(TemplateFileName)
objexcelapp.visible = False
objexcelapp.Workbooks.open TempFileName
objexcelapp.Worksheets(sheetname).Activate
objexcelapp.ActiveWorkbook.SaveAs(DestFile & fn & ".xlsx")
objexcelapp.ActiveWorkbook.SaveAs(DestFile &"\web\"& fn & ".htm"),44
MyFile.Copy (TempFileName),True
objexcelapp.Workbooks.Close
objexcelapp.Quit
Set objexcelapp = Nothing
End Function
動作觸發周期為每日的00:00:02,如下圖5所示:
4.2 全局動作2:整點存儲資料
全局動作2腳本如下,該部分代碼根據項目實際情況進行修改
Option Explicit
Function action
Dim objexcelapp,objexcelbook,objexcelsheet
Dim a,b,c,d,sheetname
Dim dstr,path,fn,cow
Dim TempFileName
TempFileName = HMIRuntime.ActiveProject.Path & "\report\日報表\智慧空壓站運作日報表.xlsx"
cow = 4
dstr = CStr(Year(Now)) & "-" & CStr(Month(Now)) & "-" & CStr(Day(Now)) & " " & CStr(Hour(Now)) & ":" & CStr(Minute(Now))
sheetname = "空壓機"
Set objexcelapp = CreateObject("Excel.Application")
objexcelapp.visible = False
objexcelapp.Workbooks.open TempFileName '打開臨時存儲檔案
objexcelapp.Worksheets(sheetname).Activate
a = HMIRuntime.Tags("IntHour").Read
With objexcelapp.worksheets(sheetname)
.cells(a + cow,1) = dstr
.cells(a + cow,2) = HMIRuntime.Tags("整數轉浮點數_PLC_SD").Read
.cells(a + cow,3) = HMIRuntime.Tags("整數轉浮點數_PLC_WD").Read
.cells(a + cow,4) = HMIRuntime.Tags("ZLAN1_1_ZGSSLL1").Read
.cells(a + cow,5) = HMIRuntime.Tags("AI_2_AI_CQG_PRESS1").Read
.cells(a + cow,6) = HMIRuntime.Tags("AI_AI_WATER_TEMP_IN").Read
.cells(a + cow,7) = HMIRuntime.Tags("AI_AI_WATER_IN_PRESS").Read
.cells(a + cow,8) = HMIRuntime.Tags("ZLAN1_3_SYSTEM_PRE_1").Read
.cells(a + cow,9) = HMIRuntime.Tags("ZLAN1_3_KYSSLL_1").Read
.cells(a + cow,10) = HMIRuntime.Tags("ZLAN1_3_ZD1_1").Read
.cells(a + cow,11) = HMIRuntime.Tags("ZLAN1_3_ZD2_1").Read
.cells(a + cow,12) = HMIRuntime.Tags("ZLAN1_3_ZD3_1").Read
.cells(a + cow,13) = HMIRuntime.Tags("ZLAN1_3_OIL_SUPPLY_TMP_1").Read
.cells(a + cow,14) = HMIRuntime.Tags("ZLAN1_3_MOTER_DE_TMP_1").Read
.cells(a + cow,15) = HMIRuntime.Tags("AI_2_AI_KYJ_WATER_PRESS_IN1").Read
.cells(a + cow,16) = HMIRuntime.Tags("ZLAN1_3_SYSTEM_PRE_2").Read
.cells(a + cow,17) = HMIRuntime.Tags("ZLAN1_3_KYSSLL_2").Read
.cells(a + cow,18) = HMIRuntime.Tags("ZLAN1_3_ZD1_2").Read
.cells(a + cow,19) = HMIRuntime.Tags("ZLAN1_3_ZD2_2").Read
.cells(a + cow,20) = HMIRuntime.Tags("ZLAN1_3_ZD3_2").Read
.cells(a + cow,21) = HMIRuntime.Tags("ZLAN1_3_OIL_SUPPLY_TMP_2").Read
.cells(a + cow,22) = HMIRuntime.Tags("ZLAN1_3_MOTER_DE_TMP_2").Read
.cells(a + cow,23) = HMIRuntime.Tags("AI_2_AI_KYJ_WATER_PRESS_IN2").Read
.cells(a + cow,24) = HMIRuntime.Tags("ZLAN1_3_SYSTEM_PRE_3").Read
.cells(a + cow,25) = HMIRuntime.Tags("ZLAN1_3_KYSSLL_3").Read
.cells(a + cow,26) = HMIRuntime.Tags("ZLAN1_3_ZD1_3").Read
.cells(a + cow,27) = HMIRuntime.Tags("ZLAN1_3_ZD2_3").Read
.cells(a + cow,28) = HMIRuntime.Tags("ZLAN1_3_ZD3_3").Read
.cells(a + cow,29) = HMIRuntime.Tags("ZLAN1_3_OIL_SUPPLY_TMP_3").Read
.cells(a + cow,30) = HMIRuntime.Tags("ZLAN1_3_MOTER_DE_TMP_3").Read
.cells(a + cow,31) = HMIRuntime.Tags("AI_2_AI_KYJ_WATER_PRESS_IN3").Read
.cells(a + cow,32) = HMIRuntime.Tags("ZLAN1_3_SYSTEM_PRE_4").Read
.cells(a + cow,33) = HMIRuntime.Tags("ZLAN1_4_LTLS_4").Read
.cells(a + cow,34) = HMIRuntime.Tags("ZLAN1_3_ZD1_4").Read
.cells(a + cow,35) = HMIRuntime.Tags("ZLAN1_3_ZD2_4").Read
.cells(a + cow,36) = HMIRuntime.Tags("ZLAN1_3_ZD3_4").Read
.cells(a + cow,37) = HMIRuntime.Tags("ZLAN1_3_OIL_SUPPLY_TMP_4").Read
.cells(a + cow,38) = HMIRuntime.Tags("ZLAN1_3_MOTER_DE_TMP_4").Read
.cells(a + cow,39) = HMIRuntime.Tags("AI_2_AI_KYJ_WATER_PRESS_IN4").Read
.cells(a + cow,40) = HMIRuntime.Tags("ZLAN1_3_SYSTEM_PRE_8").Read
.cells(a + cow,41) = HMIRuntime.Tags("ZLAN1_3_KYSSLL_8").Read
.cells(a + cow,42) = HMIRuntime.Tags("ZLAN1_3_ZD1_8").Read
.cells(a + cow,43) = HMIRuntime.Tags("ZLAN1_3_ZD2_8").Read
.cells(a + cow,44) = HMIRuntime.Tags("ZLAN1_3_ZD3_8").Read
.cells(a + cow,45) = HMIRuntime.Tags("ZLAN1_3_OIL_SUPPLY_TMP_8").Read
.cells(a + cow,46) = HMIRuntime.Tags("ZLAN1_3_MOTER_DE_TMP_8").Read
.cells(a + cow,47) = HMIRuntime.Tags("AI_2_AI_KYJ_WATER_PRESS_IN8").Read
End With
objexcelapp.ActiveWorkbook.Save
objexcelapp.Workbooks.Close
objexcelapp.Quit
Set objexcelapp = Nothing
End Function
動作觸發周期為每小時的00:05秒,如下圖6所示:
5 <制作報表畫面>
Wincc報表畫面分幾項功能:
- 點選“實時報表”按鈕,展示今日運作資料
- 周遊檔案夾下所有報表檔案(htm格式)到清單框中,選中後點選“曆史報表查詢”按鈕
5.1 控件添加
- **Web控件:**Microsoft Web Browser,“myweb”
- **清單框控件:**Microsoft Lisview Control,“listbox1”
-
**按鈕控件:**Button(“實時報表”、“曆史報表查詢”)
控件添加方式
在 ActiveX 控件上右鍵,選擇“添加/删除”,然後在 OCX 控件清單中選擇
Microsoft Lisview Control 和 Microsoft Web Browser。如下圖7所
示:
5.2 腳本
-
窗體腳本
窗體打開後,執行web控件加載“實時報表”,同時向清單框循環添加檔案夾下周遊到所有報表名稱。
“窗體對象”——“其他”——“打開畫面”,執行VB腳本,如下所示:
Sub OnOpen()
On Error Resume Next
Dim fso, f, f1, fc, N
Dim lst,wbCtrl
Set lst = ScreenItems("listbox1")
Set wbCtrl = ScreenItems("myweb")
Set fso = CreateObject("scripting.FileSystemObject")
Set f = fso.GetFolder("E:\報表\web格式")
Set fc = f.Files
N = 0
For Each f1 In fc
N = N + 1
lst.Index N
lst.Text f1.name
Next
lst.NumberLines =N
lst.SelIndex ="1"
lst.Sort = 1
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & "\report\日報表\web\智慧空壓站運作日報表.htm"
End Sub
- 按鈕“實時報表”VB腳本
Sub OnClick(Byval Item)
On Error Resume Next
item.Enabled = False
Dim lst,wbCtrl
Dim Value1
Set wbCtrl = ScreenItems("myweb")
Set lst = ScreenItems("listbox1")
Value1 = lst.SelText
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & "\report\日報表\web\智慧空壓站運作日報表.htm"
item.Enabled = True
End Sub
- 按鈕“曆史報表查詢”VB腳本
Sub OnClick(Byval Item)
On Error Resume Next
item.Enabled = False
Dim lst,wbCtrl
Dim Value1
Set wbCtrl = ScreenItems("myweb")
Set lst = ScreenItems("listbox1")
Value1 = lst.SelText
wbCtrl.Navigate "E:\報表\web格式\" & Value1
item.Enabled = True
End Sub