• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      組件對象模型技術(shù)在地鐵綜合監(jiān)控系統(tǒng)的應(yīng)用

      2016-06-01 01:05:20劉衛(wèi)紅
      城市軌道交通研究 2016年1期
      關(guān)鍵詞:軌道交通

      李 貴 劉衛(wèi)紅 金 旭 江 輝

      (浙江浙大中控信息技術(shù)有限公司,310053,杭州∥第一作者,工程師)

      組件對象模型技術(shù)在地鐵綜合監(jiān)控系統(tǒng)的應(yīng)用

      李 貴劉衛(wèi)紅金 旭江 輝

      (浙江浙大中控信息技術(shù)有限公司,310053,杭州∥第一作者,工程師)

      摘 要闡述了組件對象模型(COM)技術(shù)在地鐵綜合監(jiān)控系統(tǒng)軟件平臺開發(fā)中的應(yīng)用情況,詳述了COM技術(shù)在基于組態(tài)軟件平臺Cimplicity HMI上進(jìn)行二次開發(fā)時的應(yīng)用。通過與傳統(tǒng)開發(fā)模式的對比,展現(xiàn)了COM技術(shù)在Cimplicity HMI平臺上開發(fā)的優(yōu)勢。COM技術(shù)可解決傳統(tǒng)開發(fā)模式存在的代碼碎片化、控制代碼與畫面視圖嚴(yán)重耦合、代碼編號不方便、調(diào)試?yán)щy、難以版本管理、代碼無法保密等問題,具有較好的實用性,值得推廣。

      關(guān)鍵詞軌道交通;綜合監(jiān)控;組件對象模型;組態(tài)軟件平臺

      Author's address Zhejiang SUPCON Information Co.,Ltd,310053,Hangzhou,China

      目前,優(yōu)秀的上位機(jī)組態(tài)軟件較多,由GE IP公司開發(fā)的Cimplicity HMI便是其中之一。Cimplicity HMI支持OLE、COM組件(Active X DLL),畫面編輯簡單易用,可提供報警、日志、趨勢、遠(yuǎn)程瀏覽、冗余等功能。

      由于應(yīng)用行業(yè)的不同,每個監(jiān)控工程的功能是不同的。Cimplicity HMI可以創(chuàng)建程序腳本正是解決此問題的關(guān)鍵。它允許用戶用類似于Visual Basic類型的編程語言(Basic Control Language,簡為“BCL”)在其提供的編譯環(huán)境(Basic Control Environment,簡為“BCE”)中創(chuàng)建程序。BCE提供了一個用戶根據(jù)自身需求進(jìn)行二次開發(fā)的編譯環(huán)境,用戶可以在BCE的全局模塊或者各個畫面中創(chuàng)建變量、結(jié)構(gòu)體、函數(shù)等代碼。

      目前流行的做法是:分別在每個畫面中創(chuàng)建相應(yīng)的功能函數(shù),部分公共函數(shù)從全局模塊中調(diào)用。GE官方提供的二次開發(fā)樣例也是如此。但是,這樣的開發(fā)模式會導(dǎo)致代碼碎片化、代碼編寫調(diào)試?yán)щy、版本管理混亂等一系列問題。本文以在Cimplicity HMI上進(jìn)行綜合監(jiān)控軟件平臺客戶端(下稱“客戶端”)的二次開發(fā)為例,介紹一種以COM組件嵌入BCE的全新開發(fā)方式,很好地解決了這些問題。

      1 Cimplicity HMI平臺二次開發(fā)的傳統(tǒng)模式

      BCE提供了一個與Visual Basic語言極為相似的用戶命令環(huán)境,內(nèi)置了一個超過600個標(biāo)準(zhǔn)功能函數(shù)的程序集,并且提供相應(yīng)的訪問接口。通過這些接口,可以訪問或控制Cimplicity的數(shù)據(jù)點、報警和錯誤記錄等數(shù)據(jù)。通過BCE可以實現(xiàn)算術(shù)運算、邏輯運算、字符串處理、文件處理、數(shù)組處理、DDE通信、Windows界面交互等各種功能。

      1.1傳統(tǒng)開發(fā)模型

      在BCE提供的開發(fā)環(huán)境下,傳統(tǒng)的二次開發(fā)模型如圖1所示。

      工程組態(tài)時,一個畫面通常會繪制多個圖元,包括普通的矩形、多邊形、圓形、圖片、按鈕、文本、OLE(對象連接與嵌入)對象、微軟.NET控件、趨勢控件等。當(dāng)圖元需要執(zhí)行或響應(yīng)一個操作時,就需要在相應(yīng)的圖元上綁定一個對應(yīng)的腳本。腳本可以調(diào)用一個公共的全局模塊腳本,由此可以實現(xiàn)某些公共變量或者函數(shù)的共享和控制。腳本可以控制畫面中的各個圖元的多種狀態(tài),如位置、大小、顏色、文本等。

      1.2傳統(tǒng)開發(fā)模型存在的問題

      (1)代碼碎片化。BCE并沒有提供一個類似于VC++或者VB的集成編譯環(huán)境,所有的代碼都分布在全局腳本以及各個畫面的圖元中,如果畫面較多,且每張畫面中的圖元層次和數(shù)量也較多時,代碼編寫、維護(hù)的工作量將明顯增大。特別是像地鐵行業(yè),各個圖元的組態(tài)都是比較復(fù)雜的,以電力監(jiān)控系統(tǒng)中的一個電動開關(guān)為例,不僅要考慮開關(guān)的開、關(guān)狀態(tài),還要考慮開關(guān)設(shè)備的斷線、維修等狀態(tài),每個狀態(tài)都需要對此開關(guān)圖元中的子圖元進(jìn)行組態(tài),因此層次可能較深,數(shù)量也可能較多。類似的圖元可能在整個監(jiān)控平臺中的很多地方出現(xiàn),意味著相應(yīng)的代碼可能分布在不同的地方。這樣就導(dǎo)致了代碼的碎片化現(xiàn)象。代碼碎片化給代碼的維護(hù)和調(diào)試帶來了很大的困難,因為調(diào)試前必須找到相應(yīng)的代碼進(jìn)行斷點,而當(dāng)圖元結(jié)構(gòu)層次和數(shù)量都很多時,工作量大大增加。

      (2)控制代碼與畫面視圖嚴(yán)重耦合。此問題造成的后果是:代碼編寫和畫面制作無法很好地由兩組人員完成,且改動也將受到牽制。必須先由畫面組態(tài)人員繪制完畫面后,開發(fā)人員才能進(jìn)行相應(yīng)的編碼工作;且一旦涉及更改,必須由畫面組態(tài)人員再次提供相應(yīng)的畫面后,方能進(jìn)行代碼更改,否則將導(dǎo)致混亂的對應(yīng)狀態(tài)。

      (3)BCE存在缺陷。BCE雖然是一個腳本代碼的編寫環(huán)境,卻存在以下問題:①代碼沒有智能提示;②函數(shù)有順序限制;③無法跨模塊使用全局變量;④不能使用Byte數(shù)據(jù)類型;⑤函數(shù)不能返回數(shù)組;⑥不能使用Replace、Split等字符串常用函數(shù)。此缺陷造成無法有效、高效地進(jìn)行代碼編寫。

      (4)調(diào)試工作困難。BCE編譯環(huán)境中,不能像普通編譯器一樣對任意編寫的函數(shù)進(jìn)行斷點調(diào)試,必須在每處函數(shù)調(diào)用入口設(shè)置斷點后才能進(jìn)入需要的調(diào)試狀態(tài)。另外,編譯器提供的監(jiān)視功能只能監(jiān)視數(shù)值和文本,當(dāng)監(jiān)視對象類型的變量時,不能顯示對象的屬性及屬性值,對解決問題時的調(diào)試幾乎沒有作用。

      (5)版本管理困難。BCE沒有單個整體代碼工程的概念,所有的代碼“散落”在各畫面的圖元中,所以代碼的版本管理比較困難。

      (6)代碼公開化問題。代碼直接綁定到圖元中,導(dǎo)致接觸到客戶端的人都可以點開各個圖元而看到里面綁定的腳本代碼,對代碼的規(guī)范管理存在一定風(fēng)險。

      2 COM技術(shù)在Cimplicity HMI平臺二次開發(fā)中的應(yīng)用

      COM(Component Object Model,組件對象模型)是一種以組件為發(fā)布單元的對象模型,可使各軟件組件用一種統(tǒng)一的方式進(jìn)行交互。COM既提供了組件之間進(jìn)行交互的規(guī)范,也提供了實現(xiàn)交互的環(huán)境,并且組件對象之間交互的規(guī)范不依賴于任何特定的語言。

      客戶端使用Visual Basic 6.0作為編譯環(huán)境,創(chuàng)建Active X DLL工程,最終編譯形成單獨的DLL文件,進(jìn)行開發(fā)、調(diào)試、編譯、部署等工作。

      2.1COM開發(fā)模型

      整體的開發(fā)模型如圖2所示??梢?,COM開發(fā)模型不再將功能腳本寫到每個圖元里,而是將全部的具體實現(xiàn)的功能代碼都放到COM組件中,實現(xiàn)代碼的集中管理。在每個圖元中只有標(biāo)準(zhǔn)的調(diào)用代碼,BCE全局腳本中也只有統(tǒng)一的調(diào)用代碼,真正實現(xiàn)的代碼全部移入COM組件工程中。其結(jié)合軟件設(shè)計模式中的“簡單類工廠模式”,動態(tài)地創(chuàng)建相應(yīng)的類,有效地實現(xiàn)了內(nèi)存管理并取得了良好的系統(tǒng)性能。

      2.2COM開發(fā)模型實現(xiàn)

      COM組件有三種形式:①進(jìn)程內(nèi)(組件以DLL方式存在,它與客戶在同一進(jìn)程內(nèi));②進(jìn)程間(以EXE方式存在,它與客戶在同一臺機(jī)器卻不在同一進(jìn)程內(nèi));③不同機(jī)器上以EXE方式存在。不論何種形式,客戶都不必知道使用的是哪種組件,因為COM組件對象是位置透明的。本文詳細(xì)介紹采用第一種COM組件形式,現(xiàn)實地鐵綜合監(jiān)控系統(tǒng)軟件平臺客戶端的二次開發(fā)。具體構(gòu)成如圖3所示。

      整體函數(shù)調(diào)用和控制的實現(xiàn)原理,如圖4所示。

      圖2 COM開發(fā)模型

      圖3 COM組件存在形式

      詳細(xì)實現(xiàn)過程如圖5所示。

      首先,需要響應(yīng)圖元的事件必須在相應(yīng)的圖元上綁定執(zhí)行腳本。圖元所能觸發(fā)的事件僅是Cimplicity提供的20多種事件,所以圖元需要綁定的腳本也就20多個代碼段。以響應(yīng)鼠標(biāo)點擊事件為例,畫面圖元中On MouseUp調(diào)用全局腳本中的On MouseUpEx函數(shù)。

      gISCSLib在全局腳本中,主要用于存放其模塊的20多個事件的響應(yīng)調(diào)用對象。它是后臺COM組件ISCSLib的一個實例。ISCSLib工程中的Main類包含了On MouseUp集中響應(yīng)函數(shù),此函數(shù)中實現(xiàn)簡單類工廠的代碼如下:

      Select Case sScr Name

      Case"startmimic.cim"

      Set oScrCOM = New Scr_StartMimmic

      Case"navigator.cim"

      Set oScrCOM = New Scr_NaviSymbols

      End Select

      CallByName oScrCOM,"OnMouseUp",VbCallType.VbMethod,X,Y,flags,oControl

      在On MouseUp事件中通過簡單類工廠模式,很好地解決了多類型對象的實例化問題,并最終通過執(zhí)行的CallBy Name函數(shù),利用“反射”機(jī)制調(diào)用具體類中的函數(shù),達(dá)到控制或者執(zhí)行某個具體功能函數(shù)的目的。

      圖4 COM模型調(diào)用原理

      圖5 COM模型實現(xiàn)過程

      2.3COM開發(fā)模型的優(yōu)勢

      使用COM技術(shù)在Cimplicity HMI平臺上進(jìn)行二次開發(fā),非常巧妙地克服了傳統(tǒng)開發(fā)模式的各種缺點。

      (1)代碼管理集約化。具體現(xiàn)實代碼被全部轉(zhuǎn)移到COM工程后,一個工程就能管理所有的實現(xiàn)代碼,并可充分利用VB編譯器的各種功能,方便代碼的編寫和維護(hù),大大提高工作效率。

      (2)控制代碼與畫面視圖解耦。圖元和全局腳本中只剩少量的“接口型”標(biāo)準(zhǔn)調(diào)用代碼,組態(tài)人員可以在畫圖時直接將代碼復(fù)制到圖元腳本中,并不用關(guān)心后續(xù)的代碼編寫;腳本開發(fā)人員也不再受制于圖元中的代碼,具體的代碼全部編寫到COM工程中即可。圖形組態(tài)人員和代碼開發(fā)人員互不干擾,可以并行開,大大提高了工作效率,降低了兩者的工作沖突。

      (3)標(biāo)準(zhǔn)VB開發(fā)。絕大多數(shù)代碼被轉(zhuǎn)移到Visual Basic 6.0開發(fā)的COM工程中,人員只要使用VB開發(fā)環(huán)境即可輕松編碼。

      (4)調(diào)試方便。將COM工程設(shè)置為“Active X DLL”工程類型,結(jié)合Cimplicity的BCE進(jìn)行代碼聯(lián)調(diào),所有在COM工程中的斷點都可以正常攔截并調(diào)試,所有類型的變量都可以正常查看,調(diào)試十分方便。

      (5)方便版本管理。所有功能代碼集中在COM工程中,可方便地進(jìn)行VB工程的代碼版本管理工作。

      (6)代碼隱藏。COM工程最后編譯生成的是一個DLL文件,關(guān)鍵性的代碼被隱藏,從而非常有效地保護(hù)了軟件代碼不被泄露。

      3 結(jié)語

      本文提出了一種基于COM技術(shù)開發(fā)地鐵綜合監(jiān)控軟件的方案。該方案基于Cimplicity HMI工控組態(tài)軟件平臺,結(jié)合Cimplicity支持COM組件的特性,利用COM技術(shù)開發(fā)Active X DLL,解決了傳統(tǒng)開發(fā)模式的諸多問題,可大大節(jié)省整個系統(tǒng)的研發(fā)時間,以及后期系統(tǒng)的維護(hù)費用。

      傳統(tǒng)開發(fā)模式存在代碼碎片化、控制代碼與畫面視圖嚴(yán)重耦合、代碼編寫不方便、調(diào)試?yán)щy、難以版本管理、代碼無法保密等的缺點,COM開發(fā)模式可很好地解決這些問題。該技術(shù)可運用于不同行業(yè)中相類似的開發(fā)過程,能解決非常實際的開發(fā)問題,值得推廣。

      參考文獻(xiàn)

      [1] Curland Matthew J,Storage,Bill.Advanced Visual Basic 6 [M].涂翔云,劉玉印,劉巖,譯.北京:中國電力出版社,2001.

      [2] 程杰.大話設(shè)計模式[M].北京:清華大學(xué)出版社,2007.

      [3] 張婭.COM研究及其在組態(tài)軟件中的應(yīng)用[J].微計算機(jī)信息,2006,22(34):49.

      [4] 王海剛.COM中的設(shè)計模式[J].計算機(jī)仿真,2004,21 (5):184.

      [5] 歐建斌.工廠設(shè)計的模式研究[J].微型電腦應(yīng)用,2010,26 (12):15.

      [6] 張偉.用VB實現(xiàn)COM組件的包容[J].計算機(jī)應(yīng)用,2001,21 (10):99.

      [7] 吳東慶.反射機(jī)制下類工廠模式的實現(xiàn)與研究[J].計算機(jī)應(yīng)用,2006,26(3):705.

      Application of COM Technology to Metro Integrated Supervisory Control System

      Li Gui,Liu Weihong,Jin Xu,Jiang Hui

      AbstractThe application of COM technology in the soft platform development of metro ISCSis described,the application and research findings of COM technology on the redevelopment based on Cimplicity HMI software platform are introduced in detail.Compared with traditional application development,the technological advantages of COM development on Cimplicity HMIsoftware platform are fully displayed.It could solve many problems existing in the traditional mode such assevere coupling of coultrol code and picture,debugging difficulties,vulnerable code and so on,thus has good practicability and promotional value.

      Key wordsurban rail transit;integrated supervisory control system(ISCS);component object model(COM);Cimplicity HMI software platform

      中圖分類號U 29-39

      DOI:10.16037∕j.1007-869x.2016.01.025

      收稿日期:(2014-06-03)

      猜你喜歡
      軌道交通
      軌道交通產(chǎn)品CE認(rèn)證論述
      城市軌道交通投融資模式分析
      水性漆在軌道交通輪對上的應(yīng)用研究
      上海涂料(2021年5期)2022-01-15 06:09:22
      高速軌道交通發(fā)展趨勢
      軌道交通出入段接□進(jìn)路設(shè)計選型的探討
      漏泄電纜在軌道交通無線通信系統(tǒng)中的應(yīng)用
      軌道交通安防系統(tǒng)設(shè)計方案的思考
      軌道交通的寬窄帶融合無線調(diào)度系統(tǒng)
      PPP模式在我國軌道交通建設(shè)中的應(yīng)用
      國外軌道交通通信系統(tǒng)簡述
      電子測試(2018年1期)2018-04-18 11:53:51
      保靖县| 泉州市| 钟祥市| 略阳县| 香港| 淄博市| 南部县| 镇安县| 嘉善县| 三门县| 垦利县| 萨嘎县| 柞水县| 平罗县| 长阳| 曲松县| 息烽县| 剑阁县| 乐亭县| 白城市| 松桃| 多伦县| 樟树市| 南川市| 梅河口市| 西充县| 临潭县| 呼伦贝尔市| 珠海市| 莱阳市| 托克逊县| 石台县| 汉阴县| 永胜县| 根河市| 郴州市| 驻马店市| 安泽县| 博野县| 鄂伦春自治旗| 永州市|