1.hysys opc server怎么开发 搜狗问问
一.准备工作: 下载opc基金会的OPC Proxy DLL然后按照说明进行安装。
这些动态库是opc程序运行所必须的。 1. 将下列文件拷贝至要运行OPC服务器和OPC客户端的机器上的SYSTEM32目录下 copy opcproxy.dll C:\WINDOWS\system32 copy opccomn_ps.dll C:\WINDOWS\system32 copy opc_aeps.dll C:\WINDOWS\system32 copy opchda_ps.dll C:\WINDOWS\system32 copy aprxdist.exe C:\WINDOWS\system32 copy opcenum.exe C:\WINDOWS\system32 2. 注册这些 dll 文件 REGSVR32 opcproxy.dll REGSVR32 opccomn_ps.dll REGSVR32 opc_aeps.dll REGSVR32 opchda_ps.dll 3. 如果在windows 系统(\WINDOWS \system32)目下不存在actxprxy.dll,运行aprxdist.exe 4. 安装 opcenum.exe opcenum /regserver 二.opcserver开发 1. 新建vc工程。
比如建一个控制台工程。在工程中包含如下头文件 #include "opcda.h" #include "opc_ae.h" #include "WTOPCsvrAPI.h" #include "WtOPCsvrEXTapi.h" 以上头文件在例子程序中都能找到,拷贝到自己的工程下。
WTOPCsvrAPI.h是开发包动态库提供的导出函数文件。里面有每个函数的具体说明,调用的时候看一下说明。
2. 在.cpp中定义一个GUID这个guid是用来标识opcserver的唯一id可以通过操作系统的工具生成,也可以编一个。格式如下。
const GUID CLSID_OPCSimSvr = {0x99b8f472, 0xc037, 0x11d2, {0x80, 0xb8, 0x0, 0x60, 0x97, 0x58, 0x58, 0xbe}}; 3. 在工程中加入对WtOPCSvr动态库的连接。 WTOPCsvr动态库的有关文件都在之前的例子包里面能找到。
WTOPCsvr.lib WTOPCsvr.dll是对应lib和dll 4. 初始化 (1)调用UpdateRegistry()函数完成注册。下面是一个调用参考例子代码 BOOL COPCSimSvrApp::InitInstance() { TCHAR szTokens[] = _T("-/ "); CString HelpPath; CString SvrName, SvrDescrip; int i; HelpPath = AfxGetApp()->m_pszHelpFilePath; i = HelpPath.ReverseFind('\\'); HelpPath = HelpPath.Left(i+1); HelpPath += "OPCSIMSVR.EXE"; // // Self-Registration code // (look for cmdline options to register & unregister server) // SvrName = "WinTECH.OPCServer"; SvrDescrip = "WinTECH Software OPC Server Simulator"; CString tempCmdLine(m_lpCmdLine); LPTSTR lpszToken = _tcstok(tempCmdLine.GetBuffer(1), szTokens); while (lpszToken != NULL) { if (_tcsicmp(lpszToken, _T("UnregServer"))==0) { UnregisterServer ((BYTE *)&CLSID_OPCSimSvr, SvrName); return (FALSE); } else if (_tcsicmp(lpszToken, _T("RegServer"))==0) { UpdateRegistry ((BYTE *)&CLSID_OPCSimSvr, SvrName, SvrDescrip, HelpPath); return (FALSE); } lpszToken = _tcstok(NULL, szTokens); } (2)调用InitWTOPCsvr完成开发包dll初始化。
以上两个步骤不可颠倒。 5. 创建item 这里的item是服务器所有的item,这些item通过opc库户端能浏览到。
创建item的函数为CreateTag(). Opc有两种地址空间形式:扁平和多层结构的。 比如调用创建的点为item1、item2、item3.这类结构就是扁平的。
各个点类似与文件系统中的文件。 比如调用创建的点为test.item1、test.item2、test.item3这种点名,开发包会自动形成多层的点结构。
Test类似与文件系统中的文件夹,item类似与文件系统中的文件夹下的文件。扁平式和多层结构在客户端浏览点名时体现。
多层结构的点名之间默认是用“.”分隔。为了简单可以将我们的opcserver设计为扁平结构。
创建一个点时会返回一个handle用来标识这个点。我们程序需要自己建立这个handle和数据库中保存设备实时值的对应关系。
这部分可以参考例子代码。 6. 建立一个定时器采集设备数据 定时从数据库中取得各个handle对应的item的值。
然后比较各个item的值是否和上一次读取的值有变化,如果有变化调用UpdateTagToList放入对应的队列。开发包会自动将变化的值送到客户端。
大致流程为 (1) 从数据库中采集一遍所有点的实时值。 (2) 调用StartUpdateTags() (3) 循环读取每个item在数据库中的数据,和上一次读取到的进行比较。
如果有变化调用UpdateTagToList() (4) 最用调用EndUpdateTags()完成所有item的更新。 7. 客户端控制 客户端写tag的值的时候,在opcserver是通过一个回调函数来响应的。
在服务器端必须调用()来指定写值的回调函数。回调函数的格式为: typedef VOID (CALLBACK* WRITENOTIFYPROC)(HANDLE, VARIANT*, DWORD*); 然后在回调函数内部实现从HANDLE指定的tag写到具体的控制设备对应的变量中。
8. 其它常用函数 RequestDisconnect()一般在opcserver在关闭时调用,用来通知客户端opcserver自己要关闭。 ()用来计算当前有多少个客户端连接到了opcserver UninitWTOPCsvr()程序退出时清理 SetVendorInfo()设置厂商信息 三.opc客户端测试 下面以本机opcquickclient.exe为例说明服务器和客户端之间的应用关系。
1. 运行opcquickclient.exe 2. 点击edit->new server connection 菜单。弹出。
2.如何连phoenix opc server
概览NI LabVIEW软件可以通过多种方式与可编程逻辑控制器(PLC)通信。
用于过程控制的OLE(OPC)定义了在控制设备和人机界面(HMI)间实时对象数据通信的标准。OPC服务器适用于几乎所有PLC和可编程自动化控制器(PAC)。
在本教程中,您将学习如何在LabVIEW中使用OPC与联网的PLC通信。目录本教程使用LabVIEW数据记录与监控(DSC)模块。
该模块包含了诸多工具,包拪将数据记录到联网历史数据库、实时与历史趋势、警报与事件管理、将LabVIEW实时目标与OPC设备连在在一个完整的系统中、为用户界面提高安全性等等。由于拥有这些特性,LabVIEW成为了用于工业控制应用的强大HMI/SCADA工具。
要求• Windows XP/2000• LabVIEW FDS与LabVIEW DSC • NI OPC服务器使用NI OPC服务器查看现有的PLC标签1. 选择开始》程序》National Instruments》NI OPCServers》NI OPCServers,启动NI OPC服务器。使用NI OPC服务器,您可以创建、配置、查看与PLC关联的标签。
2. NI OPC服务器需要与已经载入的PLC仿真工程一起启动。这个工程仿真在NI OPC服务器中已经建立配置的PLC。
说明:如果没有载入仿真工程,在NI OPC服务器中选择文件》打开,浏览C:\Program Files\National Instruments\Shared\NI OPC Servers\Projects\simdemo.opf。工程如图1所示。
图1:显示仿真PLC的NI OPC服务器展开Channel_0_User_Defined,选择Sine,查看正弦标签。标签在最右边的窗口中显示。
这些标签被绑定到PLC的寄存器上,由LabVIEW读取。通过PLC OPC标签查看数据。
1. 在NI OPC服务器中,选择Tools»Launch OPC Quick Client。这样可以启动OPC快速客户端,您可以用来查看OPC标签数据。
2. 展开National Instruments.NIOPCServers文件夹,选择Channel_0_User_Defined.Sine。这样可以选定需要监视的设备。
3. 请注意所有的正弦标签都列出在右边的窗口中,且如图2所示正在更新显示仿真正弦数据。图2:NI OPC快速客户端显示仿真正弦OPC标签说明:要获取NI OPC支持的设备/驱动程序列表,请访问ni.com/opc。
通过创建I/O服务器将LabVIEW连接到OPC标签在本小节中,将创建OPC标签的LabVIEW接口,称为I/O服务器。I/O服务器以您指定的速率,用当前标签数值更新LabVIEW。
1. 在LabVIEW的使用入门窗口中,点击文件》新建项目。这将打开新建LabVIEW项目。
2. 如果即时帮助窗口不可见,按Ctrl+H键显示窗口。保持窗口打开,可以得到鼠标指针所指向对象的帮助信息。
3. 在LabVIEW项目浏览器窗口中,右键点击我的电脑,选择新建》I/O服务器,如图3所示。图3:通过LabVIEW项目新建I/O服务器4. 在新建I/O服务器窗口中选择OPC客户端,点击继续。
5. 仍已注册OPC服务器框中选择National Instruments.NIOPCServers,设置更新速率(ms)为100。这将创建LabVIEW与OPC标签的连接,每隔100 ms更新。
CropperCapture[3]Figure 4. Configuring the OPC Client I/O Server6. 选择确定。在您的项目浏览器窗口中自动创建了库,用于管理I/O服务器。
7. 仍项目浏览器窗口中选择文件》保存所有,将项目保存为OPCDemoProject,将库保存为OPCDemoLibrary。创建通过I/O服务器连接到OPC标签的共享变量在本小节中,将创建绑定到OPC标签上的共享变量,仍而可以在LabVIEW中本地访问PLC数据。
使用共享变量,您可以在一台计算机或是网络中,在多个LabVIEW应用程序间共享数据。创建绑定到PLC OPC标签上的新共享变量。
在LabVIEW项目窗口中,右击我的电脑,选择新建》库。这样可以为共享变量建立一个新库,用于连接到PLC的OPC标签。
右击新建的库,选择创建绑定变量……在创建绑定变量窗口中,选择OPC标签,通过浏览来自OPC服务器的仿真正弦数据,选择共享变量所需绑定的OPC标签,如图5所示。/cms/images/devzone/tut/create%20bound%20variables.png图5:选择需要绑定到共享变量的OPC标签 4. 选择所有正弦项目,点击添加确定。
这样就创建了绑定到PLC OPC标签上的共享变量,将它们载入到多变量编辑器中。 5. 在多变量编辑器中,选择完成。
这将把新的共享变量添加到前所建立的库中。说明:LabVIEW DSC模块通过为数据库直接添加记录数据、报警和事件的功能,在无需编写LabVIEW应用程序的情冴下,增强了共享变量。
通过右击库,选择另存为,将新库以OPCItem.lvlib为文件名保存在项目浏览器窗口中。通过右击OPCItems库,选择部署,对共享变量部署。
这样就可以収布共享变量,使它们可以在网络上通过其他计算机、OPC客户端和LabVIEW实时自动化控制器(PAC)使用。您现在可以通过共享变量在LabVIEW中本地访问PLC数据。
使用分布式系统管理器查看共享变量在项目浏览器窗口中,选择工具》分布式系统管理器。这样可以打开您可以用来以多种方式管理共享变量的窗口(查看、部署、移除等等)。
在变量管理器的树形面板中,展开位于我的系统分类下的localhost项目。右击OPCItems库,选择监视列表,显示被绑定到PLC OPC标签上的共享变量。
共享变。
3.如何开发OPC Server
开发方式有三种:
简单的:就是应用已经有的如DDE to OPC 或串口 to OPC,modbus to
OPC等软件把您的设备变成相关的OPC服务器。方法简单实用,费用合理快速,让你马上搭上OPC的快车。主要缺陷:你的设备必需是标准设备或更标准设备
相容。这种方式比较适合产品多的厂家快速的转型,或提供OPC相关产品。
2.。
一般的:应用第三方的开发包开发,这种方式相对来说减少了开发的难度,而且第三方有相应的技术支持,开发商专业做这种产品,产品有一定的稳定性。这种方式
对开发包有依赖性,并且OPC服务器的稳定性依赖第三方的开发水平。本方法适于老板要求你马上开发出OPC产品是^_^,或者入门者使用。国内相关的开发
包有华富慧通的和拓林的开发包。
国外的可参考:/source.php上面的还可以,不过现在发现也有死链接,不过他的提示确实不错。
3。有难度的:应用COM开发。这种开发方式是最可以学习到东西的。但需要有一定的基础,而且需要对英文有一定的认识度。
4.如何连接opc server java
有了jeasyopc,一切操作都简单的很,如下: //第一步,初始化 JOpc.coInitialize(); //第二步,建立一个JOpc对象,三个参数,分别是OpcServer的IP,Server的name,还有JOpc的name JOpc jopc = new JOpc("172.29.10.173", "OPCServer.Hundure.EXE", "JOPC1"); //第三步,建立连接 jopc.connect(); //第四步,新建一个OPC的group和item,并把item加到group中 OpcGroup group = new OpcGroup("group", true, 500, 0.0f); OpcItem item = new OpcItem("Door1", true, ""); group.addItem(item); //第五步, jopc.addGroup(group); jopc.registerGroup(group); jopc.registerItem(group, item); //第六步 item.setValue(new Variant(1)); jopc.synchWriteItem(group, item); //最后,该释放的全释放掉 jopc.unregisterItem(group, item); jopc.unregisterGroup(group); JOpc.coUninitialize();望采纳,谢谢。
5.hysys opc server怎么开发
一.准备工作:下载opc基金会的OPC Proxy DLL然后按照说明进行安装。
这些动态库是opc程序运行所必须的。1. 将下列文件拷贝至要运行OPC服务器和OPC客户端的机器上的SYSTEM32目录下 copy opcproxy.dll C:\WINDOWS\system32 copy opccomn_ps.dll C:\WINDOWS\system32 copy opc_aeps.dll C:\WINDOWS\system32 copy opchda_ps.dll C:\WINDOWS\system32 copy aprxdist.exe C:\WINDOWS\system32 copy opcenum.exe C:\WINDOWS\system322. 注册这些 dll 文件 REGSVR32 opcproxy.dll REGSVR32 opccomn_ps.dll REGSVR32 opc_aeps.dll REGSVR32 opchda_ps.dll3. 如果在windows 系统(\WINDOWS \system32)目下不存在actxprxy.dll,运行aprxdist.exe4. 安装 opcenum.exe opcenum /regserver二.opcserver开发1. 新建vc工程。
比如建一个控制台工程。在工程中包含如下头文件#include "opcda.h"#include "opc_ae.h"#include "WTOPCsvrAPI.h"#include "WtOPCsvrEXTapi.h"以上头文件在例子程序中都能找到,拷贝到自己的工程下。
WTOPCsvrAPI.h是开发包动态库提供的导出函数文件。里面有每个函数的具体说明,调用的时候看一下说明。
2. 在.cpp中定义一个GUID这个guid是用来标识opcserver的唯一id可以通过操作系统的工具生成,也可以编一个。格式如下。
const GUIDCLSID_OPCSimSvr = {0x99b8f472, 0xc037, 0x11d2, {0x80, 0xb8, 0x0, 0x60, 0x97, 0x58, 0x58, 0xbe}};3. 在工程中加入对WtOPCSvr动态库的连接。WTOPCsvr动态库的有关文件都在之前的例子包里面能找到。
WTOPCsvr.lib WTOPCsvr.dll是对应lib和dll4. 初始化(1)调用UpdateRegistry()函数完成注册。下面是一个调用参考例子代码BOOL COPCSimSvrApp::InitInstance(){TCHAR szTokens[] = _T("-/ ");CString HelpPath;CString SvrName, SvrDescrip;int i;HelpPath = AfxGetApp()->m_pszHelpFilePath;i = HelpPath.ReverseFind('\\');HelpPath = HelpPath.Left(i+1);HelpPath += "OPCSIMSVR.EXE"; //// Self-Registration code// (look for cmdline options to register & unregister server)//SvrName = "WinTECH.OPCServer";SvrDescrip = "WinTECH Software OPC Server Simulator";CString tempCmdLine(m_lpCmdLine);LPTSTR lpszToken = _tcstok(tempCmdLine.GetBuffer(1), szTokens);while (lpszToken != NULL) { if (_tcsicmp(lpszToken, _T("UnregServer"))==0) { UnregisterServer ((BYTE *)&CLSID_OPCSimSvr, SvrName); return (FALSE); } else if (_tcsicmp(lpszToken, _T("RegServer"))==0) { UpdateRegistry ((BYTE *)&CLSID_OPCSimSvr, SvrName, SvrDescrip, HelpPath); return (FALSE); } lpszToken = _tcstok(NULL, szTokens); }(2)调用InitWTOPCsvr完成开发包dll初始化。
以上两个步骤不可颠倒。5. 创建item这里的item是服务器所有的item,这些item通过opc库户端能浏览到。
创建item的函数为CreateTag().Opc有两种地址空间形式:扁平和多层结构的。比如调用创建的点为item1、item2、item3.这类结构就是扁平的。
各个点类似与文件系统中的文件。比如调用创建的点为test.item1、test.item2、test.item3这种点名,开发包会自动形成多层的点结构。
Test类似与文件系统中的文件夹,item类似与文件系统中的文件夹下的文件。扁平式和多层结构在客户端浏览点名时体现。
多层结构的点名之间默认是用“.”分隔。为了简单可以将我们的opcserver设计为扁平结构。
创建一个点时会返回一个handle用来标识这个点。我们程序需要自己建立这个handle和数据库中保存设备实时值的对应关系。
这部分可以参考例子代码。6. 建立一个定时器采集设备数据定时从数据库中取得各个handle对应的item的值。
然后比较各个item的值是否和上一次读取的值有变化,如果有变化调用UpdateTagToList放入对应的队列。开发包会自动将变化的值送到客户端。
大致流程为(1) 从数据库中采集一遍所有点的实时值。(2) 调用StartUpdateTags()(3) 循环读取每个item在数据库中的数据,和上一次读取到的进行比较。
如果有变化调用UpdateTagToList()(4) 最用调用EndUpdateTags()完成所有item的更新。7. 客户端控制客户端写tag的值的时候,在opcserver是通过一个回调函数来响应的。
在服务器端必须调用()来指定写值的回调函数。回调函数的格式为:typedef VOID (CALLBACK* WRITENOTIFYPROC)(HANDLE, VARIANT*, DWORD*);然后在回调函数内部实现从HANDLE指定的tag写到具体的控制设备对应的变量中。
8. 其它常用函数RequestDisconnect()一般在opcserver在关闭时调用,用来通知客户端opcserver自己要关闭。()用来计算当前有多少个客户端连接到了()程序退出时清理SetVendorInfo()设置厂商信息三.opc客户端测试下面以本机opcquickclient.exe为例说明服务器和客户端之间的应用关系。
1. 运行opcquickclient.exe2. 点击edit-。
转载请注明出处windows之家 » win10opcserver设置