久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

最新廣告
關(guān)注中國(guó)自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計(jì)算2025年會(huì)
CAIAC 2025
2025工業(yè)安全大會(huì)
OICT公益講堂
當(dāng)前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

案例頻道

使用Delphi7進(jìn)行OPC服務(wù)器的開發(fā)
  • 企業(yè):控制網(wǎng)     領(lǐng)域:工業(yè)以太網(wǎng)     行業(yè):市政工程    
  • 點(diǎn)擊數(shù):6389     發(fā)布時(shí)間:2005-05-10 14:23:04
  • 分享到:

 

1. 前言
    在企業(yè)"管控一體化"的信息系統(tǒng)建設(shè)中,實(shí)時(shí)信息系統(tǒng)起著非常重要的作用。它可以采集控制系統(tǒng)中的實(shí)時(shí)數(shù)據(jù),使管理者在辦公室里就可以監(jiān)測(cè)到生產(chǎn)現(xiàn)場(chǎng)的生產(chǎn)情況及報(bào)警信息;并可以對(duì)取得的實(shí)時(shí)數(shù)據(jù)進(jìn)行優(yōu)化、分析,從而為保證生產(chǎn)設(shè)備正常運(yùn)轉(zhuǎn)、降低成本提供重要基礎(chǔ)。作為制造執(zhí)行系統(tǒng),MES必然要求與企業(yè)其它生產(chǎn)管理系統(tǒng)有密切關(guān)系,MES在其中起到了信息集線器(Information Hub)的作用,它相當(dāng)于一個(gè)通訊工具為其它應(yīng)用系統(tǒng)提供生產(chǎn)現(xiàn)場(chǎng)的實(shí)時(shí)數(shù)據(jù)。

    作為信息集線器的MES要將來(lái)自不同硬件生產(chǎn)廠商的控制系統(tǒng)的現(xiàn)場(chǎng)數(shù)據(jù)匯總在實(shí)時(shí)數(shù)據(jù)庫(kù)中,必須要和不同的設(shè)備,比如PLC,變頻器,現(xiàn)場(chǎng)總線的儀表等通訊,如果不同的設(shè)備廠家都遵守一個(gè)相同的程序接口標(biāo)準(zhǔn)的話,那么程序和不同設(shè)備的溝通將變得非常容易。OPC 就是這樣一種工業(yè)標(biāo)準(zhǔn),它是OLE for process control 的英文縮寫。OPC 是基于微軟的COM(Component Object Model)和OLE(Object Linking and Embedding)技術(shù)之上的。和以前不同的是,現(xiàn)在設(shè)備廠家提供不同的OPC Server。OPC Server負(fù)責(zé)從設(shè)備中取數(shù)據(jù)和寫數(shù)據(jù)。用戶所要做的就是利用統(tǒng)一的COM 規(guī)范編寫OPC Client。客戶程序和OPC Server 打交道。OPC Server是一座在客戶和硬件設(shè)備之間的橋梁,通過(guò)它,我們可以很容易的取得現(xiàn)場(chǎng)的溫度,壓力,流量,位置等信號(hào),以及控制現(xiàn)場(chǎng)的閥門開度,電機(jī)轉(zhuǎn)速等。注意客戶程序和服務(wù)器程序可以在同一臺(tái)計(jì)算機(jī)上,也可以在不同的計(jì)算機(jī)上,區(qū)別是使用COM 還是使用DCOM。

