康 英,辛亞軍,劉志遠,王圣齊
(1.西安利雅得電氣股份有限公司,陜西西安710075;2.青海橋頭鋁電股份有限公司,青海大通810100;3.新疆獨山子石化公司熱電廠,新疆克拉瑪依833600)
FactoryTalk View SE是組態軟件,是與公司自動化產品結合最佳的可視化軟件產品,提供了強大的數據監控能力,方便用戶進行上位機的畫面組態。FactoryTalk View SE內嵌VBA,它為自定義及擴展FactoryTalk View SE功能提供了完整的開發環境。
FactoryTalk View SE和其他組態軟件一樣,自身的報表生成、處理能力比較弱。為了實現數據報表功能,本文使用FactoryTalk View SE內嵌的VBA,與Excel及Access相結合,利用Excel強大制表功能,實現FactoryTalk View SE數據報表功能。
通過日志模型設置,FactoryTalk View SE從PLC采集實時數據,通過ODBC接口存儲到Access數據庫中,利用FactoryTalk View SE內嵌的VBA開發,訪問Access數據庫讀取歷史數據并根據需求進行各種計算,再調用Excel,根據需要生成的報表格式要求進行處理后,形成報表。系統解決方案框圖如圖1所示。

圖1 報表解決方案框圖
Excel對象封裝了Microsoft Excel的全部元素,利用Excel對象提供的屬性、方法和事件,就可以在應用程序中生成Excel報表[1]。
Excel對象模型描述了Excel對象之間的結構關系,如圖2所示。

圖2 Excel對象之間的結構關系
(1)Application對象
Application對象表示Excel應用程序,在Excel讀象模型中該對象處于模型的頂端,通過使用Application對象可以訪問模型中其他對象,從而控制Excel應用程序的外觀和功能。
(2)Workbook對象
Workbook對象表示Excel中的工作簿,即對應一個Excel文件,通過使用Workbook對象就可以實現對Excel工作簿的各種控制。
(3)Worksheet對象
Worksheet對象表示Excel中的工作表,通過使用Worksheet對象就可以實現對Excel工作表中的各種控制。
先把從FactoryTalk View SE采集的實時數據存儲在Access數據中,然后從數據庫中讀取數據,在Excel中進行處理并生成報表顯示出來。下面將具體介紹如何實現該功能。
(1)將Excel、Access對象庫加載到當前 VBA程序中
為了能夠在FactoryTalk View SE中調用Access數據庫以及Excel對象,為Access與Excel連接、互相嵌入使用做準備,必須在VBA程序中加載Excel、Access對象庫。在VBA編程環境下,單擊“Tools”菜單中的“Reference”命令,在彈出的對話框匯中選中Microsoft Access 11.0 Object Library和Microsoft Excel 11.0 Object Library 兩項,點擊“確定”后退出,這樣就完成了Excel、Access對象庫在VBA程序中的加載。
(2)創建 Excel模板
首先做好Excel報表模板,用以存儲從Access數據庫中讀取并經過處理的數據。使用Excel對象的屬性和方法完成報表的設計,從而形成所需要的報表。
(3)創建ADO對象存數據到數據庫
使用ActiveX Data Object(ADO)鏈接到Access數據庫的方法。首先必須設置對微軟ActiveX數據對象2.7庫或者更高版本的引用,與加載Excel、Access對象庫一樣,將Microsoft ActiveX Data Objects 2.7 Library或更高版本加載到VBA程序中來,編寫下列程序創建ADO的Connection對象建立與數據庫的鏈接和數據查詢功能。
①裝載標簽

②連接數據庫

(4)讀取Access數據并顯示到Excel中
下面VBA程序實現了從Access獲取歷史數據的功能。根據報表格式的要求將數據在Excel中進行處理后,形成報表。


這樣實現了從Access數據庫讀取數據到Excel中的功能。
與大部分組態軟件相似,FactoryTalk View SE在數據監控、畫面組態功能較強,但在報表生成、處理能力較弱。此方法可生成各種復雜的生產數據報表,開發周期短,可操作性強,完全滿足工業的生產要求。在此基礎上,完全可實現班報、周報、月報、年報等的查詢與打印。
[1]俞旭明等.VISUAL BASIC6.0網絡開發技術[M].北京.人民郵電出版社.1999.
{2]RSView Supervisory Edition User’S Guide.美國 AB 公司.