概述

Similar documents
概述

FY.DOC

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

untitled

提问袁小兵:

untitled

INTRODUCTION TO COM.DOC

Microsoft Word - 01.DOC


用户大会 论文集2.2.doc

epub83-1

新版 明解C++入門編

Microsoft Word - 11.doc

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

CC213

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

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

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

第壹拾篇

Java

(HMI) IO A

目錄

EJB-Programming-4-cn.doc

untitled

C/C++程序设计 - 字符串与格式化输入/输出

ebook46-23

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

The golden pins of the PCI card can be oxidized after months or years

EJB-Programming-3.PDF

f2.eps

目次 

ebook12-1

c_cpp

Microsoft Word - ch04三校.doc

an153f

untitled

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

untitled

RUN_PC連載_12_.doc

导 生 和 被 辅 导 成 员 在 辅 导 过 程 中 的 一 些 不 足 与 可 取 点, 经 过 25 分 钟 的 讨 论, 各 小 组 派 代 表 阐 述 了 各 方 观 点 和 改 进 方 法 然 后, 为 了 改 善 导 生 辅 导 方 法, 让 辅 导 变 得 更 有 效 率, 各 院

mvc

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

WinMDI 28

C/C++ 语言 - 循环

untitled

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

ebook129-9

全国计算机技术与软件专业技术资格(水平)考试

Microsoft Word - CIN-DLL.doc

epub 61-2

bingdian001.com

CC213

Microsoft Word - 13院21号.doc

致理技術學院資訊管理學系專題企劃書格式建議書

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

穨文件1

软件概述

C/C++ - 文件IO

untitled

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

untitled

InstallShield InstallShield InstallShield Windows Installer ISWI ISWI InstallShield InstallShield InstallShield Windows Installer WI In

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Microsoft Word - PS2_linux_guide_cn.doc

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

untitled

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

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

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

VB程序设计教程

24 第 3 章 创 建 Access 数 据 库 和 表 3.1 创 建 Access 数 据 库 Access 2003 中 的 数 据 库 属 于 关 系 型 数 据 库, 以.mdb 为 文 件 的 后 缀, 建 立 一 个 数 据 库 的 同 时, 就 创 建 了 数 据 库 中 的 对

前言 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

untitled

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

untitled

untitled

untitled

多層次傳銷與獎金系統

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++;

ebook140-8

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft Word - Station说明书

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

untitled

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

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

untitled


JLX

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

Ø Ø Microsoft Project Ø Zou Zhige VLSI 2

台北市立大安高工職業學校

第一章行政區域及行政組織

3.1 num = 3 ch = 'C' 2

Contents

ebook129-11

謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及

Post-Secondary Student Summer Internship Programme 2016_Chi

Transcription:

OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9

OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3 KOS_UnInit...6 2.2.4 KOS_Register...6 2.2.5 KOS_RegisterB...6 2.2.6 KOS_UnRegister...7 2.2.7 KOS_UnRegisterB...7 2.3...7 2.3.1 KOS_SetClientWriteProc...8 2.3.2 KOS_SetClientShutdownProc...8 2.3.3 KOS_SetItemConnectProc...9 2.4 Item...9 2.4.1 KOS_AddItem...10 2.4.2 KOS_AddItemB...10 2.4.3 KOS_UpdateItem...11 2.4.4 KOS_RemoveItem...11 2.4.5 KOS_SetAddressDelimiter...11 2.5...12 2.5.1 KOS_GetClientCount...12 2.5.2 KOS_ShutdownClients...12 2.5.3 KOS_SetHashSize...12 3...13 3.1...13 3.2 step1...13 3.3 step2...14 3.4 step3 CLSID...14 3.5 step4...15 3.5.1...15 3.5.2...16 3.5.3...16 3.5.4...18 2

Knight OPC Server Rapid Development Toolkits 3.6 step5 OPC...19 3.7 step6 OPC...20 3.8 step7 OPC...21 4...24 4.1...24 4.2...24 3

OPC 1 KOSRDK Knight OPC Server Rapid Development Kit KOSRDK OPC OLE For Process KOSRDK OPC OPC DA: Data Access 1.0/2.0 DLL ATL/DCOM OPC Visual C++, Visual Basic, Borland C++ builder, Delphi 4