2. 項(xiàng)目背景
     我們開發(fā)的OPC服務(wù)器的項(xiàng)目背景是貴鋁熱電廠的數(shù)據(jù)上網(wǎng)項(xiàng)目。此項(xiàng)目中的一個(gè)子項(xiàng)目需要將現(xiàn)場(chǎng)的一些重要輔機(jī)的溫度值上傳至熱電廠的熱網(wǎng)之中。在數(shù)據(jù)的接口上我們選擇使用OPC作為統(tǒng)一的數(shù)據(jù)接口,因此我們?cè)谳o機(jī)溫度巡檢系統(tǒng)中需要實(shí)際開發(fā)其相應(yīng)的數(shù)據(jù)訪問(wèn)服務(wù)器,用于和實(shí)時(shí)數(shù)據(jù)庫(kù)服務(wù)器通訊以便于將數(shù)據(jù)上傳至熱電廠的熱網(wǎng)之中。以下我以此項(xiàng)目為例來(lái)介紹OPC數(shù)據(jù)訪問(wèn)服務(wù)器的開發(fā)過(guò)程。服務(wù)器的開發(fā)工具通常是在VC6環(huán)境中使用MFC類庫(kù)搭配ATL,我選擇了Delphi7。因?yàn)镈elphi是功能強(qiáng)大的應(yīng)用程序開發(fā)工具。它具有功能強(qiáng)大,運(yùn)行速度快,易于學(xué)習(xí)和使用以及開發(fā)效率高等特點(diǎn)。它是可視化應(yīng)用編程環(huán)境,可重用性面向?qū)ο缶幊陶Z(yǔ)言,快速編譯器和數(shù)據(jù)庫(kù)的完美組合。編寫OPC定制接口的客戶程序的本質(zhì)就是編寫COM客戶程序,而使用Delphi進(jìn)行COM開發(fā)時(shí),我們會(huì)發(fā)現(xiàn)Object Pascal為COM提供了強(qiáng)大的語(yǔ)言支持。

圖表 1 輔機(jī)溫度巡檢網(wǎng)絡(luò)連接圖

3. OPC服務(wù)器的結(jié)構(gòu)
    
    下面首先給出OPC服務(wù)器的內(nèi)部結(jié)構(gòu)。

                         圖表 2 OPC服務(wù)器的內(nèi)部結(jié)構(gòu)
   
    OPC規(guī)范提供了兩套接口方案,即COM接口和自動(dòng)化。COM接口效率高,通過(guò)該接口,客戶能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C++語(yǔ)言的客戶一般采用COM接口方案;自動(dòng)化接口一般為采用VB語(yǔ)言的客戶所采用。自動(dòng)化接口使解釋性語(yǔ)言和宏語(yǔ)言編寫客戶應(yīng)用程序變得簡(jiǎn)單,然而自動(dòng)化客戶運(yùn)行時(shí)需進(jìn)行類型檢查,這一點(diǎn)則大大犧牲了程序的運(yùn)行速度。OPC服務(wù)器必須實(shí)現(xiàn)COM接口,是否實(shí)現(xiàn)自動(dòng)化接口則取決于供應(yīng)商的主觀意愿。通常可以直接使用OPC基金會(huì)提供的OPC自動(dòng)化包裝DLL(OPCDAAuto.DLL),將OPC定制接口變換成OPC自動(dòng)化接口。當(dāng)然也可以自己編制自動(dòng)化包裝器。
 



圖表 3 OPC服務(wù)器通過(guò)自動(dòng)化包裝器提供OPC自動(dòng)化接口

4. OPC服務(wù)器對(duì)象模型
    OPC服務(wù)器由三類對(duì)象組成,相當(dāng)于三種層次上的接口:服務(wù)器(Server)、組(Group) 和數(shù)據(jù)項(xiàng)(Item)。

1) 服務(wù)器對(duì)象(Server)
    擁有服務(wù)器的所有信息,同時(shí)也是組對(duì)象(Group)的容器,一個(gè)服務(wù)器對(duì)應(yīng)于一個(gè)OPC Server,即一種設(shè)備的驅(qū)動(dòng)程序。在一個(gè)Server中,可以有若干個(gè)組。

