MCGS高級開發指南_第1頁
MCGS高級開發指南_第2頁
MCGS高級開發指南_第3頁
MCGS高級開發指南_第4頁
MCGS高級開發指南_第5頁
已閱讀5頁,還剩161頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MCGS高級開發指南symbol105\f"Marlett"\s9page222symbol105\f"Marlett"\s9目錄TOC\o"1-2"第一章MCGS的可擴充性 41.1概述 41.2可擴充的設備驅動構件 61.3可擴充的功能構件 71.4MCGS實時數據庫對象 81.5MCGS存盤服務對象 101.6通過OLE自動化和其它應用程序交互 121.7通過DDE和其它應用程序交互 141.8直接操作MCGS的存盤數據庫 16第二章開發MCGS功能構件 172.1功能構件的實現方法 172.2功能構件接口規范 182.3利用開發向導生成框架 192.4利用樣例程序移植 222.5測試和掛接功能構件 25第三章開發MCGS設備驅動 273.1設備驅動構件的實現方法 273.2設備驅動構件接口規范 283.3利用開發向導生成框架 323.4利用樣例程序移植 353.5測試和掛接設備驅動構件 373.6IO端口的操作 403.7串行口的操作 433.8設備驅動構件的運行機制 443.9增加設備構件的屬性 453.10定制設備屬性設置對話框 473.11編制簡單的設備驅動構件 48第四章MCGS系統內部數據對象 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系統內部函數 575.1數學函數 575.2字符操作函數 595.3窗口操作函數 615.4設備操作函數 625.5策略操作函數 635.6事件操作函數 645.7報警操作函數 645.8存盤操作函數 675.9用戶權限操作函數 705.10系統操作函數 71第六章MCGS中提供的對象 2056.1實時數據庫對象 2056.2存盤服務對象 223第一章MCGS的可擴充性1.1概述MCGS組態軟件是一套功能豐富、簡單易用的組態軟件,大部分工程師都可以很容易的使用這套組態軟件來完成一個完整的工程項目。但是,當用戶熟練的掌握了這套組態軟件以后,用戶必然會尋求在這套組態軟件上進一步開發的能力。以實現有自己風格的界面、自己設計的控制算法和與自己硬件相匹配的驅動程序。其他一些長期使用VisualBasic、C++、Delphi的高級工程開發人員,為了充分利用自己的編程特長和已有的程序積累,也希望能夠把自己編寫的程序裝配到MCGS組態軟件中。大部分面向工程應用的工程人員,雖然沒有時間和精力開發自己的專有模塊,但是,卻希望能夠從MCGS開發組或第三方的專業、業余開發者那里獲得為自己定制的特殊模塊,并且能夠很方便的裝配到現有的MCGS組態軟件上。而對硬件開發商和一些高級的開發人員,都希望能夠開發出自己的設備驅動模塊和專業化、行業化的模塊以充分利用MCGS軟件的組態功能,當然,對于這些專業化的高品質模塊,位于工程一線的工程人員也是具有非同一般的興趣的。為了滿足用戶的這些要求,MCGS提供一套可擴充的接口規范和配套的高級開發工具包。使用接口規范和工具包開發出來的擴充構件,具有很優越的特點:安全保密。擴充構件是編譯成二進制代碼的,可以很好的保護您的工作。非法用戶不可能通過反編譯你的擴充構件來獲得你獨有的設備驅動構件、特殊的運算構件和特殊的窗口界面。你更可以使用擴充構件來進行自己的加密,以防止你制作的工程被任意拷貝,保護你自己的利益。簡單快速。MCGS組態軟件高級開發包中提供了常用的數據后處理構件源代碼。初級用戶可以直接使用這些數據后處理構件,但高級用戶則可以修改這些構件的源代碼,以滿足自己特殊的要求。眾所周知,工控工程的數據后處理部分具有各自不同的要求,因此一般的組態軟件,都要求用戶自己使用例如Excel、Access等軟件來完成自己的特殊的后處理。但是MCGS組態軟件除了可以用類似的方法處理外,還提供了另外一種不同的處理方法。那就是高級用戶可以修改MCGS組態軟件高級開發工具包中所提供的后處理構件源代碼,然后生成自己的擴充構件,裝配到MCGS組態軟件上,就可以組成自己獨有的后處理系統。性能優異。使用這種方法開發出來的MCGS組態軟件的擴充構件具有很高的速度和性能。據微軟公司測試,使用VisualC++軟件開發出來的程序,只比使用VisualBasic開發出來的速度高百分之十,有時甚至還低于VisualBasic。而使用VisualBasic開發的方便性和易用性又是VisualC++所遠遠不能比擬的。在編寫MCGS組態軟件的擴充構件時,VisualBasic確實是一種最佳選擇。任務明確。MCGS的這種擴充構件具有清晰的結構,你完全可以向MCGS組態軟件的開發組或第三方的開發人員提出要求,為你編寫一個定制的擴充構件。而不會存在功能糾纏不清,任務確定不明的問題。MCGS組態軟件的高級開發,基本上是基于微軟公司的OLE標準,利用了最新的ActiveX技術。這種新技術保證能夠方便地使用當前各種先進的開發工具來開發自己的擴充構件。如:VisualBasic、VisualC++以及其它公司的各種編程軟件也可以方便地開發MCGS組態軟件的擴充構件。但是,MCGS為使用微軟公司的VisualBasic準備了豐富的樣例程序和功能強大的高級開發向導。這個高級開發向導可以幫助你很方便的生成各種擴充構件的框架結構,使你能夠快速的進入自己的編程工作。在MCGS組態軟件高級開發工具包中,還提供了給開發員使用的一個源代碼級調試程序。因此,MCGS強烈建議使用微軟公司的VisualBasic軟件來開發MCGS的擴充構件。在本書中,主要介紹如何使用VisualBasic來開發MCGS組態軟件擴充構件。但由于它是基于OLE技術標準的,所以如果你能夠熟練地使用VisualC++、Delphi等軟件,你也可以按照本書中給出的OLE界面標準,來制作自己的組態軟件擴充構件。為了能夠使用MCGS組態軟件高級開發工具包,你應該具有如下條件:硬件方面:必須具有Pentium以上的CPU,以及十六兆以上的內存。軟件方面:應使用微軟的Windows’95或Window’NT4.0操作系統,安裝了微軟的VisualBasic6.0專業版或企業版。還應安裝了MCGS光盤上的MCGS組態軟件和MCGS組態軟件高級開發工具包。使用MCGS組態軟件高級開發工具包和微軟VisualBasic軟件來開發MCGS組態軟件擴充構件,要求你應該大致了解VisualBasic軟件的功能和使用方法。如果你對VisualBasic軟件不太了解,那麼就應該首先學習和了解一下VisualBasic軟件。我們建議采用如下的方法進行學習:首先,你應該仔細閱讀《VisualBasic聯機手冊》這本書中的“程序員指南”這一章。其次,你應該仔細讀懂VisualBasic安裝后附帶的三到四個例子,這些例子安裝在VisualBasic目錄下的\Samples目錄中。在這期間你可參考和閱讀“程序員指南”這一章中的“VB基礎”這一節中的有關菜單、窗體、構件等的描述。通過大約經過一個星期的學習,你就可以在MCGS組態軟件高級開發包中的高級開發向導的幫助下,制作一些你自己的簡單的擴充構件。也可以從高級開發包中的樣例程序出發,通過修改相應的部分,來生成自己的擴充構件。MCGS組態軟件的可擴充性主要有以下幾個方面組成:掛接定制的設備驅動構件。掛接定制的功能構件。在其它應用程序中通過OLE直接操作MCGS所提供的對象。通過DDE連接,建立MCGS和其它應用程序間的數據傳遞。MCGS可擴充構件的提出和設計都經過了長期的工程實踐的檢驗和考慮,能夠確保實現工程進一步開發中的所有任務,而且具有結構簡單、功能齊備的特點。1.2可擴充的設備驅動構件可擴充的設備驅動構件能實現多種設備驅動的方式。你可以使用獨立的設備驅動構件形式,如:A/D、D/A板采集驅動構件。也可以使用父子設備驅動結構形式,如:使用串口為父設備,使用掛接在串口上的各個PLC為子設備。這已經涵蓋工控工程中常用的板卡采集、現場總線等等設備硬件連接模式。在設備驅動構件中,你可以使用查詢的工作方式,查詢的周期從十毫秒到任意長的時間。也可以使用中斷的方式,來高效完成設備驅動的任務。尤其在使用串口等低速率傳送的設備時,使用中斷方式來采集數據,可以充分利用等待串口通訊的時間來完成諸如圖形動畫等其它工作,以保證動畫的平滑運動和界面反應的靈敏性。在使用板卡采集的時候,由于板卡采集速度較快,而且設備驅動運行都處在各自獨立的線程內,一般都采用查詢采集的方式來處理設備驅動的工作。在設備驅動構件中,你還可以實現設備熱更換的功能。MCGS組態軟件可以從設備驅動構件的返回值中得到設備運行狀態的,對于有錯誤的設備,MCGS組態軟件將自動停止其采集,但是,每隔十個采集周期,MCGS組態軟件將自動重新驅動設備驅動構件一次,再重新確定設備驅動構件的工作狀態。因此設備驅動構件可以利用這個功能。在被驅動采集時,如果當前設備的上一次工作狀態測試為設備失效,這時就可以重新測試工作狀態,如果工作狀態已經正常,就可以向MCGS組態軟件返回工作狀態正確的返回值,使MCGS組態軟件重新開始正常設備驅動采集。準備了這樣的功能后,在父子設備采集中,就可以動態的卸載和掛接子設備。MCGS組態軟件會自動在子設備卸載時自動暫停設備采集,在子設備掛接時自動開始設備采集。設備驅動構件的概念還可以擴充到所有的高可靠性要求、數據輸入輸出、執行命令等任務方面。在MCGS組態軟件中,就實現了一個使用網絡在兩臺計算機之間共享數據對象的設備驅動構件。實際上,像網絡數據庫、多臺計算機、各個程序間的通訊等等類似的任務,都可以使用設備驅動構件的方法來完成。本手冊的第十九章專門講述開發MCGS設備驅動構件的具體方法和步驟,請參閱。1.3可擴充的功能構件可擴充的功能構件主要用于實現用戶定制的和用戶特殊的功能模式。如參數出入窗口、特殊的操作畫面、特殊的數據處理等等。功能構件提供了一個使用戶可以實現自己獨有的人機界面的手段,可以完成特殊的用戶交互的工作。并且,可以完成一些MCGS組態軟件所不適宜完成的工作。如體現事務性操作的任務,象填寫輸入表單,填寫發票等任務需要填好后一次提交,要么所有修改全部完成,要么所有修改被全部退回,這種任務就與MCGS組態軟件所運行的實時監控模式不一致,這種任務就適宜于使用功能構件來完成。還有一些任務,諸如從存盤文件中恢復各個變量的設定值,或選定一組設定值,也可以在功能構件中通過讀取存盤文件中的數據,并用MCGS組態軟件的自動化功能寫入MCGS組態軟件中的各個變量來完成。MCGS系統的報警信息瀏覽、存盤數據瀏覽、存盤數據提取等部分的功能就是用VisualBasic6.0來編程實現的功能構件,并且隨系統提供了部分源代碼,目的是因為這幾個部分的靈活性比較大,用戶的需求也各不一樣,這樣可方便用戶在這些源代碼的基礎上,快速修改完成自己需要的功能。本手冊的第二十章專門講述開發MCGS功能構件的具體方法和步驟,請參閱。1.4MCGS實時數據庫對象實時數據庫是MCGS的核心,MCGS把整個實時數據庫作為一個對象封裝起來,提供一系列的方法和屬性,使外部程序通過這些方法和屬性能對MCGS進行各種操作。MCGS運行起來后,實時數據庫對象被暴露出來,在其它應用程序中,通過OLE自動化操作,就可取到實時數據庫對象,從而做到在外部應用程序直接操作MCGS的目的。注意:MCGS分為組態環境和運行環境兩個部分,每個部分作為一個獨立的整體都有一個對應的實時數據庫對象,兩個對象的方法和屬性都相同,只是有些方法在不同的對象內的表現不同,如CreateNewData方法在組態環境的實時數據庫對象中是創建一個新的數據對象,而在運行環境的實時數據庫對象中該方法不進行任何操作。因此,在實際應用中,用戶要根據需要選擇是對哪個實時數據庫對象進行操作。注意:MCGS的實時數據庫對象及其對應的屬性和方法僅供擴充構件和外部應用程序在編程時使用,在MCGS內(腳本程序和表達式中)不能直接使用。實際上,實時數據庫的大多數方法在MCGS內都提供了對應的內部函數,腳本程序和表達式中應使用內部函數完成有關操作。下面列出MCGS實時數據庫對象所提供的屬性和方法,關于它們的詳細含義和用法請參閱《MCGS參考手冊》中的說明。MCGS實時數據庫對象的屬性WinVer:當前操作系統的版本標志McgsVer:MCGS的版本號McgsDataNum:當前工程的實時數據庫中數據對象的個數McgsStgyNum:當前工程中運行策略的個數McgsWinNum:當前工程中用戶窗口的個數McgsDevNum:當前工程中設備構件的個數McgsSetName:當前工程的名稱McgsSaveName:當前工程存盤數據庫文件的名稱SvrPackage:存盤服務對象MCGS實時數據庫的方法CreateNewData:在實時數據庫中產生一個新的數據對象GetDataFromName:通過數據對象的名稱取到數據對象的其它屬性值GetDataFromID:通過數據對象的ID號取到數據對象的其它屬性值GetDataName:通過數據對象的ID號取到數據對象的名稱GetDataType:通過數據對象的名稱取到數據對象的類型GetDataID:通過數據對象的名稱和類型取到數據對象的ID號SetDataDlg:調用顯示組態環境中的對象瀏覽對話框GetDbIDFromID:通過數據對象ID號讀取數據對象在數據庫中的存儲位置號GetIDFromDbID:通過數據對象在數據庫中的存儲位置號讀取數據對象的ID號GetAlmDatName:讀取定義有報警信息自動存盤屬性的所有數據對象名稱GetSaveDatName:讀取定義有數據存盤屬性的所有數據對象名稱的集合GetGroupObj:讀組對象的所有成員的ID號GetValueArray:根據數據對象ID號成組讀取多個類型相同的數據對象的當前值SetValueArray:根據數據對象ID號成組寫入多個類型相同的數據對象的當前值GetValueFromID:根據數據對象的ID號讀取數據對象的當前值GetValueFromName:根據數據對象的名稱讀取數據對象的當前值SetValueFromID:根據數據對象的ID號寫入數據對象的當前值SetValueFromName:根據數據對象的名稱寫入數據對象的當前值GetDeviceName:根據序列號讀取設備構件的名稱GetDeviceState:讀取設備構件的當前工作狀態SetDevice:對指定的設備進行操作GetWindowName:根據序列號讀取用戶窗口的名稱GetWindowState:讀取指定用戶窗口的狀態SetWindow:對指定的用戶窗口進行操作GetStgyName:根據序列號讀取運行策略的名稱SetStgy:執行指定運行策略DelAlmDat:刪除數據對象對應的報警存儲數據。DelAllAlmDat:刪除數據對象對應的所有報警存儲數據MoveAlmDat:轉儲數據對象所對應的報警存盤信息SetAlmValue:設置數據對象DatName對應的報警限值GetAlmValue:讀取數據對象的報警限值DelSaveDat:刪除數據對象對應的存盤數據DelAllSaveDat:刪除數據對象對應的所有存盤數據ChangeSaveDat:改變數據對象所對應的存盤數據的存盤間隔MoveSaaveDaat:轉儲儲數據對象象所對應的的存盤數據據SaveDaata:把把數據對象象對應的當當前值存入入存盤數據據庫中SaveDaataInnit:把把數據對象象的當前值值作為初試試值存入組組態結果數數據中作為為初試值1.5MMCGS存存盤服務對對象MCGS提供供有一個存存盤服務對對象,用于于設備驅動動構件和功功能構件保保存構件內內部需要保保存的數據據。在構件件中,通過過操作該對對象的方法法來保存和和讀取數據據,而數據據具體放在在什么地方方由MCGGS來管理理(MCGGS把這些些數據和構構件的其它它屬性一起起保存在組組態結果數數據庫中)。注注意:MCCGS把存存盤服務對對象作為一一個參數通通過構件的的接口傳送送到設備驅驅動構件和和功能構件件內,供構構件保存數數據時使用用。下面詳詳細列出存存盤服務對對象所提供供方法:方法:SettStarrtPoss方法用途:設設置存儲數數據的操作作方式。使用范圍:可可用于組態態環境和運運行環境。語法形式:SSetSttartPPos(ByvaalFllagaasLoong))asLongg返回值::=0:調用用正常,<<>0:調調用不正常常。參數說明:FFlag,長長整型,操操作標志,具具體含義如如下:=0:設置對對數據的操操作為讀模模式,使得得GetDDat從起起始位置開開始,順序序讀取數據據;=1:設置對對數據的操操作為寫模模式,使得得PutDDat從起起始位置開開始,順序序把數據存存入。方法:GettDat方法用途:讀讀取存儲在在MCGSS內的數據據。使用范圍:可可用于組態態環境和運運行環境。語法形式:GGetDaat(VValueeasVariiant)assLonng返回值::=0:調用用正常,<<>0:調調用不正常常。參數說明:VValuee,Variiant型型,返回讀讀取的值,也也可以使用用具體的數數據類型和和數組來返返回數據。方法:PuttDat方法用途:把把數據存入入到MCGGS內。使用范圍:可可用于組態態環境和運運行環境。語法形式:PPutDaat(VValueeasVariiant)assLonng返回值::=0:調用用正常,<<>0:調調用不正常常。參數說明:VValuee,Variiant型型,要存入入的值,也也可以使用用具體的數數據類型和和數組來存存入數據。MCGS存盤盤服務對象象使得在設設備驅動構構件和功能能構件中,能能使用“流化”的方式來來編程實現現保存和讀讀取存盤數數據,GeetDatt和PutDDat的使使用一定要要配對。如如在某接口口中編寫的的保存數據據代碼如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos11SaveObbj.PuutDattISaveObbj.PuutDattjSaveObbj.PuutDattmsggSaveObbj.PuutDattDatt則對應的讀取取數據的代代碼應如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos00SaveObbj.GeetDattISaveObbj.GeetDattjSaveObbj.GeetDattmsggSaveObbj.GeetDattDatt1.6通過過OLE自動動化和其它它應用程序序交互MCGS組態態軟件本身身的自動化化功能可以以幫助用戶戶在其它應應用程序中中很方便地地操縱MCCGS組態態軟件的運運行。比如如說,用戶戶可以在一一個程序里里指揮MCCGS運行行環境打開開某個窗口口、執行某某個策略、或或者向某個個設備發出出命令等等等。基本上上,在MCCGS組態態軟件中用用戶腳本程程序可以完完成的功能能也都可以以通過MCCGS組態態軟件的自自動化功能能來完成。MCGS把其其核心作為為一個對象象包裝起來來,把MCCGS的大大多數功能能作為對象象的屬性和和方法暴露露出來,使使其它的應應用程序通通過OLEE自動化來來操作MCCGS,在在VisuualBBaiscc、Exceel、Acceess和、Dellphi中中都可以通通過OLEE自動化來來取得MCCGS實時時數據庫對對象,編程程操作MCCGS提供供的屬性和和方法。在VisuaalBaasic中中操作MCCGS假定MCGSS運行環境境正在運行行一個工程程,且該工工程有200個數值型型數據對象象,其名稱稱為Datt01到Dat220。要求求用VB編制一一個應用程程序,該程程序的界面面如下圖所所示,按“從MCGSS讀數據”按鈕時,能能把MCGGS中Dat001到Dat110的值讀讀回顯示在在左列文本本框內,按按“向MCGSS寫數據”按鈕時,能能把右列文文本框內輸輸入的數據據寫到MCCGS的Dat111到Dat220數據對對象中。DimDaatObjjAsObjeectPrivatteSuubFoorm_LLoad(()OnEErrorrRessumeNexttSetDatOObj==GettObjeect(,,"MccgsRuun.DaataCeentree")IfEErrTThenMMsgBoox(""請先啟動動MCGSS運行環境境!")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中都有有對應的VVB程序可可以編程,實實現對MCCGS的各各種操作,其其方法和在在VisuualBBasicc中基本相相同,可參參考上面的的代碼進行行。1.7通通過DDEE和其它應應用程序交交互MCGS提供供了動態數數據交換((DDE))方式和其其它應用程程序進行數數據交換,不不同于OLLE自動化化操作,DDDE方式式只能傳遞遞數據,不不能直接對對MCGSS進行操作作,而且DDDE方式式數據傳遞遞的速度較較慢,可靠靠性也不如如OLE,建建議采用OOLE來代代替DDEE。下面舉例說明明如何在MMCGS和和Exceel中建立立DDE連接接,要求在在Exceel表單Sheeet1第第1行到第100行的第一一列顯示MMCGS數數據對象DDat011到Dat110的值,把把表單Shheet11的第1行到第100行的第二二列輸入的的值送到MMCGS數數據對象DDat111到Dat220中。要要使用DDDE和其它它應用程序序進行交互互,首先應應在MCGGS中進行行一些定義義工作。在在MCGSS組態環境境的“工具”菜單中選選取“DDE連接接管理”菜單項,彈彈出如下窗窗口:在DDE連接接管理窗口口中,把DDat011到Dat110設置為為DDE輸出出(選中各各數據對象象對應的DDDE輸出出選項框);;把Datt11到Dat220設置為為DDE輸入入,同時對對服務節點點進行如下下配置:按“服務節點點配置”按鈕,彈彈出如下配配置窗口按“增加”按按鈕,彈出出如下配置置窗口,把把服務節點點名設為“Exceel表單”,把服務務名設為“Exceel”,主題名名設為“Sheeet1”(當把Exccel應用用軟件作為為DDE服務務器時,服服務名永遠遠為“Exceel”,主題名名為對應表表單--SSheett的名稱)配置好服務器器節點后,把把Dat111到Dat220的連接接節點都設設為“Exceel表單”,連接項項目分別設設為R1CC2到R10CC2。運行Exceel,在表表單Sheeet1的的R1C11到R10CC1中輸入入McgssRun||DataaCenttre.DDat011到McgssRun||DataaCenttre.DDat100,這樣就就完成了所所有的DDDE連接設設置工作。當當進入MCCGS運行行環境后,MCGS數據對象Dat01到Dat10的值就顯示在Excel的表單Sheet1的第一列中,同時,當改變表單Sheet1的第二列值時,MCGS中數據對象Dat11到Dat20的值也隨之而改變。1.8直直接操作MMCGS的的存盤數據據庫MCGS運行行時的存盤盤數據是保保存在標準準Acceess7..0數據庫庫中,所有有報警數據據信息對應應存盤數據據表名為MMCGS__AlarrmInffo,MCGSS組對象對對應的存盤盤數據表名名為:組對對象名稱++“_MCGGS”。用戶可可以在外部部應用程序序中直接對對MCGSS的存盤數數據庫進行行操作,編編制獨立的的后處理軟軟件。MCGS的腳腳本程序中中有一個名名為“Shelll”的內部函函數,可以以啟動一個個外部應用用程序。通通過在MCCGS腳本本程序中使使用Sheell函數數,可以使使外部應用用程序和MMCGS看看起來是一一個整體。第二章開開發MCGGS功能構件MCGS提供供了一套運運行策略機機制,使用用戶能根據據實際應用用的需要,對對工作流程程進行精確確的控制。運運行策略由由不同的策策略塊組成成,而策略略塊又由多多個策略行行組成,每每個策略行行分為條件件和功能兩兩個部分,以以實現“在什么條條件下執行行什么功能能”的機制。MMCGS提提供了大多多數應用所所必須的功功能構件,同同時也提供供了一套開開放的可擴擴充接口,允允許用戶能能根據自己己的需要,定定制特定的的功能構件件,達到擴擴充MCGGS功能的的要求。本章下面各節節將詳細介介紹開發MMCGS功功能構件的的方法和步步驟,請在在開始之前前,先安裝裝VisuualBBasicc6.0(中文文專業版或或企業版)),然后安安裝MCGGS高級開開發工具包包,建議你你按下面各各節介紹的的方法和步步驟來一步步一步地學學習開發MMCGS功功能構件。2.1功功能構件的的實現方法法MCGS用AActivveDLLL構件的的方式來實實現功能構構件,通過規范范的OLEE接口掛接接到MCGGS中,使其構成成一個整體體。由于功功能構件和和MCGSS運行在同同一個進程程內,故功功能構件的的運行速度度快,可靠靠性高,即即使構件本本身有問題題,也不會會影響到MMCGS的的可靠運行行。同時,OLE是一個可擴充的開放標準,用于實現不同軟件之間的相互操作,而不管軟件本身是使用什么編程語言。因此,只要遵守MCGS的接口規范,可以使用VB、VC、Delphi等語言來編制MCGS的功能構件。鑒于VisualBasic通用性和簡單性,建議使用VB來開發MCGS的設備驅動程序,本書也只講解使用VB進行開發的技術問題。由于VB6.0以上版本是以二進制碼來編譯執行程序,其運行速度已接近或超過VC,完全能滿足功能構件所需的速度要求。MCGS提供的大多數功能構件就是使用VB來編程的,開發工具包中提供了部分功能構件的源代碼,可在其基礎上修改,實現比MCGS功能更完善的功能構件。2.2功功能構件接接口規范MCGS設備備構件的實實現方法和和原理與標標準VB的ActiiveDLLL完全一一致,但MMCGS規規定了一套套接口規范范,只有遵遵守這些接接口規范的的ActiiveDLLL才能用用作MCGGS的功能能構件。MMCGS功功能構件必必須具有如如下4個接口::接口:SvrrMenuuCommmand 組態時調調用,執行行菜單命令令接口:SvrrStgyySetOOperaator 組態時調調用,設置置構件的屬屬性接口:SvrrStgyyRunOOperaator運行時調調用,執行行構件的功功能接口:SvrrChecck 組態中,編編譯查錯時時時調用開發MCGSS功能構件件的過程,實實際上就是是根據功能能構件的特特性和含義義來完成44個接口功功能的編程程過程。下下面詳細講講述各個接接口的含義義和用法::接口:SvrrMenuuCommmand接口作用:本本接口用于于在MCGGS組態環環境中增加加一個用戶戶自定義的的菜單項。本本接口在組組態環境裝裝載時被MMCGS組組態環境調調用,檢查查是否有有有對應的菜菜單要求,如如有,在MMCGS的的“工具“菜單中增增加一菜單單項。組態態環境運行行時,當用用戶選取增增加的菜單單項時,也也調用本接接口。語法形式:SSvrMeenuCoommannd(sttrNammeAssStrring,,bQuueryAsLLong,,DattObjAsOObjecct)AAsLoong返回值::=0,調用用成功;==1調用失失敗。參數說明:sstrNaame,返返回用于顯顯示在“工具“菜單中的的菜單項的的名稱;如如為空,表表示本功能能構件不增增加菜單。bQueryy,MCGSS初試化時時調用本接接口時,把把本參數的的值設置為為1,在菜單單中調用本本接口時,把把本參數的的值設置為為0;DatObjj,MCGSS實時數據據庫數據對對象。接口:SvrrStgyySetOOperaator接口作用:本本接口的作作用是讀取取功能構件件的類型名名稱、注釋釋和所對應應的圖標資資源的IDD號以及組組態時設置置構件的屬屬性時調用用。語法形式:SSvrSttgySeetOpeeratoor(sttrNammeAssStrring,,strrNoteesAssStrring,,iIcconAAsLoong,DatOObjAAsObbjectt,SaaveObbjAssObjject,,bQuueryAsLLong))AsLongg返回值::=0,調用用成功;==1調用失失敗。參數說明:sstrNaame,返返回功能構構件的類型型名,顯示示在功能構構件列表框框中;strNottes,返返回功能構構件的注釋釋,顯示在在策略行的的右邊;iIcon,返回功功能構件所所對應的圖圖標資源的的ID號,該該圖標顯示示在策略行行的功能構構件塊上。如如ID=00,表示沒沒有對應的的圖標,MMCGS顯顯示缺省圖圖標;bQueryy,MCGSS初試化時時調用本接接口時,把把本參數的的值設置為為1,在設置置構件屬性性調用本接接口時,把把本參數的的值設置為為0;DatObjj,MCGSS實時數據據庫數據對對象。SavObjj,存盤盤服務對象象,接口程程序中通過過該對象來來保存和讀讀取數據。接口:SvrrStgyyRunOOperaator接口作用:本本接口在運運行環境中中,當需要要執行本構構件的功能能時調用。語法形式:SSvrSttgyRuunOpeeratoor(DaatObjjAsObjeect,SaveeObjAsOObjecct)AAsLoong返回值::=0,調用用成功;==1調用失失敗。參數說明:DDatObbj,MCGSS實時數據據庫數據對對象;SavObjj,存盤盤服務對象象,接口程程序中通過過該對象來來保存和讀讀取數據。接口:SvrrChecck接口作用:本本接口在組組態環境中中,當MCCGS進行行查錯和編編譯調用。語法形式:SSvrChheck((DatOObjAAsObbjectt,ChheckFFlagAsLLong))AsLongg返回值::=0,調用用成功;==1調用失失敗。參數說明:DDatObbj,MCGSS實時數據據庫數據對對象;CheckFFlag,標標志位。2.3利利用開發向向導生成框框架MCGS提供供了一個高高級開發工工具包,能能快速為用用戶生成功功能構件的的源程序框框架,在此此基礎上編編程既快速速,可減少少出錯的可可能性。請請按如下步步驟來生成成功能構件件的框架::確保MCGSS的高級開開發工具包包已安裝正正確;啟動VisuualBBasicc6.0(中文文專業版或或企業版);;選擇“外接程程序”菜單,單單擊該菜單單下的MCCGS開發發向導菜單單項;彈出出開發向導導窗口后,按“下一步”按鈕,彈出如下圖所示窗口:選擇擴展構件件的類型為為運行策略略功能構件件,按“下一步”按鈕,彈彈出如下圖圖所示的窗窗口:設置構件工程程名為“MyDLLL”,構件類類型名為“我的構件”。構件工工程名為功功能構件在在VB下源程程序的工程程名,編譯譯生成的AActivveDLLL構件的的名稱為MMyDLLL.DLLL。構件類類型名用于于標識對應應的構件,最最后可顯示示在MCGGS的設備備工具箱中中。按“下一步”按鈕,出出現如下圖圖所示的窗窗口,設置置生成目錄錄和輸出目目錄都為“D:\AAddInn”,使開發發向導自動動生成的源源程序和編編譯生成的的構件都位位于同一目目錄下。在在一此按“下一步”按鈕,然然后按“完成”按鈕,MCCGS即開開始自動生生成功能構構件的源程程序框架。開發向導完成成工作后,自自動生成一一個名位“MyDLLL”的工程組組,如下圖圖所示,在在VB的工程程組窗口中中可以看到到該工程組組包含如下下二個VBB工程:MyDLL工工程對應于于設備驅動動構件,該該工程包含含一個類模模塊和一個個程序模塊塊。類模塊塊AddIInObjj完成了功功能構件所所需的所有有接口。TestDLLL工程只只用于在VVB環境下下對功能構構件進行調調試,該工工程包含兩兩個窗體和和兩個程序序模塊,在在實際編程程時,無需需對該工程程進行任何何修改工作作。MCGS開發發向導生成成的所有源源程序代碼碼和編譯生生成的輸出出文件都放放在D:\\AddIIn目錄下下。注意:MCGGS開發向向導只是生生成構件的的源程序框框架,沒有有任何具體體的功能,要要完成特定定的功能,還還需要在此此基礎上,針針對具體要要求進行進進一步的編編程和調試試工作。2.4利利用樣例程程序移植MCGS把部部分功能驅驅動構件的的源程序代代碼都隨系系統一起提提供,在實實際應用中中,開發定定制自己的的功能構件件的最好方方法就是在在MCGSS提供的源源程序代碼碼的基礎上上進行。由由于OLEE技術本身身的復雜性性,建議按按照本節給給定的方法法和步驟來來進行你的的開發工作作,避免產產生不可預預料的錯誤誤。如果你你能嚴格按按照本節的的步驟進行行開發工作作,則可省省去對AcctiveeDLLL編程技術術及有關概概念的學習習和了解,直直接集中精精力實現功功能構件的的功能。從MCGS高高級開發工工具包中找找到你所需需的樣例源源程序代碼碼,假定安安裝開發工工具包時所所選的安裝裝目錄為DD:\Mccgssddk,則源源程序位于于D:\MMcgsssdk\ssamplles\AAddInn目錄下,而而且按功能能構件的名名稱來命名名對應的目目錄,如::報警數據據處理構件件源代碼的的目錄為AAlmAdddIn。為為方便說明明,下面各各步驟中假假定選取報報警數據處處理構件為為樣例程序序。建立一個新目目錄:D::\MyDDLL,把把ALmAAddInn目錄內的的所有內容容拷貝到DD:\MyyDLL目目錄下。新新功能構件件的源程序序將位于本本目錄下。每個功能構件件源代碼中中都一個后后綴為“.vbgg”的工程組組文件,本本例中為TTestDDLL.vvbg。啟啟動VissualBasiic6.0,打開開該文件。如如下圖所示示,在VBB工程組窗窗口中,包包含有二個個工程:AAlmAdddIn、TesstDLLL。先在工程組窗窗口中選中中工程AllmAdddIn(被被選中的工工程下面顯顯示為藍條條),用鼠鼠標右鍵彈彈出下拉菜菜單或從“工程”菜單中,單單擊“AlmAAddInn屬性”,打開該該工程的屬屬性設置窗窗口。如下下圖所示,把“通用”和“生成”兩個屬性頁中的AlmAddIn改為MyDLL(修改工程名稱)。在“部件”屬屬性頁中,把“版本兼容”中的選項設置成“不兼容”。修改完成后,按“確認”按鈕返回。注意:對工程屬性頁中的其它屬性不要做任何修改。在VB的“文文件”菜單中,單單擊“AlmAAddInn.vbpp另存為”菜單,把把工程另存存為MyLLL.vbbp。在VB的“文件”菜單中,單單擊“生成AlmmAddIIn.dlll”菜單,彈彈出“生成工程”窗口,對對工程繼續續編譯,把把要生成的的文件名改改為“MyDLLL.dlll”,按“確定”按鈕開始始編譯。編譯完成后,打打開工程MMyDLLL的屬性窗窗口,如下下圖所示,在“部件”屬性頁中,把“版本兼容”中的選項設置成“二進制兼容”,同時把其下面的輸入框中的內容由AlmAddIn.dll改為MyDLL.dll。按“確認”按鈕返回打開類模塊AAddInnObj的的編程窗口口,對接口SvvrStggySettOperratorr進行如下下修改:strNamme=”我的功能能構件”strNottes=”我的功能能構件”選中工程TeestDLLL,在VB“工程“菜單中,單單擊“引用”菜單項,把把工程TeestDLLL對于AlmmAddIIn的引用用取消,改改為對工程程MyDLLL的引用用。上述步驟完成成后,把整整個工程組組存盤,就就完成了開開始移植前前所有必須須的準備工工作。接下下來,你就就可以在源源程序的基基礎上進行行修改,實實現你自己己特定功能能的設備構構件。對通訊子設備備,如歐姆姆龍PLCC對應的設設備驅動程程序進行移移植時,基基本方法和和步驟上面面所述相同同。2.5測測試和掛接接功能構件件MCGS為功功能構件提提供了一套套在VB環境下下進行在線線調試的運運行機制,使使用戶能隨隨時對所做做的修改進進行測試調調試、檢驗驗其正確性性,其簡單單程度和方方便性是其其它組態軟軟件系統所所無法比擬擬的。MCCGS的這這一機制,使使得大多數數普通工程程用戶都能能動手編制制自己的功功能構件。使用MCGSS開發向導導生成的程程序框架或或系統提供供的樣例源源代碼中,都都包含有一一個用于在在VB下進行行測試的工工程--TTestDDLL,通通過該工程程模擬MCCGS的工工作狀態,直直接調用功功能構件的的接口函數數,從而做做到對構件件的每個接接口函數在在VB源代碼碼一級進行行測試,實實際應用中中不要對該該工程進行行任何修改改工作。下面詳細介紹紹測試和掛掛接設備驅驅動構件的的方法和步步驟:按照前節所講講述的步驟驟,用開發發向導生成成一個設備備驅動構件件的框架,生成的源程序所在目錄為--D:\AddIn,構件工程名為--MyDLL,構件的類型名為--我的功能構件。完成自動生成后,在VB的工程組窗口中會看到二個工程:MyDLL和TestDLL。啟動MCGSS的組態環環境,并打打開或新建建一個MCCGS工程程。注意::進行在線線調試時,必必須啟動MMCGS,且且要保證MMCGS中中有一個打打開的工程程,否則,在在VB中無法法進行在線線調式。在VB環境下下,按F55鍵運行工工程組,出出現如下圖圖所示的調調試窗口,該該窗口中的的三個按鈕鈕分別用于于調用組態態環境接口口和運行環環境接口和和菜單調用用接口;中中間的輸入入框用來顯顯示功能構構件的類型型名稱。按不同的按鈕鈕可對功能能構件的接接口進行測測試,根據據構件所需需的功能,不不斷進行調調試測試,直直到完成所所有工作和和沒有錯誤誤產生為止止。完成所有的編編程調試工工作以后,把工程MyyDLL重重新編譯一一遍,生成最后后可以使用用的Acttivedll文文件:MyDLLL.dlll,把這個文文件拷貝到到目錄D::\MCGGS\Prrograam\AddIIns下(假定MCGGS系統安安裝時的目目錄為D::\Mcggs。注意意:編譯和和拷貝功能能構件的文文件時,一一定要先退退出MCGGS系統),同同時要修改改AddIIns目錄錄下的AdddInss.ini文件,在在該文件中中增加一行行:MyDDLL.ddll。完完成上述步步驟后,就就完成了用用戶功能構構件的編制制、調試和和掛接工作作,下面介介紹如何在在MCGSS系統下使使用定制的的功能構件件。啟動MCGSS組態環境境,在“工具”菜單下,將將會顯示出出“我的菜單單項”一項,選選取該菜單單項,MCCGS將調調用功能構構件的菜單單接口,顯顯示對應的的窗口(如如不需要菜菜單項,則則應把功能能構件的SSvrMeenuCoommannd接口中中的所有代代碼去掉)。打開一個運行行策略的組組態窗口,在在運行策略略功能構件件箱內,將將回顯示出出“我的功能能構件”一項。把把該構件選選入到策略略行中,用用鼠標雙擊擊該構件,MCGS調用構件的組態環境接口,以便用戶在組態環境中對構件的屬性進行設置。進入運行環境境后,當組組態環境組組態的對應應策略行被被執行時,MCGS調用構件的運行接口,執行構件所實現的功能。第三章開開發MCGGS設備驅驅動雖然MCGSS提供了大大多數常用用設備的驅驅動程序,但但在實際應應用中,或或因為所用用設備的特特殊性、或或因為實際際工程的需需要,MCCGS所提提供的設備備驅動程序序總會有些些不盡人意意。為解決決這些問題題,MCGGS提供了了一套規范范的設備驅驅動程序接接口,允許許用戶根據據自己的需需要來定制制設備驅動動程序。在學習完本章章之前,你你可能會覺覺得開發設設備驅動程程序是件難難事,而編編制能在WWin955和WinNNT下能同同時運行的的設備驅動動程序更是是不可思議議。MCGGS設備驅驅動的開發發既不需用用復雜的匯匯編語言,也也不需用難難懂的C語言,而而只須使用用簡單易用用、大多數數工程人員員都會使用用的VissualBasiic。MCGSS把和操作作系統底層層打交道的的內容全部部包裝起來來,以函數數調用的方方式提供給給你,同時時,MCGGS的高級級開發向導導能為你自自動生成設設備驅動程程序的框架架,MCGGS大多數數設備驅動動程序的源源程序代碼碼也都隨系系統提供給給你。只要要你會VBB,熟悉你你所使用的的硬件設備備,你就完完全可以按按照你自己己的需要來來開發定制制你自己的的設備驅動動程序。本章下面各節節將詳細介介紹開發設設備驅動程程序的方法法和步驟,請請在開始之之前,先安安裝VissualBasiic6.0(中文文專業版或或企業版)),然后安安裝MCGGS高級開開發工具包包,建議你你按下面各各節介紹的的方法和步步驟來一步步一步地學學習開發設設備驅動程程序。3.1設設備驅動構構件的實現現方法MCGS用AActivveDLLL構件的的方式來實實現設備驅驅動程序,通通過規范的的OLE接口口掛接到MMCGS中中,使其構構成一個整整體,所以以MCGSS把設備驅驅動程序叫叫做設備驅驅動構件。由由于設備驅驅動構件和和MCGSS運行在同同一個進程程內,故設設備構件的的運行速度度快,可靠靠性高,不不存在傳統統DDE方式式連接設備備驅動時的的數據流通通不暢和數數據傳輸速速度慢等問問題。同時時,OLEE是一個可可擴充的開開放標準,用用于實現不不同軟件之之間的相互互操作,而而不管軟件件本身是使使用什么編編程語言。因因此,只要要遵守MCCGS的接接口規范,可可以使用VVB、VC、Delpphi等語語言來編制制MCGSS的設備驅驅動程序。鑒鑒于VissualBasiic通用性性和簡單性性,建議使使用VB來開發發MCGSS的設備驅驅動程序,本本書也只講講解使用VVB進行開開發的技術術問題。由由于VB6.0以上版版本是以二二進制碼來來編譯執行行程序,其其運行速度度已接近或或超過VCC,完全能能滿足設備備驅動構件件所需的速速度要求。MCGS把實實際外部設設備分為獨獨立的設備備、父設備備和子設備備三類,獨獨立的設備備是可獨立立工作、完完成特定數數據輸入輸輸出功能的的設備,如如用于模擬擬量輸入輸輸出、數字字量輸入輸輸出的PCC接口卡等等;父設備備是本身不不直接處理理數據輸入入輸出,但但起到管理理其它設備備工作的設設備,如串串行口設備備、IDCCN-8993的通訊訊卡等;子子設備是本本身具有處處理數據輸輸入輸出的的功能,但但只有和對對應的父設設備一起才才構成完整整工作系統統的設備::如PLCC設備、帶帶智能通訊訊功能的儀儀器儀表等等;不同類類型的設備備的工作方方式有所不不同,其對對應的設備備驅動程序序的處理方方法也有所所不同。本本章只重點點介紹獨立立設備(PC接口卡卡)和通訊類類子設備設設備驅動程程序的開發發,如需要要進行父設設備和其它它類型子設設備的設備備驅動程序序的開發,請請和MCGGS開發小小組聯系。3.2設設備驅動構構件接口規規范MCGS設備備構件的實實現方法和和原理與標標準VB的ActiiveDLLL完全一一致,但MMCGS規規定了一套套接口規范范,只有遵遵守這些接接口規范的的ActiiveDLLL才能用用作MCGGS的設備備驅動構件件。MCGGS設備驅驅動構件必必須具有如如下5個屬性和和8個方法::屬性:DevvTypee 標識設備備的類型屬性:DevvStylle 標識設備備的類別屬性:DevvChannnel 標識設備備的通道個個數屬性:DevvBaseeIO 標識設備備所用IOO的基地址址屬性:DevvIONuumberr 標識設備備所用IOO地址的個個數方法:GettDevNName 讀取設備備構件類型型名稱方法:GettDevHHelp 調用設備備構件的在在線幫助內內容方法:SettDevPPage 調用設備備的內部屬屬性頁方法:IniitNewwDev 初試化設設備的初試試值方法:GettChlTType 讀取設備備構件各通通道的數據據類型和注注釋方法:IniitDevvRun 運行時對對設備進行行初試化工工作方法:RunnDevCCommaand 執行指定定的設備命命令方法:ColllecttDevDDat 定時操作作設備,采采集或輸出出數據開發MCGSS設備驅動動的過程,實實際上就是是根據設備備的特性和和含義來完完成8個方法功功能的編程程過程。下下面詳細講講述各個接接口的含義義和用法::屬性接口:DDevTyype接口作用:本本接口用于于Mcgss確定設備備構件的類類型。對獨獨立的設備備構件固定定為0;對通訊訊子設備,固固定為1。本屬性性為只讀屬屬性。語法形式:PPubliicPrroperrtyGGetDDevTyype())AsLongg屬性接口:DDevSttyle接口作用:本本接口用于于Mcgss確定設備備構件的類類別。對獨獨立的設備備構件固定定為0;對通訊訊子設備,固固定為1。本屬性性為只讀屬屬性。語法形式:PPubliicPrroperrtyGGetDDevSttyle(()AssLonng屬性接口:DDevChhanneel接口作用:本本接口用于于Mcgss確定設備備構件通道道個數。一一般把本屬屬性設置為為只讀屬性性。語法形式:PPubliicPrroperrtyGGetDDevChhanneel()AsLLong屬性接口:DDevIOONumbber接口作用:本本接口用于于Mcgss確定設備備構件所用用IO地址的的個數。本本屬性為只只讀屬性語法形式:PPubliicPrroperrtyGGetDDevIOONumbber())AsLongg屬性接口:DDevBaaseIOO接口作用:本本接口用于于Mcgss確定設備備構件所用用IO基地址址。本屬性性為讀寫屬屬性,在設設備屬性頁頁中以166進制數表表示語法形式:PPubliicDeevBasseIOAsLLong或或PubllicPPropeertyGetDevBBaseIIO()AsLLong注意:對不占占用IO地址的的設備,把把本屬性設設置為只讀讀屬性,且且屬性值為為0。方法接口:GGetDeevNamme接口作用:本本接口在組組態環境裝裝載時被MMCGS組組態環境調調用,返回回設備構件件對應的設設備類型名名稱,比如如“Omroon2000PLLC”等。MCGGS組態軟軟件將把這這個名稱顯顯示在設備備工具框中中。對于不不同的設備備,應該返返回不同的的設備類型型名稱。語法形式:GGetDeevNamme()assstrinng返回值::設備類型型名稱。參數說明:無無。方法接口:IInitNNewDeev接口作用:當當用戶在組組態環境的的設備組態態新增加一一個設備時時調用本接接口,用于于初始化新新設備的缺缺省參數值值。語法形式:IInitNNewDeev(SaavObjjAsObjeect)asLLong返回值::=0:設備備初始化成成功,<>>0:設備備初始化失失敗。參數說明:SSavObbj,存存盤服務對對象,接口口程序中通通過該對象象來保存和和讀取數據據。方法接口:SSetDeevPagge接口作用:本本接口在組組態環境中中當用戶要要修改設備備的內部屬屬性時被調調用,他將將打開設置置設備構件件內部屬性性的對話框框,并設置置設備構件件的屬性。語法形式:SSetDeevPagge(SaavObjjasObjeect)asLLong返回值::=0:屬性性設置有效效,要保存存,=1:屬性性設置無效效,不保存存。參數說明:SSavObbj,存存盤服務對對象,接口口程序中通通過該對象象來保存和和讀取數據據。方法接口:GGetChhlTyppe接口作用:本本接口在組組態環境中中調用,讀讀取設備通通道的數據據類型及通通道內容說說明當用戶戶要修改設設備的內部部屬性時被被調用,他他將打開設設置設備構構件內部屬屬性的對話話框,并設設置設備構構件的屬性性。語法形式:GGetChhlTyppe(DaatAssVarriantt,mssgAssVarriantt)AssLonng返回值::=0:設備備通道有效效,=1:設備備通道無效效。參數說明:DDat,長長整型數組組,標識設設備各通道道的數據類類型和輸入入輸出類型型。=1開關型型;=2數值型型;=3字符型型;大于00表示把設設備通道的的數據采集集到MCGGS中,小小于0表示把MCCGS中的的數據輸出出到設備構構件中;msg,字符符型數組,標標識各設備備通道內容容注釋。方法接口:IInitDDevRuun接口作用:本本接口在MMCGS運運行環境啟啟動設備構構件開始采采集之前被被調用一次次,用于對對設備硬件件進行初始始化工作。語法形式:IInitDDevRuun(SaavObjjAsObjeect,DatOObjAAsObbjectt)asslonng返回值::=0:設備備工作正常常,=11:設備工工作不正常常,MCGGS運行環環境將彈出出對話框,提提示用戶設設備出錯。參數說明:SSavObbj,存存盤服務對對象,接口口程序中通通過該對象象來保存和和讀取數據據。DataObbj,實時時數據庫對對象,接口口程序中通通過該對象象來操作實實時數據庫庫對象的屬屬性和方法法。方法接口:CColleectDeevDatt接口作用:本本接口由MMCGS運運行環境在在每一次設設備采集中中調用,運運行時,按按設定的時時間周期定定時調用本本方法采集集數據,并并送入實時時數據庫,或或把實時數數據庫中的的數據送進進來,供設設備驅動構構件處理。語法形式:CColleectDeevDatt(DattFAssVarriantt,DaatAssVarriantt,mssgAssVarriantt)asslonng返回值::=-11:設備故故障;=0:采集數數據有效,但但只對返回回的輸入數數據進行處處理;=1:采集數數據有效,但但對返回的的輸入輸出出數據都進進行處理;;=2:采集數數據無效,不不須進行處處理。參數說明:DDatF,,長整型型數組,標明對應應設備通道道有效,==0無效,=11有效;Dat,浮浮點數組,,存放設設備通道的的數值型或或開關型數數據;Msg,字字符數組,,存放設設備通道的的字符型或或事件型數數據。方法接口:RRunDeevCommmandd接口作用:本本接口在MMcgs運運行環境中中,當在設設備策略構構件、用戶戶腳本程序序或OLEEAuttomattion調調用中要求求執行特定定的設備命命令時,被被調用。語法形式:RRunDeevCommmandd(DattObjAsOObjecct,BByVallCmddAsStriing)asLLong返回值::=0:命令令正確執行行,Mcggs將對返返回的輸入入輸出數據據進行處理理;=1:命令執執行錯誤,Mcgs不對返回的輸入輸出數據進行處理;=2:無效的的設備命令令,Mcggs不對返返回的輸入入輸出數據據進行處理理。參數說明:DDataOObj,實實時數據庫庫對象,接接口程序中中通過該對對象來操作作實時數據據庫對象的的屬性和方方法;Cmd,字字符型,下達給設設備的設備備命令字符符串。3.3利利用開發向向導生成框框架MCGS提供供了一個高高級開發工工具包,能能快速為用用戶生成設設備驅動構構件的源程程序框架,在在此基礎上上編程既快快速,又可可減少出錯錯的可能性性。請按如如下的步驟驟來生成設設備驅動構構件的框架架:確保MCGSS的高級開開發工具包包已安裝正正確;啟動VisuualBBasicc6.0(中文文專業版或或企業版);;選擇“外接程程序”菜單,單單擊該菜單單下的MCCGS開發發向導菜單單項;彈出出開發向導導窗口后,按“下一步”按鈕,彈出如下圖所示窗口:選擇擴展構件件的類型為為設備驅動動構件,且且設置設備備驅動構件件為獨立設設備;按“下一步”按鈕,彈彈出如下圖圖所示的窗窗口:設置構件工程程名為“MyDeev”,構件類類型名為“我的設備備構件”。構件工工程名為設設備構件在在VB下源程程序的工程程名,編譯譯生成的AActivveDLLL構件的的名稱為MMyDevv.DLLL。構件類類型名用于于標識對應應的構件,最最后可顯示示在MCGGS的設備備工具箱中中。按“下一步”按鈕,出出現如下圖圖所示的窗窗口,設置置生成目錄錄和輸出目目錄都為“D:\DDev”,使開發發向導自動動生成的源源程序和編編譯生成的的構件都位位于同一目目錄下。在在一此按“下一步”按鈕,然然后按“完成”按鈕,MCCGS即開開始自動生生成設備驅驅動構件的的源程序框框架。開發向導完成成工作后,自自動生成一一個名位“MyDeev”的工程組組,如下圖圖所示,在在VB的工程程組窗口中中可以看到到該工程組組包含如下下二個VBB工程:MyDev工工程對應于于設備驅動動構件,該該工程包含含一個類模模塊和一個個程序模塊塊。類模塊塊DevOObj完成成了設備構構件所需的的所有接口口。TestDeev工程只只用于在VVB環境下下對設備構構件進行調調試,該工工程包含兩兩個窗體和和兩個程序序模塊,在在實際編程程時,無需需對該工程程進行任何何修改工作作。MCGS開發發向導生成成的所有源源程序代碼碼和編譯生生成的輸出出文件都放放在D:\\Dev目目錄下。程程序模塊DDevBaas是包含含一些和硬硬件設備操操作相關的的常量、數數據結構的的定義和外外部子程序序的定義。注意:MCGGS開發向向導生成的的只是設備備驅動構件件的源程序序框架,沒沒有任何具具體的功能能,要完成成特定的設設備驅動,還還需要在此此基礎上,針針對具體設設備的功能能進行進一一步的編程程和調試工工作。通訊訊子設備驅驅動構件程程序框架的的自動生成成方法和上上述步驟相相同。3.4利利用樣例程程序移植MCGS把大大多數設備備驅動構件件的源程序序代碼都隨隨系統一起起提供,在在實際應用用中,開發發定制自己己的設備驅驅動程序的的最好方法法就是在MMCGS提提供的源程程序代碼的的基礎上進進行。由于于OLE技術術本身的復復雜性,建建議按照本本節給定的的方法和步步驟來進行行你的開發發工作,避避免產生不不可預料的的錯誤。如如果你能嚴嚴格按照本本節的步驟驟進行開發發工作,則則你可以省省去對AcctiveeDLLL編程技術術及有關概概念的學習習和了解,直直接集中精精力實現設設備構件的的功能。從MCGS高高級開發工工具包中找找到你所需需要的樣例例源程序代代碼,假定定安裝高級級開發工具具包時所選選的安裝目目錄為D::\Mcggssdkk,則對應應的源程序序位于目錄錄D:\MMcgsssdk\ssamplles\DDevicce下,而而且按設備備的名稱來來命名對應應的目錄,如如:中泰PPC63119接口卡卡對應的設設備驅動程程序源代碼碼的目錄為為ZTPCC63199,歐姆龍龍PLC對應應的設備驅驅動程序源源代碼的目目錄為OmmronPPLC。為為方便說明明,下面各各步驟中假假定選取中中泰PC66319接接口卡的設設備驅動程程序為樣例例程序。建立一個新目目錄:D::\MyDDev,把把ZTPCC63199目錄內的的所有內容容拷貝到DD:\MyyDev目目錄下。新新的設備驅驅動構件的的源程序將將位于本目目錄下。啟動VisuualBBasicc6.0,打開工程程組該文件件(本例中為為TesttDev..vbg)。如下圖圖所示,在VB工程組組窗口中,包含有二二個工程::DevZZT63119、TesstDevv。先在工程組窗窗口中選中中工程DeevZT66319(被被選中工程程下面顯示示藍條),用用鼠標右鍵鍵彈出下拉拉菜單或從從“工程”菜單中,單單擊“DevZZT63119屬性”,打開該該工程的屬屬性窗口,如如下圖所示示,把“通用”和“生成”兩個屬性性頁中的DDevZTT63199改為MyDDev(修修改工程名名稱)。在“部件”屬屬性頁中,把“版本兼容”中的選項設置成“不兼容”。修改完成后,按“確認”按鈕返回。注意:對工程屬性頁中的其它屬性不要做任何修改。在VB的“文文件”菜單中,單單擊“ZT63319.vvbp另存存為”菜單,把把工程另存存為MyDDev.vvbp。在在VB的“文件”菜單中,單單擊“生成ZT66319..dll”菜單,彈彈出“生成工程”窗口,對對工程繼續續編譯,把把要生成的的文件名改改為“MyDeev.dlll”,按“確定”按鈕開始始編譯。編譯完成后,打打開工程MMyDevv的屬性窗窗口,如下下圖所示,在“部件”屬性頁中,把“版本兼容”中的選項設置成“二進制兼容”,同時把其下面的輸入框中的內容由ZT6319R.dll改為MyDev.dll。按“確認”按鈕返回打開類模塊DDevSeetObjj的編程窗窗口,對接接口GettDevNName進進行如下修修改:GetDevvNamee=“我自己的的設備構件件“選中工程TeestDeev,在VB“工程“菜單中,單單擊“引用”菜單項,把把工程TeestDeev對于DevvZT63319的引引用取消,改改為對工程程MyDeev的引用用。上述步驟完成成后,把整整個工程組組存盤,就就完成了開開始移植前前所有必須須的準備工工作。接下下來,你就就可以在源源程序的基基礎上進行行修改,實實現你自己己特定功能能的設備構構件。對通訊子設備備,如歐姆姆龍PLCC對應的設設備驅動程程序進行移移植時,基基本方法和和步驟上面面所述相同同。3.5測測試和掛接接設備驅動動構件MCGS為設設備驅動構構件提供了了一套在VVB環境下下進行在線線調試的運運行機制,使使用戶能隨隨時對所做做的修改進進行測試調調試、檢驗驗其正確性性,其簡單單程度和方方便性是其其它組態軟軟件系統使使用匯編或或C語言編制制設備驅動動通過DDDE掛接設設備驅動的的方式所無無法比擬的的。MCGGS的這一一機制,使使得大多數數普通工程程用戶都能能動手編制制自己的設設備驅動程程序。使用MCGSS開發向導導生成的程程序框架或或系統提供供的樣例源源代碼中,都都包含有一一個用于在在VB下進行行測試的工工程--TTestDDev,通通過該工程程模擬MCCGS的工工作狀態,直直接調用設設備驅動構構件的接口口函數,從從而做到對對構件的每每個接口函函數在VBB源代碼一一級進行測測試,實際際應用中不不要對該工工程進行任任何修改工工作。下面詳細介紹紹測試和掛掛接設備驅驅動構件的的方法和步步驟:按照前節所講講述的步驟驟,用開發發向導生成成一個設備備驅動構件件的框架,生成的源程序所在目錄為--D:\Dev,構件工程名為--MyDev,構件的類型名為--我的設備構件。完成自動生成后,在VB的工程組窗口中會看到二個工程:MyDev和TestDev。啟動MCGSS的組態環環境,并打打開或新建建一個MCCGS工程程。注意::進行在線線調試時,必必須啟動MMCGS,且且要保證MMCGS中中有一個打打開的工程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論