Knight OPC Server Rapid Development Toolkits 2 API 2.1 KOSRDK API kosrdkapi.h API KOS_ 2.2 2.2.1 KOS_Init OPC BOOL KOS_Init(GUID CLSID_Svr, UINT UpdateRate); 0 (1) GUID CLSID_Svr Class ID GUIDGEN.EXE (2) UINT UpdateRate 10~60000 ms 2.2.2 KOS_InitB OPC KOS_Init C++ Visual Basic BOOL KOS_InitB(BYTE *pclsid_svr, UINT UpdateRate); 0 (1) BYTE *pclsid_svr Class ID GUIDGEN.EXE (2) UINT UpdateRate 10~60000 ms 5

OPC 2.2.3 KOS_UnInit BOOL KOS_UnInit(); 0 OPC 2.2.4 KOS_Register BOOL KOS_Register (GUID CLSID_Svr, CString Name, CString Descr, CString ExePath); 0 (1) GUID CLSID_Svr Class ID GUIDGEN.EXE (2) CString Name: (3) CString Descr: (4) CString ExePath: OPC OPC OPC 2.2.5 KOS_RegisterB BOOL KOS_RegisterB (BYTE *pclsid_svr, LPCSTR Name, LPCSTR Descr, LPCSTR ExePath); 0 (1) BYTE *pclsid_svr Class ID GUIDGEN.EXE (2) LPCSTR Name: (3) LPCSTR Descr: 6

Knight OPC Server Rapid Development Toolkits (4) LPCSTR ExePath: OPC OPC OPC KOS_Register C++ Visual Basic 2.2.6 KOS_UnRegister BOOL KOS_UnRegister (GUID CLSID_Svr, CString Name); 0 (1) GUID CLSID_Svr Class ID GUIDGEN.EXE (2) CString Name: OPC OPC OPC 2.2.7 KOS_UnRegisterB BOOL KOS_UnRegisterB (BYTE *pclsid_svr, LPCSTR Name); 0 (1) BYTE *pclsid_svr Class ID GUIDGEN.EXE (2) LPCSTR Name: OPC OPC OPC KOS_UnRegister C++ Visual Basic 2.3 OPC Server DLL 7

OPC 2.3.1 KOS_SetClientWriteProc BOOL KOS_SetClientWriteProc ( CLIENTWRITEPROC lpcallback) 0 (1) CLIENTWRITEPROC lpcallback OPC OPC OPC OPC OPC void CALLBACK EXPORT ClientWriteProc ( HANDLE Handle,VARIANT *pvar ) (1) HANDLE Handle OPC Server OPC (2) VARIANT *pvar 2.3.2 KOS_SetClientShutdownProc BOOL KOS_SetClientShutdownProc ( CLIENTSHUTDOWNPROC lpcallback ) 0 CLIENTSHUTDOWNPROC lpcallback OPC OPC OPC Server DLL OPC void CALLBACK EXPORT ClientShutdownProc(UINT wclientcount) (1) UINT wclientcount OPC 8

Knight OPC Server Rapid Development Toolkits 2.3.3 KOS_SetItemConnectProc BOOL KOS_SetItemConnectProc ( ITEMCONNECTPROC lpcallback ) 0 ITEMCONNECTPROC lpcallback OPC OPC DLL OPC OPC OPC OPC OPC OPC OPC OPC OPC OPC OPC OPC (1) OPC OPC (2) OPC OPC void CALLBACK EXPORT ItemConnectProc(HANDLE itemhandle, BOOL bconnected) HANDLE itemhandle OPC BOOL bconnected TRUE OPC OPC FALSE OPC OPC 2.4 Item API OPC / 9

OPC 2.4.1 KOS_AddItem HANDLE KOS_AddItem (CString Name, VARIANT Value, WORD InitialQuality, BOOL IsWritable); NULL OPC OPC Server DLL HANDLE (1) CString Name OPC (2) VARIANT Value OPC (3) WORD InitialQuality OPC OPCDA.H OPC OPC KOSRDK.dll OPC 2.4.2KOS_AddItemB HANDLE KOS_AddItemB (LPCSTR Name, VARIANT Value, WORD InitialQuality, BOOL IsWritable); NULL OPC OPC Server DLL HANDLE (1) LPCSTR Name OPC (2) VARIANT Value OPC (3) WORD InitialQuality OPC OPCDA.H (4) BOOL IsWritable OPC TRUE- FALSE- (4) BOOL IsWritable OPC TRUE- FALSE- OPC OPC KOSRDK.dll OPC KOS_AddItem C++ Visual Basic 10