2) 組對(duì)象(Group)
    擁有本組的所有信息,同時(shí)包容并邏輯組織OPC數(shù)據(jù)項(xiàng)(Item)。

    OPC組對(duì)象(Group)提供了客戶組織數(shù)據(jù)的一種方法,組是應(yīng)用程序組織數(shù)據(jù)的一個(gè)單位。客戶可對(duì)之進(jìn)行讀寫,還可設(shè)置客戶端的數(shù)據(jù)更新速率。當(dāng)服務(wù)器緩沖區(qū)內(nèi)數(shù)據(jù)發(fā)生改變時(shí),OPC將向客戶發(fā)出通知,客戶得到通知后再進(jìn)行必要的處理,而無(wú)需浪費(fèi)大量的時(shí)間進(jìn)行查詢。OPC規(guī)范定義了兩種組對(duì)象:公共組(或稱:全局組,public)和局部組(或稱:局域組、私有組,Local)。公共組由多個(gè)客戶共有,局部組只隸屬于一個(gè)OPC客戶。全局組對(duì)所有連接在服務(wù)器上的應(yīng)用程序都有效,而局域組只能對(duì)建立它的Client有效。一般說(shuō)來(lái),客戶和服務(wù)器的一對(duì)連接只需要定義一個(gè)組對(duì)象。在一個(gè)組中,可以有若干個(gè)項(xiàng)。

3) 項(xiàng)
    項(xiàng)是讀寫數(shù)據(jù)的最小邏輯單位。一個(gè)項(xiàng)與一個(gè)具體的位號(hào)相連。項(xiàng)不能獨(dú)立于組存在,必須隸屬于某一個(gè)組。在每個(gè)組對(duì)象中,客戶可以加入多個(gè)OPC數(shù)據(jù)項(xiàng)(Item)。OPC數(shù)據(jù)項(xiàng)是服務(wù)器端定義的對(duì)象,通常指向設(shè)備的一個(gè)寄存器單元。OPC客戶對(duì)設(shè)備寄存器的操作都是通過(guò)其數(shù)據(jù)項(xiàng)來(lái)完成的,通過(guò)定義數(shù)據(jù)項(xiàng),OPC規(guī)范盡可能的隱藏了設(shè)備的特殊信息,也使OPC服務(wù)器的通用性大大增強(qiáng)。OPC數(shù)據(jù)項(xiàng)并不提供對(duì)外接口,客戶不能直接對(duì)之進(jìn)行操作,所有操作都是通過(guò)組對(duì)象進(jìn)行的。每個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)結(jié)構(gòu)包括三個(gè)成員變量:數(shù)據(jù)值、數(shù)據(jù)質(zhì)量和時(shí)間戳。數(shù)據(jù)值是以VARIANT形式表示的。應(yīng)當(dāng)注意,數(shù)據(jù)項(xiàng)表示同數(shù)據(jù)源的連接而不等同于數(shù)據(jù)源,無(wú)論客戶是否定義數(shù)據(jù)項(xiàng),數(shù)據(jù)源都是客觀存在的。可以把數(shù)據(jù)項(xiàng)看作數(shù)據(jù)源的地址,即數(shù)據(jù)源的引用,而不應(yīng)看作數(shù)據(jù)源本身。組與項(xiàng)的關(guān)系如下圖所示:

圖表 4 OPC服務(wù)器的對(duì)象模型

    應(yīng)用程序作為OPC接口中的Client方,硬件驅(qū)動(dòng)程序作為OPC接口中的Server方。每一個(gè)OPC Client應(yīng)用程序都可以接若干個(gè)OPC Server,每一個(gè)硬件驅(qū)動(dòng)程序可以為若干個(gè)應(yīng)用程序提供數(shù)據(jù)。

5. OPC服務(wù)器對(duì)象接口
    OPC服務(wù)器是通過(guò)接口向客戶提供服務(wù)的,接口實(shí)際上是一組相關(guān)函數(shù)的集合。

(1) OPCServer對(duì)象接口
OPCServer對(duì)象是OPC中的首要對(duì)象,它提供了如下接口:
IUnknown接口是COM的標(biāo)準(zhǔn)接口
IOPCServer接口可對(duì)OPCGroup對(duì)象進(jìn)行有關(guān)操作
IOPCServerPublicGroups接口為客戶和服務(wù)器提供了管理公共組的功能
IOPCBrowseServerAddressSpace接口提供了客戶瀏覽服務(wù)器數(shù)據(jù)項(xiàng)的功能
IOPCItemProperties接口讓客戶能夠?yàn)g覽與ItemID相關(guān)的可訪問(wèn)屬性
IOPCCommon接口提供了設(shè)置和詢問(wèn)LocaleID的功能
IPersistFile接口允許客戶裝載和保存服務(wù)器的配置信息
IConnectionPointContainer接口允許用戶探查發(fā)現(xiàn)連接點(diǎn)

                         圖表 5 OPCServer對(duì)象接口圖
  
