關于OPC Client 編寫_第1頁
關于OPC Client 編寫_第2頁
關于OPC Client 編寫_第3頁
關于OPC Client 編寫_第4頁
關于OPC Client 編寫_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、關于OPC Client 編寫hapican 895 5 熱門 2014-02-23 20:14    昨天又有人問我 OPC Client 編寫,實際是他們不了解OPC 客戶端的工作原理,要想寫客戶端程序,必須知道OPC對象, OPC邏輯對象模型包括類對象:OPC server對象、OPC group對象、OPC item對象,每類對象都包括一系列接口。    OPC Server對象    主要功能為:1、創(chuàng)建和管理OPC Group對象;             

2、60;  2、管理服務器內部的狀態(tài)信息;    OPC Group對象    主要功能為:1、管理OPC Group對象的內部狀態(tài)信息;                2、創(chuàng)建和管理Items對象。                3、OPC服務器內部的實時數(shù)據(jù)存取服務(同步與異步方式)。    OPC組中有以下幾個主要屬性:Name :組的名字 ;Active:組的激

3、活狀態(tài)標志 ;Update Rate OPC:服務器向客戶程序提交數(shù)據(jù)變化的刷新速率;Percent Dead band:數(shù)據(jù)死區(qū),即能引起數(shù)據(jù)變化的最小數(shù)值百分比。    OPC ITEM 是非COM對象,在OPC標準中用來描述實時數(shù)據(jù),是客戶端不可見的對象。代表了與服務器中的數(shù)據(jù)的連接,它并不是數(shù)據(jù)源,而僅僅是與數(shù)據(jù)源的連接。每個項都有以下主要屬性: Active項的激活狀態(tài)、Value項的數(shù)值、類型為VARIANT、Quality項的品質,代表數(shù)值的可信度,類型為SHORT、TimeStamp時間戳,代表數(shù)據(jù)的存取時間。    你不管用什么開發(fā)語言

4、只要了解上面幾個對象,就會寫程序了    下面舉個VC的例子    HRESULT  r1;  CLSID  clsid;  LONG  TimeBias = 0;  FLOAT  PercentDeadband = 0.0;  DWORD  RevisedUpdateRate;  LPWSTR  ErrorStr;  char  str100;  CString  szErrorText; m_pItem

5、Result = NULL; 客戶端程序必須對DCOM進行初始化設置,以保證OPC服務器端回調函數(shù)不會被堵塞。  r1 = CoInitialize(NULL);  if (r1 != S_OK)   if (r1 = S_FALSE)    MessageBox("COM Library already initialized",               "Error CoInitialize()", MB_OK+MB_

6、ICONEXCLAMATION);      else    szErrorText.Format("Initialisation of COM Library failed. Error Code= %4x", r1);    MessageBox(szErrorText,"Error CoInitialize()", MB_OK+MB_ICONERROR);    SendMessage(WM_CLOSE);    return;

7、        通過OPC服務器的ProgID查詢注冊表中相關CLSID。每個COM服務器都有一個字符串型的ProgID,通過ProgID可以得到全球惟一的CLSID,使用CLSIDFromProgID( )函數(shù)實現(xiàn)ProgID到CLSID的轉換。 r1 = CLSIDFromProgID(L"OPC.SimaticNET", &clsid);  if (r1 != S_OK)   MessageBox("Retrival of CLSID failed",  

8、60;     "Error CLSIDFromProgID()", MB_OK+MB_ICONERROR);   CoUninitialize();   SendMessage(WM_CLOSE);   return;   連接OPC服務器,查詢對象的IID_IOPCServer接口。在連接OPC服務器前,OPC客戶端需要事先指定計算機名和OPC數(shù)據(jù)訪問服務器名,建立連接后,創(chuàng)建OPC組并添加OPC數(shù)據(jù)項。 r1 = CoCreateInstance (clsid, NULL, CL

9、SCTX_LOCAL_SERVER ,IID_IOPCServer, (void*)&m_pIOPCServer);  if (r1 != S_OK)   MessageBox("Creation of IOPCServer-Object failed",              "Error CoCreateInstance()", MB_OK+MB_ICONERROR);   m_pIOPCServer = NULL;  