Knight OPC Server Rapid Development Toolkits 2.4.3 KOS_UpdateItem BOOL KOS_UpdateItem (HANDLE ItemHandle, VARIANT Value, WORD Quality); 0 (1) HANDLE ItemHandle OPC OPC OPC (2) VARIANT Value OPC (3) WORD Quality OPC OPCDA.H 2.4.4 KOS_RemoveItem BOOL KOS_RemoveItem (HANDLE ItemHandle); 0 (1) HANDLE ItemHandle OPC OPC OPC 2.4.5 KOS_SetAddressDelimiter char KOS_SetAddressDelimiter (char delimiter); char delimiter OPC OPC OPC OPC A.A.A, A.A.B, A.B.A, A.B.B. 11

OPC 2.5 2.5.1 KOS_GetClientCount int KOS_GetClientCount(); 0 2.5.2 KOS_ShutdownClients void KOS_ShutdownClients(); OPC OPC 2.5.3 KOS_SetHashSize UINT KOS_SetHashSize(UINT HashSize); OPC KOSRDK.dll OPC OPC OPC OPC OPC 1.2 500 OPC OPC 12

Knight OPC Server Rapid Development Toolkits 3 3.1 Microsoft Visual C++ 6.0 OPC \Samples\source\KOSVC\TestServer.dsw 3.2 step1 OPC / OPC / DLL http://www.opcfoundation.org http://www.eehoo.net/opcdist.zip KOSRDK 1.6 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 13

OPC 3.3 step2 Visual C++ KOSRDK 3 (1) kosrdk.dll KOSRDK OPC (2) kosrdk.lib kosrdk.dll (3) kosrdkapi.h KOSRDK KOSRDK API opcda.h OPC Visual Basic Delphi 3.4 step3 CLSID OPC GUID CLSID GUIDGEN.EXE Visual C++ 6.0 VC \common\tools\ GUIDGEN.EXE 1 14

Knight OPC Server Rapid Development Toolkits 3-1 GUIDGEN.EXE 2 GUID 3 Copy 3 Visual Studio MainFrm.h CLSID_Svr Edit Paste GUID <<name>> CLSID_Svr 4 //Filename: MainFrm.h // User Application Parameters // CLSID_Svr: the classid of this OPC Server static const GUID CLSID_Svr = { 0x42cc3bf1, 0x4409, 0x429a, { 0xb9, 0x9b, 0xab, 0x60, 0xf8, 0x82, 0x1, 0x4e } }; 3.5 step4 3.5.1 OPC //Filename: MainFrm.cpp 15

OPC //Function: CMainFrame::CMainFrame() // Name of OPC server m_strsvrname = "Knight.OPC.Server.Test" ; // Description of OPC server m_strsvrdesc = "OPC Server for test"; 3.5.2 KOS_Init() BOOL KOS_Init(GUID CLSID_Svr, UINT UpdateRate) CLASSID //Filename: MainFrm.cpp //Function: CMainFrame::CMainFrame() // Knight OPC Server Initialization KOS_Init(CLSID_Svr,100); 3.5.3 KOSRDK CALLBACK OPC Server DLL (1) OPC OPC OPC Server DLL //Filename: MainFrm.cpp //Function: CMainFrame::CMainFrame() 16

Knight OPC Server Rapid Development Toolkits // Setting write callback procedure KOS_SetClientWriteProc(&ClientWriteProc); ClientWriteProc //Filename: MainFrm.cpp void CALLBACK EXPORT ClientWriteProc ( HANDLE Handle,VARIANT *pvar ) { TRACE("Client Write Data, Item Handle=%d, float value = %f\n",handle,pvar->fltval); // } (2) OPC OPC OPC Server DLL //Filename: MainFrm.cpp //Function: CMainFrame::CMainFrame() // Setting client shutdown callback procedure KOS_SetClientShutdownProc (&ClientShutdownProc); ClientShutdownProc //Filename: MainFrm.cpp void CALLBACK EXPORT ClientShutdownProc ( UINT wclientcount) { TRACE("Client Shutdown, remain connections count = %d\n",wclientcount); } wclientcount 0 17