(2) OPCGroup對(duì)象接口
OPCGroup對(duì)象是管理數(shù)據(jù)項(xiàng)集合的對(duì)象,它提供的接口如下:
IUnknown接口是COM的標(biāo)準(zhǔn)接口
IOPCItemMgt接口為客戶提供了添加,刪除和控制組中數(shù)據(jù)項(xiàng)的功能
IOPCGroupStateMgt接口允許客戶管理組中的所有狀態(tài)信息
IOPCPublicGroupStateMgt接口用來(lái)將私有組轉(zhuǎn)換為公共組
IOPCSyncIO接口允許用戶對(duì)服務(wù)器執(zhí)行同步讀寫操作
IOPCAsyncIO接口允許客戶對(duì)服務(wù)器執(zhí)行異步讀寫操作
IOPCAsyncIO2接口用來(lái)替代IOPCAsyncIO接口
IConnectionPointContainer接口允許用戶探查發(fā)現(xiàn)連接點(diǎn)
IDataObject接口允許客戶和使用OPC數(shù)據(jù)流格式的組之間產(chǎn)生連接



圖表 6 OPCGroup對(duì)象接口圖

6. OPC服務(wù)器的Delphi實(shí)現(xiàn)
    本項(xiàng)目的輔機(jī)溫度巡檢OPC數(shù)據(jù)訪問(wèn)服務(wù)器使用Delphi7開發(fā),其遵守OPC Data Access 2.05規(guī)范。本服務(wù)器功能如下:
    服務(wù)器的注冊(cè)與反注冊(cè)
    定時(shí)讀取現(xiàn)場(chǎng)數(shù)據(jù)并更新數(shù)據(jù)緩沖池
    OPCServer對(duì)象的實(shí)現(xiàn)
    OPCGroup對(duì)象的實(shí)現(xiàn)
    服務(wù)器的界面顯示

     程序?qū)崿F(xiàn)如下:
(1) 服務(wù)器的注冊(cè)與反注冊(cè)
OPC服務(wù)器必須按照規(guī)范要求正確注冊(cè)才能被OPC客戶訪問(wèn)。OPC服務(wù)器按照組件模式可以劃分為進(jìn)程內(nèi)組件、進(jìn)程外組件。不同模式的服務(wù)器注冊(cè)的方法稍有差異。
    通常OPC服務(wù)器要求的標(biāo)識(shí)格式為:Vendor.Drivername.Version
    我的溫度巡檢OPC服務(wù)器的標(biāo)識(shí)為:HUA.DA2.1
    按照OPC規(guī)范要求,我的OPC服務(wù)器在系統(tǒng)注冊(cè)表中建立如下注冊(cè)表項(xiàng):
    1至6項(xiàng)對(duì)于不同模式的服務(wù)器均需要:
