版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
MCGS高級開發(fā)指南symbol105\f"Marlett"\s9page222symbol105\f"Marlett"\s9目錄TOC\o"1-2"第一章MCGS的可擴(kuò)充性 41.1概述 41.2可擴(kuò)充的設(shè)備驅(qū)動構(gòu)件 61.3可擴(kuò)充的功能構(gòu)件 71.4MCGS實(shí)時(shí)數(shù)據(jù)庫對象 81.5MCGS存盤服務(wù)對象 101.6通過OLE自動化和其它應(yīng)用程序交互 121.7通過DDE和其它應(yīng)用程序交互 141.8直接操作MCGS的存盤數(shù)據(jù)庫 16第二章開發(fā)MCGS功能構(gòu)件 172.1功能構(gòu)件的實(shí)現(xiàn)方法 172.2功能構(gòu)件接口規(guī)范 182.3利用開發(fā)向?qū)煽蚣?192.4利用樣例程序移植 222.5測試和掛接功能構(gòu)件 25第三章開發(fā)MCGS設(shè)備驅(qū)動 273.1設(shè)備驅(qū)動構(gòu)件的實(shí)現(xiàn)方法 273.2設(shè)備驅(qū)動構(gòu)件接口規(guī)范 283.3利用開發(fā)向?qū)煽蚣?323.4利用樣例程序移植 353.5測試和掛接設(shè)備驅(qū)動構(gòu)件 373.6IO端口的操作 403.7串行口的操作 433.8設(shè)備驅(qū)動構(gòu)件的運(yùn)行機(jī)制 443.9增加設(shè)備構(gòu)件的屬性 453.10定制設(shè)備屬性設(shè)置對話框 473.11編制簡單的設(shè)備驅(qū)動構(gòu)件 48第四章MCGS系統(tǒng)內(nèi)部數(shù)據(jù)對象 524.1$Year 534.2$Month 534.3$Day 534.4$Hour 534.5$Minute 544.6$Second 544.7$Week 544.8$Date 544.9$Time 554.10$Timer 554.11$RunTime 554.12$PageNum 554.13$UserName 56第五章MCGS系統(tǒng)內(nèi)部函數(shù) 575.1數(shù)學(xué)函數(shù) 575.2字符操作函數(shù) 595.3窗口操作函數(shù) 615.4設(shè)備操作函數(shù) 625.5策略操作函數(shù) 635.6事件操作函數(shù) 645.7報(bào)警操作函數(shù) 645.8存盤操作函數(shù) 675.9用戶權(quán)限操作函數(shù) 705.10系統(tǒng)操作函數(shù) 71第六章MCGS中提供的對象 2056.1實(shí)時(shí)數(shù)據(jù)庫對象 2056.2存盤服務(wù)對象 223第一章MCGS的可擴(kuò)充性1.1概述MCGS組態(tài)軟件是一套功能豐富、簡單易用的組態(tài)軟件,大部分工程師都可以很容易的使用這套組態(tài)軟件來完成一個(gè)完整的工程項(xiàng)目。但是,當(dāng)用戶熟練的掌握了這套組態(tài)軟件以后,用戶必然會尋求在這套組態(tài)軟件上進(jìn)一步開發(fā)的能力。以實(shí)現(xiàn)有自己風(fēng)格的界面、自己設(shè)計(jì)的控制算法和與自己硬件相匹配的驅(qū)動程序。其他一些長期使用VisualBasic、C++、Delphi的高級工程開發(fā)人員,為了充分利用自己的編程特長和已有的程序積累,也希望能夠把自己編寫的程序裝配到MCGS組態(tài)軟件中。大部分面向工程應(yīng)用的工程人員,雖然沒有時(shí)間和精力開發(fā)自己的專有模塊,但是,卻希望能夠從MCGS開發(fā)組或第三方的專業(yè)、業(yè)余開發(fā)者那里獲得為自己定制的特殊模塊,并且能夠很方便的裝配到現(xiàn)有的MCGS組態(tài)軟件上。而對硬件開發(fā)商和一些高級的開發(fā)人員,都希望能夠開發(fā)出自己的設(shè)備驅(qū)動模塊和專業(yè)化、行業(yè)化的模塊以充分利用MCGS軟件的組態(tài)功能,當(dāng)然,對于這些專業(yè)化的高品質(zhì)模塊,位于工程一線的工程人員也是具有非同一般的興趣的。為了滿足用戶的這些要求,MCGS提供一套可擴(kuò)充的接口規(guī)范和配套的高級開發(fā)工具包。使用接口規(guī)范和工具包開發(fā)出來的擴(kuò)充構(gòu)件,具有很優(yōu)越的特點(diǎn):安全保密。擴(kuò)充構(gòu)件是編譯成二進(jìn)制代碼的,可以很好的保護(hù)您的工作。非法用戶不可能通過反編譯你的擴(kuò)充構(gòu)件來獲得你獨(dú)有的設(shè)備驅(qū)動構(gòu)件、特殊的運(yùn)算構(gòu)件和特殊的窗口界面。你更可以使用擴(kuò)充構(gòu)件來進(jìn)行自己的加密,以防止你制作的工程被任意拷貝,保護(hù)你自己的利益。簡單快速。MCGS組態(tài)軟件高級開發(fā)包中提供了常用的數(shù)據(jù)后處理構(gòu)件源代碼。初級用戶可以直接使用這些數(shù)據(jù)后處理構(gòu)件,但高級用戶則可以修改這些構(gòu)件的源代碼,以滿足自己特殊的要求。眾所周知,工控工程的數(shù)據(jù)后處理部分具有各自不同的要求,因此一般的組態(tài)軟件,都要求用戶自己使用例如Excel、Access等軟件來完成自己的特殊的后處理。但是MCGS組態(tài)軟件除了可以用類似的方法處理外,還提供了另外一種不同的處理方法。那就是高級用戶可以修改MCGS組態(tài)軟件高級開發(fā)工具包中所提供的后處理構(gòu)件源代碼,然后生成自己的擴(kuò)充構(gòu)件,裝配到MCGS組態(tài)軟件上,就可以組成自己獨(dú)有的后處理系統(tǒng)。性能優(yōu)異。使用這種方法開發(fā)出來的MCGS組態(tài)軟件的擴(kuò)充構(gòu)件具有很高的速度和性能。據(jù)微軟公司測試,使用VisualC++軟件開發(fā)出來的程序,只比使用VisualBasic開發(fā)出來的速度高百分之十,有時(shí)甚至還低于VisualBasic。而使用VisualBasic開發(fā)的方便性和易用性又是VisualC++所遠(yuǎn)遠(yuǎn)不能比擬的。在編寫MCGS組態(tài)軟件的擴(kuò)充構(gòu)件時(shí),VisualBasic確實(shí)是一種最佳選擇。任務(wù)明確。MCGS的這種擴(kuò)充構(gòu)件具有清晰的結(jié)構(gòu),你完全可以向MCGS組態(tài)軟件的開發(fā)組或第三方的開發(fā)人員提出要求,為你編寫一個(gè)定制的擴(kuò)充構(gòu)件。而不會存在功能糾纏不清,任務(wù)確定不明的問題。MCGS組態(tài)軟件的高級開發(fā),基本上是基于微軟公司的OLE標(biāo)準(zhǔn),利用了最新的ActiveX技術(shù)。這種新技術(shù)保證能夠方便地使用當(dāng)前各種先進(jìn)的開發(fā)工具來開發(fā)自己的擴(kuò)充構(gòu)件。如:VisualBasic、VisualC++以及其它公司的各種編程軟件也可以方便地開發(fā)MCGS組態(tài)軟件的擴(kuò)充構(gòu)件。但是,MCGS為使用微軟公司的VisualBasic準(zhǔn)備了豐富的樣例程序和功能強(qiáng)大的高級開發(fā)向?qū)?。這個(gè)高級開發(fā)向?qū)Э梢詭椭愫芊奖愕纳筛鞣N擴(kuò)充構(gòu)件的框架結(jié)構(gòu),使你能夠快速的進(jìn)入自己的編程工作。在MCGS組態(tài)軟件高級開發(fā)工具包中,還提供了給開發(fā)員使用的一個(gè)源代碼級調(diào)試程序。因此,MCGS強(qiáng)烈建議使用微軟公司的VisualBasic軟件來開發(fā)MCGS的擴(kuò)充構(gòu)件。在本書中,主要介紹如何使用VisualBasic來開發(fā)MCGS組態(tài)軟件擴(kuò)充構(gòu)件。但由于它是基于OLE技術(shù)標(biāo)準(zhǔn)的,所以如果你能夠熟練地使用VisualC++、Delphi等軟件,你也可以按照本書中給出的OLE界面標(biāo)準(zhǔn),來制作自己的組態(tài)軟件擴(kuò)充構(gòu)件。為了能夠使用MCGS組態(tài)軟件高級開發(fā)工具包,你應(yīng)該具有如下條件:硬件方面:必須具有Pentium以上的CPU,以及十六兆以上的內(nèi)存。軟件方面:應(yīng)使用微軟的Windows’95或Window’NT4.0操作系統(tǒng),安裝了微軟的VisualBasic6.0專業(yè)版或企業(yè)版。還應(yīng)安裝了MCGS光盤上的MCGS組態(tài)軟件和MCGS組態(tài)軟件高級開發(fā)工具包。使用MCGS組態(tài)軟件高級開發(fā)工具包和微軟VisualBasic軟件來開發(fā)MCGS組態(tài)軟件擴(kuò)充構(gòu)件,要求你應(yīng)該大致了解VisualBasic軟件的功能和使用方法。如果你對VisualBasic軟件不太了解,那麼就應(yīng)該首先學(xué)習(xí)和了解一下VisualBasic軟件。我們建議采用如下的方法進(jìn)行學(xué)習(xí):首先,你應(yīng)該仔細(xì)閱讀《VisualBasic聯(lián)機(jī)手冊》這本書中的“程序員指南”這一章。其次,你應(yīng)該仔細(xì)讀懂VisualBasic安裝后附帶的三到四個(gè)例子,這些例子安裝在VisualBasic目錄下的\Samples目錄中。在這期間你可參考和閱讀“程序員指南”這一章中的“VB基礎(chǔ)”這一節(jié)中的有關(guān)菜單、窗體、構(gòu)件等的描述。通過大約經(jīng)過一個(gè)星期的學(xué)習(xí),你就可以在MCGS組態(tài)軟件高級開發(fā)包中的高級開發(fā)向?qū)У膸椭?,制作一些你自己的簡單的擴(kuò)充構(gòu)件。也可以從高級開發(fā)包中的樣例程序出發(fā),通過修改相應(yīng)的部分,來生成自己的擴(kuò)充構(gòu)件。MCGS組態(tài)軟件的可擴(kuò)充性主要有以下幾個(gè)方面組成:掛接定制的設(shè)備驅(qū)動構(gòu)件。掛接定制的功能構(gòu)件。在其它應(yīng)用程序中通過OLE直接操作MCGS所提供的對象。通過DDE連接,建立MCGS和其它應(yīng)用程序間的數(shù)據(jù)傳遞。MCGS可擴(kuò)充構(gòu)件的提出和設(shè)計(jì)都經(jīng)過了長期的工程實(shí)踐的檢驗(yàn)和考慮,能夠確保實(shí)現(xiàn)工程進(jìn)一步開發(fā)中的所有任務(wù),而且具有結(jié)構(gòu)簡單、功能齊備的特點(diǎn)。1.2可擴(kuò)充的設(shè)備驅(qū)動構(gòu)件可擴(kuò)充的設(shè)備驅(qū)動構(gòu)件能實(shí)現(xiàn)多種設(shè)備驅(qū)動的方式。你可以使用獨(dú)立的設(shè)備驅(qū)動構(gòu)件形式,如:A/D、D/A板采集驅(qū)動構(gòu)件。也可以使用父子設(shè)備驅(qū)動結(jié)構(gòu)形式,如:使用串口為父設(shè)備,使用掛接在串口上的各個(gè)PLC為子設(shè)備。這已經(jīng)涵蓋工控工程中常用的板卡采集、現(xiàn)場總線等等設(shè)備硬件連接模式。在設(shè)備驅(qū)動構(gòu)件中,你可以使用查詢的工作方式,查詢的周期從十毫秒到任意長的時(shí)間。也可以使用中斷的方式,來高效完成設(shè)備驅(qū)動的任務(wù)。尤其在使用串口等低速率傳送的設(shè)備時(shí),使用中斷方式來采集數(shù)據(jù),可以充分利用等待串口通訊的時(shí)間來完成諸如圖形動畫等其它工作,以保證動畫的平滑運(yùn)動和界面反應(yīng)的靈敏性。在使用板卡采集的時(shí)候,由于板卡采集速度較快,而且設(shè)備驅(qū)動運(yùn)行都處在各自獨(dú)立的線程內(nèi),一般都采用查詢采集的方式來處理設(shè)備驅(qū)動的工作。在設(shè)備驅(qū)動構(gòu)件中,你還可以實(shí)現(xiàn)設(shè)備熱更換的功能。MCGS組態(tài)軟件可以從設(shè)備驅(qū)動構(gòu)件的返回值中得到設(shè)備運(yùn)行狀態(tài)的,對于有錯(cuò)誤的設(shè)備,MCGS組態(tài)軟件將自動停止其采集,但是,每隔十個(gè)采集周期,MCGS組態(tài)軟件將自動重新驅(qū)動設(shè)備驅(qū)動構(gòu)件一次,再重新確定設(shè)備驅(qū)動構(gòu)件的工作狀態(tài)。因此設(shè)備驅(qū)動構(gòu)件可以利用這個(gè)功能。在被驅(qū)動采集時(shí),如果當(dāng)前設(shè)備的上一次工作狀態(tài)測試為設(shè)備失效,這時(shí)就可以重新測試工作狀態(tài),如果工作狀態(tài)已經(jīng)正常,就可以向MCGS組態(tài)軟件返回工作狀態(tài)正確的返回值,使MCGS組態(tài)軟件重新開始正常設(shè)備驅(qū)動采集。準(zhǔn)備了這樣的功能后,在父子設(shè)備采集中,就可以動態(tài)的卸載和掛接子設(shè)備。MCGS組態(tài)軟件會自動在子設(shè)備卸載時(shí)自動暫停設(shè)備采集,在子設(shè)備掛接時(shí)自動開始設(shè)備采集。設(shè)備驅(qū)動構(gòu)件的概念還可以擴(kuò)充到所有的高可靠性要求、數(shù)據(jù)輸入輸出、執(zhí)行命令等任務(wù)方面。在MCGS組態(tài)軟件中,就實(shí)現(xiàn)了一個(gè)使用網(wǎng)絡(luò)在兩臺計(jì)算機(jī)之間共享數(shù)據(jù)對象的設(shè)備驅(qū)動構(gòu)件。實(shí)際上,像網(wǎng)絡(luò)數(shù)據(jù)庫、多臺計(jì)算機(jī)、各個(gè)程序間的通訊等等類似的任務(wù),都可以使用設(shè)備驅(qū)動構(gòu)件的方法來完成。本手冊的第十九章專門講述開發(fā)MCGS設(shè)備驅(qū)動構(gòu)件的具體方法和步驟,請參閱。1.3可擴(kuò)充的功能構(gòu)件可擴(kuò)充的功能構(gòu)件主要用于實(shí)現(xiàn)用戶定制的和用戶特殊的功能模式。如參數(shù)出入窗口、特殊的操作畫面、特殊的數(shù)據(jù)處理等等。功能構(gòu)件提供了一個(gè)使用戶可以實(shí)現(xiàn)自己獨(dú)有的人機(jī)界面的手段,可以完成特殊的用戶交互的工作。并且,可以完成一些MCGS組態(tài)軟件所不適宜完成的工作。如體現(xiàn)事務(wù)性操作的任務(wù),象填寫輸入表單,填寫發(fā)票等任務(wù)需要填好后一次提交,要么所有修改全部完成,要么所有修改被全部退回,這種任務(wù)就與MCGS組態(tài)軟件所運(yùn)行的實(shí)時(shí)監(jiān)控模式不一致,這種任務(wù)就適宜于使用功能構(gòu)件來完成。還有一些任務(wù),諸如從存盤文件中恢復(fù)各個(gè)變量的設(shè)定值,或選定一組設(shè)定值,也可以在功能構(gòu)件中通過讀取存盤文件中的數(shù)據(jù),并用MCGS組態(tài)軟件的自動化功能寫入MCGS組態(tài)軟件中的各個(gè)變量來完成。MCGS系統(tǒng)的報(bào)警信息瀏覽、存盤數(shù)據(jù)瀏覽、存盤數(shù)據(jù)提取等部分的功能就是用VisualBasic6.0來編程實(shí)現(xiàn)的功能構(gòu)件,并且隨系統(tǒng)提供了部分源代碼,目的是因?yàn)檫@幾個(gè)部分的靈活性比較大,用戶的需求也各不一樣,這樣可方便用戶在這些源代碼的基礎(chǔ)上,快速修改完成自己需要的功能。本手冊的第二十章專門講述開發(fā)MCGS功能構(gòu)件的具體方法和步驟,請參閱。1.4MCGS實(shí)時(shí)數(shù)據(jù)庫對象實(shí)時(shí)數(shù)據(jù)庫是MCGS的核心,MCGS把整個(gè)實(shí)時(shí)數(shù)據(jù)庫作為一個(gè)對象封裝起來,提供一系列的方法和屬性,使外部程序通過這些方法和屬性能對MCGS進(jìn)行各種操作。MCGS運(yùn)行起來后,實(shí)時(shí)數(shù)據(jù)庫對象被暴露出來,在其它應(yīng)用程序中,通過OLE自動化操作,就可取到實(shí)時(shí)數(shù)據(jù)庫對象,從而做到在外部應(yīng)用程序直接操作MCGS的目的。注意:MCGS分為組態(tài)環(huán)境和運(yùn)行環(huán)境兩個(gè)部分,每個(gè)部分作為一個(gè)獨(dú)立的整體都有一個(gè)對應(yīng)的實(shí)時(shí)數(shù)據(jù)庫對象,兩個(gè)對象的方法和屬性都相同,只是有些方法在不同的對象內(nèi)的表現(xiàn)不同,如CreateNewData方法在組態(tài)環(huán)境的實(shí)時(shí)數(shù)據(jù)庫對象中是創(chuàng)建一個(gè)新的數(shù)據(jù)對象,而在運(yùn)行環(huán)境的實(shí)時(shí)數(shù)據(jù)庫對象中該方法不進(jìn)行任何操作。因此,在實(shí)際應(yīng)用中,用戶要根據(jù)需要選擇是對哪個(gè)實(shí)時(shí)數(shù)據(jù)庫對象進(jìn)行操作。注意:MCGS的實(shí)時(shí)數(shù)據(jù)庫對象及其對應(yīng)的屬性和方法僅供擴(kuò)充構(gòu)件和外部應(yīng)用程序在編程時(shí)使用,在MCGS內(nèi)(腳本程序和表達(dá)式中)不能直接使用。實(shí)際上,實(shí)時(shí)數(shù)據(jù)庫的大多數(shù)方法在MCGS內(nèi)都提供了對應(yīng)的內(nèi)部函數(shù),腳本程序和表達(dá)式中應(yīng)使用內(nèi)部函數(shù)完成有關(guān)操作。下面列出MCGS實(shí)時(shí)數(shù)據(jù)庫對象所提供的屬性和方法,關(guān)于它們的詳細(xì)含義和用法請參閱《MCGS參考手冊》中的說明。MCGS實(shí)時(shí)數(shù)據(jù)庫對象的屬性WinVer:當(dāng)前操作系統(tǒng)的版本標(biāo)志McgsVer:MCGS的版本號McgsDataNum:當(dāng)前工程的實(shí)時(shí)數(shù)據(jù)庫中數(shù)據(jù)對象的個(gè)數(shù)McgsStgyNum:當(dāng)前工程中運(yùn)行策略的個(gè)數(shù)McgsWinNum:當(dāng)前工程中用戶窗口的個(gè)數(shù)McgsDevNum:當(dāng)前工程中設(shè)備構(gòu)件的個(gè)數(shù)McgsSetName:當(dāng)前工程的名稱McgsSaveName:當(dāng)前工程存盤數(shù)據(jù)庫文件的名稱SvrPackage:存盤服務(wù)對象MCGS實(shí)時(shí)數(shù)據(jù)庫的方法CreateNewData:在實(shí)時(shí)數(shù)據(jù)庫中產(chǎn)生一個(gè)新的數(shù)據(jù)對象GetDataFromName:通過數(shù)據(jù)對象的名稱取到數(shù)據(jù)對象的其它屬性值GetDataFromID:通過數(shù)據(jù)對象的ID號取到數(shù)據(jù)對象的其它屬性值GetDataName:通過數(shù)據(jù)對象的ID號取到數(shù)據(jù)對象的名稱GetDataType:通過數(shù)據(jù)對象的名稱取到數(shù)據(jù)對象的類型GetDataID:通過數(shù)據(jù)對象的名稱和類型取到數(shù)據(jù)對象的ID號SetDataDlg:調(diào)用顯示組態(tài)環(huán)境中的對象瀏覽對話框GetDbIDFromID:通過數(shù)據(jù)對象ID號讀取數(shù)據(jù)對象在數(shù)據(jù)庫中的存儲位置號GetIDFromDbID:通過數(shù)據(jù)對象在數(shù)據(jù)庫中的存儲位置號讀取數(shù)據(jù)對象的ID號GetAlmDatName:讀取定義有報(bào)警信息自動存盤屬性的所有數(shù)據(jù)對象名稱GetSaveDatName:讀取定義有數(shù)據(jù)存盤屬性的所有數(shù)據(jù)對象名稱的集合GetGroupObj:讀組對象的所有成員的ID號GetValueArray:根據(jù)數(shù)據(jù)對象ID號成組讀取多個(gè)類型相同的數(shù)據(jù)對象的當(dāng)前值SetValueArray:根據(jù)數(shù)據(jù)對象ID號成組寫入多個(gè)類型相同的數(shù)據(jù)對象的當(dāng)前值GetValueFromID:根據(jù)數(shù)據(jù)對象的ID號讀取數(shù)據(jù)對象的當(dāng)前值GetValueFromName:根據(jù)數(shù)據(jù)對象的名稱讀取數(shù)據(jù)對象的當(dāng)前值SetValueFromID:根據(jù)數(shù)據(jù)對象的ID號寫入數(shù)據(jù)對象的當(dāng)前值SetValueFromName:根據(jù)數(shù)據(jù)對象的名稱寫入數(shù)據(jù)對象的當(dāng)前值GetDeviceName:根據(jù)序列號讀取設(shè)備構(gòu)件的名稱GetDeviceState:讀取設(shè)備構(gòu)件的當(dāng)前工作狀態(tài)SetDevice:對指定的設(shè)備進(jìn)行操作GetWindowName:根據(jù)序列號讀取用戶窗口的名稱GetWindowState:讀取指定用戶窗口的狀態(tài)SetWindow:對指定的用戶窗口進(jìn)行操作GetStgyName:根據(jù)序列號讀取運(yùn)行策略的名稱SetStgy:執(zhí)行指定運(yùn)行策略DelAlmDat:刪除數(shù)據(jù)對象對應(yīng)的報(bào)警存儲數(shù)據(jù)。DelAllAlmDat:刪除數(shù)據(jù)對象對應(yīng)的所有報(bào)警存儲數(shù)據(jù)MoveAlmDat:轉(zhuǎn)儲數(shù)據(jù)對象所對應(yīng)的報(bào)警存盤信息SetAlmValue:設(shè)置數(shù)據(jù)對象DatName對應(yīng)的報(bào)警限值GetAlmValue:讀取數(shù)據(jù)對象的報(bào)警限值DelSaveDat:刪除數(shù)據(jù)對象對應(yīng)的存盤數(shù)據(jù)DelAllSaveDat:刪除數(shù)據(jù)對象對應(yīng)的所有存盤數(shù)據(jù)ChangeSaveDat:改變數(shù)據(jù)對象所對應(yīng)的存盤數(shù)據(jù)的存盤間隔MoveSaaveDaat:轉(zhuǎn)儲儲數(shù)據(jù)對象象所對應(yīng)的的存盤數(shù)據(jù)據(jù)SaveDaata:把把數(shù)據(jù)對象象對應(yīng)的當(dāng)當(dāng)前值存入入存盤數(shù)據(jù)據(jù)庫中SaveDaataInnit:把把數(shù)據(jù)對象象的當(dāng)前值值作為初試試值存入組組態(tài)結(jié)果數(shù)數(shù)據(jù)中作為為初試值1.5MMCGS存存盤服務(wù)對對象MCGS提供供有一個(gè)存存盤服務(wù)對對象,用于于設(shè)備驅(qū)動動構(gòu)件和功功能構(gòu)件保保存構(gòu)件內(nèi)內(nèi)部需要保保存的數(shù)據(jù)據(jù)。在構(gòu)件件中,通過過操作該對對象的方法法來保存和和讀取數(shù)據(jù)據(jù),而數(shù)據(jù)據(jù)具體放在在什么地方方由MCGGS來管理理(MCGGS把這些些數(shù)據(jù)和構(gòu)構(gòu)件的其它它屬性一起起保存在組組態(tài)結(jié)果數(shù)數(shù)據(jù)庫中)。注注意:MCCGS把存存盤服務(wù)對對象作為一一個(gè)參數(shù)通通過構(gòu)件的的接口傳送送到設(shè)備驅(qū)驅(qū)動構(gòu)件和和功能構(gòu)件件內(nèi),供構(gòu)構(gòu)件保存數(shù)數(shù)據(jù)時(shí)使用用。下面詳詳細(xì)列出存存盤服務(wù)對對象所提供供方法:方法:SettStarrtPoss方法用途:設(shè)設(shè)置存儲數(shù)數(shù)據(jù)的操作作方式。使用范圍:可可用于組態(tài)態(tài)環(huán)境和運(yùn)運(yùn)行環(huán)境。語法形式:SSetSttartPPos(ByvaalFllagaasLoong))asLongg返回值::=0:調(diào)用用正常,<<>0:調(diào)調(diào)用不正常常。參數(shù)說明:FFlag,長長整型,操操作標(biāo)志,具具體含義如如下:=0:設(shè)置對對數(shù)據(jù)的操操作為讀模模式,使得得GetDDat從起起始位置開開始,順序序讀取數(shù)據(jù)據(jù);=1:設(shè)置對對數(shù)據(jù)的操操作為寫模模式,使得得PutDDat從起起始位置開開始,順序序把數(shù)據(jù)存存入。方法:GettDat方法用途:讀讀取存儲在在MCGSS內(nèi)的數(shù)據(jù)據(jù)。使用范圍:可可用于組態(tài)態(tài)環(huán)境和運(yùn)運(yùn)行環(huán)境。語法形式:GGetDaat(VValueeasVariiant)assLonng返回值::=0:調(diào)用用正常,<<>0:調(diào)調(diào)用不正常常。參數(shù)說明:VValuee,Variiant型型,返回讀讀取的值,也也可以使用用具體的數(shù)數(shù)據(jù)類型和和數(shù)組來返返回?cái)?shù)據(jù)。方法:PuttDat方法用途:把把數(shù)據(jù)存入入到MCGGS內(nèi)。使用范圍:可可用于組態(tài)態(tài)環(huán)境和運(yùn)運(yùn)行環(huán)境。語法形式:PPutDaat(VValueeasVariiant)assLonng返回值::=0:調(diào)用用正常,<<>0:調(diào)調(diào)用不正常常。參數(shù)說明:VValuee,Variiant型型,要存入入的值,也也可以使用用具體的數(shù)數(shù)據(jù)類型和和數(shù)組來存存入數(shù)據(jù)。MCGS存盤盤服務(wù)對象象使得在設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件和功能能構(gòu)件中,能能使用“流化”的方式來來編程實(shí)現(xiàn)現(xiàn)保存和讀讀取存盤數(shù)數(shù)據(jù),GeetDatt和PutDDat的使使用一定要要配對。如如在某接口口中編寫的的保存數(shù)據(jù)據(jù)代碼如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos11SaveObbj.PuutDattISaveObbj.PuutDattjSaveObbj.PuutDattmsggSaveObbj.PuutDattDatt則對應(yīng)的讀取取數(shù)據(jù)的代代碼應(yīng)如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos00SaveObbj.GeetDattISaveObbj.GeetDattjSaveObbj.GeetDattmsggSaveObbj.GeetDattDatt1.6通過過OLE自動動化和其它它應(yīng)用程序序交互MCGS組態(tài)態(tài)軟件本身身的自動化化功能可以以幫助用戶戶在其它應(yīng)應(yīng)用程序中中很方便地地操縱MCCGS組態(tài)態(tài)軟件的運(yùn)運(yùn)行。比如如說,用戶戶可以在一一個(gè)程序里里指揮MCCGS運(yùn)行行環(huán)境打開開某個(gè)窗口口、執(zhí)行某某個(gè)策略、或或者向某個(gè)個(gè)設(shè)備發(fā)出出命令等等等。基本上上,在MCCGS組態(tài)態(tài)軟件中用用戶腳本程程序可以完完成的功能能也都可以以通過MCCGS組態(tài)態(tài)軟件的自自動化功能能來完成。MCGS把其其核心作為為一個(gè)對象象包裝起來來,把MCCGS的大大多數(shù)功能能作為對象象的屬性和和方法暴露露出來,使使其它的應(yīng)應(yīng)用程序通通過OLEE自動化來來操作MCCGS,在在VisuualBBaiscc、Exceel、Acceess和、Dellphi中中都可以通通過OLEE自動化來來取得MCCGS實(shí)時(shí)時(shí)數(shù)據(jù)庫對對象,編程程操作MCCGS提供供的屬性和和方法。在VisuaalBaasic中中操作MCCGS假定MCGSS運(yùn)行環(huán)境境正在運(yùn)行行一個(gè)工程程,且該工工程有200個(gè)數(shù)值型型數(shù)據(jù)對象象,其名稱稱為Datt01到Dat220。要求求用VB編制一一個(gè)應(yīng)用程程序,該程程序的界面面如下圖所所示,按“從MCGSS讀數(shù)據(jù)”按鈕時(shí),能能把MCGGS中Dat001到Dat110的值讀讀回顯示在在左列文本本框內(nèi),按按“向MCGSS寫數(shù)據(jù)”按鈕時(shí),能能把右列文文本框內(nèi)輸輸入的數(shù)據(jù)據(jù)寫到MCCGS的Dat111到Dat220數(shù)據(jù)對對象中。DimDaatObjjAsObjeectPrivatteSuubFoorm_LLoad(()OnEErrorrRessumeNexttSetDatOObj==GettObjeect(,,"MccgsRuun.DaataCeentree")IfEErrTThenMMsgBoox(""請先啟動動MCGSS運(yùn)行環(huán)境境!")EEndEndIfEndSuubPrivatteSuubCmmd_Reead_CClickk()DimmsgAsSStrinng,tttAssVarrianttFori=1Too10msg="DDat"+Foormatt$(i,,"000")DatOObj.GGetVaalueFFormNNamemsg,,ttTxt((i)==Forrmat$$(tt))NexttiEndSuubPrivatteSuubCmmd_Wiirte__Clicck()DimmsgAsSStrinng,tttAssVarrianttFori=1Too10msg="DDat"+Foormatt$(i,,"000")tt==Vall(Txtt(i++10)))DatOObj.SSetVaalueFFormNNamemsg,,ttNexttiEndSuub在Assesss、Exceel中都有有對應(yīng)的VVB程序可可以編程,實(shí)實(shí)現(xiàn)對MCCGS的各各種操作,其其方法和在在VisuualBBasicc中基本相相同,可參參考上面的的代碼進(jìn)行行。1.7通通過DDEE和其它應(yīng)應(yīng)用程序交交互MCGS提供供了動態(tài)數(shù)數(shù)據(jù)交換((DDE))方式和其其它應(yīng)用程程序進(jìn)行數(shù)數(shù)據(jù)交換,不不同于OLLE自動化化操作,DDDE方式式只能傳遞遞數(shù)據(jù),不不能直接對對MCGSS進(jìn)行操作作,而且DDDE方式式數(shù)據(jù)傳遞遞的速度較較慢,可靠靠性也不如如OLE,建建議采用OOLE來代代替DDEE。下面舉例說明明如何在MMCGS和和Exceel中建立立DDE連接接,要求在在Exceel表單Sheeet1第第1行到第100行的第一一列顯示MMCGS數(shù)數(shù)據(jù)對象DDat011到Dat110的值,把把表單Shheet11的第1行到第100行的第二二列輸入的的值送到MMCGS數(shù)數(shù)據(jù)對象DDat111到Dat220中。要要使用DDDE和其它它應(yīng)用程序序進(jìn)行交互互,首先應(yīng)應(yīng)在MCGGS中進(jìn)行行一些定義義工作。在在MCGSS組態(tài)環(huán)境境的“工具”菜單中選選取“DDE連接接管理”菜單項(xiàng),彈彈出如下窗窗口:在DDE連接接管理窗口口中,把DDat011到Dat110設(shè)置為為DDE輸出出(選中各各數(shù)據(jù)對象象對應(yīng)的DDDE輸出出選項(xiàng)框);;把Datt11到Dat220設(shè)置為為DDE輸入入,同時(shí)對對服務(wù)節(jié)點(diǎn)點(diǎn)進(jìn)行如下下配置:按“服務(wù)節(jié)點(diǎn)點(diǎn)配置”按鈕,彈彈出如下配配置窗口按“增加”按按鈕,彈出出如下配置置窗口,把把服務(wù)節(jié)點(diǎn)點(diǎn)名設(shè)為“Exceel表單”,把服務(wù)務(wù)名設(shè)為“Exceel”,主題名名設(shè)為“Sheeet1”(當(dāng)把Exccel應(yīng)用用軟件作為為DDE服務(wù)務(wù)器時(shí),服服務(wù)名永遠(yuǎn)遠(yuǎn)為“Exceel”,主題名名為對應(yīng)表表單--SSheett的名稱)配置好服務(wù)器器節(jié)點(diǎn)后,把把Dat111到Dat220的連接接節(jié)點(diǎn)都設(shè)設(shè)為“Exceel表單”,連接項(xiàng)項(xiàng)目分別設(shè)設(shè)為R1CC2到R10CC2。運(yùn)行Exceel,在表表單Sheeet1的的R1C11到R10CC1中輸入入McgssRun||DataaCenttre.DDat011到McgssRun||DataaCenttre.DDat100,這樣就就完成了所所有的DDDE連接設(shè)設(shè)置工作。當(dāng)當(dāng)進(jìn)入MCCGS運(yùn)行行環(huán)境后,MCGS數(shù)據(jù)對象Dat01到Dat10的值就顯示在Excel的表單Sheet1的第一列中,同時(shí),當(dāng)改變表單Sheet1的第二列值時(shí),MCGS中數(shù)據(jù)對象Dat11到Dat20的值也隨之而改變。1.8直直接操作MMCGS的的存盤數(shù)據(jù)據(jù)庫MCGS運(yùn)行行時(shí)的存盤盤數(shù)據(jù)是保保存在標(biāo)準(zhǔn)準(zhǔn)Acceess7..0數(shù)據(jù)庫庫中,所有有報(bào)警數(shù)據(jù)據(jù)信息對應(yīng)應(yīng)存盤數(shù)據(jù)據(jù)表名為MMCGS__AlarrmInffo,MCGSS組對象對對應(yīng)的存盤盤數(shù)據(jù)表名名為:組對對象名稱++“_MCGGS”。用戶可可以在外部部應(yīng)用程序序中直接對對MCGSS的存盤數(shù)數(shù)據(jù)庫進(jìn)行行操作,編編制獨(dú)立的的后處理軟軟件。MCGS的腳腳本程序中中有一個(gè)名名為“Shelll”的內(nèi)部函函數(shù),可以以啟動一個(gè)個(gè)外部應(yīng)用用程序。通通過在MCCGS腳本本程序中使使用Sheell函數(shù)數(shù),可以使使外部應(yīng)用用程序和MMCGS看看起來是一一個(gè)整體。第二章開開發(fā)MCGGS功能構(gòu)件MCGS提供供了一套運(yùn)運(yùn)行策略機(jī)機(jī)制,使用用戶能根據(jù)據(jù)實(shí)際應(yīng)用用的需要,對對工作流程程進(jìn)行精確確的控制。運(yùn)運(yùn)行策略由由不同的策策略塊組成成,而策略略塊又由多多個(gè)策略行行組成,每每個(gè)策略行行分為條件件和功能兩兩個(gè)部分,以以實(shí)現(xiàn)“在什么條條件下執(zhí)行行什么功能能”的機(jī)制。MMCGS提提供了大多多數(shù)應(yīng)用所所必須的功功能構(gòu)件,同同時(shí)也提供供了一套開開放的可擴(kuò)擴(kuò)充接口,允允許用戶能能根據(jù)自己己的需要,定定制特定的的功能構(gòu)件件,達(dá)到擴(kuò)擴(kuò)充MCGGS功能的的要求。本章下面各節(jié)節(jié)將詳細(xì)介介紹開發(fā)MMCGS功功能構(gòu)件的的方法和步步驟,請?jiān)谠陂_始之前前,先安裝裝VisuualBBasicc6.0(中文文專業(yè)版或或企業(yè)版)),然后安安裝MCGGS高級開開發(fā)工具包包,建議你你按下面各各節(jié)介紹的的方法和步步驟來一步步一步地學(xué)學(xué)習(xí)開發(fā)MMCGS功功能構(gòu)件。2.1功功能構(gòu)件的的實(shí)現(xiàn)方法法MCGS用AActivveDLLL構(gòu)件的的方式來實(shí)實(shí)現(xiàn)功能構(gòu)構(gòu)件,通過規(guī)范范的OLEE接口掛接接到MCGGS中,使其構(gòu)成成一個(gè)整體體。由于功功能構(gòu)件和和MCGSS運(yùn)行在同同一個(gè)進(jìn)程程內(nèi),故功功能構(gòu)件的的運(yùn)行速度度快,可靠靠性高,即即使構(gòu)件本本身有問題題,也不會會影響到MMCGS的的可靠運(yùn)行行。同時(shí),OLE是一個(gè)可擴(kuò)充的開放標(biāo)準(zhǔn),用于實(shí)現(xiàn)不同軟件之間的相互操作,而不管軟件本身是使用什么編程語言。因此,只要遵守MCGS的接口規(guī)范,可以使用VB、VC、Delphi等語言來編制MCGS的功能構(gòu)件。鑒于VisualBasic通用性和簡單性,建議使用VB來開發(fā)MCGS的設(shè)備驅(qū)動程序,本書也只講解使用VB進(jìn)行開發(fā)的技術(shù)問題。由于VB6.0以上版本是以二進(jìn)制碼來編譯執(zhí)行程序,其運(yùn)行速度已接近或超過VC,完全能滿足功能構(gòu)件所需的速度要求。MCGS提供的大多數(shù)功能構(gòu)件就是使用VB來編程的,開發(fā)工具包中提供了部分功能構(gòu)件的源代碼,可在其基礎(chǔ)上修改,實(shí)現(xiàn)比MCGS功能更完善的功能構(gòu)件。2.2功功能構(gòu)件接接口規(guī)范MCGS設(shè)備備構(gòu)件的實(shí)實(shí)現(xiàn)方法和和原理與標(biāo)標(biāo)準(zhǔn)VB的ActiiveDLLL完全一一致,但MMCGS規(guī)規(guī)定了一套套接口規(guī)范范,只有遵遵守這些接接口規(guī)范的的ActiiveDLLL才能用用作MCGGS的功能能構(gòu)件。MMCGS功功能構(gòu)件必必須具有如如下4個(gè)接口::接口:SvrrMenuuCommmand 組態(tài)時(shí)調(diào)調(diào)用,執(zhí)行行菜單命令令接口:SvrrStgyySetOOperaator 組態(tài)時(shí)調(diào)調(diào)用,設(shè)置置構(gòu)件的屬屬性接口:SvrrStgyyRunOOperaator運(yùn)行時(shí)調(diào)調(diào)用,執(zhí)行行構(gòu)件的功功能接口:SvrrChecck 組態(tài)中,編編譯查錯(cuò)時(shí)時(shí)時(shí)調(diào)用開發(fā)MCGSS功能構(gòu)件件的過程,實(shí)實(shí)際上就是是根據(jù)功能能構(gòu)件的特特性和含義義來完成44個(gè)接口功功能的編程程過程。下下面詳細(xì)講講述各個(gè)接接口的含義義和用法::接口:SvrrMenuuCommmand接口作用:本本接口用于于在MCGGS組態(tài)環(huán)環(huán)境中增加加一個(gè)用戶戶自定義的的菜單項(xiàng)。本本接口在組組態(tài)環(huán)境裝裝載時(shí)被MMCGS組組態(tài)環(huán)境調(diào)調(diào)用,檢查查是否有有有對應(yīng)的菜菜單要求,如如有,在MMCGS的的“工具“菜單中增增加一菜單單項(xiàng)。組態(tài)態(tài)環(huán)境運(yùn)行行時(shí),當(dāng)用用戶選取增增加的菜單單項(xiàng)時(shí),也也調(diào)用本接接口。語法形式:SSvrMeenuCoommannd(sttrNammeAssStrring,,bQuueryAsLLong,,DattObjAsOObjecct)AAsLoong返回值::=0,調(diào)用用成功;==1調(diào)用失失敗。參數(shù)說明:sstrNaame,返返回用于顯顯示在“工具“菜單中的的菜單項(xiàng)的的名稱;如如為空,表表示本功能能構(gòu)件不增增加菜單。bQueryy,MCGSS初試化時(shí)時(shí)調(diào)用本接接口時(shí),把把本參數(shù)的的值設(shè)置為為1,在菜單單中調(diào)用本本接口時(shí),把把本參數(shù)的的值設(shè)置為為0;DatObjj,MCGSS實(shí)時(shí)數(shù)據(jù)據(jù)庫數(shù)據(jù)對對象。接口:SvrrStgyySetOOperaator接口作用:本本接口的作作用是讀取取功能構(gòu)件件的類型名名稱、注釋釋和所對應(yīng)應(yīng)的圖標(biāo)資資源的IDD號以及組組態(tài)時(shí)設(shè)置置構(gòu)件的屬屬性時(shí)調(diào)用用。語法形式:SSvrSttgySeetOpeeratoor(sttrNammeAssStrring,,strrNoteesAssStrring,,iIcconAAsLoong,DatOObjAAsObbjectt,SaaveObbjAssObjject,,bQuueryAsLLong))AsLongg返回值::=0,調(diào)用用成功;==1調(diào)用失失敗。參數(shù)說明:sstrNaame,返返回功能構(gòu)構(gòu)件的類型型名,顯示示在功能構(gòu)構(gòu)件列表框框中;strNottes,返返回功能構(gòu)構(gòu)件的注釋釋,顯示在在策略行的的右邊;iIcon,返回功功能構(gòu)件所所對應(yīng)的圖圖標(biāo)資源的的ID號,該該圖標(biāo)顯示示在策略行行的功能構(gòu)構(gòu)件塊上。如如ID=00,表示沒沒有對應(yīng)的的圖標(biāo),MMCGS顯顯示缺省圖圖標(biāo);bQueryy,MCGSS初試化時(shí)時(shí)調(diào)用本接接口時(shí),把把本參數(shù)的的值設(shè)置為為1,在設(shè)置置構(gòu)件屬性性調(diào)用本接接口時(shí),把把本參數(shù)的的值設(shè)置為為0;DatObjj,MCGSS實(shí)時(shí)數(shù)據(jù)據(jù)庫數(shù)據(jù)對對象。SavObjj,存盤盤服務(wù)對象象,接口程程序中通過過該對象來來保存和讀讀取數(shù)據(jù)。接口:SvrrStgyyRunOOperaator接口作用:本本接口在運(yùn)運(yùn)行環(huán)境中中,當(dāng)需要要執(zhí)行本構(gòu)構(gòu)件的功能能時(shí)調(diào)用。語法形式:SSvrSttgyRuunOpeeratoor(DaatObjjAsObjeect,SaveeObjAsOObjecct)AAsLoong返回值::=0,調(diào)用用成功;==1調(diào)用失失敗。參數(shù)說明:DDatObbj,MCGSS實(shí)時(shí)數(shù)據(jù)據(jù)庫數(shù)據(jù)對對象;SavObjj,存盤盤服務(wù)對象象,接口程程序中通過過該對象來來保存和讀讀取數(shù)據(jù)。接口:SvrrChecck接口作用:本本接口在組組態(tài)環(huán)境中中,當(dāng)MCCGS進(jìn)行行查錯(cuò)和編編譯調(diào)用。語法形式:SSvrChheck((DatOObjAAsObbjectt,ChheckFFlagAsLLong))AsLongg返回值::=0,調(diào)用用成功;==1調(diào)用失失敗。參數(shù)說明:DDatObbj,MCGSS實(shí)時(shí)數(shù)據(jù)據(jù)庫數(shù)據(jù)對對象;CheckFFlag,標(biāo)標(biāo)志位。2.3利利用開發(fā)向向?qū)煽蚩蚣躆CGS提供供了一個(gè)高高級開發(fā)工工具包,能能快速為用用戶生成功功能構(gòu)件的的源程序框框架,在此此基礎(chǔ)上編編程既快速速,可減少少出錯(cuò)的可可能性。請請按如下步步驟來生成成功能構(gòu)件件的框架::確保MCGSS的高級開開發(fā)工具包包已安裝正正確;啟動VisuualBBasicc6.0(中文文專業(yè)版或或企業(yè)版);;選擇“外接程程序”菜單,單單擊該菜單單下的MCCGS開發(fā)發(fā)向?qū)Р藛螁雾?xiàng);彈出出開發(fā)向?qū)?dǎo)窗口后,按“下一步”按鈕,彈出如下圖所示窗口:選擇擴(kuò)展構(gòu)件件的類型為為運(yùn)行策略略功能構(gòu)件件,按“下一步”按鈕,彈彈出如下圖圖所示的窗窗口:設(shè)置構(gòu)件工程程名為“MyDLLL”,構(gòu)件類類型名為“我的構(gòu)件”。構(gòu)件工工程名為功功能構(gòu)件在在VB下源程程序的工程程名,編譯譯生成的AActivveDLLL構(gòu)件的的名稱為MMyDLLL.DLLL。構(gòu)件類類型名用于于標(biāo)識對應(yīng)應(yīng)的構(gòu)件,最最后可顯示示在MCGGS的設(shè)備備工具箱中中。按“下一步”按鈕,出出現(xiàn)如下圖圖所示的窗窗口,設(shè)置置生成目錄錄和輸出目目錄都為“D:\AAddInn”,使開發(fā)發(fā)向?qū)ё詣觿由傻脑丛闯绦蚝途幘幾g生成的的構(gòu)件都位位于同一目目錄下。在在一此按“下一步”按鈕,然然后按“完成”按鈕,MCCGS即開開始自動生生成功能構(gòu)構(gòu)件的源程程序框架。開發(fā)向?qū)瓿沙晒ぷ骱螅宰詣由梢灰粋€(gè)名位“MyDLLL”的工程組組,如下圖圖所示,在在VB的工程程組窗口中中可以看到到該工程組組包含如下下二個(gè)VBB工程:MyDLL工工程對應(yīng)于于設(shè)備驅(qū)動動構(gòu)件,該該工程包含含一個(gè)類模模塊和一個(gè)個(gè)程序模塊塊。類模塊塊AddIInObjj完成了功功能構(gòu)件所所需的所有有接口。TestDLLL工程只只用于在VVB環(huán)境下下對功能構(gòu)構(gòu)件進(jìn)行調(diào)調(diào)試,該工工程包含兩兩個(gè)窗體和和兩個(gè)程序序模塊,在在實(shí)際編程程時(shí),無需需對該工程程進(jìn)行任何何修改工作作。MCGS開發(fā)發(fā)向?qū)沙傻乃性丛闯绦虼a碼和編譯生生成的輸出出文件都放放在D:\\AddIIn目錄下下。注意:MCGGS開發(fā)向向?qū)е皇巧蓸?gòu)件的的源程序框框架,沒有有任何具體體的功能,要要完成特定定的功能,還還需要在此此基礎(chǔ)上,針針對具體要要求進(jìn)行進(jìn)進(jìn)一步的編編程和調(diào)試試工作。2.4利利用樣例程程序移植MCGS把部部分功能驅(qū)驅(qū)動構(gòu)件的的源程序代代碼都隨系系統(tǒng)一起提提供,在實(shí)實(shí)際應(yīng)用中中,開發(fā)定定制自己的的功能構(gòu)件件的最好方方法就是在在MCGSS提供的源源程序代碼碼的基礎(chǔ)上上進(jìn)行。由由于OLEE技術(shù)本身身的復(fù)雜性性,建議按按照本節(jié)給給定的方法法和步驟來來進(jìn)行你的的開發(fā)工作作,避免產(chǎn)產(chǎn)生不可預(yù)預(yù)料的錯(cuò)誤誤。如果你你能嚴(yán)格按按照本節(jié)的的步驟進(jìn)行行開發(fā)工作作,則可省省去對AcctiveeDLLL編程技術(shù)術(shù)及有關(guān)概概念的學(xué)習(xí)習(xí)和了解,直直接集中精精力實(shí)現(xiàn)功功能構(gòu)件的的功能。從MCGS高高級開發(fā)工工具包中找找到你所需需的樣例源源程序代碼碼,假定安安裝開發(fā)工工具包時(shí)所所選的安裝裝目錄為DD:\Mccgssddk,則源源程序位于于D:\MMcgsssdk\ssamplles\AAddInn目錄下,而而且按功能能構(gòu)件的名名稱來命名名對應(yīng)的目目錄,如::報(bào)警數(shù)據(jù)據(jù)處理構(gòu)件件源代碼的的目錄為AAlmAdddIn。為為方便說明明,下面各各步驟中假假定選取報(bào)報(bào)警數(shù)據(jù)處處理構(gòu)件為為樣例程序序。建立一個(gè)新目目錄:D::\MyDDLL,把把ALmAAddInn目錄內(nèi)的的所有內(nèi)容容拷貝到DD:\MyyDLL目目錄下。新新功能構(gòu)件件的源程序序?qū)⑽挥诒颈灸夸浵?。每個(gè)功能構(gòu)件件源代碼中中都一個(gè)后后綴為“.vbgg”的工程組組文件,本本例中為TTestDDLL.vvbg。啟啟動VissualBasiic6.0,打開開該文件。如如下圖所示示,在VBB工程組窗窗口中,包包含有二個(gè)個(gè)工程:AAlmAdddIn、TesstDLLL。先在工程組窗窗口中選中中工程AllmAdddIn(被被選中的工工程下面顯顯示為藍(lán)條條),用鼠鼠標(biāo)右鍵彈彈出下拉菜菜單或從“工程”菜單中,單單擊“AlmAAddInn屬性”,打開該該工程的屬屬性設(shè)置窗窗口。如下下圖所示,把“通用”和“生成”兩個(gè)屬性頁中的AlmAddIn改為MyDLL(修改工程名稱)。在“部件”屬屬性頁中,把“版本兼容”中的選項(xiàng)設(shè)置成“不兼容”。修改完成后,按“確認(rèn)”按鈕返回。注意:對工程屬性頁中的其它屬性不要做任何修改。在VB的“文文件”菜單中,單單擊“AlmAAddInn.vbpp另存為”菜單,把把工程另存存為MyLLL.vbbp。在VB的“文件”菜單中,單單擊“生成AlmmAddIIn.dlll”菜單,彈彈出“生成工程”窗口,對對工程繼續(xù)續(xù)編譯,把把要生成的的文件名改改為“MyDLLL.dlll”,按“確定”按鈕開始始編譯。編譯完成后,打打開工程MMyDLLL的屬性窗窗口,如下下圖所示,在“部件”屬性頁中,把“版本兼容”中的選項(xiàng)設(shè)置成“二進(jìn)制兼容”,同時(shí)把其下面的輸入框中的內(nèi)容由AlmAddIn.dll改為MyDLL.dll。按“確認(rèn)”按鈕返回打開類模塊AAddInnObj的的編程窗口口,對接口SvvrStggySettOperratorr進(jìn)行如下下修改:strNamme=”我的功能能構(gòu)件”strNottes=”我的功能能構(gòu)件”選中工程TeestDLLL,在VB“工程“菜單中,單單擊“引用”菜單項(xiàng),把把工程TeestDLLL對于AlmmAddIIn的引用用取消,改改為對工程程MyDLLL的引用用。上述步驟完成成后,把整整個(gè)工程組組存盤,就就完成了開開始移植前前所有必須須的準(zhǔn)備工工作。接下下來,你就就可以在源源程序的基基礎(chǔ)上進(jìn)行行修改,實(shí)實(shí)現(xiàn)你自己己特定功能能的設(shè)備構(gòu)構(gòu)件。對通訊子設(shè)備備,如歐姆姆龍PLCC對應(yīng)的設(shè)設(shè)備驅(qū)動程程序進(jìn)行移移植時(shí),基基本方法和和步驟上面面所述相同同。2.5測測試和掛接接功能構(gòu)件件MCGS為功功能構(gòu)件提提供了一套套在VB環(huán)境下下進(jìn)行在線線調(diào)試的運(yùn)運(yùn)行機(jī)制,使使用戶能隨隨時(shí)對所做做的修改進(jìn)進(jìn)行測試調(diào)調(diào)試、檢驗(yàn)驗(yàn)其正確性性,其簡單單程度和方方便性是其其它組態(tài)軟軟件系統(tǒng)所所無法比擬擬的。MCCGS的這這一機(jī)制,使使得大多數(shù)數(shù)普通工程程用戶都能能動手編制制自己的功功能構(gòu)件。使用MCGSS開發(fā)向?qū)?dǎo)生成的程程序框架或或系統(tǒng)提供供的樣例源源代碼中,都都包含有一一個(gè)用于在在VB下進(jìn)行行測試的工工程--TTestDDLL,通通過該工程程模擬MCCGS的工工作狀態(tài),直直接調(diào)用功功能構(gòu)件的的接口函數(shù)數(shù),從而做做到對構(gòu)件件的每個(gè)接接口函數(shù)在在VB源代碼碼一級進(jìn)行行測試,實(shí)實(shí)際應(yīng)用中中不要對該該工程進(jìn)行行任何修改改工作。下面詳細(xì)介紹紹測試和掛掛接設(shè)備驅(qū)驅(qū)動構(gòu)件的的方法和步步驟:按照前節(jié)所講講述的步驟驟,用開發(fā)發(fā)向?qū)沙梢粋€(gè)設(shè)備備驅(qū)動構(gòu)件件的框架,生成的源程序所在目錄為--D:\AddIn,構(gòu)件工程名為--MyDLL,構(gòu)件的類型名為--我的功能構(gòu)件。完成自動生成后,在VB的工程組窗口中會看到二個(gè)工程:MyDLL和TestDLL。啟動MCGSS的組態(tài)環(huán)環(huán)境,并打打開或新建建一個(gè)MCCGS工程程。注意::進(jìn)行在線線調(diào)試時(shí),必必須啟動MMCGS,且且要保證MMCGS中中有一個(gè)打打開的工程程,否則,在在VB中無法法進(jìn)行在線線調(diào)式。在VB環(huán)境下下,按F55鍵運(yùn)行工工程組,出出現(xiàn)如下圖圖所示的調(diào)調(diào)試窗口,該該窗口中的的三個(gè)按鈕鈕分別用于于調(diào)用組態(tài)態(tài)環(huán)境接口口和運(yùn)行環(huán)環(huán)境接口和和菜單調(diào)用用接口;中中間的輸入入框用來顯顯示功能構(gòu)構(gòu)件的類型型名稱。按不同的按鈕鈕可對功能能構(gòu)件的接接口進(jìn)行測測試,根據(jù)據(jù)構(gòu)件所需需的功能,不不斷進(jìn)行調(diào)調(diào)試測試,直直到完成所所有工作和和沒有錯(cuò)誤誤產(chǎn)生為止止。完成所有的編編程調(diào)試工工作以后,把工程MyyDLL重重新編譯一一遍,生成最后后可以使用用的Acttivedll文文件:MyDLLL.dlll,把這個(gè)文文件拷貝到到目錄D::\MCGGS\Prrograam\AddIIns下(假定MCGGS系統(tǒng)安安裝時(shí)的目目錄為D::\Mcggs。注意意:編譯和和拷貝功能能構(gòu)件的文文件時(shí),一一定要先退退出MCGGS系統(tǒng)),同同時(shí)要修改改AddIIns目錄錄下的AdddInss.ini文件,在在該文件中中增加一行行:MyDDLL.ddll。完完成上述步步驟后,就就完成了用用戶功能構(gòu)構(gòu)件的編制制、調(diào)試和和掛接工作作,下面介介紹如何在在MCGSS系統(tǒng)下使使用定制的的功能構(gòu)件件。啟動MCGSS組態(tài)環(huán)境境,在“工具”菜單下,將將會顯示出出“我的菜單單項(xiàng)”一項(xiàng),選選取該菜單單項(xiàng),MCCGS將調(diào)調(diào)用功能構(gòu)構(gòu)件的菜單單接口,顯顯示對應(yīng)的的窗口(如如不需要菜菜單項(xiàng),則則應(yīng)把功能能構(gòu)件的SSvrMeenuCoommannd接口中中的所有代代碼去掉)。打開一個(gè)運(yùn)行行策略的組組態(tài)窗口,在在運(yùn)行策略略功能構(gòu)件件箱內(nèi),將將回顯示出出“我的功能能構(gòu)件”一項(xiàng)。把把該構(gòu)件選選入到策略略行中,用用鼠標(biāo)雙擊擊該構(gòu)件,MCGS調(diào)用構(gòu)件的組態(tài)環(huán)境接口,以便用戶在組態(tài)環(huán)境中對構(gòu)件的屬性進(jìn)行設(shè)置。進(jìn)入運(yùn)行環(huán)境境后,當(dāng)組組態(tài)環(huán)境組組態(tài)的對應(yīng)應(yīng)策略行被被執(zhí)行時(shí),MCGS調(diào)用構(gòu)件的運(yùn)行接口,執(zhí)行構(gòu)件所實(shí)現(xiàn)的功能。第三章開開發(fā)MCGGS設(shè)備驅(qū)驅(qū)動雖然MCGSS提供了大大多數(shù)常用用設(shè)備的驅(qū)驅(qū)動程序,但但在實(shí)際應(yīng)應(yīng)用中,或或因?yàn)樗糜迷O(shè)備的特特殊性、或或因?yàn)閷?shí)際際工程的需需要,MCCGS所提提供的設(shè)備備驅(qū)動程序序總會有些些不盡人意意。為解決決這些問題題,MCGGS提供了了一套規(guī)范范的設(shè)備驅(qū)驅(qū)動程序接接口,允許許用戶根據(jù)據(jù)自己的需需要來定制制設(shè)備驅(qū)動動程序。在學(xué)習(xí)完本章章之前,你你可能會覺覺得開發(fā)設(shè)設(shè)備驅(qū)動程程序是件難難事,而編編制能在WWin955和WinNNT下能同同時(shí)運(yùn)行的的設(shè)備驅(qū)動動程序更是是不可思議議。MCGGS設(shè)備驅(qū)驅(qū)動的開發(fā)發(fā)既不需用用復(fù)雜的匯匯編語言,也也不需用難難懂的C語言,而而只須使用用簡單易用用、大多數(shù)數(shù)工程人員員都會使用用的VissualBasiic。MCGSS把和操作作系統(tǒng)底層層打交道的的內(nèi)容全部部包裝起來來,以函數(shù)數(shù)調(diào)用的方方式提供給給你,同時(shí)時(shí),MCGGS的高級級開發(fā)向?qū)?dǎo)能為你自自動生成設(shè)設(shè)備驅(qū)動程程序的框架架,MCGGS大多數(shù)數(shù)設(shè)備驅(qū)動動程序的源源程序代碼碼也都隨系系統(tǒng)提供給給你。只要要你會VBB,熟悉你你所使用的的硬件設(shè)備備,你就完完全可以按按照你自己己的需要來來開發(fā)定制制你自己的的設(shè)備驅(qū)動動程序。本章下面各節(jié)節(jié)將詳細(xì)介介紹開發(fā)設(shè)設(shè)備驅(qū)動程程序的方法法和步驟,請請?jiān)陂_始之之前,先安安裝VissualBasiic6.0(中文文專業(yè)版或或企業(yè)版)),然后安安裝MCGGS高級開開發(fā)工具包包,建議你你按下面各各節(jié)介紹的的方法和步步驟來一步步一步地學(xué)學(xué)習(xí)開發(fā)設(shè)設(shè)備驅(qū)動程程序。3.1設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件的實(shí)現(xiàn)現(xiàn)方法MCGS用AActivveDLLL構(gòu)件的的方式來實(shí)實(shí)現(xiàn)設(shè)備驅(qū)驅(qū)動程序,通通過規(guī)范的的OLE接口口掛接到MMCGS中中,使其構(gòu)構(gòu)成一個(gè)整整體,所以以MCGSS把設(shè)備驅(qū)驅(qū)動程序叫叫做設(shè)備驅(qū)驅(qū)動構(gòu)件。由由于設(shè)備驅(qū)驅(qū)動構(gòu)件和和MCGSS運(yùn)行在同同一個(gè)進(jìn)程程內(nèi),故設(shè)設(shè)備構(gòu)件的的運(yùn)行速度度快,可靠靠性高,不不存在傳統(tǒng)統(tǒng)DDE方式式連接設(shè)備備驅(qū)動時(shí)的的數(shù)據(jù)流通通不暢和數(shù)數(shù)據(jù)傳輸速速度慢等問問題。同時(shí)時(shí),OLEE是一個(gè)可可擴(kuò)充的開開放標(biāo)準(zhǔn),用用于實(shí)現(xiàn)不不同軟件之之間的相互互操作,而而不管軟件件本身是使使用什么編編程語言。因因此,只要要遵守MCCGS的接接口規(guī)范,可可以使用VVB、VC、Delpphi等語語言來編制制MCGSS的設(shè)備驅(qū)驅(qū)動程序。鑒鑒于VissualBasiic通用性性和簡單性性,建議使使用VB來開發(fā)發(fā)MCGSS的設(shè)備驅(qū)驅(qū)動程序,本本書也只講講解使用VVB進(jìn)行開開發(fā)的技術(shù)術(shù)問題。由由于VB6.0以上版版本是以二二進(jìn)制碼來來編譯執(zhí)行行程序,其其運(yùn)行速度度已接近或或超過VCC,完全能能滿足設(shè)備備驅(qū)動構(gòu)件件所需的速速度要求。MCGS把實(shí)實(shí)際外部設(shè)設(shè)備分為獨(dú)獨(dú)立的設(shè)備備、父設(shè)備備和子設(shè)備備三類,獨(dú)獨(dú)立的設(shè)備備是可獨(dú)立立工作、完完成特定數(shù)數(shù)據(jù)輸入輸輸出功能的的設(shè)備,如如用于模擬擬量輸入輸輸出、數(shù)字字量輸入輸輸出的PCC接口卡等等;父設(shè)備備是本身不不直接處理理數(shù)據(jù)輸入入輸出,但但起到管理理其它設(shè)備備工作的設(shè)設(shè)備,如串串行口設(shè)備備、IDCCN-8993的通訊訊卡等;子子設(shè)備是本本身具有處處理數(shù)據(jù)輸輸入輸出的的功能,但但只有和對對應(yīng)的父設(shè)設(shè)備一起才才構(gòu)成完整整工作系統(tǒng)統(tǒng)的設(shè)備::如PLCC設(shè)備、帶帶智能通訊訊功能的儀儀器儀表等等;不同類類型的設(shè)備備的工作方方式有所不不同,其對對應(yīng)的設(shè)備備驅(qū)動程序序的處理方方法也有所所不同。本本章只重點(diǎn)點(diǎn)介紹獨(dú)立立設(shè)備(PC接口卡卡)和通訊類類子設(shè)備設(shè)設(shè)備驅(qū)動程程序的開發(fā)發(fā),如需要要進(jìn)行父設(shè)設(shè)備和其它它類型子設(shè)設(shè)備的設(shè)備備驅(qū)動程序序的開發(fā),請請和MCGGS開發(fā)小小組聯(lián)系。3.2設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件接口規(guī)規(guī)范MCGS設(shè)備備構(gòu)件的實(shí)實(shí)現(xiàn)方法和和原理與標(biāo)標(biāo)準(zhǔn)VB的ActiiveDLLL完全一一致,但MMCGS規(guī)規(guī)定了一套套接口規(guī)范范,只有遵遵守這些接接口規(guī)范的的ActiiveDLLL才能用用作MCGGS的設(shè)備備驅(qū)動構(gòu)件件。MCGGS設(shè)備驅(qū)驅(qū)動構(gòu)件必必須具有如如下5個(gè)屬性和和8個(gè)方法::屬性:DevvTypee 標(biāo)識設(shè)備備的類型屬性:DevvStylle 標(biāo)識設(shè)備備的類別屬性:DevvChannnel 標(biāo)識設(shè)備備的通道個(gè)個(gè)數(shù)屬性:DevvBaseeIO 標(biāo)識設(shè)備備所用IOO的基地址址屬性:DevvIONuumberr 標(biāo)識設(shè)備備所用IOO地址的個(gè)個(gè)數(shù)方法:GettDevNName 讀取設(shè)備備構(gòu)件類型型名稱方法:GettDevHHelp 調(diào)用設(shè)備備構(gòu)件的在在線幫助內(nèi)內(nèi)容方法:SettDevPPage 調(diào)用設(shè)備備的內(nèi)部屬屬性頁方法:IniitNewwDev 初試化設(shè)設(shè)備的初試試值方法:GettChlTType 讀取設(shè)備備構(gòu)件各通通道的數(shù)據(jù)據(jù)類型和注注釋方法:IniitDevvRun 運(yùn)行時(shí)對對設(shè)備進(jìn)行行初試化工工作方法:RunnDevCCommaand 執(zhí)行指定定的設(shè)備命命令方法:ColllecttDevDDat 定時(shí)操作作設(shè)備,采采集或輸出出數(shù)據(jù)開發(fā)MCGSS設(shè)備驅(qū)動動的過程,實(shí)實(shí)際上就是是根據(jù)設(shè)備備的特性和和含義來完完成8個(gè)方法功功能的編程程過程。下下面詳細(xì)講講述各個(gè)接接口的含義義和用法::屬性接口:DDevTyype接口作用:本本接口用于于Mcgss確定設(shè)備備構(gòu)件的類類型。對獨(dú)獨(dú)立的設(shè)備備構(gòu)件固定定為0;對通訊訊子設(shè)備,固固定為1。本屬性性為只讀屬屬性。語法形式:PPubliicPrroperrtyGGetDDevTyype())AsLongg屬性接口:DDevSttyle接口作用:本本接口用于于Mcgss確定設(shè)備備構(gòu)件的類類別。對獨(dú)獨(dú)立的設(shè)備備構(gòu)件固定定為0;對通訊訊子設(shè)備,固固定為1。本屬性性為只讀屬屬性。語法形式:PPubliicPrroperrtyGGetDDevSttyle(()AssLonng屬性接口:DDevChhanneel接口作用:本本接口用于于Mcgss確定設(shè)備備構(gòu)件通道道個(gè)數(shù)。一一般把本屬屬性設(shè)置為為只讀屬性性。語法形式:PPubliicPrroperrtyGGetDDevChhanneel()AsLLong屬性接口:DDevIOONumbber接口作用:本本接口用于于Mcgss確定設(shè)備備構(gòu)件所用用IO地址的的個(gè)數(shù)。本本屬性為只只讀屬性語法形式:PPubliicPrroperrtyGGetDDevIOONumbber())AsLongg屬性接口:DDevBaaseIOO接口作用:本本接口用于于Mcgss確定設(shè)備備構(gòu)件所用用IO基地址址。本屬性性為讀寫屬屬性,在設(shè)設(shè)備屬性頁頁中以166進(jìn)制數(shù)表表示語法形式:PPubliicDeevBasseIOAsLLong或或PubllicPPropeertyGetDevBBaseIIO()AsLLong注意:對不占占用IO地址的的設(shè)備,把把本屬性設(shè)設(shè)置為只讀讀屬性,且且屬性值為為0。方法接口:GGetDeevNamme接口作用:本本接口在組組態(tài)環(huán)境裝裝載時(shí)被MMCGS組組態(tài)環(huán)境調(diào)調(diào)用,返回回設(shè)備構(gòu)件件對應(yīng)的設(shè)設(shè)備類型名名稱,比如如“Omroon2000PLLC”等。MCGGS組態(tài)軟軟件將把這這個(gè)名稱顯顯示在設(shè)備備工具框中中。對于不不同的設(shè)備備,應(yīng)該返返回不同的的設(shè)備類型型名稱。語法形式:GGetDeevNamme()assstrinng返回值::設(shè)備類型型名稱。參數(shù)說明:無無。方法接口:IInitNNewDeev接口作用:當(dāng)當(dāng)用戶在組組態(tài)環(huán)境的的設(shè)備組態(tài)態(tài)新增加一一個(gè)設(shè)備時(shí)時(shí)調(diào)用本接接口,用于于初始化新新設(shè)備的缺缺省參數(shù)值值。語法形式:IInitNNewDeev(SaavObjjAsObjeect)asLLong返回值::=0:設(shè)備備初始化成成功,<>>0:設(shè)備備初始化失失敗。參數(shù)說明:SSavObbj,存存盤服務(wù)對對象,接口口程序中通通過該對象象來保存和和讀取數(shù)據(jù)據(jù)。方法接口:SSetDeevPagge接口作用:本本接口在組組態(tài)環(huán)境中中當(dāng)用戶要要修改設(shè)備備的內(nèi)部屬屬性時(shí)被調(diào)調(diào)用,他將將打開設(shè)置置設(shè)備構(gòu)件件內(nèi)部屬性性的對話框框,并設(shè)置置設(shè)備構(gòu)件件的屬性。語法形式:SSetDeevPagge(SaavObjjasObjeect)asLLong返回值::=0:屬性性設(shè)置有效效,要保存存,=1:屬性性設(shè)置無效效,不保存存。參數(shù)說明:SSavObbj,存存盤服務(wù)對對象,接口口程序中通通過該對象象來保存和和讀取數(shù)據(jù)據(jù)。方法接口:GGetChhlTyppe接口作用:本本接口在組組態(tài)環(huán)境中中調(diào)用,讀讀取設(shè)備通通道的數(shù)據(jù)據(jù)類型及通通道內(nèi)容說說明當(dāng)用戶戶要修改設(shè)設(shè)備的內(nèi)部部屬性時(shí)被被調(diào)用,他他將打開設(shè)設(shè)置設(shè)備構(gòu)構(gòu)件內(nèi)部屬屬性的對話話框,并設(shè)設(shè)置設(shè)備構(gòu)構(gòu)件的屬性性。語法形式:GGetChhlTyppe(DaatAssVarriantt,mssgAssVarriantt)AssLonng返回值::=0:設(shè)備備通道有效效,=1:設(shè)備備通道無效效。參數(shù)說明:DDat,長長整型數(shù)組組,標(biāo)識設(shè)設(shè)備各通道道的數(shù)據(jù)類類型和輸入入輸出類型型。=1開關(guān)型型;=2數(shù)值型型;=3字符型型;大于00表示把設(shè)設(shè)備通道的的數(shù)據(jù)采集集到MCGGS中,小小于0表示把MCCGS中的的數(shù)據(jù)輸出出到設(shè)備構(gòu)構(gòu)件中;msg,字符符型數(shù)組,標(biāo)標(biāo)識各設(shè)備備通道內(nèi)容容注釋。方法接口:IInitDDevRuun接口作用:本本接口在MMCGS運(yùn)運(yùn)行環(huán)境啟啟動設(shè)備構(gòu)構(gòu)件開始采采集之前被被調(diào)用一次次,用于對對設(shè)備硬件件進(jìn)行初始始化工作。語法形式:IInitDDevRuun(SaavObjjAsObjeect,DatOObjAAsObbjectt)asslonng返回值::=0:設(shè)備備工作正常常,=11:設(shè)備工工作不正常常,MCGGS運(yùn)行環(huán)環(huán)境將彈出出對話框,提提示用戶設(shè)設(shè)備出錯(cuò)。參數(shù)說明:SSavObbj,存存盤服務(wù)對對象,接口口程序中通通過該對象象來保存和和讀取數(shù)據(jù)據(jù)。DataObbj,實(shí)時(shí)時(shí)數(shù)據(jù)庫對對象,接口口程序中通通過該對象象來操作實(shí)實(shí)時(shí)數(shù)據(jù)庫庫對象的屬屬性和方法法。方法接口:CColleectDeevDatt接口作用:本本接口由MMCGS運(yùn)運(yùn)行環(huán)境在在每一次設(shè)設(shè)備采集中中調(diào)用,運(yùn)運(yùn)行時(shí),按按設(shè)定的時(shí)時(shí)間周期定定時(shí)調(diào)用本本方法采集集數(shù)據(jù),并并送入實(shí)時(shí)時(shí)數(shù)據(jù)庫,或或把實(shí)時(shí)數(shù)數(shù)據(jù)庫中的的數(shù)據(jù)送進(jìn)進(jìn)來,供設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件處理。語法形式:CColleectDeevDatt(DattFAssVarriantt,DaatAssVarriantt,mssgAssVarriantt)asslonng返回值::=-11:設(shè)備故故障;=0:采集數(shù)數(shù)據(jù)有效,但但只對返回回的輸入數(shù)數(shù)據(jù)進(jìn)行處處理;=1:采集數(shù)數(shù)據(jù)有效,但但對返回的的輸入輸出出數(shù)據(jù)都進(jìn)進(jìn)行處理;;=2:采集數(shù)數(shù)據(jù)無效,不不須進(jìn)行處處理。參數(shù)說明:DDatF,,長整型型數(shù)組,標(biāo)明對應(yīng)應(yīng)設(shè)備通道道有效,==0無效,=11有效;Dat,浮浮點(diǎn)數(shù)組,,存放設(shè)設(shè)備通道的的數(shù)值型或或開關(guān)型數(shù)數(shù)據(jù);Msg,字字符數(shù)組,,存放設(shè)設(shè)備通道的的字符型或或事件型數(shù)數(shù)據(jù)。方法接口:RRunDeevCommmandd接口作用:本本接口在MMcgs運(yùn)運(yùn)行環(huán)境中中,當(dāng)在設(shè)設(shè)備策略構(gòu)構(gòu)件、用戶戶腳本程序序或OLEEAuttomattion調(diào)調(diào)用中要求求執(zhí)行特定定的設(shè)備命命令時(shí),被被調(diào)用。語法形式:RRunDeevCommmandd(DattObjAsOObjecct,BByVallCmddAsStriing)asLLong返回值::=0:命令令正確執(zhí)行行,Mcggs將對返返回的輸入入輸出數(shù)據(jù)據(jù)進(jìn)行處理理;=1:命令執(zhí)執(zhí)行錯(cuò)誤,Mcgs不對返回的輸入輸出數(shù)據(jù)進(jìn)行處理;=2:無效的的設(shè)備命令令,Mcggs不對返返回的輸入入輸出數(shù)據(jù)據(jù)進(jìn)行處理理。參數(shù)說明:DDataOObj,實(shí)實(shí)時(shí)數(shù)據(jù)庫庫對象,接接口程序中中通過該對對象來操作作實(shí)時(shí)數(shù)據(jù)據(jù)庫對象的的屬性和方方法;Cmd,字字符型,下達(dá)給設(shè)設(shè)備的設(shè)備備命令字符符串。3.3利利用開發(fā)向向?qū)煽蚩蚣躆CGS提供供了一個(gè)高高級開發(fā)工工具包,能能快速為用用戶生成設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件的源程程序框架,在在此基礎(chǔ)上上編程既快快速,又可可減少出錯(cuò)錯(cuò)的可能性性。請按如如下的步驟驟來生成設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件的框架架:確保MCGSS的高級開開發(fā)工具包包已安裝正正確;啟動VisuualBBasicc6.0(中文文專業(yè)版或或企業(yè)版);;選擇“外接程程序”菜單,單單擊該菜單單下的MCCGS開發(fā)發(fā)向?qū)Р藛螁雾?xiàng);彈出出開發(fā)向?qū)?dǎo)窗口后,按“下一步”按鈕,彈出如下圖所示窗口:選擇擴(kuò)展構(gòu)件件的類型為為設(shè)備驅(qū)動動構(gòu)件,且且設(shè)置設(shè)備備驅(qū)動構(gòu)件件為獨(dú)立設(shè)設(shè)備;按“下一步”按鈕,彈彈出如下圖圖所示的窗窗口:設(shè)置構(gòu)件工程程名為“MyDeev”,構(gòu)件類類型名為“我的設(shè)備備構(gòu)件”。構(gòu)件工工程名為設(shè)設(shè)備構(gòu)件在在VB下源程程序的工程程名,編譯譯生成的AActivveDLLL構(gòu)件的的名稱為MMyDevv.DLLL。構(gòu)件類類型名用于于標(biāo)識對應(yīng)應(yīng)的構(gòu)件,最最后可顯示示在MCGGS的設(shè)備備工具箱中中。按“下一步”按鈕,出出現(xiàn)如下圖圖所示的窗窗口,設(shè)置置生成目錄錄和輸出目目錄都為“D:\DDev”,使開發(fā)發(fā)向?qū)ё詣觿由傻脑丛闯绦蚝途幘幾g生成的的構(gòu)件都位位于同一目目錄下。在在一此按“下一步”按鈕,然然后按“完成”按鈕,MCCGS即開開始自動生生成設(shè)備驅(qū)驅(qū)動構(gòu)件的的源程序框框架。開發(fā)向?qū)瓿沙晒ぷ骱?,自自動生成一一個(gè)名位“MyDeev”的工程組組,如下圖圖所示,在在VB的工程程組窗口中中可以看到到該工程組組包含如下下二個(gè)VBB工程:MyDev工工程對應(yīng)于于設(shè)備驅(qū)動動構(gòu)件,該該工程包含含一個(gè)類模模塊和一個(gè)個(gè)程序模塊塊。類模塊塊DevOObj完成成了設(shè)備構(gòu)構(gòu)件所需的的所有接口口。TestDeev工程只只用于在VVB環(huán)境下下對設(shè)備構(gòu)構(gòu)件進(jìn)行調(diào)調(diào)試,該工工程包含兩兩個(gè)窗體和和兩個(gè)程序序模塊,在在實(shí)際編程程時(shí),無需需對該工程程進(jìn)行任何何修改工作作。MCGS開發(fā)發(fā)向?qū)沙傻乃性丛闯绦虼a碼和編譯生生成的輸出出文件都放放在D:\\Dev目目錄下。程程序模塊DDevBaas是包含含一些和硬硬件設(shè)備操操作相關(guān)的的常量、數(shù)數(shù)據(jù)結(jié)構(gòu)的的定義和外外部子程序序的定義。注意:MCGGS開發(fā)向向?qū)傻牡闹皇窃O(shè)備備驅(qū)動構(gòu)件件的源程序序框架,沒沒有任何具具體的功能能,要完成成特定的設(shè)設(shè)備驅(qū)動,還還需要在此此基礎(chǔ)上,針針對具體設(shè)設(shè)備的功能能進(jìn)行進(jìn)一一步的編程程和調(diào)試工工作。通訊訊子設(shè)備驅(qū)驅(qū)動構(gòu)件程程序框架的的自動生成成方法和上上述步驟相相同。3.4利利用樣例程程序移植MCGS把大大多數(shù)設(shè)備備驅(qū)動構(gòu)件件的源程序序代碼都隨隨系統(tǒng)一起起提供,在在實(shí)際應(yīng)用用中,開發(fā)發(fā)定制自己己的設(shè)備驅(qū)驅(qū)動程序的的最好方法法就是在MMCGS提提供的源程程序代碼的的基礎(chǔ)上進(jìn)進(jìn)行。由于于OLE技術(shù)術(shù)本身的復(fù)復(fù)雜性,建建議按照本本節(jié)給定的的方法和步步驟來進(jìn)行行你的開發(fā)發(fā)工作,避避免產(chǎn)生不不可預(yù)料的的錯(cuò)誤。如如果你能嚴(yán)嚴(yán)格按照本本節(jié)的步驟驟進(jìn)行開發(fā)發(fā)工作,則則你可以省省去對AcctiveeDLLL編程技術(shù)術(shù)及有關(guān)概概念的學(xué)習(xí)習(xí)和了解,直直接集中精精力實(shí)現(xiàn)設(shè)設(shè)備構(gòu)件的的功能。從MCGS高高級開發(fā)工工具包中找找到你所需需要的樣例例源程序代代碼,假定定安裝高級級開發(fā)工具具包時(shí)所選選的安裝目目錄為D::\Mcggssdkk,則對應(yīng)應(yīng)的源程序序位于目錄錄D:\MMcgsssdk\ssamplles\DDevicce下,而而且按設(shè)備備的名稱來來命名對應(yīng)應(yīng)的目錄,如如:中泰PPC63119接口卡卡對應(yīng)的設(shè)設(shè)備驅(qū)動程程序源代碼碼的目錄為為ZTPCC63199,歐姆龍龍PLC對應(yīng)應(yīng)的設(shè)備驅(qū)驅(qū)動程序源源代碼的目目錄為OmmronPPLC。為為方便說明明,下面各各步驟中假假定選取中中泰PC66319接接口卡的設(shè)設(shè)備驅(qū)動程程序?yàn)闃永绦?。建立一個(gè)新目目錄:D::\MyDDev,把把ZTPCC63199目錄內(nèi)的的所有內(nèi)容容拷貝到DD:\MyyDev目目錄下。新新的設(shè)備驅(qū)驅(qū)動構(gòu)件的的源程序?qū)⑽挥诒灸磕夸浵?。啟動VisuualBBasicc6.0,打開工程程組該文件件(本例中為為TesttDev..vbg)。如下圖圖所示,在VB工程組組窗口中,包含有二二個(gè)工程::DevZZT63119、TesstDevv。先在工程組窗窗口中選中中工程DeevZT66319(被被選中工程程下面顯示示藍(lán)條),用用鼠標(biāo)右鍵鍵彈出下拉拉菜單或從從“工程”菜單中,單單擊“DevZZT63119屬性”,打開該該工程的屬屬性窗口,如如下圖所示示,把“通用”和“生成”兩個(gè)屬性性頁中的DDevZTT63199改為MyDDev(修修改工程名名稱)。在“部件”屬屬性頁中,把“版本兼容”中的選項(xiàng)設(shè)置成“不兼容”。修改完成后,按“確認(rèn)”按鈕返回。注意:對工程屬性頁中的其它屬性不要做任何修改。在VB的“文文件”菜單中,單單擊“ZT63319.vvbp另存存為”菜單,把把工程另存存為MyDDev.vvbp。在在VB的“文件”菜單中,單單擊“生成ZT66319..dll”菜單,彈彈出“生成工程”窗口,對對工程繼續(xù)續(xù)編譯,把把要生成的的文件名改改為“MyDeev.dlll”,按“確定”按鈕開始始編譯。編譯完成后,打打開工程MMyDevv的屬性窗窗口,如下下圖所示,在“部件”屬性頁中,把“版本兼容”中的選項(xiàng)設(shè)置成“二進(jìn)制兼容”,同時(shí)把其下面的輸入框中的內(nèi)容由ZT6319R.dll改為MyDev.dll。按“確認(rèn)”按鈕返回打開類模塊DDevSeetObjj的編程窗窗口,對接接口GettDevNName進(jìn)進(jìn)行如下修修改:GetDevvNamee=“我自己的的設(shè)備構(gòu)件件“選中工程TeestDeev,在VB“工程“菜單中,單單擊“引用”菜單項(xiàng),把把工程TeestDeev對于DevvZT63319的引引用取消,改改為對工程程MyDeev的引用用。上述步驟完成成后,把整整個(gè)工程組組存盤,就就完成了開開始移植前前所有必須須的準(zhǔn)備工工作。接下下來,你就就可以在源源程序的基基礎(chǔ)上進(jìn)行行修改,實(shí)實(shí)現(xiàn)你自己己特定功能能的設(shè)備構(gòu)構(gòu)件。對通訊子設(shè)備備,如歐姆姆龍PLCC對應(yīng)的設(shè)設(shè)備驅(qū)動程程序進(jìn)行移移植時(shí),基基本方法和和步驟上面面所述相同同。3.5測測試和掛接接設(shè)備驅(qū)動動構(gòu)件MCGS為設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件提供了了一套在VVB環(huán)境下下進(jìn)行在線線調(diào)試的運(yùn)運(yùn)行機(jī)制,使使用戶能隨隨時(shí)對所做做的修改進(jìn)進(jìn)行測試調(diào)調(diào)試、檢驗(yàn)驗(yàn)其正確性性,其簡單單程度和方方便性是其其它組態(tài)軟軟件系統(tǒng)使使用匯編或或C語言編制制設(shè)備驅(qū)動動通過DDDE掛接設(shè)設(shè)備驅(qū)動的的方式所無無法比擬的的。MCGGS的這一一機(jī)制,使使得大多數(shù)數(shù)普通工程程用戶都能能動手編制制自己的設(shè)設(shè)備驅(qū)動程程序。使用MCGSS開發(fā)向?qū)?dǎo)生成的程程序框架或或系統(tǒng)提供供的樣例源源代碼中,都都包含有一一個(gè)用于在在VB下進(jìn)行行測試的工工程--TTestDDev,通通過該工程程模擬MCCGS的工工作狀態(tài),直直接調(diào)用設(shè)設(shè)備驅(qū)動構(gòu)構(gòu)件的接口口函數(shù),從從而做到對對構(gòu)件的每每個(gè)接口函函數(shù)在VBB源代碼一一級進(jìn)行測測試,實(shí)際際應(yīng)用中不不要對該工工程進(jìn)行任任何修改工工作。下面詳細(xì)介紹紹測試和掛掛接設(shè)備驅(qū)驅(qū)動構(gòu)件的的方法和步步驟:按照前節(jié)所講講述的步驟驟,用開發(fā)發(fā)向?qū)沙梢粋€(gè)設(shè)備備驅(qū)動構(gòu)件件的框架,生成的源程序所在目錄為--D:\Dev,構(gòu)件工程名為--MyDev,構(gòu)件的類型名為--我的設(shè)備構(gòu)件。完成自動生成后,在VB的工程組窗口中會看到二個(gè)工程:MyDev和TestDev。啟動MCGSS的組態(tài)環(huán)環(huán)境,并打打開或新建建一個(gè)MCCGS工程程。注意::進(jìn)行在線線調(diào)試時(shí),必必須啟動MMCGS,且且要保證MMCGS中中有一個(gè)打打開的工程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借款合同保證書
- 對賭協(xié)議合同注意事項(xiàng)
- 商業(yè)服務(wù)合同的社交媒體營銷
- 總價(jià)合同與單價(jià)合同的差異性解讀
- 論文質(zhì)量自我檢查
- 面料訂購協(xié)議范例
- 專業(yè)外包服務(wù)合同詳解
- 土方承包合同規(guī)定
- 方木購入合同格式
- 品牌年度服務(wù)合同的續(xù)簽策略
- 井下繩索取芯的自動化與智能化發(fā)展研究
- 10kV電力電纜熔接中間接頭制作
- 《高職院校體育與健康教程》課程標(biāo)準(zhǔn)
- 水果店應(yīng)急預(yù)案范本
- 賀銀成總結(jié)的病例分析診斷公式及各科金口訣
- 整理我的小書桌(課件)小學(xué)勞動二年級通用版
- 應(yīng)急救援知識培訓(xùn)教育記錄
- 論文《英漢語對比研究的基本方法與創(chuàng)新》-閱讀匯報(bào)PPT
- 公司萬用表校準(zhǔn)
- 走進(jìn)人工智能-AI發(fā)展史及人工智能的應(yīng)用
- 《果樹生產(chǎn)技術(shù)》實(shí)習(xí)指導(dǎo)手冊
評論
0/150
提交評論