OPC OPC 3.5.4 OPC OPC CLSID (1) //Filename: MainFrm.cpp //Function: CMainFrame::OnOpcRegserver void CMainFrame::OnOpcRegserver() { // TODO: Add your command handler code here int i; BOOL bret = FALSE; CString strfile; strfile = AfxGetApp()->m_pszHelpFilePath; i = strfile.reversefind('\\'); strfile = strfile.left(i+1); strfile += "kostest.ext"; bret = KOS_Register( CLSID_Svr, m_strsvrname, m_strsvrdesc, strfile); if (bret) AfxMessageBox("Register OK"); } (2) 18

Knight OPC Server Rapid Development Toolkits //Filename: MainFrm.cpp //Function: CMainFrame::OnOpcUnregserver void CMainFrame::OnOpcUnregserver() { BOOL bret; bret = KOS_UnRegister( CLSID_Svr, m_strsvrname); if (bret) AfxMessageBox("Unregister OK"); } 3.6 step5 OPC OPC OPC Server DLL OPC OPC OPC API HANDLE WINAPI KOS_AddItem (CString Name, VARIANT Value, WORD InitialQuality, BOOL IsWritable); API //Filename: MainFrm.cpp //Function: CMainFrame::OnOpcAdditem() // CItem *pitem; HANDLE hitem; pitem = new CItem; pitem->name = dlg.m_strname; COleVariant vt( dlg.m_strvalue ); // initialize as a string switch (dlg.m_ndatatype) { case 0://BOOL pitem->value.vt = VT_BOOL; 19

OPC break; case 1://SHORT pitem->value.vt = VT_I2; break; // }//end switch vt.changetype( pitem->value.vt );//let COleVariant convert! hitem = KOS_AddItem (pitem->name, pitem->value, OPC_QUALITY_GOOD, TRUE); if (hitem == NULL) { } delete pitem; return; pitem->handle = hitem; // 3.7 step6 OPC OPC OPC Server DLL OPC OPC OPC OPC OPC OPC OPC Server DLL OPC OPC Server DLL OPC API BOOL WINAPI KOS_UpdateItem (HANDLE ItemHandle, VARIANT Value, WORD Quality); API OPC Server DLL OPC 20

Knight OPC Server Rapid Development Toolkits //Filename: MainFrm.cpp //Function: CMainFrame::OnTimer(UINT nidevent) // CItem *pitem; Lock(); for (i=0;i<m_itemlist.getsize();i++) { pitem = (CItem *)m_itemlist.getat(i); //read value form hardware pitem->readfromhardware(); //update current value to OPC Server DLL KOS_UpdateItem ( pitem->handle, pitem->value, pitem->quality); } UnLock(); OPC (1) OPC (2) OPC (3) OPC OPC (1) OPC (2) OPC (3) OPC (4) OPC 3.8 step7 OPC OPC (1) 21

OPC //Filename: MainFrm.cpp //Function: CMainFrame::OnOpcDisconnect if ( KOS_GetClientCount()>0 ) { KOS_ShutdownClients(); } (2) new (3) KOS_RemoveItem() OPC OPC (4) KOS_UnInit() OPC //Filename: MainFrm.cpp //Function: CMainFrame:: ~CMainFrame() // // free all items in local m_itemlist Lock(); int i; CItem *pitem; for (i=0;i<m_itemlist.getsize();i++) { } pitem = (CItem *)m_itemlist.getat(i); KOS_RemoveItem(pItem->Handle); delete pitem; m_itemlist.removeall(); UnLock(); // Knight OPC Server Uninitialization 22

Knight OPC Server Rapid Development Toolkits KOS_UnInit(); // 23

OPC 4 4.1 KOSRDK 4.2 http://www.eehoo.net OPC opc@eehoo.net / sales@eehoo.net support@eehoo.net 24