1. HKEY_CLASSES_ROOT\Vendor.Drivername.Version = A Description of your server
2. HKEY_CLASSES_ROOT\Vendor.Drivername.Version\CLSID = {Your Server's unique CLSID}
3. HKEY_CLASSES_ROOT\Vendor.Drivername.Version\OPC
4. HKEY_CLASSES_ROOT\Vendor.Drivername.Version\OPC\Vendor =Your vendor name
5. HKEY_CLASSES_ROOT\CLSID\{Your Server's unique CLSID} = A Description of your server
6. HKEY_CLASSES_ROOT\CLSID\{Your Server's unique CLSID}\ProgID = Vendor.Drivername.Version
7至8項(xiàng)根據(jù)服務(wù)器的模式進(jìn)行選擇注冊(cè):
7. HKEY_CLASSES_ROOT\CLSID\{Your Server's unique CLSID}\InprocServer32 = Full Path to DLL
8. HKEY_CLASSES_ROOT\CLSID\{YourServer's unique CLSID}\LocalServer32 = Full Path to EXE
9. HKEY_CLASSES_ROOT\CLSID\{YourServer's unique CLSID}\InprocHandler32 = Full Path to DLL
步驟1的代碼示例如下:
aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.OpenKey(HUA.DA2.1,true);
  aReg.WriteString('','HUA Data Access Server Version 2.0');
 finally
  aReg.CloseKey;
  aReg.Free;
 end;
    此外,還應(yīng)根據(jù)規(guī)范創(chuàng)建組件的分類信息,以便與組件分類管理。對(duì)于數(shù)據(jù)訪問(wèn)服務(wù)器規(guī)范提供的組件類別為:
"OPC Data Access Servers Version 1.0"
CATID_OPCDAServer10 = {63D5F430-CFE4-11d1-B2C8-0060083BA1FB}

"OPC Data Access Servers Version 2.0"
CATID_OPCDAServer20 = {63D5F432-CFE4-11d1-B2C8-0060083BA1FB}
    創(chuàng)建類別的程序代碼為:
CreateComponentCategory(CATID_OPCDAServer20,'HUA OPC Data Access');
RegisterCLSIDInCategory(CLASS_HUA_DA2,CATID_OPCDAServer20);

    實(shí)現(xiàn)服務(wù)器的反注冊(cè)就簡(jiǎn)單了,逐一清除掉以上所建立的注冊(cè)表項(xiàng)即可:
aReg:=nil;
 try
  aReg:=TRegistry.Create;
  aReg.RootKey:=HKEY_CLASSES_ROOT;
  aReg.DeleteKey(name);
 finally
  aReg.CloseKey;
  aReg.Free;
 end;
    還應(yīng)刪除自己組件類別信息
UnRegisterCLSIDInCategory(CLASS_HUA_DA2,CATID_OPCDAServer20);
UnCreateComponentCategory(CATID_OPCDAServer20,'HUA OPC Data Access');

(2) 定時(shí)讀取現(xiàn)場(chǎng)數(shù)據(jù)并更新數(shù)據(jù)緩沖池
    OPC服務(wù)器本身就是一個(gè)可執(zhí)行程序,該程序以設(shè)定的速率不斷地同物理設(shè)備進(jìn)行數(shù)據(jù)交互。服務(wù)器內(nèi)有一個(gè)數(shù)據(jù)緩沖區(qū),其中存有最新的數(shù)據(jù)值,數(shù)據(jù)質(zhì)量戳和時(shí)間戳。時(shí)間戳表明服務(wù)器最近一次從設(shè)備讀取數(shù)據(jù)的時(shí)間。服務(wù)器對(duì)設(shè)備寄存器的讀取是不斷進(jìn)行的,時(shí)間戳也在不斷更新。即使數(shù)據(jù)值和質(zhì)量戳都沒(méi)有發(fā)生變化,時(shí)間戳也會(huì)進(jìn)行更新。客戶既可從服務(wù)器緩沖區(qū)讀取數(shù)據(jù),也可直接從設(shè)備讀取數(shù)據(jù),從設(shè)備直接讀取數(shù)據(jù)速度會(huì)慢一些,一般只有在故障診斷或極特殊的情況下才會(huì)采用。

    OPC客戶和OPC服務(wù)器進(jìn)行數(shù)據(jù)交互可以有兩種不同方式,即同步方式和異步方式。同步方式實(shí)現(xiàn)較為簡(jiǎn)單,當(dāng)客戶數(shù)目較少而且同服務(wù)器交互的數(shù)據(jù)量也比較少的時(shí)候可以采用這種方式;異步方式實(shí)現(xiàn)較為復(fù)雜,需要在客戶程序中實(shí)現(xiàn)服務(wù)器回調(diào)函數(shù)。然而當(dāng)有大量客戶和大量數(shù)據(jù)交互時(shí),異步方式能提供高效的性能,盡量避免阻塞客戶數(shù)據(jù)請(qǐng)求,并最大可能地節(jié)省CPU和網(wǎng)絡(luò)資源。

    本服務(wù)器的數(shù)據(jù)緩沖池的數(shù)據(jù)格式是按照OPC數(shù)據(jù)訪問(wèn)規(guī)范中的     OPCITEMSTATE格式設(shè)計(jì)的。
type
  TOPCItem=record
    strID:string;//點(diǎn)的ID編號(hào)
    bActive:longbool;//點(diǎn)的激活狀態(tài)
    ItemState:OPCITEMSTATE;//點(diǎn)的客戶訪問(wèn)項(xiàng)
end;

type 
OPCITEMSTATE = record
    hClient:              OPCHANDLE;//點(diǎn)的客戶句柄
    ftTimeStamp:          TFileTime;//點(diǎn)的時(shí)間戳
    wQuality:             Word;//點(diǎn)的品質(zhì)
    wReserved:            Word;//保留
    vDataValue:           OleVariant;//點(diǎn)的值
  end;
    本溫度采集項(xiàng)目選用研華的亞當(dāng)4000系列模塊,OPC服務(wù)器通過(guò)計(jì)算機(jī)串口與ADAM-4520模塊連接,這是一塊隔離RS232到RS422/485轉(zhuǎn)換器。現(xiàn)場(chǎng)模塊通過(guò)485總線與其連在一起。數(shù)據(jù)的采集方式如下圖所示

                        圖表 7 溫度巡檢系統(tǒng)配置圖

    對(duì)于服務(wù)器來(lái)說(shuō)實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的采集,只需要對(duì)串口進(jìn)行編程即可。串口編程的方法很多,例如:Windows API方式、在程序中嵌入?yún)R編語(yǔ)言操作端口、使用控件等。我選擇了使用控件。不同公司開發(fā)的串口控件很多,我使用的是微軟的MSComm控件。編程時(shí)只需要參照研華的相關(guān)模塊操作命令表,然后使用MSComm控件發(fā)出相應(yīng)的命令進(jìn)行操作即可。例如根據(jù)如下命令表
 

圖表 8 ADAM-4015命令表摘錄  

    對(duì)于命令#AAN 意思是讀取地址為AA的模塊的第N通道數(shù)據(jù)。如果操作正確則模塊響應(yīng)為>(data)(cr)
    如果在程序中發(fā)出如下命令:
    MSComm1.Output :='#021'+#13; //讀取2號(hào)模塊的第一通道數(shù)據(jù)
    2號(hào)模塊的響應(yīng)為:>+1.4567(cr)

(3) OPCServer對(duì)象的實(shí)現(xiàn)
    必須嚴(yán)格按照規(guī)范要求,實(shí)現(xiàn)所要求的所有接口函數(shù)。但是這并不意味著所有的接口函數(shù)都必須自己編寫,我們可以充分利用COM的包容與聚合機(jī)制來(lái)復(fù)用一些常規(guī)的接口。在Delphi中有很多現(xiàn)成的類已經(jīng)實(shí)現(xiàn)了眾多的接口,我們可以充分利用這一點(diǎn)來(lái)簡(jiǎn)化我們的編程過(guò)程。例如在我的 OPCServer服務(wù)器對(duì)象中IUnknown接口是通過(guò)父類TAutoObject 實(shí)現(xiàn)的,IConnectionPointContainer 接口是通過(guò)創(chuàng)建一個(gè)Delphi的TConnectionPoints對(duì)象,然后將其接口暴露給客戶實(shí)現(xiàn)的; OPCServer的Delphi描述如下,限于篇幅具體實(shí)現(xiàn)過(guò)程從略:
type
  THUA_DA2 = class(TAutoObject,IHUA_DA2,
IOPCServer,IConnectionPointContainer,IOPCCommon,IOPCItemProperties,
      IOPCServerPublicGroups,IOPCBrowseServerAddressSpace,IPersist,IPersistFile)
  public
    ClientIUnknown:IUnknown;
    Grp:TOPCGroup;
   
    procedure Initialize; override;
    procedure ShutdownOnConnect(const Sink: IUnknown; Connecting: Boolean);
    destructor Destroy;override;
  private
   FIConnectionPoints:TConnectionPoints;
  protected
  property iFIConnectionPoints:TConnectionPoints read FIConnectionPoints
                          write FIConnectionPoints implements IConnectionPointContainer;
//IOPCServer 接口描述省略   
//IOPCCommon接口描述省略
//IOPCServerPublicGroups接口描述省略
//IOPCBrowseServerAddressSpace接口描述省略
//IPersistFile接口描述省略
//IOPCItemProperties接口描述省略
end;//end type

(4) OPCGroup對(duì)象的實(shí)現(xiàn)
    OPCGroup對(duì)象是由OPCServer對(duì)象創(chuàng)建的。當(dāng)OPC客戶程序調(diào)用OPCServer對(duì)象的接口函數(shù)AddGroup時(shí),在AddGroup函數(shù)體內(nèi)生成OPCGroup對(duì)象。以后用戶依賴與指向這個(gè)OPCGroup接口的指針,便可以方便的創(chuàng)建和管理點(diǎn)項(xiàng)目,從而獲得現(xiàn)場(chǎng)的實(shí)時(shí)數(shù)據(jù)。OPCGroup對(duì)象的描述如下:

type
  TOPCGroup = class(TTypedComObject,IOPCGroup,IOPCItemMgt,IOPCGroupStateMgt,
                    IOPCPublicGroupStateMgt,IOPCSyncIO,
                    IConnectionPointContainer,IOPCAsyncIO2)
  private
   FIConnectionPoints:TConnectionPoints;
  protected
   property iFIConnectionPoints:TConnectionPoints read FIConnectionPoints
                          write FIConnectionPoints implements IConnectionPointContainer;
//IOPCItemMgt 接口描述省略
//IOPCGroupStateMgt接口描述省略
//IOPCPublicGroupStateMgt接口描述省略
//IOPCSyncIO接口描述省略
//IOPCAsyncIO2接口描述省略  
end;

(5) 服務(wù)器的界面顯示
    OPC服務(wù)器的主要功能在于數(shù)據(jù)的傳遞,它常常并不需要過(guò)多的人機(jī)交互過(guò)程。項(xiàng)目中的OPC服務(wù)器只是為了調(diào)試的方便,在界面中通過(guò)兩個(gè)按鈕向用戶提供了服務(wù)器的注冊(cè)與反注冊(cè)功能。在服務(wù)器中還顯示了所連接的OPC客戶數(shù)和OPC客戶創(chuàng)建的OPC組數(shù)目,以及數(shù)據(jù)緩沖池中的數(shù)據(jù)更新情況。

7. 結(jié)語(yǔ)
    總的來(lái)說(shuō),進(jìn)行OPC服務(wù)器程序的開發(fā)就是嚴(yán)格按照OPC規(guī)范編寫各種接口函數(shù)來(lái)向客戶提供服務(wù),在定時(shí)更新緩沖池中的數(shù)據(jù)的同時(shí),還應(yīng)對(duì)緩沖池中的數(shù)據(jù)提供較快的查詢服務(wù)從而減少系統(tǒng)延遲。

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 午夜精品一区二区三区免费视频| 又爽又叫的毛片欧美| 久久精品国产6699国产精| 久香草视频在线观看免费| 国产区1| 国产欧美日韩在线| 午夜91| 色图视频| 给我一个可以看片的www日本| 欧美综合国产| 三级视频网站在线观看播放| 色黄啪啪18周岁以下禁止观看| 国产成人精品三级91在线影院 | 亚洲精品国产精品乱码不97| 亚洲一区二区约美女探花| 国产成人激烈叫床视频| 麻豆传媒在线视频| 欧美日韩亚洲国产一区二区三区 | 亚洲一级二级| 日韩视频在线观看| 欧美一级视频| 俄罗斯女人与公拘i交酡| 激情综合婷婷| 五月丁六月停停| 一级全黄色片| 毛片特级| 免费大黄网站在线看| 金发美女大战黑人啪啪| 国产精品玖玖玖在线观看| 亚洲午夜精品专区国产| av在线看网址| 中文字幕第一页在线视频| 欧美草| 狠狠色噜噜狠狠狠狠2022| 最新国产网站| 国产日韩精品一区二区在线观看 | 1区1区3区4区产品亚洲| 那种视频在线观看| 最新亚洲精品国自产在线| 五月婷婷色视频| 成人综合在线观看|