徐慶增,楊碩珩
(天津科技大學(xué),天津 300222)
利用VB語(yǔ)言實(shí)現(xiàn)組態(tài)軟件組件的開(kāi)發(fā)*
徐慶增,楊碩珩
(天津科技大學(xué),天津 300222)
組態(tài)軟件是用于流程控制的上位機(jī)軟件,在工業(yè)控制領(lǐng)域有著廣泛應(yīng)用。但是在實(shí)際開(kāi)發(fā)過(guò)程中,軟件開(kāi)發(fā)者與實(shí)際工業(yè)控制人員在軟件需求方面的溝通常常存在誤解,本文說(shuō)明了一種組態(tài)軟件中組件開(kāi)發(fā)的關(guān)鍵原理與應(yīng)用方向,創(chuàng)新的使用了敏捷開(kāi)發(fā)思想解決開(kāi)發(fā)問(wèn)題,以一套組態(tài)軟件中的某一組件開(kāi)發(fā)實(shí)例說(shuō)明了開(kāi)發(fā)流程,一定程度上解決了軟件開(kāi)發(fā)者與工業(yè)控制人員在需求對(duì)接方面的困難,為相關(guān)工作者提供了借鑒。
組態(tài)軟件;ActiveX控件;VB語(yǔ)言軟件開(kāi)發(fā)
組態(tài)軟件廣泛應(yīng)用于工業(yè)控制領(lǐng)域,它們是處在自動(dòng)控制系統(tǒng)監(jiān)控層一級(jí)的軟件平臺(tái)和開(kāi)發(fā)環(huán)境,是實(shí)現(xiàn)工業(yè)自動(dòng)化過(guò)程中不可缺少的一部分[1]。組態(tài)軟件的特點(diǎn)是使用者可以將組態(tài)軟件的基本組件搭建成不同形式的軟件,從而快速搭建出符合用戶需求的軟件。不同的計(jì)算機(jī)語(yǔ)言幾乎都為我們提供了一些基本組件,例如:按鈕、文本框等。基本組件幫助我們避免了重復(fù)圖形用戶界面開(kāi)發(fā)時(shí)的底層工作。組件亦可以根據(jù)開(kāi)發(fā)需要自行定義,組態(tài)軟件實(shí)際上就是由不同的自定義組件“搭建”而成的,該技術(shù)可以提高代碼的重用性[2]。本文利用VB語(yǔ)言編寫(xiě)的ActiveX控件實(shí)現(xiàn)組態(tài)軟件組件的開(kāi)發(fā)。
ActiveX是Microsoft公司對(duì)于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其主要的技術(shù)是基于組件對(duì)象模型(Component Object Model)。ActiveX在Windows操作系統(tǒng)中以O(shè)CX結(jié)尾的文件,OCX也稱為OLE,即對(duì)象鏈接與嵌入控件[3]。這項(xiàng)技術(shù)由Microsoft提出,其中一項(xiàng)重要應(yīng)用就是用于開(kāi)發(fā)組件(注一)。ActiveX具有平臺(tái)無(wú)關(guān)性,該技術(shù)可以使不同語(yǔ)言開(kāi)發(fā)的小型程序組合使用,包括C++和Visual Basic或PowerBuilder,甚至一些技術(shù)性語(yǔ)言如VBScript。Visual Basic語(yǔ)言是由Microsoft公司開(kāi)發(fā)的一款適合非計(jì)算機(jī)專業(yè)人員使用的計(jì)算機(jī)語(yǔ)言,具有使用簡(jiǎn)單且使用易上手的特點(diǎn),Microsoft公司為之提供了方便的圖形界面開(kāi)發(fā)工具。本文選擇使用VB語(yǔ)言開(kāi)發(fā)ActiveX控件并將之應(yīng)用于組態(tài)軟件開(kāi)發(fā),不僅體現(xiàn)了軟件開(kāi)發(fā)中面向?qū)ο笤O(shè)計(jì)原理的封裝性,使開(kāi)發(fā)者可以直接使用現(xiàn)有圖形界面開(kāi)發(fā)工具,避免重復(fù)基礎(chǔ)工作,還兼具了VB語(yǔ)言的使用特點(diǎn),方便工業(yè)控制相關(guān)從業(yè)人員理解組態(tài)軟件原理,根據(jù)不同工業(yè)體系的需要自行組裝修改,極大地減少了軟件二次開(kāi)發(fā)的復(fù)雜程度,為組態(tài)軟件開(kāi)發(fā)的底層框架提供了新的高度。
組態(tài)軟件組件可以被視為一種小型程序,因此其開(kāi)發(fā)流程需要遵照軟件工程標(biāo)準(zhǔn)進(jìn)行,本文利用敏捷開(kāi)發(fā)思想,優(yōu)化了組態(tài)軟件開(kāi)發(fā)步驟并根據(jù)實(shí)際組件的大小調(diào)整開(kāi)發(fā)步驟[4]。
2.1 需求分析
自定義ActiveX控件是面向特殊用戶設(shè)計(jì)的組件,因此在開(kāi)發(fā)之前需要詳細(xì)調(diào)查這類用戶的軟件使用需要,確定開(kāi)發(fā)不同類別的控件。根據(jù)敏捷開(kāi)發(fā)中“主張簡(jiǎn)單”的思想,本文未進(jìn)行過(guò)度構(gòu)建軟件模型的活動(dòng),因此控件的核心功能需要確定,另一些則可以根據(jù)用戶需要在之后擴(kuò)充,以下是這類需求分析中的一些啟發(fā)式規(guī)則:
1) 確定所模擬的實(shí)體是不可再分割的整體而不是可拆分多個(gè)控件的聚合(例如控件應(yīng)該是一臺(tái)發(fā)動(dòng)機(jī)而不是發(fā)動(dòng)機(jī)組)。
2) 確定所模擬的實(shí)體具有哪些可調(diào)節(jié)的功能,如:某臺(tái)機(jī)器不同的功能、同一功能的不同狀態(tài)。
3) 確定可與所模擬實(shí)體組合為更大系統(tǒng)的其他實(shí)體以及它們的上下游關(guān)系。
下面是本文所設(shè)計(jì)的發(fā)動(dòng)機(jī)控件的需求分析:
> 電動(dòng)機(jī)能夠扇葉轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)的速度與設(shè)置的電機(jī)轉(zhuǎn)速相關(guān)。
> 電動(dòng)機(jī)有按鈕啟動(dòng)停止,紅色停,綠色轉(zhuǎn)。
> 電動(dòng)機(jī)有狀態(tài)標(biāo)志可以設(shè)置讀取,顯示當(dāng)前狀態(tài)為停止還是運(yùn)行。
> 電動(dòng)機(jī)有轉(zhuǎn)速屬性可以設(shè)置讀取。
> 電動(dòng)機(jī)有功率屬性可以設(shè)置讀取。
> 電動(dòng)機(jī)有電流屬性可以設(shè)置讀取。
> 電動(dòng)機(jī)有電壓屬性可以設(shè)置讀取。
> 電動(dòng)機(jī)轉(zhuǎn)速在控件中有一個(gè)儀器顯示,顯示實(shí)時(shí)的電機(jī)轉(zhuǎn)速值。
> 電機(jī)轉(zhuǎn)速顯示的字體font可調(diào)。
> 電機(jī)轉(zhuǎn)速顯示的顯示框top可調(diào)。
> 電機(jī)轉(zhuǎn)速顯示的顯示框left可調(diào)。
> 電機(jī)轉(zhuǎn)速顯示的顯示框height可調(diào)。
> 電機(jī)轉(zhuǎn)速顯示的顯示框width可調(diào)。
> 電機(jī)背景顏色可以選擇。
2.2 詳細(xì)設(shè)計(jì)(注二)
在需求分析基礎(chǔ)上本環(huán)節(jié)需要確定ActiveX控件的所有屬性成員與方法成員,屬性成員即所模擬實(shí)體所具有的狀態(tài),方法成員不僅包括了該實(shí)體變更不同狀態(tài)的方法,還包括與調(diào)用其他控件(實(shí)體)的方法[5]。需要注意的是方法成員的調(diào)用實(shí)際是根據(jù)監(jiān)聽(tīng)不同事件實(shí)現(xiàn)的,因此需要額外設(shè)計(jì)自定義的事件。以下列出上文中發(fā)動(dòng)機(jī)控件的部分屬性:
1) BackColor發(fā)動(dòng)機(jī)背景
2) BackStyle背景類型
3) MSpeed發(fā)動(dòng)機(jī)轉(zhuǎn)速
4) MState電機(jī)狀態(tài)
5) MSpeedFont電機(jī)轉(zhuǎn)速顯示框內(nèi)字體
2.3 編碼與測(cè)試
編碼過(guò)程與小型VB程序開(kāi)發(fā)過(guò)程有著很大的相似之處,具體步驟如下:
1) 在VB6.0環(huán)境下創(chuàng)建一個(gè)[標(biāo)準(zhǔn)EXE]工程,隨后在該工程下添加一個(gè)[ActiveX控件]工程,這是因?yàn)榭丶こ滩荒軌蜃孕袉?dòng),需要借助一個(gè)容器進(jìn)行啟動(dòng)[6]。
2) 在用戶控件設(shè)計(jì)器窗口下設(shè)計(jì)控件界面,將需要的圖片資源添加到工程中,在UserControl對(duì)象上進(jìn)行設(shè)計(jì)。
3) 為控件添加屬性、事件和方法
a) 為想添加的屬性創(chuàng)建屬性過(guò)程,在代碼頁(yè)面選擇“工具→添加過(guò)程”會(huì)跳出一個(gè)對(duì)話框,然后在單選按紐中選擇“屬性”(創(chuàng)建事件則需要選擇“事件”)注意如果不是只讀或只寫(xiě)屬性,應(yīng)當(dāng)將屬性及其事件和方法設(shè)定為公有類型,使開(kāi)發(fā)者可以自由訪問(wèn)。
b) 如果屬性在設(shè)置之后未及時(shí)保存,那么開(kāi)發(fā)者輸入的組件屬性會(huì)在運(yùn)行之初的初始化被全部重置為默認(rèn)值,所以需要利用WriteProperties和ReadProperties實(shí)現(xiàn)屬性的讀寫(xiě),在WriteProperties和ReadProperties事件中都有PropBag對(duì)象,WriteProperty方法可以用作保存屬性值,應(yīng)用于WriteProperties事件中。而ReadProperty方法用作讀取屬性值,應(yīng)用于ReadProperties事件中。他們的語(yǔ)法是:
PropBag.ReadProperty(DataName[,DefaultValue])
PropBag.WriteProperty(DataName,Value[,DefaultValue])
c) 注意利用PropertyChanged方法在獲取屬性值之后通知WriteProperty事件保存屬性,PropertyChanged方法是用戶控件特有的方法,其作用是,通知系統(tǒng)某個(gè)屬性發(fā)生了改變。
d) 方法的添加與屬性的添加類似,設(shè)計(jì)人員可以通過(guò)創(chuàng)建一個(gè)Public類型的Sub過(guò)程即可實(shí)現(xiàn)。
下面是發(fā)動(dòng)機(jī)控件中某屬性過(guò)程的一個(gè)具體實(shí)例:
2.4 ActiveX控件的測(cè)試及使用
1) 首先應(yīng)再次核對(duì)需求文檔,確保開(kāi)發(fā)需求已全部實(shí)現(xiàn),隨后需要對(duì)源碼進(jìn)行路徑覆蓋,確保不同路徑下控件具有較強(qiáng)的魯棒性,隨后可以發(fā)布。
2) 選擇編譯源代碼,生成.ocx文件,同時(shí)VB6.0環(huán)境會(huì)自動(dòng)注冊(cè)該控件,在下次使用時(shí)需要使用“工程—部件”命令打開(kāi)“部件”對(duì)話框,將控件加載到工具箱中[7]。
圖1 電機(jī)組件截圖
ActiveX控件實(shí)現(xiàn)的組態(tài)軟件組件的開(kāi)發(fā)流程較為簡(jiǎn)單,開(kāi)發(fā)者只需掌握VB語(yǔ)言即可完成,同時(shí),ActiveX控件極大的增強(qiáng)了代碼的復(fù)用性,并具有較高的仿真能力,從自動(dòng)化軟件的開(kāi)發(fā)與使用角度來(lái)說(shuō)具有重要的意義,ActiveX控件開(kāi)發(fā)的難點(diǎn)在于開(kāi)發(fā)者對(duì)于實(shí)際工業(yè)生產(chǎn)流程和工業(yè)設(shè)備的了解,傳統(tǒng)開(kāi)發(fā)者需要和客戶廣泛溝通后做出詳實(shí)的需求分析,本文采用敏捷開(kāi)發(fā)思想進(jìn)行的軟件開(kāi)發(fā)可以在軟件開(kāi)發(fā)的風(fēng)險(xiǎn)控制與開(kāi)發(fā)進(jìn)度上取得平衡,確保開(kāi)發(fā)成果可以如期被客戶接受使用。
注一:廣義的組件是指一個(gè)不透明的功能實(shí)體,能夠被第三方組裝,且符合一個(gè)構(gòu)件模型。本文的ActiveX控件即是一種Microsoft公司支持的語(yǔ)言所設(shè)計(jì)的組件。
注二:實(shí)例中的ActiveX控件并非大型軟件,故在開(kāi)發(fā)流程中省去概要設(shè)計(jì)階段。
[1] 馬國(guó)華.監(jiān)控組態(tài)軟件及其應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2005.
[2] 歐金成,歐世樂(lè),林德杰,等.組態(tài)軟件的現(xiàn)狀與發(fā)展[J].工業(yè)控制計(jì)算機(jī),2002,15(4):1-5.
[3] 郭永瑞,孫朋德.ActiveX控件的編寫(xiě)和使用[J].科技信息,2007(22):48-49.
[4] 鄧靖穎,黃穗.敏捷開(kāi)發(fā):極限編程在管理信息系統(tǒng)開(kāi)發(fā)中的實(shí)踐探討[J].計(jì)算機(jī)工程,2004,30(24):189-191.
[5] 張帆.基于VB編寫(xiě)的ActiveX控件在組態(tài)軟件中的應(yīng)用技術(shù)研究[J].甘肅科技縱橫,2009,38(2):28-28.
[6] 崔艷芳.ActiveX控件在組態(tài)軟件中的應(yīng)用[J].工業(yè)控制計(jì)算機(jī),2005(5):61-62.
[7] 馬軍.21天學(xué)通VISUAL BASIC(21天學(xué)編程系列)(附光盤)[M].第3版.北京:電子工業(yè)出版社,2014.
ActiveX Control Development with VB Language
Xu Qingzeng, Yang Shuoheng
(TianjinUniversityofScience&Technology,Tianjin300222,China)
The configuration software is a kind of software which is used for process control. This paper introduces the key principle and application of the configuration software, solves the development problem with agile development idea. It also uses an instance of configuration software development to introduce the process that can reduce the difficulty for developer and industrial control workers in the communication of software requirement and provide a reference for other researchers.
configuration software; ActiveX control; VB software development
2016-11-09
天津科技大學(xué),學(xué)生實(shí)驗(yàn)室創(chuàng)新基金項(xiàng)目(1510A205)
徐慶增(1981- ),男,內(nèi)蒙呼倫貝爾人,實(shí)驗(yàn)師,碩士研究生,研究方向:智能控制和仿真應(yīng)用。
1674- 4578(2017)01- 0065- 03
TP311
A