孫云輝,謝輝輝,王 挺
(北京機(jī)械工業(yè)自動化研究所,北京 100120)
FactoryTalk View SE組態(tài)環(huán)境下報表系統(tǒng)的開發(fā)
孫云輝,謝輝輝,王 挺
(北京機(jī)械工業(yè)自動化研究所,北京 100120)
報表作為一種信息組織和分析的有力手段,是工廠生產(chǎn)和管理的重要組成部分。隨著計算機(jī)技術(shù)和自動化監(jiān)控技術(shù)的發(fā)展,各主流監(jiān)控組態(tài)軟件都為報表系統(tǒng)的開發(fā)提供了解決方案,報表的生成已經(jīng)從原始的現(xiàn)場手抄整理發(fā)展為遠(yuǎn)程監(jiān)控,自動記錄。一個報表系統(tǒng)通常包括數(shù)據(jù)源和數(shù)據(jù)管理系統(tǒng)兩部分。數(shù)據(jù)源以一定的周期采集并存儲現(xiàn)場數(shù)據(jù),數(shù)據(jù)管理系統(tǒng)負(fù)責(zé)根據(jù)不同的需要從數(shù)據(jù)源中選擇數(shù)據(jù)并生成報表。
FactoryTalk View Site Edition(即FactoryTalk View SE,以下簡稱FTSE)作為RS View SE的升級版本是Rockwell公司 FactoryTalk系列軟件產(chǎn)品中的一個成員。它是用于開發(fā)和運(yùn)行多用戶、分布式服務(wù)器人機(jī)界面應(yīng)用項(xiàng)目的集成軟件包,是專為自動化過程或機(jī)器監(jiān)視以及管理控制而設(shè)計的。其內(nèi)嵌Visual Basic For Application(VBA),為自定義及擴(kuò)展軟件功能提供了完整開發(fā)環(huán)境[1]。在FTSE監(jiān)控軟件環(huán)境下取得數(shù)據(jù)源有兩種方法:一是訪問歷史數(shù)據(jù)庫,二是訪問實(shí)時數(shù)據(jù)庫,兩種數(shù)據(jù)庫的訪問方法不同。歷史數(shù)據(jù)庫可以直接作為報表系統(tǒng)的數(shù)據(jù)源,但由于歷史數(shù)據(jù)庫與組態(tài)軟件本身關(guān)系緊密,格式固定,因而訪問方法復(fù)雜,并且歷史數(shù)據(jù)庫比較龐大,不適合一次處理過多數(shù)據(jù)。相比之下使用VBA訪問實(shí)時數(shù)據(jù)庫方法簡單、靈活,所以本文采用該方法提取現(xiàn)場儀表數(shù)據(jù)并存入單獨(dú)建立的第三方數(shù)據(jù)庫作為數(shù)據(jù)源。數(shù)據(jù)管理系統(tǒng)使用VisualBasic(VB)軟件獨(dú)立開發(fā),可以脫離監(jiān)控軟件運(yùn)行。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 報表系統(tǒng)結(jié)構(gòu)示意圖
在VBA中要使用FTSE中的標(biāo)簽,首先必須建立標(biāo)簽組對象TagGroup,然后利用標(biāo)簽組對象的Add方法將具體標(biāo)簽加入標(biāo)簽組對象,再利用標(biāo)簽組對象的Item屬性將所加標(biāo)簽值賦予VBA中的標(biāo)簽[2]。如把FTSE中名為Tem1的標(biāo)簽值賦予VBA中的標(biāo)簽T1的代碼如下:
ADO即ActiveX數(shù)據(jù)對象,是由微軟公司推出的以ActiveX技術(shù)為基礎(chǔ)的一組基于OLB DB數(shù)據(jù)的高級自動化應(yīng)用層接口,是一種新型的數(shù)據(jù)訪問方法[3]。在VBA中獲取的標(biāo)簽值通過ADO通信的方式存儲在SQL Server數(shù)據(jù)庫中構(gòu)成數(shù)據(jù)源,可以供數(shù)據(jù)管理系統(tǒng)隨時查詢使用。將VBA標(biāo)簽T1的值存儲到SQLServer數(shù)據(jù)庫的表DSheet1中的代碼如下:
報表系統(tǒng)的數(shù)據(jù)記錄通常在整點(diǎn)時刻觸發(fā),因?yàn)閂BA沒有類似Timer之類的控件,所以使用變量讀取系統(tǒng)時間,并利用該變量的Change事件作為觸發(fā)條件是一種簡單有效的方法,程序如下:
數(shù)據(jù)處理系統(tǒng)使用VB軟件開發(fā),并生成EXE文件既可以在FTSE軟件中調(diào)用又可以單獨(dú)運(yùn)行。不僅減輕了FTSE軟件的運(yùn)行負(fù)擔(dān),還使報表系統(tǒng)更加靈活,易于備份。
使用VB軟件從SQLServer數(shù)據(jù)庫中讀取數(shù)據(jù)同樣可以使用ADO通信,其方法與1.2所述類似,在此不再贅述。要把讀取的數(shù)值顯示在VB窗體中可以使用TextBox文本控件,也可以引用Excel對象,而后者更加靈活方便。引用Excel對象在窗體中顯示變量T1數(shù)值的代碼如下:
Spreadsheet1.Sheets("sheet1").Cells(I,J) =Format(T1, "0.00") '把T1的數(shù)值顯示在Excel對象sheet1工作表第I行,第J列的單元格內(nèi)。
在VB窗體中顯示的報表需要可以保存和打印才能使用。由于Excel不僅具有強(qiáng)大的表格處理功能,并且支持OLE自動化,所以可用VB編寫程序直接操控Excel對象的屬性、方法和事件來實(shí)現(xiàn)一系列操作。使用之前需要建立一個Excel報表模板,保存和打印的格式均一模板為基礎(chǔ)。如已經(jīng)建立了模板Report.xls并且位于目錄程序文件夾的“模板”文件夾下則保存和打印的程序如下:
本報表系統(tǒng)數(shù)據(jù)源與數(shù)據(jù)管理系統(tǒng)相對獨(dú)立,使用靈活,相同格式的報表系統(tǒng)只需簡單修改VBA代碼就可以移植到不同的組態(tài)軟件環(huán)境中。該報表系統(tǒng)已經(jīng)在某大型污水處理廠得到應(yīng)用,數(shù)據(jù)準(zhǔn)確,運(yùn)行穩(wěn)定,極大的減輕了現(xiàn)場運(yùn)行人員的工作負(fù)擔(dān),同時也為管理人員提供了詳盡的數(shù)據(jù)資料便于設(shè)備的維護(hù)和工藝的控制。
[1]張成禮, 賈淑果. 利用EXCEL在組態(tài)軟件RS View SE中實(shí)現(xiàn)復(fù)雜報表功能[J]. 制造業(yè)自動化, 2009, 4.
[2]羅忠明, 等. RSView SE與第三方數(shù)據(jù)的交換技術(shù)與實(shí)現(xiàn)方法[J]. 太原科技大學(xué)學(xué)報, 2008, 10.
[3]徐建平, 等. 基于FactoryTalk實(shí)時數(shù)據(jù)和VBA的配方管理[J]. 測控技術(shù), 2006, 9.
Exploitation of report system under FactoryTalk View SE
SUN Yun-hui, XIE Hui-hui, WANG Ting
本文介紹了在FactoryTalk View SE組態(tài)環(huán)境下綜合利用其內(nèi)嵌的VBA、SQL Server、VisualBasic和Excel等軟件采集數(shù)據(jù)并生成報表的方法。該方法經(jīng)實(shí)際工程驗(yàn)證,靈活可靠,具有廣泛的實(shí)用價值。
FactoryTalk View SE;報表;VBA;ADO;SQL Server;VisualBasic;Excel
孫云輝(1984-),男,山東青島人,在讀研究生,主要從事工業(yè)自動化系統(tǒng)集成方面的應(yīng)用與研究。
TP311
B
1009-0134(2011)4(下)-0033-03
10.3969/j.issn.1009-0134.2011.4(下).10
2011-03-01