10、 CoUninitialize();   SendMessage(WM_CLOSE);   return;   創(chuàng)建OPC組,查詢IOPCItemMgt接口。IOPCServer接口的AddGroup()方法可以創(chuàng)建一個有指定名稱和屬性的OPC組。 r1=m_pIOPCServer->AddGroup(L"grp1",   / in group name       TRUE,     / in active    &#

11、160;  500,     / in request this Update Rate from Server       1,      / in Client handle       &TimeBias,    / in no time interval to system UTC time       &PercentDeadband,   / in no de

12、adband, so all data changes are reported       LOCALE_ID,    / in Server uses English language for text values       &m_GrpSrvHandle,  / out Server handle to identify this group in later calls       &RevisedUpdateRate

13、,  / out the answer form the Server to the requested update rate          IID_IOPCItemMgt,  / in requested interface type of the group object       (LPUNKNOWN*)&m_pIOPCItemMgt); / out pointer to the requested interface    if (r1 =

14、OPC_S_UNSUPPORTEDRATE)     szErrorText.Format ("Revised Update Rate %d is different from Requested Update Rate 500",RevisedUpdateRate );   AfxMessageBox(szErrorText);    else   if (FAILED(r1)    MessageBox("Can't add Group to

15、Server!", "Error AddGroup()", MB_OK+MB_ICONERROR);    m_pIOPCServer->Release();    m_pIOPCServer = NULL;    CoUninitialize();    SendMessage(WM_CLOSE);    return;    添加OPC數(shù)據(jù)項。使用IOPCItemMgt接口的AddItem()方法可以添加具有特殊屬性的指定數(shù)量的數(shù)據(jù)項。

16、 / define an item table with one item as in-paramter for AddItem  m_Items0.szAccessPath    = L""   m_Items0.szItemID     = szItemID;  / 影響數(shù)據(jù)類型  m_Items0.bActive     = TRUE;    m_Items0.hClient     = 1;  m_Items0.dwB

17、lobSize    = 0;  m_Items0.pBlob     = NULL;  m_Items0.vtRequestedDataType = 0;                  / defined by the item itself r1 = m_pIOPCItemMgt->AddItems(1,    / in add one item        m_Item

18、s,    / in see above        &m_pItemResult,   / out array with additional information about the item        &m_pErrors);   / out tells which of the items was successfully added.              / For

19、any item which failed it provides a reason 程序退出時 OPC連接斷開,釋放接口指針。當程序退出或停止服務器時,依次刪除Item(RemoveItems)、Group(RemoveGroups),釋放資源。 void CAsynOPCDlg:OnStop( ) 停止服務器。 h1=m_IOPCItemMgt->RemoveItems(1,phServer,&pErrors);刪除Items。 h1=m_IOPCServer->RemoveGroup(m_GrpSrvHandle,TRUE);刪除Group。 m_IOPCServer

20、->Release( );釋放服務器。 m_IOPCServer=NULL; CoUninitialize( );關閉COM庫。 覺得寫得很好,供大家參考 轉自1 RSLinx Classic Gateway 遠程連接(2012-05-16 16:45:18) 轉載標簽: rslinx分類: RSLinx 2 一、啟用Gateway功能在被連接和需要連接的主機上都要啟用Gateway功能,步驟如下:1、在這之前我已經(jīng)安裝好了RSLinx,并且安裝好了RSLinx的Gateway授權,重啟RSLinx。首先打開RSLinx,點選communications&g

21、t;Configure Gateway;2、在彈出的窗口中勾選Enable RSLinx Classic Gateway;3、點擊OK;4、在Client Access List(客戶端列表)標簽中勾選限制訪問;5、點擊Add New;6、輸入正確的客戶端IP;7、點擊應用;3 二、在需要連接的主機上建立TOPIC(主題)這里沒有寫被連接主機的設置,被連接主機的設置就是之前說過的RSLinx連接PLC的設置8、點擊DDE/OPC>Topic Configuration9、點擊New;10、輸入主題名;11、選擇主題名對應的CUP;12、點擊Apply;然后在點擊New,建好所有的主題后,

22、點擊Done;4 三、用RSI-OPC Test Client軟件測試連接是否成功在開始菜單>所有程序>Rockwell Software>RSLinx>Tools>OPC Test Client13、點擊Server>connect14、在彈出的窗口中選擇RSLinx OPC Server;15、點擊OK;16、點擊Group>Add Group17、在彈出的彈出的窗口中點擊OK;18、點擊Item>Add Item;19、電機加號可以瀏覽標簽,瀏覽標簽添加需要的標簽到左上角的的窗口中;20、點擊OK;21、瀏覽到了添加進來的標簽總結:這種方式

23、是通過RSLinx作為網(wǎng)關遠程訪問到PLC,還是在HMI服務器上用RSLinx建立并配置TOPIC,說到底這種連接方式也RSLinx直接與PLC連接相比只是網(wǎng)絡路徑不同,連接之后的效果是一樣的。5 不同類型 RSLinx Classic  的區(qū)別(2012-05-15 16:26:11) 轉載標簽: rslinx分類: RSLinx RSLinx Classic 共有五種版本,以滿足不同價格和功能需求。根據(jù)運行版本的不同, 某些功能不一定可用。有關具體版本的功能,請參閱以下部分。正在運行的 RSLinx Classic  版本信息顯示

24、在主窗口頂部的標題欄上。如果啟動RSLinx Classic 版本時沒有正確的激活文件,它將作為 RSLinx Classic Lite 運行。RSL INX  C LASSIC 入門指南RSLinx Classic LiteRSLinx Classic Lite  提供了支持 RSLogix  和 RSNetWorx 所需的最基本功能。不單獨出售該版本,而是與僅需直接訪問 RSLinx Classic  網(wǎng)絡驅動程序的產(chǎn)品捆綁出售。該版本不支持 OPC、DDE 或已發(fā)布的 RSLinx Classic C 應用程序編程接口 (API) 。RSLinx

25、Classic Lite  適用于以下情況:· 使用 RSLogix  產(chǎn)品的梯形邏輯編程。 · 使用 RSNetWorx 配置與診斷網(wǎng)絡和設備。 · 配置以太網(wǎng)模塊/設備(例如,1756-ENET 、1756-DHRIO  等)。 · 使用 ControlFlash  升級固件。 · 瀏覽網(wǎng)絡并獲取固件版本等設備信息。 RSLinx Classic Single NodeRSLinx Classic Single Node 包括了為所有 Rockwell Software  產(chǎn)品提供通信服務的

26、必需功能。該版本支持 OPC  和 DDE  接口,但僅限于一個設備。它不支持為 RSLinx Classic C  應用程序編程接口 (API)  開發(fā)的應用程序或 HMI  應用程序的直接驅動程序。這些應用程序類型需要使用 RSLinx Classic OEM  或更高版本。RSLinx Classic Single Node 適用于以下情況:· 使用 OPC  或 DDE  將數(shù)據(jù)采集到一個設備上。包括 RSView32、Microsoft Office、Visual Basic  和網(wǎng)頁

27、等客戶端。 · 使用 RSLogix  產(chǎn)品的梯形邏輯編程。 · 使用 RSNetWorx 配置與診斷網(wǎng)絡和設備。 · 配置以太網(wǎng)模塊/設備(例如,1756-ENET 、1756-DHRIO  等)。 · 使用 ControlFlash  升級固件。 · 瀏覽網(wǎng)絡并獲取固件版本等設備信息。 RSLinx Classic OEMRSLinx Classic OEM 包括了為所有 Rockwell Software  產(chǎn)品提供通信服務的必需功能。同時支持任意數(shù)量設備的 OPC  和 DDE 

28、; 客戶端。該版本還支持為 RSLinx Classic C 應用程序編程接口 (API)  開發(fā)的應用程序。RSLinx OEM 2.2 版和之前版本僅支持 AdvanceDDE 。RSLinx 2.3 版及之后版本支持除 FastDDE  以外的所有 DDE  類型。RSLinx Classic OEM 適用于以下情況:· 使用 OPC  或 DDE  將數(shù)據(jù)采集到任意數(shù)量的設備上。包括 RSView32 、Microsoft Office、Visual Basic  和網(wǎng)頁等客戶端。 · 使用 RSLogix

29、  產(chǎn)品的梯形邏輯編程。 · 使用 RSNetWorx 配置與診斷網(wǎng)絡和設備。 · 配置以太網(wǎng)模塊/設備(例如,1756-ENET 、1756-DHRIO  等)。 · 使用 ControlFlash  升級固件。 · 瀏覽網(wǎng)絡并獲取固件版本等設備信息。 RSLinx Classic GatewayRSLinx Classic Gateway  通過連接 TCIP/IP 網(wǎng)絡中的客戶端擴展了整個企業(yè)中基于RSLinx Classic 的通信能力。RSLogix  和 RSNetWorx  等編程和配置產(chǎn)品使用本地RSLinx Classic Lite  與 RSLinx Classic Gateway  通信,更好的情況則是使用配置了 Linx Gateway 驅動程序的遠程設備與 RSLinx Classic Gateway  通信。包括Microsoft Offi

溫馨提示

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

最新文檔

評論

0/150

提交評論