版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、在工業(yè)生產(chǎn)中報表一直占有非常重要的部分,它一般用來記錄現(xiàn)場的工藝參數(shù)和統(tǒng)計信息。早期是由人工抄錄然后統(tǒng)計出相關的報表。進入計算機控制階段,這份工作就需要工控軟件來實現(xiàn)。對于工控行業(yè)的工程師來說:如何開發(fā)適合用戶需求的報表一直是個難題。論壇上很多人都在尋求靈活高效的解決方法。 經(jīng)過這段時間的網(wǎng)上討論。綜合網(wǎng)友們的意見和建議,我們做了總結。并結合WinCC軟件本身作了相關的說明。希望能對大家在以后的報表開發(fā)中有所幫助。 接下來就從報表的需求分析、WinCC報表系統(tǒng)的應用、復雜報表的WinCC報表系統(tǒng)實現(xiàn)這幾個部分來分別介紹。最后總結出WinCC報表系統(tǒng)在應用的優(yōu)缺點和常見的問題
2、的解決方法。一報表的需求分析 從需求上來講報表一般分為:內(nèi)容上的需求、樣式上和任務上的需求。 1內(nèi)容需求 內(nèi)容上一般涉及到數(shù)據(jù)的求和、平均、最大值、最小值等計算,同時也會涉及到關系的處理,比如班組相關對應信息的統(tǒng)計分析等。下面是一個很典型的報表需求,就很能說明這樣的問題: 圖1. 月報表分析此報表是典型的工業(yè)現(xiàn)場應用,在數(shù)據(jù)采集沒有難度。唯一的難度在于四班三倒后,每個月班的出勤日是不一樣的,這樣對于月報來說,計算出本月每個班的出勤日是需要些算法。此類報表在連續(xù)
3、生產(chǎn)的行業(yè)需求很廣泛。比如:鋼鐵冶金行業(yè)需要一天24小時不停運轉的系統(tǒng)。還有一種內(nèi)容上是分總的關系,就是一部分是簡單的數(shù)據(jù)記錄,另一部分是對上一部分數(shù)據(jù)的統(tǒng)計,比如匯總、求和、平均等。如下圖也是很典型的應用。 圖2. 總分報表另外一種就是涉及到混合排列的問題,一張表上既有分項數(shù)據(jù),中間也涉及到統(tǒng)計信息,同時也會添加一些實時的信息在上面。如下圖。 圖3. 復雜報表這是一個復雜的報表,中間涉及到分項的記錄,數(shù)據(jù)求平均,和一些操作信息的記錄。既有歷史數(shù)據(jù)也有實時信息。當然更復雜的報表需求也是有的,比如說涉及到一張報表上既有實時信息又有歷史信息同時還涉及趨勢視圖、報警信息等。用戶自
4、己可以靈活的定義報表的內(nèi)容和樣式。比如下圖。 圖4.用戶定制報表樣式內(nèi)容上的需求就本質(zhì)來講是對客戶關心信息的總結和整理。內(nèi)容的需求也就決定了報表的樣式和可能采用的數(shù)據(jù)處理方式。 2報表樣式和打印任務 從上面的分析我們不難看出,報表在樣式上要么是固定的,就是事先設計好報表的樣式,然后把一個一個數(shù)據(jù)填寫上去。這也是傳統(tǒng)報表延續(xù)下來的一種方式:格式固定、內(nèi)容固定(比如:圖1和圖3)。 另一種就是格式樣式固定,但是數(shù)據(jù)信息不固定??赡芊祷睾芏嗟臄?shù)據(jù)集,也可能是沒有數(shù)據(jù)。這對報表系統(tǒng)的數(shù)據(jù)歸納能力提出了
5、要求。但是對樣式上沒有特別明確的需求。 最后一種就是比較復雜的問題,報表內(nèi)容不固定、樣式不固定完全由用戶自己設計和決定顯示的內(nèi)容。報表其實就是數(shù)據(jù)的展示問題,早期沒有存儲設備,只能人共抄寫下來?,F(xiàn)在有了機器存儲。其實我們最終需要的就是一個數(shù)據(jù)的統(tǒng)計分析和顯示。當然如果能把這些報表的樣式和需求以電子版的樣式在網(wǎng)絡上共享。我想很多人可以接受不用打印輸出的報表。最終關心的是這些數(shù)據(jù)如實的存儲下來,并可以隨時查閱。對于以上的問題,各家軟件都有相應的解決方法。那么WinCC中提供了哪些方法來應對這些需求?二WinCC的報表系統(tǒng) 作為一款
6、監(jiān)控組態(tài)軟件,WinCC針對需求提供了強大的報表組態(tài)功能。來幫助大家應對客戶這方面的需求。從以下幾個方面進行分析:數(shù)據(jù)存儲、數(shù)據(jù)分析和數(shù)據(jù)輸出。這也是處理報表問題的經(jīng)典思路。 數(shù)據(jù)存儲 就存儲而言,如果能自由靈活的記錄數(shù)據(jù)的統(tǒng)計分析結果那是再好不過的了。其實WinCC的過程歸檔功能提供了強大的數(shù)據(jù)處理能力。我們可以在歸檔管理中靈活的控制歸檔的動作和內(nèi)容。如下圖: 圖.過程值變量歸檔定義 仔細分析這個界面,我們幾乎可以定義所有需要的數(shù)據(jù)統(tǒng)計種類。 1、 周期的記錄 2、 非周期的動作觸發(fā) 3、
7、 動作觸發(fā)的周期記錄 在數(shù)據(jù)處理上WinCC可以自動的統(tǒng)計出平均值、最大值、最小值等數(shù)據(jù)信息。 圖6.歸檔設置界面 對于過程歸檔數(shù)據(jù)的訪問,我們可以使用WinCC的在線表格控件、WinCC報表編輯器中自帶的打印控件,同時也可以使用Connectivity Pack選件使用腳本讀出數(shù)據(jù)。只有安裝了該選件才支持特定的語法訪問歸檔數(shù)據(jù)(該選件需要單獨的授權)。對于有一定編程功底的工程師來說Connectivity Pack選件是一個很好地分析和數(shù)據(jù)處理工具。在后面會有相應的應用實例介紹。 很多人熟悉數(shù)據(jù)庫的操作,那么能不能像操作數(shù)據(jù)庫那樣操
8、作WinCC存儲的數(shù)據(jù)呢?WinCC為我們提供了另一個強大的數(shù)據(jù)存儲和處理工具:用戶歸檔。用戶歸檔編輯器是一個WinCC的附加選件,需要安裝相應的授權才能使用,否則只能使用DEMO模式。它可以用來在服務器 PC 上連續(xù)的保存來自技術過程的數(shù)據(jù)。 在圖形編輯器中,可以組態(tài) WinCC 用戶歸檔表格元素來以表格顯示運行系統(tǒng)中用戶歸檔的在線數(shù)據(jù)。用戶歸檔還可用于準備自動化系統(tǒng)(例如 S5、S7)的數(shù)據(jù)。如果必要,數(shù)據(jù)可以配方或設定值的形式從控制器讀出。用戶歸檔的控制變量可以很好地實現(xiàn)數(shù)據(jù)的讀取和寫入。從而免去了用戶自己寫腳本的工作(登錄,在
9、技術文檔綜合搜索中輸入文檔編號A0296,查詢到使用用戶歸檔實現(xiàn)報表簡介下載即可獲得詳細信息)。在用戶歸檔編輯器中,可以最多組態(tài) 500 個歸檔和 500 個視圖。 每個歸檔最多可創(chuàng)建 500 個域。歸檔中的數(shù)據(jù)記錄的最大數(shù)目受到限制,取決于已組態(tài)列的數(shù)目和歸檔中包含的數(shù)據(jù)記錄。 列和數(shù)據(jù)記錄的乘積不能大于 320000。這樣用戶歸檔基本上可以滿足數(shù)據(jù)存儲量不是很大的需求。同時又可以像操作數(shù)據(jù)庫那樣操作數(shù)據(jù)。很方便實用。 當然更靈活的方法就是使用WinCC的腳本操作外部數(shù)據(jù)庫。這個已經(jīng)超出了咱們
10、討論的范圍。 2數(shù)據(jù)分析和輸出 其實這兩個問題我們需要結合來講。如何把存儲和分析的結果很好地展示出來,這應該是大家最關心也是對報表系統(tǒng)體會最深的地方。很多時候我們的問題就出現(xiàn)在如何分析和展示數(shù)據(jù)上。很多人希望報表格式能像EXCEL那樣靈活。當然我們可以把數(shù)據(jù)讀出來寫入EXCEL這不失為一個方法。但是這需要開發(fā)者的一些編程功底。如何不用編程序或者使用很少的程序代碼就能實現(xiàn)報表功能呢?其實WinCC在數(shù)據(jù)分析和數(shù)據(jù)輸出上提供了很好的工具。 最簡單和直接的方法,就是調(diào)用WinCC的控件集成的打印功能
11、。它是一種所見即所得的方式實現(xiàn)的打印工具。用戶可以很輕松的執(zhí)行打印任務。 對于普通歸檔的訪問如果編程的話WinCC提供了Connectivity pack工具,用于分析和統(tǒng)計數(shù)據(jù)。對于用戶歸檔WinCC的報表系統(tǒng)提供了直接的接口控件。同時也可以像操作普通數(shù)據(jù)庫的表一樣來操作用戶歸檔中的歸檔和視圖。對于外部數(shù)據(jù)WinCC也提供了ODBC數(shù)據(jù)表和數(shù)據(jù)域控件來直接連接獲取數(shù)據(jù)。從而省去了部分編寫數(shù)據(jù)庫訪問腳本的工作。如下圖: 圖8.報表系統(tǒng)選件 圖9.ODBC動態(tài)對象 對于這些控件只需要簡單的配置就能得到相應的
12、數(shù)據(jù)結果。 圖10. 參數(shù)配置圖 其中ODBC數(shù)據(jù)源變量用于填寫數(shù)據(jù)源的名稱,SQL語句變量用于創(chuàng)建一個變量寫入查詢條件。列數(shù)處填寫返回數(shù)據(jù)記錄的變量數(shù)。 很多人理想中的報表:是既有EXCEL的易用性同時又能兼顧很好的數(shù)據(jù)庫接口。并在系統(tǒng)中保留EXCEL的數(shù)據(jù)統(tǒng)計分析功能和數(shù)據(jù)展示功能。 其實WinCC是可以實現(xiàn)這樣的報表的。WinCC有一個選件DatMonitor它的一項功能就是使用EXCEL連接WinCC的歸檔數(shù)據(jù),主要就是結合WinCC的存儲功能和EXCEL強大的數(shù)據(jù)處理功能來實現(xiàn)滿足報表需求。同時它可以把相應的
13、報表發(fā)布到網(wǎng)絡上,實現(xiàn)網(wǎng)絡的共享。用戶還可以使用這個工具實現(xiàn)自定義報表樣式。 該產(chǎn)品的定位,主要是對現(xiàn)場工藝和采集數(shù)據(jù)的分析、整理和發(fā)布。它包括"Process Screens"、"Webcenter"、"Trends and Alarms"、"Excel Workbooks"、等工具,可以根據(jù)不同的工具實現(xiàn)不同的功能。三復雜報表的WinCC報表系統(tǒng)實現(xiàn)分析 針對需求如何使用WinCC的報表系統(tǒng)實
14、現(xiàn)復雜的報表呢?之前已經(jīng)發(fā)了一個使用用戶歸檔結合ODBC數(shù)據(jù)表控件實現(xiàn)復雜報表的文檔。下面介紹使用Connectivity Pack結合普通歸檔如何實現(xiàn)復雜報表(以圖1為例)。論壇上有位網(wǎng)友已經(jīng)使用用戶歸檔實現(xiàn)了該種報表,那么我們看看如實使用普通歸檔實現(xiàn)。 要求:現(xiàn)場是四班三運轉,月底的時候?qū)Ω鱾€班的數(shù)據(jù)情況進行統(tǒng)計分析。 難點:各個班的上班時間不固定,每月的天數(shù)不固定。涉及到最大值、最小值和平均值的計算。 關鍵點:在于如何確立某班和某一時間段的對應關系。1.普通歸檔結合Connectivity Pack實現(xiàn)報表 首先數(shù)據(jù)存儲問題。W
15、inCC的歸檔中,對應一個過程變量其實可以生成多個歸檔變量(如圖12)。歸檔的啟動和停止可以由事件來控制(圖13)。那么可以通過不同的用戶登錄來確定啟動哪一個歸檔。從而確定班組和數(shù)據(jù)的對應關系。 圖12.歸檔定義 圖13.歸檔起始和停止動作的定義 創(chuàng)建全局動作如下(針對兩個班組的測試代碼,三個班的類似): int gscAction( void ) #pragma option(mbcs) if(!strcmp(GetTagChar("CurrentUser"),"yib
16、an") IA&DT Service & Support Page 13-34
17、160;
18、160; SetTagBit("AarcE",0); /Return-Type: BOOL SetTagBit("AarcB",1); /Return-Type: BOOL SetTagBit("BarcE",1); /Return-Type:
19、BOOL SetTagBit("BarcB",0); /Return-Type: BOOL else if(!strcmp(GetTagChar("CurrentUser"),"erban") SetTagBit("BarcE",0); /Return-Type: BOOL SetTagBit("BarcB",1
20、); /Return-Type: BOOL SetTagBit("AarcE",1); /Return-Type: BOOL SetTagBit("AarcB",0); /Return-Type: BOOL 該動作通過WinCC內(nèi)部變量CurrentUser的變化來觸發(fā)。 圖14.觸發(fā)條件這樣在項目中A班的用戶登錄就觸發(fā)ATagArc變量的歸檔,B班的用戶登錄
21、就觸發(fā)BTagArc。從而達到分班統(tǒng)計的目的。過程變量屬性在這里我們選擇實際值。 圖15.歸檔參數(shù)設置其次數(shù)據(jù)分析。在歸檔設計中,已經(jīng)確定了數(shù)據(jù)和班組的對應關系。那么下一步就是如何整理數(shù)據(jù)了。在這里我們需要借助于WinCC的一個選件Connectivity Pack來實現(xiàn),通過該軟件可以使用特定的語法格式訪問WinCC的歸檔數(shù)據(jù)。在畫面中添加一個按鈕創(chuàng)建如下腳本(只有安裝了Connectivity Pack選件才支持下面的歸檔訪問方式): Dim sPro, sDsn, sSer,sCon, sSql
22、;Dim V,Sum,Avg,Std,Min,Max Dim conn, oRs, oCom, oList, oItem Dim m,n,s,nRec Dim BeginTime Set BeginTime = HMIRuntime.Tags("BeginTime") Dim EndTime Set EndTime = HMIRuntime.Tags("En
23、dTime") Dim Printer0 Set Printer0 = HMIRuntime.Tags("Printer") &
24、#160; '建立連接 sPro = "Provider=WinCCOLEDBProvider.1;" sDsn="Catalog=CC_FXReport_09_02_08_1
25、3_58_39R;" sSer = "Data Source=.WinCC" sCon = sPro + sDsn + sSer BeginTime.Read EndTime.Read sSql="Tag:R,'MyPAATagArc','" + BeginTime.Value + "',&
26、#39;"+ EndTime.Value +"'" MsgBox "Opened with " & vbCr & sCon & vbCr & sSql & vbCr, vbOKCancel Set conn=CreateObject("ADODB.Connection")
27、0; conn.ConnectionString = sCon conn.CursorLocation = 3 conn.Open Set oRs=CreateObject("ADODB.Recordset") Set oCom=CreateObject("ADODB.Command") oCo
28、m.CommandType = 1 Set oCom.ActiveConnection = conn oCom.CommandText = sSql Set oRs = oCom.Execute n=oRs.RecordCount'返回的數(shù)據(jù)集數(shù) MsgBox n If (n&g
29、t;0)Then oRs.MoveFirst n = 0 Sum = 0 Avg = 0 Min = oRs.Fields(2).Value Max
30、= oRs.Fields(2).Value Do While Not oRs.EOF n = n + 1 IA&DT Service & Support
31、160; Page 17-34
32、; V = oRs.Fields(2).Value
33、160; Sum = Sum + V If V>Max Then Max = V If V<Min Then Min = v oRs.MoveNext
34、60; Loop oRs.Close If(n>1) Then Avg = Sum / n HMIRuntime.Tags("incount").Write n HMIRuntime.Tags("AavgTag").Write Fo
35、rmatNumber(Avg,2) HMIRuntime.Tags("AmaxTag").Write FormatNumber(Max,2) HMIRuntime.Tags("AMinTag").Write FormatNumber(Min,2) Else HMIRuntime.Trace "sel
36、ection return no fields"&vbNewLine End If conn.Close Set oCom= Nothing Set oRs=Nothing Set conn=Nothing '打印調(diào)用(創(chuàng)建了一個全局動作通過Printer的變化調(diào)用打印作業(yè)) Printer0.Read If Printer0.Value =&
37、#160;0 Then Printer0.Write 1 Else Printer0.Write 0 End If 上面的方法就能得出A班的最大值、最小值和平均值,并把這些值存放在預先定義的內(nèi)部變量里。同樣的方法可以求出別班的數(shù)據(jù)信息。 最后就是布局設計。這個布局的設計原理很簡單,就是把“變量”添加到布局中。排列對齊就可以了。如下圖 圖16.報表布局 最后組態(tài)輸出界面。在畫面中組態(tài)如下界面,調(diào)用腳本和打印任務就可以了。 圖17
38、.操作界面該程序可以實現(xiàn)對任意時間范圍呢的數(shù)據(jù)進行統(tǒng)計打印。輸出結果如下圖: 圖18.打印輸出2.用戶歸檔實現(xiàn)分總式報表 報表圖2涉及到數(shù)據(jù)的統(tǒng)計。單純的存儲不難,關鍵如何統(tǒng)計。從報表上分析,一天只會產(chǎn)生一條記錄。完全可以選擇使用用戶歸檔實現(xiàn)。 首先在用戶歸檔中創(chuàng)建一個歸檔,分別連接相應的需要記錄的變量。并創(chuàng)建一個字符串類型的域用于存儲日期。 圖19.用戶歸檔針對用戶歸檔創(chuàng)建如下控制變量 圖20.控制變量關于控制變量的說明參考: WinCC Information system->選項-用戶歸檔-組態(tài)-組態(tài)用戶歸檔-控制變量的屬性。當ID
39、=-1 指令=6時,就可以把過程值存放到歸檔數(shù)據(jù)庫中。 IA&DT Service & Support Page
40、160;19-34
41、60; 關于日期可以通過如下腳本得到: riqi=CStr(Year(Now)&"-"&CStr(Month(Now)&"-"&CStr(Day(Now) 可以新建一個系統(tǒng)變量選擇日期函數(shù),通過每天的變化觸發(fā)用戶歸檔控制變量的指令和ID的變化,從而達到定時觸發(fā)的目的。如圖: 圖21.系統(tǒng)變量定義 這樣我們就得到了每天的
42、數(shù)據(jù)記錄。下一步組態(tài)頁面。在頁面布局中添加一個用戶歸檔表格控件、一個靜態(tài)文本和一個ODBC數(shù)據(jù)庫表。為了實現(xiàn)分頁功能需要對靜態(tài)文本的屬性作如下設置: 圖22.頁面布局 圖23.靜態(tài)文本屬性設置下面我們分別設置用戶歸檔和ODBC數(shù)據(jù)庫表控件的參數(shù)。 圖23.歸檔控件設置 圖23.ODBC控件設置畫面中查尋按鈕的代碼: Dim riqivar Set riqivar = HMIRuntime.Tags("riqivar") Dim xinjiangFilter Set xinji
43、angFilter = HMIRuntime.Tags("xinjiangFilter") Dim xinjiangorder Set xinjiangorder = HMIRuntime.Tags("xinjiangorder") Dim mytestsql Set mytestsql = HMIRuntime.Tags("mytestsql") riqivar.Read &
44、#160;xinjiangFilter.Read xinjiangFilter.Write " MyDate like '"&riqivar.Value&"%'" xinjiangorder.Read xinjiangorder.Write "MyDate ASC" mytestsql.Read mytestsql.Write "selec
45、t sum(picishu)as '批次數(shù)',sum(zongzl) as '總重量',sum(zhuliao) as '主料',sum(fuliao1) as '1#輔料',sum (fuliao2) as '2#輔料',sum(fuliao3) as '3#輔料',sum(fuliao4) as '4#輔料',sum(fuliao5
46、) as '5#輔料',sum(fuliao6) as '6#輔料' from UA#peixianchengzhong where MyDate like '"&riqivar.Value&"%'"至此在畫面中輸入查詢?nèi)掌诘臈l件執(zhí)行上面的代碼就能返回相應的數(shù)據(jù)集。最后調(diào)用打印任務就可以了。 打印中常見問題的說明希望對大家有所幫助。 整點觸發(fā)問題: 可以通過在變
47、量管理Æ SYSTEM INFO下創(chuàng)建變量用于取得系統(tǒng)小時值。這個值是隨著系統(tǒng)時鐘而變化的。一旦改變就可以用來觸發(fā)歸檔或者打印任務。 也可以通過腳本實現(xiàn),參照網(wǎng)上的例子:如何整點啟動歸檔:對齊問題:WinCC提供很好的數(shù)據(jù)接口,那么在報表格式上來講如何控制一直是個難題。下面是一些細節(jié)介紹希望對大家能有所幫助。 通過菜單欄中的放大功能可以很好的查看控件的對齊效果。 圖24. 放大功能通過菜單欄 工具設置,可以把頁面精確設置到毫米,同時可以設定控件是否和網(wǎng)格對齊。從而方便我們的排版設計。 圖25. 網(wǎng)格設置四.WinC
48、C報表功能總結 通過上面的分析我們不難看出,WinCC的報表系統(tǒng)提供了很好的數(shù)據(jù)接口,我們可以很方便的就取出WinCC的歸檔數(shù)據(jù)和外部數(shù)據(jù)庫的數(shù)據(jù)。無需很多的編程知識。同時在過程歸檔可以很容易的就得到變量的最大值、最小值、平均值等信息。 過程值歸檔中無法建立關系和對字符串進行歸檔。這些功能使用用戶歸檔可以實現(xiàn)。其實很多人不使用WinCC自帶的報表功能,很大程度上是因為布局不好掌控。確切來講在格式的控制上WinCC是有些不適合中國國情。 延伸話題:其實數(shù)據(jù)的報表打印就是對數(shù)據(jù)的存儲記錄工作,有時候我們需要的并不是打印出一張紙,而是需要對數(shù)據(jù)的分析和整理。從這個角度出
49、發(fā),WinCC如果能提供一個強大的前臺數(shù)據(jù)統(tǒng)計分析控件就更完美了。當然對于數(shù)據(jù)的分析統(tǒng)計,在現(xiàn)場應用中很大程度上是由MIS系統(tǒng)和ERP系統(tǒng)來實現(xiàn)的。WinCC在這個環(huán)節(jié)是作為一個數(shù)據(jù)源的身份出現(xiàn)的。但是它的DatMonitor工具提供了很好的數(shù)據(jù)接口,用于分析和輸出數(shù)據(jù)。也不失為一個很好的數(shù)據(jù)分析統(tǒng)計選件。 五.使用腳本和EXCEL實現(xiàn)報表 論壇中很多人使用VBS和EXCEL實現(xiàn)報表功能。下面做了一個示例僅供參考: 1在WINCC中使用VBS腳本通過EXCEL實現(xiàn)報表 使用VBS腳本和EXCEL工具,同樣可以生成需要的報表。一般的思路是:預先使用exce
50、l設計好報表的樣式,然后在WinCC中使用VBS腳本把相應的數(shù)據(jù)寫入事先定義好的表格中。下面給出實現(xiàn)的方法。 右鍵點擊按鈕打開屬性對話框,在事件頁右鍵單擊鼠標動作選擇VBS動作。如下圖 圖26. 動作定義 IA&DT Service & Support
51、0; Page 26-34 &
52、#160; Set ExcelApp= Nothing Exit Fo
53、r End If Next End If '創(chuàng)建對象 Set objExcelApp =CreateObject("Excel.Application") 'open file objExcelApp.Visible=True objExcelApp.Workbooks.Open"
54、;D:excelreportwinccvbsexcel.xls" objExcelApp.Worksheets(sheetname).Activate '清除模版數(shù)據(jù) With objExcelApp.Worksheets(sheetname) For i=5 To 25 For j=1 To 7 .cel
55、ls(i,j)=Null Next Next For i=26 To 26 For j=1 To 6 .cells(i,j)=Null Next Next End With '實時
56、數(shù)據(jù)寫入 tagshijian=Now objExcelApp.Worksheets(sheetname).cells(2,2).value= tagshijian username.Read objExcelApp.Worksheets(sheetname).cells(2,7).value= username.Value zhushi.Read objExc
57、elApp.Worksheets(sheetname).cells(27,7).value= zhushi.Value IA&DT Service & Support
58、0; Page 27-34 &
59、#160; objExcelApp.Worksheets(sheetname).cells(27,7).Font.Bold = TRUE objExcelApp.Worksheets(sheetname).cells(27,7).Interior.ColorI
60、ndex = 25 objExcelApp.Worksheets(sheetname).cells(27,7).Font.ColorIndex = 7 objExcelApp.Worksheets(sheetname).cells(27,7).Font.size=18 tagstring="qushi" For i=1 To 6
61、0; For j=30 To 35 qushix=tagstring&CStr(i) Set qushivalue=HMIRuntime.Tags(qushix) qushivalue.Read objExcelApp.Worksheets(sheetname).cells(j,2).value= qushivalue.Value
62、160; Next Next For i=5 To 25 With objExcelApp.Worksheets(sheetname) .cells(i,1).value= tagshijian tagwendu.Read .cells(i,2).value= ta
63、gwendu.Value tagyali.Read .cells(i,3).value= tagyali.Value tagliuliang.Read .cells(i,4).value= tagliuliang.Value tagzhongliang.Read .cells(i,5).value=
64、160;tagzhongliang.Value tagyuanliao.Read .cells(i,6).value= tagyuanliao.Value tagchengfen.Read .cells(i,7).value= tagchengfen.Value End With Next
65、160; MsgBox msg '關閉保存 Dim patch,filename filename=CStr(Year(Now)&CStr(Month(Now)&CStr(Day(Now)&CStr(Hour(Now)+CStr(Minute(Now)&CStr(Second(Now) patch= "d:"&filename&"demo.xls" objExcelApp.ActiveW
66、orkbook.SaveAs patch objExcelApp.Workbooks.Close objExcelApp.Quit Set objExcelApp= Nothing 輸出結果如下圖: 圖27. 輸出結果2如何使用EXCEL訪問WinCC中的數(shù)據(jù)實現(xiàn)報表 如果項目已經(jīng)做好了,不想改動現(xiàn)有項目。那么可以使用EXCEL通過OPC方式訪問WinCC項目的數(shù)據(jù)。預先定義好EXCEL表格樣式,通過以下方式實現(xiàn)。 首先引用WinCC提供的OPC客戶端Control控件: Siemen
67、s OPC DAAutomation 2.0( SOPCDAAuto.dll) 圖28.對象引用通過以下步驟打開EXCEL中的VB編輯器 圖29.打開編輯器 創(chuàng)建起始畫面 圖30.創(chuàng)建畫面編程實現(xiàn) 變量聲明 Option Explicit Option Base 1 Const ServerName = "OPCServer.WinCC" Dim WithEvents MyOPCServer
68、60;As OPCServer Dim WithEvents MyOPCGroup As OPCGroup Dim MyOPCGroupColl As OPCGroups Dim MyOPCItemColl As OPCItems Dim MyOPCItems As OPCItems Dim MyOPCItem As OPCItem Dim ClientHa
69、ndles(10) As Long Dim ServerHandles() As Long Dim Values(1) As Variant Dim Errors() As Long Dim ItemIDs(10) As String Dim GroupName As String Dim NodeName As String
70、IA&DT Service & Support Page 30-34
71、;
72、; IA&DT Service & Support &
73、#160; Page 31-34
74、0; Dim fxItemValue(10) As Variant 在按鈕“啟動OPC客戶端”中添加以下代碼 '- ' 目的: 連接到 OPC_server,創(chuàng)建組并添加條目 '- ' 發(fā)生錯誤則轉到 Error
75、Handler '- 可以自由選擇 ClientHandle 和 GroupName Dim i As Integer On Error GoTo HANDLEeRROR For i = 1 To 7 Clien
76、tHandles(i) = i ' 先配置名柄索引 這將在讀取OPC標簽值時可要用到 Next i ' ClientHandles(1) = 1 GroupName = "MyGroup&quo
77、t; '- 從窗口對話框中取得 ItemID NodeName = txtNoteName.Value ItemIDs(1) = Range("j5").Value從EXCEL表格j5中讀取變量名稱 ItemIDs(2) = Range("j6").Value ItemIDs(3) =
78、60;Range("j7").Value ItemIDs(4) = Range("j8").Value ItemIDs(5) = Range("j9").Value ItemIDs(6) = Range("j10").Value '- 取得 OPC-Server 實例
79、60; Set MyOPCServer = New OPCServer MyOPCServer.Connect ServerName, NodeName Set MyOPCGroupColl = MyOPCServer.OPCGroups '- 設置用于添加組的默認活動狀態(tài) MyOPCGroupColl.DefaultGroupIsActive
80、 = True '- 將我們的組添加到集合中 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) IA&DT Service & Support Page 32-34
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電商公司電商運營售后服務合同模板2篇
- 二零二五版環(huán)保節(jié)能設備研發(fā)與銷售合同3篇
- 二零二五版網(wǎng)絡安全保密及應急響應服務合同3篇
- 二零二五年度水利工程安全施工協(xié)議書2篇
- 2025年度高校教師國內(nèi)進修項目合作協(xié)議3篇
- 2025年人事代理協(xié)議書寫實例
- 2025年國際空陸聯(lián)運合作協(xié)議
- 2025年住宅裝修合同解除
- 二零二五年度綠色建材采購合同標準3篇
- 2025年咨詢公司合作項目比例分成協(xié)議
- 深圳2024-2025學年度四年級第一學期期末數(shù)學試題
- 中考語文復習說話要得體
- 《工商業(yè)儲能柜技術規(guī)范》
- 華中師范大學教育技術學碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學倫理委員會章程
- 風浪流耦合作用下錨泊式海上試驗平臺的水動力特性試驗
- 高考英語語法專練定語從句含答案
- 有機農(nóng)業(yè)種植技術操作手冊
- 公園廣場綠地文化設施維修改造工程施工部署及進度計劃
- 塑料件缺陷匯總
- 2020年的中國海外工程示范營地申報材料及評分標準
評論
0/150
提交評論