概述

Similar documents
概述

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

用户大会 论文集2.2.doc

C 1

(HMI) IO A

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

Microsoft Word - 小心翼翼的二十一點N.doc

FY.DOC

ebook12-1

epub83-1

untitled

ebook129-9

第一章.FIT)

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

基于ECO的UML模型驱动的数据库应用开发1.doc

Microsoft Word - ch04三校.doc

提问袁小兵:

Microsoft Word - 01.DOC

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

CC213

untitled

RUN_PC連載_8_.doc

01


1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

ThreeDtunnel.doc

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

untitled

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

投影片 1

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

epub 94-3

Chapter 9: Objects and Classes

C/C++ - 文件IO

ebook

ebook140-8

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

untitled

VB控件教程大全

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

untitled

ebook46-23

1. 软 件 核 武 器 CTreeNode 基 本 原 理 以 下 详 细 介 绍 这 一 技 术 的 基 本 原 理 -CTreeNode 这 是 一 种 数 据 结 构, 类 似 于 CObject 存 在 于 内 存 中 1. 能 够 以 树 形 的 方 式 嵌 套 存 贮 非 常 复 杂

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 13院21号.doc

3.1 num = 3 ch = 'C' 2

Visual C++ 1 Page no. 1

新版 明解C++入門編

RUN_PC連載_12_.doc

Contents

untitled

6020

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

INTRODUCTION TO COM.DOC

untitled

FileMaker 16 ODBC 和 JDBC 指南

C C

EJB-Programming-3.PDF

WWW PHP Comments Literals Identifiers Keywords Variables Constants Data Types Operators & Expressions 2

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

FileMaker 15 ODBC 和 JDBC 指南

Microsoft Word - CIN-DLL.doc

bingdian001.com

epub 61-2

附件四:

C H A P T E R 7 Windows Vista Windows Vista Windows Vista FAT16 FAT32 NTFS NTFS New Technology File System NTFS

instructions.PDF

EJB-Programming-4-cn.doc

ebook 185-6

C/C++语言 - C/C++数据

序号

关于2003年广东省普通高等学校

Microsoft Word - Station说明书

C/C++ 语言 - 循环

目录

CHINA SCIENCE AND TECHNOLOGY DEVELOPMENT REPORT

mvc

第11章 可调内核参数

RunPC2_.doc

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

SSIS 2012SSIS 2005SSISVisual Studio Visual Studio 2010Package SSISSSIS Integration Services SSIS /2008/ R2 SSIS D Integration Serv

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1. 2. Flex Adobe 3.

Figure 1: Game Tree 为 了 方 便 讨 论, 我 们 这 里 设 这 里 讨 论 的 博 弈 树 是 一 棵 有 限 树, 设 有 两 个 棋 手 甲 与 乙 进 行 这 场 博 弈, 这 样, 博 弈 树 分 为 三 类 结 点 : 1. 奇 数 层 的 非 叶 子 结 点 :

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

Microsoft Word - Learn Objective-C.doc

國家圖書館典藏電子全文

untitled

Microsoft Word - 面向应用能力,构建师范院校计算机公共课程 “三层次教育”课程体系new.doc

RUN_PC連載_10_.doc

Microsoft Word - 实用案例.doc

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

51 C 51 isp 10 C PCB C C C C KEIL

(W32) * (W32) WindowsWin32 API(DLL) Win32 API Visual Basic Visual C/C++ Windows XP/Server 2003/2000/NT/Me/98/95 (/) Windows XP / Server 2003 / 2000 /

ebook50-11

Transcription:

OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9

OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5 2.3.1 KOC_SetDataChangeProc...6 2.3.2 KOC_SetShutdownProc...7 2.4 Server...7 2.4.1 KOC_GetServerCount...7 2.4.2 KOC_GetServerName...8 2.4.3 KOC_Connect...8 2.4.4 KOC_Disconnect...9 2.5 Group...9 2.5.1 KOC_AddGroup...9 2.5.2 KOC_RemoveGroup...10 2.6 Item...10 2.6.1 KOC_GetItemCount...10 2.6.2 KOC_GetItemName...11 2.6.3 KOC_AddItem...11 2.6.4 KOC_RemoveItem...12 2.6.5 KOC_WriteItem...12 2.6.6 KOC_ReadItem...12 3...14 3.1...14 3.2 step1...14 3.3 step2...15 3.4 Step3...15 3.4.1...15 3.5 Step4 OPC...16 3.5.1 OPC...16 3.5.2 OPC...17 3.5.3...17 3.6 Step5 OPC...20 2

