




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、開發(fā)OPC客戶端程序時,首先應(yīng)該生成OPC服務(wù)器支持的OPC對象,然后就可以使用OPC對象支持的屬性和方法,對其進行各種操作。這樣使得客戶程序可以像使用自己支持的數(shù)據(jù)和功能一樣,去使用服務(wù)器對象支持的數(shù)據(jù)和功能。在VisualBasic6.0里,是以對象為單位對OPC服務(wù)器進行訪問的。通過OPC自動化服務(wù)器的對象模型,可以得知OPC自動化接口由以下四種對象所定義。1OPCServer服務(wù)器對象OPCServer的一個實例,OPC服務(wù)器自動含有一個OPC組集合對象,并可在其基礎(chǔ)上生成一個OPC瀏覽器對象。OPCServer服務(wù)器對象在使用其它OPC對象前必須生成,也就是說在引用其他對象之前必須先
2、創(chuàng)建OPCServer。OPCServer對象提供了對數(shù)據(jù)源訪問和通信的方法,其提供了“Connect”方法來連接OPC自動化服務(wù)器。主要的屬性有:StartTime(只讀屬性,服務(wù)器啟動運行的時間)、CurrentTime(只讀屬性,返回服務(wù)器顯示的當(dāng)前時間)、LastUpdateTime(對于本OPC應(yīng)用程序的最后數(shù)據(jù)更新時間)、MajorVersion(只讀屬性,OPC服務(wù)器的主版本號)、MinorVersion(只讀屬性,OPC服務(wù)器的次版本號)、Bandwith(只讀屬性,返回OPC服務(wù)器的不敏感區(qū)的百分比)、ServerState(只讀屬性,返回服務(wù)器的運行狀態(tài),這個屬性是比較重要
3、的,方便客戶端程序查詢服務(wù)器的狀態(tài),從而達到排除故障的目的)、ServerName(只讀屬性,返回客戶程序所要連接的服務(wù)器名,也就是OPC服務(wù)器的ProgID)、ServerNode(服務(wù)器所在計算機名或者計算機的IP,用于連接遠程的計算機)等。主要方法有:GetOPCservers(獲得己經(jīng)注冊的OPC服務(wù)器的程序標識符,即ProgID)、Connect(用來建立與OPC數(shù)據(jù)存取服務(wù)器的連接)、Disconnect(斷開與服務(wù)器的連接)、CreatBrowser(創(chuàng)建OPC瀏覽器的對象)等。事件:只有一個ServerShutDown(關(guān)閉服務(wù)器,這個事件在服務(wù)器即將關(guān)閉之前發(fā)生,OPC服務(wù)器
4、以此通知OPC客戶程序預(yù)告即將關(guān)閉,OPC客戶程序應(yīng)該在接到此事件通知后,立即清除所有的OPC組并斷開與OPC服務(wù)器的連接)。2OPCGroups組集合對象OPC組的容器,包含所有客戶端創(chuàng)建的OPCGroup對象的自動化集合。這個對象的用途是添加、清除和管理OPC組主要的屬性有:DefaultGroupIsActive(新添加的OPC組的活動狀態(tài)的默認值。默認初始值是活動狀態(tài))、DefaultGroupUpdateRate(新添加的OPC組的默認數(shù)據(jù)更新周期,默認初始值是1000毫秒)、DefaultGrouPDeadband(新添加的OPC組的默認不敏感區(qū)的默認值,即能引起數(shù)據(jù)變化的最小數(shù)值
5、百分比,默認值是0%)、DefaultGroupLocaleID(新添加的OPC組區(qū)域標識符的默認值)、DefaultGroupTimeBias(新添加的OPC組的時間偏差的默認值)等。主要方法:Item(OPC組集合的默認方法。返回由集合索引指定的OPC組對象)、Add(在OPC組集合對象中添加一個組對象)、GetOPCGroup(返回指定的OPC組)、RemoveAll(為服務(wù)器關(guān)機作準備,刪除所有組和標簽)、Remove(刪除一個指定的組)、ConnectPublicGroup(連接到公共組)等。事件:AllGroupsDataChange(由多個OPC組的數(shù)據(jù)變化而引發(fā)的事件)。3OP
6、CGroup組對象,OPCGroup的一個實例,它包含自身的信息,同時向OPCItems對象提供數(shù)據(jù)獲取服務(wù),它自動含有一個Items集合對象,允許客戶端來組織它們需要訪問的數(shù)據(jù)。OPCGroup可以作為一個單元來進行激活或停止激活操作。主要屬性:Name(OPC組的名稱)、IsPublic(判斷是否公共組)、IsActive(控制組的激活狀態(tài)。只有活動狀態(tài)的OPC組才進行定期的數(shù)據(jù)更新)、IsSubscribed(控制組的訂閱狀態(tài))、ClientHandle(客戶句柄是由客戶端程序指定的用于識別某個OPC組的長整型數(shù)。當(dāng)進行數(shù)據(jù)訪問或詢問OPC組狀態(tài)時,服務(wù)器將這個數(shù)值和結(jié)果一起返回給OPC
7、客戶程序)、TimeBias(數(shù)據(jù)采樣時間的時間偏差值,用于調(diào)整設(shè)備時間和OPC服務(wù)器時間的偏差)、DeadBand(不敏感區(qū),只有數(shù)據(jù)變化超過此不敏感區(qū)時,服務(wù)器才觸發(fā)數(shù)據(jù)變化事件發(fā)生)、UpdateRate(數(shù)據(jù)更新周期)、OPCItems(OPC組的默認屬性,OPC標簽集合對象)。主要方法:SyncRead(同步讀OPC組內(nèi)單個或多個OPC項的數(shù)據(jù)值、質(zhì)量標志和采樣時間)、Syncwrite(同步寫入OPC組內(nèi)單個或多個OPC項的數(shù)據(jù)值)、AsyncRead(異步讀)、Asyncwrite(異步寫)、AsyncRefresh(觸發(fā)數(shù)據(jù)變化事件發(fā)生,刷新OPC組內(nèi)所有活動的OPC標簽的數(shù)據(jù)
8、。結(jié)果有數(shù)據(jù)變化事件DataChange返回)等。主要事件:DataChange(在OPC組內(nèi)任何OPC項的數(shù)據(jù)值或質(zhì)量標志變化時觸發(fā)的事件)、AsyncReadComplete(異步讀結(jié)束時發(fā)生的事件)、AsyncWriteComplete(異步寫結(jié)束時發(fā)生的事件)等。4OPCItems項集合對象,是OPC項對象的容器,自動化客戶程序創(chuàng)建的OPCGroup對象所包含的所有OPCItems對象的自動化集合。屬性:Parent(返回所屬的OPC組對象)、DefaultRequestedDataType(添加OPC項時,默認的要求的數(shù)據(jù)類型。初始值是控制設(shè)備的固有數(shù)據(jù)類型,既是VT_Empty)、
9、DefaultAccessPath(添加OPC項時,默認的數(shù)據(jù)訪問路徑。初始值是空)、DefaultIsActive(添加OPC項時,默認的激活狀態(tài),初始值是真)、Count(集合對象的固有屬性。OPC項集合中的OPC項數(shù))。方法:Item(返回OPC標簽集合中由集合索引指定的OPC標簽)、GetOPCItem(返回OPC項集合中由服務(wù)器句柄指定的OPC項)、Addltem(在OPC項集合中添加新的OPC項)、Remove(刪除指定的項)、Aalidate(檢查項創(chuàng)建的有效性)、SetActive(分別設(shè)置項為活動或非活動狀態(tài))、SetClientHandles(設(shè)置OPC項的客戶句柄)、Se
10、tDataTypes(設(shè)置OPC項要求的數(shù)據(jù)類型)。5OPCItem項對象表示與OPC服務(wù)器內(nèi)某個數(shù)據(jù)的連接。各個項包含了數(shù)據(jù)值、質(zhì)量標志以及采樣時間。數(shù)據(jù)值的類型為VARIANT。主要屬性:ClientHandle(客戶句柄是由客戶端程序指定的用于識別某個OPC組的長整型數(shù)。當(dāng)OPC組事件發(fā)生時,服務(wù)器將這個客戶句柄和結(jié)果一起返回給OPC客戶程序)、ServerHandle(服務(wù)器句柄是有OPC服務(wù)器設(shè)置的用于識別某個OPC標簽的一個全局唯一長整型數(shù))、AccessPath(返回OPC客戶程序指定的訪問路徑)、AccessRights(返回OPC項的訪問權(quán))、ItemID(返回識別這個OPC
11、項的標識符)、IsActive(用以控制OPC項的活動狀態(tài))、RequestedDataType(獲取項的值的數(shù)據(jù)類型)、Value(返回從OPC服務(wù)器讀取的最新數(shù)據(jù)值)、Quality(返回從OPC服務(wù)器讀取的最新數(shù)據(jù)值的質(zhì)量標志)、TimeStamp(時間戳)等。主要方法:Read(從服務(wù)器讀取OPC項的數(shù)值)、Write(向服務(wù)器寫入OPC項的數(shù)值)。6OPC瀏覽器對象OPCBrowser是OPC服務(wù)器名稱空間的枝和葉的集合,可以瀏覽服務(wù)器配置中項的名字,一個OPCServer對象實例中只能有一個OPCBrowser對象的實例。瀏覽器功能是選用功能,OPC服務(wù)器不支持瀏覽器的時候,即使執(zhí)
12、行CreateBrowser也不生成這個對象。主要屬性:Organization(OPC服務(wù)器的名稱空間的類型,有平面型和樹型兩種類型)、Filter(使用ShowBrancher或ShowLeafs方法時的瀏覽對象過濾器,使用這個過濾器可以縮小被瀏覽的名稱范圍)、DataType(使用ShowLeafs方法時,希望瀏覽的標簽的數(shù)據(jù)類型)、Count(瀏覽結(jié)果中的瀏覽標簽數(shù))。主要方法:Item(返回瀏覽結(jié)果中按集合索引ItemSpecifier指定的對象)、ShowBranches(將現(xiàn)在位置下的所有符合過濾條件的枝加入到瀏覽結(jié)果中)、ShowLeafs(將現(xiàn)在位置下的所有符合過濾條件的葉加
13、入到瀏覽結(jié)果中)、MoveUp(向現(xiàn)在位置的上一層移動)、MoveToRoot(向名稱空間的最上層移動)、MoveDown(向現(xiàn)在位置的下一層移動)、MoveTo(向瀏覽器的絕對位置移動)、GetItemID(由瀏覽標簽的名稱返回OPC標簽的標識符)。(1)建立新工程或項目,在“工程”菜單下選擇“引用”,如圖5-3所示。只有引用OPCDAAuoto.DLL后,在程序中才能創(chuàng)建服務(wù)器對象,然后進行一系列的操作。(2)在彈出的引用窗口里單擊“瀏覽(B)”按鈕,彈出添加引用窗口,選擇OPCDAAuoto.DLL文件。(3)在引用窗口里的OPCAutomation2.0前面打鉤,按“確定”按鈕。(4)
14、定義全局變量,這樣可以在窗體的任何方法的代碼內(nèi)應(yīng)用。變量類型應(yīng)該指定為對象型。這些對象最好在窗體的通用部分聲明加上“OptionExplicit”語句,表示模塊里的所有變量都需要顯式聲明。由于OPC自動化接口的數(shù)組的索引要求必須從1開始,而系統(tǒng)默認是從0開始,為了避免錯誤最好在代碼的最初加上“OptionBase1”語句。為了使對象可以處理事件,必須將objTestGrp和objServer的聲明中加上“WithEvents”語句,表示聲明的對象可以響應(yīng)事件。OptionExplicitOptionBase1 Dim WithEventsobjServer As OPCServerDim ob
15、jGroups As OPCGroups Dim WithEventsobjTestGrp As OPCGroupDim objItems As OPCItems(5)連接OPC服務(wù)器和建立OPC組考慮到代碼的可反復(fù)使用性,采用子程序進行編程。 SubConnect(strProgIDAsString,OptionalstrNodeAsString)If objServerIsNothing Then 建立一個OPC服務(wù)器對象SetobjServer=NewOPCServerEndIf服務(wù)器狀態(tài)ServerState屬性一共有OPCRunning、OPCFailed、OPCNoconfig、O
16、PCSuspended、OPCTest和OPCDisconnected六個值,分別表示正在運行、失敗、沒有配置、暫停、測試和沒有連接六種OPC服務(wù)器當(dāng)前的狀態(tài)。如果OPC服務(wù)器沒有連接,我們才執(zhí)行objServer.ConnectstrProgID,strNode語句。strProgID就是ProgID,strNode就是用于遠程通信的IP地址。If objServer.ServerState = OPCDisconnected Then連接OPC服務(wù)器objServer.Connect strProgID,strNodeEndIf在VisualBasic中,通過執(zhí)行一個Set操作實現(xiàn)調(diào)用其它
17、接口的方法。If objGroupsIsNothing Then 建立一個OPC組集合Set objGroups = objServer.OPCGroupsEndIfIf objTestGrpIsNothing Then 添加一個OPC組 Set objTestGrp = objGroups.Add(Group) EndIf EndSub(6)添加OPC標簽對服務(wù)器進行訪問前,必須先在OPC組里添加要訪問的OPC標簽。 OPC客戶端程序要按照用戶指定的標簽或者從組態(tài)文件里讀取需要添加的OPC標簽。Sub AddItem()DimstrItemIDs(17) As StringDimlClien
18、tHandles(17) As LongDim lErrors () As Long DimI As IntegerIf ObjTestGrpIsNothing Then ExitSub EndIf If NotobjItemsIsNothing ThenIf objItems.Count0 Then ExitSub EndIf EndIf設(shè)置組活動狀態(tài)。只有處于活動狀態(tài)的OPC才進行定期的數(shù)據(jù)更新。非活動狀態(tài)的OPC組,除了在接到顯然的數(shù)據(jù)讀寫要求外,并不收集任何數(shù)據(jù)。If mnuSubscribtion.Checked = True Then objTestGrp.IsActive = T
19、rue Else objTestGrp.IsActive=False EndIf啟動組異步通知。進行訂閱的OPC組可以自動收到從服務(wù)器送來的數(shù)據(jù)變化通知。objTestGrp.IsSubscribed=True建立OPC項集合SetobjItems=objTestGrp.OPCItems生成從TAG1到TAG17的項標識符ForI=1To17strItemIDs(I)=Server.Group.TAG&IlClientHandles(I)=INext添加OPC項CallobjItems.AddItems(17,strItemIDs,lClientHandles,lServerHandles,l
20、Errors)EndSub(7)異步讀取代碼的實現(xiàn)在定時器事件內(nèi)進行執(zhí)行AsyncRead子程序的讀取代碼,而在讀取完成事件處理返回的數(shù)據(jù)訪問結(jié)果。SubAsyncRead()DimlErrors()AsLongIfobjTestGrpIsNothingThenExitSubEndIfIfobjTestGrp.OPCItems.Count0Then異步讀取lTransID_Rd=lTransID_Rd+1objTestGrp.AsyncRead17,lServerHandles,lErrors,lTransID_Rd,lCancelID_RdEndIfEndSubPrivateSubobjTe
21、stGrp_AsyncReadComplete(_ByValTransactionIDAsLong,ByValNumItemsAsLong,_ClientHandles()AsLong,ItemValues()AsVariant,_Qualities()AsLong,TimeStamps()AsDate,Errors()AsLong)Sub(8)在按鈕中執(zhí)行AsyncWrite子程序,完成異步寫的操作。SubAsyncWrite(nIndexAsInteger,ByRefvtItemValues()AsVariant,_ByReflErrors()AsLong)DimlHandle(1)AsL
22、ongIfobjTestGrpIsNothingThenExitSubEndIfIfobjTestGrp.OPCItems.Count0ThenlHandle(1)=lServerHandles(nIndex)異步寫入lTransID_Wt=lTransID_Wt+1objTestGrp.AsyncWrite1,lHandle(),vtItemValues,_lErrors,lTransID_Wt,lCancelID_WtEndIfEndSub(9)斷開OPC服務(wù)器連接著OPC服務(wù)器的OPC客戶應(yīng)用程序,在退出前必須斷開和OPC服務(wù)器的連接。因為OPC服務(wù)器并不知道OPC客戶應(yīng)用程序的退出。如
23、果不先斷開連接,那么OPC服務(wù)器使用的計算機資源就不會被釋放。如果這樣的問題反復(fù)發(fā)生,久而久之,連續(xù)運轉(zhuǎn)的自動控制系統(tǒng)可能會計算機資源漸漸枯竭從而發(fā)生嚴重問題,可以顯式地把它設(shè)置為“Nothing”。SubDisconnect()DimlErrors()AsLongIfNotobjItemsIsNothingThenIfobjItems.Count0ThenobjItems.Remove17,lServerHandles,lErrors清除OPC項EndIfSetobjItems=NothingEndIfIfNotobjTestGrpIsNothingThenobjGroups.RemoveG
24、roup清除OPC組SetobjTestGrp=NothingEndIfIfNotobjGroupsIsNothingThenSetobjGroups=NothingEndIfIfNotobjServerIsNothingThenIfobjServer.ServerStateOPCDisconnectedThenobjServer.Disconnect斷開OPC服務(wù)器.EndIfSetobjServer=NothingEndIfEndSubWTOPCSvr.DLL作為一個快速開發(fā)OPC服務(wù)器的工具包,它封裝了所有關(guān)于COM和OPC的技術(shù)細節(jié),將Microsoft公司的OLE、COM、DCOM技
25、術(shù)和OPC的技術(shù)細節(jié)隱藏起來,使開發(fā)OPC服務(wù)器的工作集中在特定的數(shù)據(jù)采集任務(wù)上來。利用DLL開發(fā)OPC服務(wù)器的開發(fā)者無需考慮許多涉及到底層接口實現(xiàn)方面的工作,開發(fā)者無須掌握ATL、COM/DCOM,也無須了解OPC技術(shù)的細節(jié),只需具有基本的編程基礎(chǔ)即可快速上手。開發(fā)者的應(yīng)用程序完全可以在一個較高層次上去描述OPC數(shù)據(jù)。利用這個DLL也可以很容易的實現(xiàn)對現(xiàn)有系統(tǒng)的改造,因為它可以很容易地集成到現(xiàn)有的應(yīng)用系統(tǒng)中,而無需太多的工作。該工具包支持多個客戶端并發(fā)訪問服務(wù)器,并為每個客戶端創(chuàng)建一個獨立線程。WTOPCSvr.DLL工具包其實就是一個動態(tài)鏈接庫(DLL)。支持OPCl.0和OPC2.0數(shù)據(jù)
26、存取規(guī)范定義的所有接口,包括實現(xiàn)了瀏覽器功能的接口。服務(wù)器應(yīng)用程序通過傳遞一個名字和值給動態(tài)鏈接庫去創(chuàng)建過程標簽,動態(tài)鏈接庫記錄這個數(shù)據(jù)點,同時傳送給所有使用這個數(shù)據(jù)點的客戶。任何時候這個服務(wù)器應(yīng)用程序都可以改變這個數(shù)據(jù)點的值,而所有使用這個數(shù)據(jù)點的客戶都會得到數(shù)據(jù)值改變的通報。一個連接到服務(wù)器的客戶改變?nèi)魏芜^程標簽都會得到調(diào)用返回通報消息。動態(tài)鏈接庫還支持動態(tài)創(chuàng)建OPC標簽,如果一個客戶請求一個還沒有創(chuàng)建的標簽,則產(chǎn)生一個調(diào)用返回,應(yīng)用程序就根據(jù)這個調(diào)用返回的信息創(chuàng)建一個標簽。使用這個動態(tài)鏈接庫(WTOPCSvr.DLL)可以迅速地開發(fā)OPC數(shù)據(jù)存取服務(wù)器,它提供了一些把定制數(shù)據(jù)集成到OPC
27、服務(wù)器的易于使用的API函數(shù)。另外這個動態(tài)鏈接庫可以很容易的集成到現(xiàn)有應(yīng)用中,也可以集成到一個新的應(yīng)用中。使用動態(tài)鏈接庫開發(fā)OPC服務(wù)器時,關(guān)鍵要求用戶對動態(tài)鏈接庫的各個API函數(shù)要熟悉,從而提高軟件開發(fā)的靈活性。這個動態(tài)鏈接庫包含五大功能塊:調(diào)用返回定義、初始化和注冊函數(shù)、OPC項函數(shù)、實時信息函數(shù)和輔助功能函數(shù)。1調(diào)用返回定義明確地定義了DLL用于返回給服務(wù)器程序的調(diào)用返回的具體含義,以實現(xiàn)客戶應(yīng)用與服務(wù)器應(yīng)用之間的數(shù)據(jù)交換,DLL提供了以下一些API函數(shù)。DeclareFunctionEnableUnknownItemNotificationLibWtOPCSvrAlias_Enable
28、UnknownItemNotification4(ByValCallbackAsLong)AsLong:這個函數(shù)的返回值表示一個客戶請求了一個沒有定義或是己經(jīng)被暫停刷新的標簽,但無論客戶請求的標簽是否是己定義的標簽,這個函數(shù)都定義了一個從DLL返回的調(diào)用返回。當(dāng)連接建立后,服務(wù)器應(yīng)用可以使用這個調(diào)用返回對動態(tài)創(chuàng)建的標簽進行操作。DeclareFunctionEnableItemRemovalNotificationLibWtOPCSvrAlias_EnableItemRemovalNotification4(ByValCallbackAsLong)AsLong:當(dāng)對一個標簽的最后客戶引用釋放后
29、,這個函數(shù)將定義一個來自DLL的調(diào)用返回,服務(wù)器應(yīng)用程序可以刪除這個標簽或暫停這個標簽的刷新。DeclareFunctionEnableDisconnectNotificationLibWtOPCSvrAlias_EnableDisconnectNotification4(ByValCallbackAsLong)AsLong:當(dāng)客戶應(yīng)用請求斷開連接時,這個函數(shù)產(chǎn)生一個來自DLL的調(diào)用返回通知服務(wù)器應(yīng)用斷開連接。DeclareFunctionEnableWriteNotificationLibWtOPCSvrAlias_EnableWriteNotification8(ByValCallback
30、AsLong,ByValConvertToNativeAsLong)AsLong:當(dāng)OPC客戶寫一個己定義的標簽時,這個函數(shù)產(chǎn)生一個來自DLL的調(diào)用返回。正常情況下,DLL將把值轉(zhuǎn)變成項的私有類型,但在某些情況下,它要求應(yīng)用自己完成這個轉(zhuǎn)變過程。2初始化與注冊函數(shù)DeclareFunctionInitWTOPCsvrLibWtOPCSvrAlias_InitWTOPCsvr8(ByRefCLSID_SvrAsByte,ByValServerRateAsLong)AsLong:這個函數(shù)實現(xiàn)對DCOM的初始化和創(chuàng)建OPC服務(wù)器對象。其中參數(shù)CLSID_Svr是OPC服務(wù)器的類標識(CLSID)用于
31、OPC客戶連接服務(wù)器;參數(shù)ServerRate定義了客戶的數(shù)據(jù)刷新速率,其單位是毫秒。如果函數(shù)調(diào)用成功則返回TRUE,否則返回FALSE。DeclareFunctionUpdateRegistryLibWtOPCSvrAlias_UpdateRegistry16(ByRefCLSID_SvrAsByte,ByRefNameAsByte,ByRefDescrAsByte,ByRefExePathAsByte)AsLong:這個函數(shù)封裝了Windows注冊函數(shù),用于OPC服務(wù)器的注冊。其中參數(shù)CLSID_Svr是OPC服務(wù)器的類標識(CLSID);參數(shù)Name定義了服務(wù)器的名字;參數(shù)Descr可以
32、是任何描述服務(wù)器的字符串,但常常包含一些版本信息;參數(shù)ExePath定義了可執(zhí)行程序的完整的Windows路徑。如果函數(shù)調(diào)用成功則返回TRUE,否則返回FALSE。DeclareFunctionUnregisterServerLibWtOPCSvrAlias_UnregisterServer8(ByRefCLSID_SvrAsByte,ByRefNameAsByte)AsLong:這是一個服務(wù)器注銷函數(shù),其參數(shù)CLSID_Svr是OPC服務(wù)器的類標識(CLSID);參數(shù)Name為服務(wù)器的名字。如果函數(shù)調(diào)用成功則返回TRUE,否則返回FALSE。3OPC項函數(shù)DeclareFunctionCre
33、ateTagLibWtOPCSvrAlias_CreateTag28(ByRefNameAsByte,ByValValueAsVariant,ByValInitialQualityAsInteger,ByValIsWritableAsLong)AsLong:這是一個在動態(tài)鏈接庫里創(chuàng)建過程標簽的函數(shù),參數(shù)Name定義了OPC客戶要訪問的過程標簽,這個名字字符串可以是服務(wù)器可接受的任何文本字符串,其中也可使用分層名字(使用“.”分隔符),這將導(dǎo)致動態(tài)鏈接庫創(chuàng)建OPC分層名字空間;參數(shù)Value定義了標簽的初始數(shù)據(jù);參數(shù)InitialQuality定義了標簽的OPC屬性標志;參數(shù)IsWriteabl
34、e決定標簽是否是可寫標簽。如果標簽創(chuàng)建成功,函數(shù)返回數(shù)據(jù)點的句柄(HANDLE),否則返回INVALID_HANDLE_VALUE。DeclareFunctionUpdateTagLibWtOPCSvrAlias_UpdateTag24(ByValTagHandleAsLong,ByValValueAsVariant,ByValQualityAsInteger)AsLong:這個函數(shù)調(diào)用實現(xiàn)對過程標簽的數(shù)據(jù)刷新。Value就是來自現(xiàn)場硬件的數(shù)據(jù)。DeclareFunctionUpdateTagWithTimeStampLibWtOPCSvrAlias_UpdateTagWithTimeStam
35、p32(ByValTagHandleAsLong,ByValValueAsVariant,ByValQualityAsInteger,ByValTimestampAsDouble)AsLong:這個函數(shù)允許應(yīng)用改變一個己定義的標簽的值、屬性標志和時間標簽。如果應(yīng)用沒有提供時間標簽(timestamp),則DLL將采用系統(tǒng)時間。參數(shù)TagHandle表示數(shù)據(jù)點;參數(shù)Value表示數(shù)據(jù)值;參數(shù)Quality表示新的屬性條件。如果函數(shù)調(diào)用成功則返回TRUE,否則返回FALSE。DeclareFunctionSetTagPropertiesLibWtOPCSvrAlias_SetTagProperti
36、es28(ByValTagHandleAsLong,ByValPropertyIDAsLong,ByRefDescriptionAsByte,ByValValueAsVariant)AsLong:任何數(shù)量的OPC項屬性都可以用這個函數(shù)設(shè)置,DLL保持了所有已定義屬性的一個列表,OPC客戶可以訪問這些屬性。DeclareFunctionUpdateTagByNameLibWtOPCSvrAlias_UpdateTagByName24(ByRefNameAsByte,ByValValueAsVariant,ByValQualityAsInteger)AsLong:可以使用這個函數(shù)來改變一個已定義過
37、程標簽的值。DeclareFunctionSuspendTagUpdatesLibWtOPCSvrAlias_SuspendTagUpdates8(ByValTagHandleAsLong,ByValOnOffAsLong)AsLong:這個函數(shù)可以使服務(wù)器知道一個客戶描述的特殊標簽的調(diào)用返回。在多數(shù)情況下,服務(wù)器是隨著其接收數(shù)據(jù)的變化而刷新標簽的,DLL處理所有客戶請求、通報和刷新。在一定條件下,當(dāng)客戶訪問一個項時,希望服務(wù)器僅僅刷新OPC標簽數(shù)據(jù)庫。通過暫停刷新功能,當(dāng)客戶試圖訪問這個項時,DLL將處理一個未知項的調(diào)用返回,然后,服務(wù)器開始重新開始刷新標簽直到下一個暫停刷新產(chǎn)生。TagHa
38、ndle定義了暫停刷新的項。DeclareFunctionReadTagLibWtOPCSvrAlias_ReadTag8(ByValTagHandleAsLong,ByRefValueAsVariant)AsLong:這是一個讀標簽的函數(shù)。DeclareFunctionReadTagWithTimeStampLibWtOPCSvrAlias_ReadTagWithTimeStamp&16(ByValTagHandleAsLong,ByRefValueAsVariant,ByRefQualityAsInteger,ByRefTimestampAsFileTime)AsLong:應(yīng)用程序使用這個
39、函數(shù)去獲取一個標簽的當(dāng)前值。參數(shù)Value表示了接收的數(shù)據(jù)值,參數(shù)Timestamp是標簽的當(dāng)前時間標簽值。4實時信息DeclareFunctionStartUpdateTagsLibWtOPCSvrAlias_StartUpdateTags0()AsLong:開始刷新。DeclareFunctionUpdateTagToListLibWtOPCSvrAlias_UpdateTagToList24(ByValTagHandleAsLong,ByValValueAsVariant,ByValQualityAsInteger)AsLong:刷新標簽列表。DeclareFunctionEndUpda
40、teTagsLibWtOPCSvrAlias_EndUpdateTags0()AsLong:上面三個函數(shù)必須一起使用,它們一起提供了一次刷新多個標簽的有效方式。首先調(diào)用StartUpdateTags,然后用UpdateTagToList代替UpdateTag()調(diào)用,當(dāng)所有標簽都被刷新后再調(diào)用EndUpdateTags()結(jié)束此次刷新操作。5輔助功能函數(shù)DeclareFunctionRefreshAllClientsLibWtOPCSvrAlias_RefreshAllClients0()AsLong:服務(wù)器可以使用此函數(shù)對所有連接的客戶進行初始化。正常情況下,客戶應(yīng)用數(shù)據(jù)是基于DLL中的異步時針刷新的,這個函數(shù)讓服務(wù)器可以刷新所有客戶數(shù)據(jù)。DeclareFunctionResetServerRateLi
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報告:地方本科院校辦學(xué)定位與特色發(fā)展的湖南實踐研究
- 課題開題報告:大學(xué)教師學(xué)術(shù)工作的時間困境及其化解路徑研究
- 人教版數(shù)學(xué)七下同步課時課件5.3 平行線的性質(zhì) 第二課時
- 課題開題報告:產(chǎn)教融合共同體背景下鐵路職業(yè)院校產(chǎn)科教融合路徑研究與實踐
- 家具定制客服服務(wù)協(xié)議
- 年畫企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 實驗室搬遷環(huán)保方案行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025年度酒店客房現(xiàn)代風(fēng)格裝修工程施工合同
- 潛水眼鏡企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 2025年度汽車制造業(yè)年集體勞動合同
- 普通診所污水、污物、糞便處理方案及周邊環(huán)境情況說明
- 成功人士的七個習(xí)慣課件
- 粵教版必修二《向心力》評課稿
- 中國建筑史PPT(東南大學(xué))完整全套教學(xué)課件
- 2022年水利監(jiān)理規(guī)劃
- 哈弗汽車品牌全案策略及營銷推廣方案
- 04J008 擋土墻(重力式 衡重式 懸臂式)
- (學(xué)校教育論文)人工智能下的教育變革研究
- 2023年湖南工程職業(yè)技術(shù)學(xué)院單招筆試職業(yè)技能考試題庫及答案解析
- 春天的氣息-教學(xué)設(shè)計教案
- GB/T 41855-2022小型游樂設(shè)施轉(zhuǎn)椅
評論
0/150
提交評論