康 英,辛亞軍,劉志遠,王圣齊
(1.西安利雅得電氣股份有限公司,陜西西安710075;2.青海橋頭鋁電股份有限公司,青海大通810100;3.新疆獨山子石化公司熱電廠,新疆克拉瑪依833600)
FactoryTalk View SE是組態(tài)軟件,是與公司自動化產(chǎn)品結(jié)合最佳的可視化軟件產(chǎn)品,提供了強大的數(shù)據(jù)監(jiān)控能力,方便用戶進行上位機的畫面組態(tài)。FactoryTalk View SE內(nèi)嵌VBA,它為自定義及擴展FactoryTalk View SE功能提供了完整的開發(fā)環(huán)境。
FactoryTalk View SE和其他組態(tài)軟件一樣,自身的報表生成、處理能力比較弱。為了實現(xiàn)數(shù)據(jù)報表功能,本文使用FactoryTalk View SE內(nèi)嵌的VBA,與Excel及Access相結(jié)合,利用Excel強大制表功能,實現(xiàn)FactoryTalk View SE數(shù)據(jù)報表功能。
通過日志模型設(shè)置,F(xiàn)actoryTalk View SE從PLC采集實時數(shù)據(jù),通過ODBC接口存儲到Access數(shù)據(jù)庫中,利用FactoryTalk View SE內(nèi)嵌的VBA開發(fā),訪問Access數(shù)據(jù)庫讀取歷史數(shù)據(jù)并根據(jù)需求進行各種計算,再調(diào)用Excel,根據(jù)需要生成的報表格式要求進行處理后,形成報表。系統(tǒng)解決方案框圖如圖1所示。
圖1 報表解決方案框圖
Excel對象封裝了Microsoft Excel的全部元素,利用Excel對象提供的屬性、方法和事件,就可以在應(yīng)用程序中生成Excel報表[1]。
Excel對象模型描述了Excel對象之間的結(jié)構(gòu)關(guān)系,如圖2所示。
圖2 Excel對象之間的結(jié)構(gòu)關(guān)系
(1)Application對象
Application對象表示Excel應(yīng)用程序,在Excel讀象模型中該對象處于模型的頂端,通過使用Application對象可以訪問模型中其他對象,從而控制Excel應(yīng)用程序的外觀和功能。
(2)Workbook對象
Workbook對象表示Excel中的工作簿,即對應(yīng)一個Excel文件,通過使用Workbook對象就可以實現(xiàn)對Excel工作簿的各種控制。
(3)Worksheet對象
Worksheet對象表示Excel中的工作表,通過使用Worksheet對象就可以實現(xiàn)對Excel工作表中的各種控制。
先把從FactoryTalk View SE采集的實時數(shù)據(jù)存儲在Access數(shù)據(jù)中,然后從數(shù)據(jù)庫中讀取數(shù)據(jù),在Excel中進行處理并生成報表顯示出來。下面將具體介紹如何實現(xiàn)該功能。
(1)將Excel、Access對象庫加載到當前 VBA程序中
為了能夠在FactoryTalk View SE中調(diào)用Access數(shù)據(jù)庫以及Excel對象,為Access與Excel連接、互相嵌入使用做準備,必須在VBA程序中加載Excel、Access對象庫。在VBA編程環(huán)境下,單擊“Tools”菜單中的“Reference”命令,在彈出的對話框匯中選中Microsoft Access 11.0 Object Library和Microsoft Excel 11.0 Object Library 兩項,點擊“確定”后退出,這樣就完成了Excel、Access對象庫在VBA程序中的加載。
(2)創(chuàng)建 Excel模板
首先做好Excel報表模板,用以存儲從Access數(shù)據(jù)庫中讀取并經(jīng)過處理的數(shù)據(jù)。使用Excel對象的屬性和方法完成報表的設(shè)計,從而形成所需要的報表。
(3)創(chuàng)建ADO對象存數(shù)據(jù)到數(shù)據(jù)庫
使用ActiveX Data Object(ADO)鏈接到Access數(shù)據(jù)庫的方法。首先必須設(shè)置對微軟ActiveX數(shù)據(jù)對象2.7庫或者更高版本的引用,與加載Excel、Access對象庫一樣,將Microsoft ActiveX Data Objects 2.7 Library或更高版本加載到VBA程序中來,編寫下列程序創(chuàng)建ADO的Connection對象建立與數(shù)據(jù)庫的鏈接和數(shù)據(jù)查詢功能。
①裝載標簽
②連接數(shù)據(jù)庫
(4)讀取Access數(shù)據(jù)并顯示到Excel中
下面VBA程序?qū)崿F(xiàn)了從Access獲取歷史數(shù)據(jù)的功能。根據(jù)報表格式的要求將數(shù)據(jù)在Excel中進行處理后,形成報表。
這樣實現(xiàn)了從Access數(shù)據(jù)庫讀取數(shù)據(jù)到Excel中的功能。
與大部分組態(tài)軟件相似,F(xiàn)actoryTalk View SE在數(shù)據(jù)監(jiān)控、畫面組態(tài)功能較強,但在報表生成、處理能力較弱。此方法可生成各種復(fù)雜的生產(chǎn)數(shù)據(jù)報表,開發(fā)周期短,可操作性強,完全滿足工業(yè)的生產(chǎn)要求。在此基礎(chǔ)上,完全可實現(xiàn)班報、周報、月報、年報等的查詢與打印。
[1]俞旭明等.VISUAL BASIC6.0網(wǎng)絡(luò)開發(fā)技術(shù)[M].北京.人民郵電出版社.1999.
{2]RSView Supervisory Edition User’S Guide.美國 AB 公司.