Knight OPC Client Rapid Development Toolkits 3.7 step6 OPC...21 3.8 step7 OPC...21 3.8.1 OPC...22 3.8.2 OPC...23 3.9 step8 OPC...23 4...25 4.1...25 4.2...25 3

OPC 1 KOCRDK Knight OPC Client Rapid Development Toolkits KOCRDK OPC OLE For Process Control DA Data Access KOCRDK OPC OPC DA: Data Access 1.0/2.0 DLL ATL/DCOM OPC Visual C++, Visual Basic, Borland C++ builder, Delphi 4

Knight OPC Client Rapid Development Toolkits 2 API 2.1 KOCRDK API KOCRDKapi.h API KOC_ 2.2 2.2.1 KOC_Init OPC OPC BOOL KOC_Init (); 0 2.2.2 KOC_Uninit VOID KOC_Uninit (); OPC 2.3 OPC Client DLL KOCRDK.dll 5

OPC 2.3.1 KOC_SetDataChangeProc BOOL KOC_SetDataChangeProc (HANDLE hconnect, DATACHANGEPROC lpcallback) 0 (1) HANDLE hconnect : OPC (2) DATACHANGEPROC lpcallback KOCRDK OPC OPC OPC OPC OPC OPC void CALLBACK EXPORT ClientWriteProc DataChangeProc ( HANDLE hconnect, HANDLE hgroup, HANDLE hitem, VARIANT *pvar, FILETIME timestamp, DWORD quality) (1) HANDLE hconnect OPC Server (2) HANDLE hgroup OPC Group (3) HANDLE hitem OPC Item (4) VARIANT *pvar (5) FILETIME timestamp (6) DWORD quality 6

Knight OPC Client Rapid Development Toolkits 2.3.2 KOC_SetShutdownProc BOOL KOC_SetShutdownProc (HANDLE hconnect, SHUTDOWNPROC lpcallback ) 0 (1) HANDLE hconnect : OPC (2) SHUTDOWNPROC lpcallback OPC OPC KOCRDK.DLL OPC void CALLBACK EXPORT ShutdownProc(HANDLE hconnect) (1) HANDLE hconnect : OPC 2.4 Server API OPC 2.4.1 KOC_GetServerCount int KOC_GetServerCount (LPCSTR MachineName, BOOL bver2 = true); -1 OPC (1) LPCSTR MachineName (2) BOOL bver2 OPC OPC TRUE OPC 2.0 FALSE OPC 1.0 TRUE OPC 7

OPC KOCRDK KOC_GetServerName OPC OPC -1 : OPC DCOMCNFG.exe 2.4.2 KOC_GetServerName BOOL KOC_GetServerName(int index, char *pbuf, int BufSize); false true (1) int index KOCRDK.dll KOC_GetServerCount 0 KOC_GetServerCount 1 (2) char *pbuf (3) int BufSize KOCRDK.dll OPC 2.4.3 KOC_Connect HANDLE KOC_Connect (LPCSTR MachineName, LPCSTR ServerName, BOOL bver2 = true); -1 OPC (1) LPCSTR MachineName (2) LPCSTR ServerName OPC (3) BOOL bver2 OPC OPC TRUE OPC 2.0 FALSE OPC 1.0 TRUE OPC 8

Knight OPC Client Rapid Development Toolkits OPC 2.0 1.0/2.0 OPC 1.0 1.0 OPC 2.4.4 KOC_Disconnect void KOC_Disconnect (HANDLE hconnect); (1) HANDLE hconnect OPC OPC OPC OPC 2.5 Group API OPC 2.5.1 KOC_AddGroup HANDLE KOC_AddGroup ( HANDLE LPCSTR hconnect, Name, BOOL *bactive, DWORD *prate, LONG *ptimebias, float *pdeadband, DWORD *dwlcid ); -1 OPC HANDLE (1) HANDLE hconnect OPC 9

OPC (2) LPCSTR Name OPC (3) BOOL *bactive: OPC (4) DWORD *prate DWORD OPC (5) LONG *ptimebias LONG (6) float *pdeadband: float (7) DWORD *dwlcid DWORD OPC OPC OPC OPC 2.5.2 KOC_RemoveGroup void KOC_RemoveGroup(HANDLE hconnect, HANDLE hgroup); (1) HANDLE hconnect OPC (2) HANDLE hgroup OPC OPC OPC 2.6 Item API OPC / 2.6.1 KOC_GetItemCount int KOC_GetItemCount (HANDLE hconnect); -1 OPC OPC (1) HANDLE hconnect OPC 10

Knight OPC Client Rapid Development Toolkits OPC OPC KOCRDK KOC_GetItemName OPC OPC -1 2.6.2 KOC_GetItemName BOOL KOC_GetItemName (int index, char *pbuf, int BufSize); false true (1) int index KOCRDK.dll OPC KOC_GetItemCount 0 KOC_GetItemCount 1 (2) char *pbuf (3) int BufSize KOCRDK.dll OPC OPC 2.6.3 KOC_AddItem HANDLE KOC_AddItem ( HANDLE hconnect, HANDLE hgroup, LPCSTR ItemName); -1 OPC HANDLE (1) HANDLE hconnect OPC (2) HANDLE hgroup OPC (3) LPCSTR ItemName: OPC KOC_GetItemName OPC OPC OPC OPC 11

OPC 2.6.4 KOC_RemoveItem void KOC_RemoveItem ( HANDLE hconnect, HANDLE hgroup, HANDLE hitem ); (1) HANDLE hconnect OPC (2) HANDLE hgroup OPC (3) HANDLE hitem: OPC OPC OPC 2.6.5 KOC_WriteItem BOOL KOC_WriteItem ( HANDLE hconnect, HANDLE hgroup, HANDLE hitem, VARIANT *pvar, BOOL DoAsync ); false true (1) HANDLE hconnect OPC (2) HANDLE hgroup OPC (3) HANDLE hitem: OPC (4) VARIANT *pvar: (5) BOOL DoAsync: True false OPC KOCRDK OPC OPC 2.6.6 KOC_ReadItem BOOL KOC_ReadItem ( HANDLE hconnect, HANDLE hgroup, HANDLE hitem, VARIANT *pvar, FILETIME *ptimestamp, DWORD *pquality ); false true 12

Knight OPC Client Rapid Development Toolkits (1) HANDLE hconnect OPC (2) HANDLE hgroup OPC (3) HANDLE hitem: OPC (4) VARIANT *pvar: (5) FILETIME *ptimestamp (6) DWORD *pquality OPC 13

OPC 3 3.1 Microsoft Visual C++ 6.0 OPC KOCRDK \Samples\source\KOCVC\DemoClient.dsw 3.2 step1 OPC / OPC / DLL http://www.opcfoundation.org http://www.eehoo.net/opcdist.zip KOCRDK 1.5 4 system32 opcproxy.dll opccomn_ps.dll opcae_ps.dll opchda_ps.dll 4 REGSVR32 opcproxy.dll REGSVR32 opccomn_ps.dll REGSVR32 opc_aeps.dll REGSVR32 opchda_ps.dll actxprxy.dll aprxdist.exe 14

Knight OPC Client Rapid Development Toolkits 3.3 step2 Visual C++ KOCRDK 3 (1) KOCRDK.dll KOCRDK OPC (2) KOCRDK.lib KOCRDK.dll (3) KOCRDKapi.h KOCRDK KOCRDK API opcda.h OPC Visual Basic Delphi 3.4 Step3 3.4.1 KOC_Init() BOOL KOC_Init() //Filename: DemoClient.cpp //Function: CDemoClientApp::InitInstance() AfxEnableControlContainer(); ////////// KOC Init /////////////////// if (!KOC_Init()) return FALSE; 15

OPC 3.5 Step4 OPC OPC KOC_GetServerCount OPC KOC_GetServerName OPC KOC_Connect OPC OPC KOC_Connect 3.5.1 OPC //Filename: ConnectDlg.cpp //Function: CConnectDlg::OnFind() int i,ncount; char buf[100]; // OPC ncount = KOC_GetServerCount(m_strNodeName,!m_bVer1); if ( ncount == -1) { MessageBox("Can't get Server List!", "Error", MB_ICONSTOP ); } return; for (i=0;i<ncount;i++) { } // OPC KOC_GetServerName(i,buf,100); m_lbserverlist.addstring(buf); 16

Knight OPC Client Rapid Development Toolkits 3.5.2 OPC OPC //Filename: DemoClientView.cpp //Function: CDemoClientView::OnOpcConnect() HANDLE hconnect; hconnect = KOC_Connect( dlg.m_strnodename, // dlg.m_strservername, //OPC!dlg.m_bVer1); //OPC if (hconnect==invalid_handle_value) { AfxMessageBox("Connect to OPC Server Failed!"); return; } 3.5.3 OPC KOCRDK CALLBACK KOCRDK.dll (1) OPC OPC OPC OPC KOCRDK.dll //Filename: DemoClientView.cpp 17

OPC //Function: CDemoClientView::OnOpcConnect() // KOC_SetDataChangeProc ( m_hconnect, &DataChangeProc); DataChangeProc //Filename: DemoClientView.cpp void CALLBACK EXPORT DataChangeProc( { CMainFrame *pwnd; HANDLE hserver, HANDLE hgroup, HANDLE hitem, VARIANT *pvar, FILETIME timestamp, DWORD quality) pwnd = (CMainFrame *)AfxGetMainWnd(); CItem *pitem; int i; // OPC OPC for (i=0;i<pwnd->m_pview->itemlist.getsize();i++) { pitem = (CItem *)pwnd->m_pview->itemlist.getat(i); if (pitem->hitem == hitem) { // OPC VariantClear(&(pItem->Value)); VariantCopy (&(pitem->value), pvar); pitem->timestamp = timestamp; pitem->quality = quality; 18

Knight OPC Client Rapid Development Toolkits return; } } } (2) OPC //Filename: DemoClientView.cpp //Function: CDemoClientView::OnOpcConnect() // KOC_SetShutdownProc (m_hconnect, &ShutdownProc); ShutdownProc //Filename: DemoClientView.cpp void CALLBACK EXPORT ShutdownProc(HANDLE hconnect) { CMainFrame *pwnd; pwnd = (CMainFrame *)AfxGetMainWnd(); // 0); PostMessage(pWnd->m_pView->m_hWnd, OPCSHUTDOWN_MSG, 0, } OPC OPC OPC 19

OPC 3.6 Step5 OPC OPC OPC //Filename: DemoClientView.cpp //Function: CDemoClientView::OnOpcGroupAdd() CGroupAddDlg dlg; dlg.m_strgroupname = "Group1"; dlg.m_dwupdaterate = 100; dlg.m_fdeadband = 0.0f; if (dlg.domodal()!= IDOK ) return; HANDLE hgroup; BOOL bactive = true; long ltimebias = 0; DWORD dwlcid = 0; hgroup = KOC_AddGroup( m_hconnect, //OPC dlg.m_strgroupname, //OPC &bactive, // &dlg.m_dwupdaterate, // &ltimebias, &dlg.m_fdeadband, // // &dwlcid); // if (hgroup==invalid_handle_value) { AfxMessageBox("Add Group Failed!"); return; } 20

Knight OPC Client Rapid Development Toolkits 3.7 step6 OPC OPC OPC OPC OPC OPC KOC_GetItemCount KOC_GetItemName OPC OPC OPC //Filename: DemoClientView.cpp //Function: CDemoClientView::AddItem( ) HANDLE htag = NULL; htag = KOC_AddItem( m_hconnect, m_hgroup, //OPC //OPC stritemname); //OPC if (htag == INVALID_HANDLE_VALUE) { TRACE("Add Item %s Failed!\n",strItemName); return FALSE; } OPC OPC OPC OPC 3.8 step7 OPC OPC OPC OPC OPC OPC OPC OPC 21

OPC 3.8.1 OPC OPC //Filename: DemoClientView.cpp //Function: CDemoClientView:: OnItemRead() VARIANT Value; VariantInit (&Value); FILETIME fttime; DWORD dwquality; BOOL bresult = KOC_ReadItem( m_hconnect, //OPC m_hgroup, //OPC pitem->hitem,//opc &Value, &fttime, // // &dwquality );// if (bresult) { TRACE("Read Succ.\n"); VariantCopy(&pItem->Value,&Value); pitem->timestamp = fttime; pitem->quality = dwquality; } else TRACE("Read Failed.\n"); VariantClear(&Value); 22

Knight OPC Client Rapid Development Toolkits 3.8.2 OPC OPC OPC //Filename: DemoClientView.cpp //Function: CDemoClientView:: OnItemWrite() BOOL bresult = KOC_WriteItem( m_hconnect, m_hgroup, //OPC //OPC pitem->hitem, //OPC vt, // dlg.m_basync); // OPC (1) OPC (2) OPC (3) OPC (4) OPC (5) OPC 3.9 step8 OPC OPC (1) KOC_RemoveItem() KOCRDK.dll OPC (2) KOC_RemoveGroup() KOCRDK.dll OPC (3) new 23

OPC (4) KOC_Uninit() OPC 24

Knight OPC Client Rapid Development Toolkits 4 4.1 KOCRDK 4.2 http://www.eehoo.net OPC opc@eehoo.net / sales@eehoo.net support@eehoo.net 25