opc服务器源代码(opc服务器与opc客户端)
admin 发布:2022-12-19 03:44 101
今天给各位分享opc服务器源代码的知识,其中也会对opc服务器与opc客户端进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、C#编写代码读取OPC某个标签的值得代码
- 2、如何用VB编写OPC客户端程序
- 3、java OPC服务通信
- 4、opc服务器是什么?是硬件还是软件啊!!麻烦知道的内行帮忙解释解释~~
- 5、怎么看wincc的opc质量代码
C#编写代码读取OPC某个标签的值得代码
一.准备工作:
下载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是通过一个回调函数来响应的。
在服务器端必须调用EnableWriteNotification()来指定写值的回调函数。回调函数的格式为:
typedef VOID (CALLBACK* WRITENOTIFYPROC)(HANDLE, VARIANT*, DWORD*);
然后在回调函数内部实现从HANDLE指定的tag写到具体的控制设备对应的变量中。
8. 其它常用函数
RequestDisconnect()一般在opcserver在关闭时调用,用来通知客户端opcserver自己要关闭。
NumbrClientConnections()用来计算当前有多少个客户端连接到了opcserver
UninitWTOPCsvr()程序退出时清理
SetVendorInfo()设置厂商信息
三.opc客户端测试
下面以本机opcquickclient.exe为例说明服务器和客户端之间的应用关系。
1. 运行opcquickclient.exe
2. 点击edit-new server connection 菜单。弹出server properties对话框。从中展开opc data access server version 2.0.会浏览到本机安装的所有opcserver。选中我们自己开发的opcserver,点击确定。完成与服务器的连接
3. 点击edit-new group 用默认值添加组。
4. 点击edit-new item 弹出如下对话框。(下图是一个多层结构地址空间的例子,单层的更简单)选中左侧的某个父节点,右侧会显示出各个子tag。选中要向opcserver查询的tag,点击add leaves。然后点击ok
5. 在客户端主界面上能看到刚才要查询的tag。它会自动跟随opcserver端数据的变化而变换。
6. 右键要控制的tag,在菜单中选择同步写或者异步写(一般建议用异步,避免阻塞客户端的正常运行)。键入要写入的值。查看设备上是否动作。从而检验opcserver是否编写的正确。
答案:如何求解“对称”问题?证明曲线C:F(x,y)=
如何用VB编写OPC客户端程序
开发OPC 客户端程序时,首先应该生成OPC 服务器支持的OPC 对象,然后就 可以使用OPC 对象支持的属性和方法,对其进行各种操作。这样使得客户程序可 以像使用自己支持的数据和功能一样,去使用服务器对象支持的数据和功能。在 VisualBasic6.0 里,是以对象为单位对OPC 服务器进行访问的。通过OPC 自动化 服务器的对象模型,可以得知OPC 自动化接口由以下四种对象所定义。1. OPCServer 服务器对象OPCServer 的一个实例,OPC 服务器自动含有一个OPC 组集合 对象,并可在其基础上生成一个OPC 浏览器对象。 OPCServer 服务器对象在使用其它OPC 对象前必须生成,也就是说在引用 其他对象之前必须先创建OPCServer。OPCServer 对象提供了对数据源访问和通 信的方法,其提供了“Connect”方法来连接OPC 自动化服务器。 主要属性: StartTime(只读属性,服务器启动运行的时间) CurrentTime(只读属性,返回服务器显示的当前时间) LastUpdateTime(对于本OPC 应用程序的最后数据更新时间) MajorVersion(只读属性,OPC 服务器的主版本号) MinorVersion(只读属性,OPC 服务器的次版本号) Bandwith(只读属性,返回OPC 服务器的不敏感区的百分比) ServerState(只读属性,返回服务器的运行状态,这个属性是比较重要的,方 便客户端程序查询服务器的状态,从而达到排除故障的目的) ServerName(只读属性,返回客户程序所要连接的服务器名,也就是OPC 服 务器的ProgID) ServerNode(服务器所在计算机名或者计算机的IP,用于连接远程的计算机) 等。 主要方法: GetOPCservers(获得己经注册的OPC 服务器的程序标识符,即ProgID) Connect(用来建立与OPC 数据存取服务器的连接) Disconnect(断开与服务器的连接) CreatBrowser(创建OPC 浏览器的对象)等。 事件: 只有一个ServerShutDown(关闭服务器,这个事件在服务器即将关闭之前发 生,OPC 服务器以此通知OPC 客户程序预告即将关闭,OPC 客户程序应该在接 到此事件通知后,立即清除所有的OPC 组并断开与OPC 服务器的连接)。
java OPC服务通信
可以回答你几个问题,不是全都会。第二个问题,连接时候不用输入用户名密码,因为OPC通讯是需要提前配置好DCOM的,DCOM配置里需要服务端和客户端的机器的用户密码保持一致,而且OPC是没有密码的,所以连接时候不需要输入用户名密码。第三个问题,group是你用OPCclint小工具创建的一个组,这个组用来加载OPCserver中的数据,可以随便起一个名字,item就是OPCserver中的“点”,也就是你add完group之后add的那个“点”,一个OPCserver中有很多点。第五个问题,连接不上的原因有很多,首先可能是DCOM配置可能没有配置好,还有可能是OPCserver端有链接数限制,比如有人连接到OPCserver了,你就不能连了,这个可以让OPCserver端进行设置,具体怎么设置就得找OPC的厂家了,还有很多种原因就是硬件上的了,至于程序有没有问题就不知道了。第六个问题,同步异步的取数据方式不同,同步传输是指通信双方有共同的时钟参考,能够通过时钟参考准确收发数据,通常这个时钟参考是同步时钟线或同一个时钟源。异步传输是指通信双方没有共同的时钟参考,通常每次收发数据时都需要有前导码进行速率同步。至于异步分订阅还没听说过OPC可以这样的,应该是我遇到情况比较少吧。辛苦打字,望采纳!
opc服务器是什么?是硬件还是软件啊!!麻烦知道的内行帮忙解释解释~~
opc既不是硬件也不是软件。OPC是一种通讯规范,OPC基金会组织规定的一套规范,按照这个规范去把程序写出来,包括一个OPC服务器程序和一个OPC客户端程序,只要是按规范写的,不管是谁写的,就能保证OPC服务器能被OPC客户端访问。
opc服务器向下可以读取设备的数据,比如PLC、DCS等等,但这部分OPC规范是不管的,只要厂家用任意接口任意方法把设备数据读到就OK,然后OPC服务器程序把这些读到的数据按规范要求开放在网络上,其他任意OPC客户端程序,可以远程浏览这些数据,并选择读取这些数据中需要的。
扩展资料
OPC的工作原理
OPC以OLE/COM机制作为应用程序的通信标准,而OLE/COM是一种客户端/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。
OPC服务器中的代码确定了服务器所存取的设备和数据、数据项的命名规则和服务器存取数据的细节,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
客户应用程序仅须使用标准接口和服务器通信,而并不需要知道底层的实现细节。通过OPC服务器,OPC客户既可以直接读写物理VO设备的数据,也可操作SCADA,DCS等系统的端口变量(只要该系统提供OPC服务)。
怎么看wincc的opc质量代码
1.首先打开或新建一个WINCC项目,双击"变量管理器"打开变量管理界面。
2.右键“变量管理” --“添加新的驱动程序”--“OPC” 添加一个新的OPC通道,...
3.右键“OPC GROUPS” 选择“系统参数” 打开“系统参数”界面
4.在“系统参数” 界面中你能看到本机或网络中的OPC服务器。因为系统原因部分O...
5.选中后 单击 “浏览服务器” 在弹出窗口中 勾选 “读访问”“写访问”类型选择 "...
opc服务器源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于opc服务器与opc客户端、opc服务器源代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 05-18免费个人网站空间,国外免费网站域名服务器查询
- 05-16百度推广下载,百度推广客户端手机版下载
- 05-14深圳网站seo,深圳网站服务器托管
- 05-07pb超级报表源代码(pb报表工具)[20240507更新]
- 05-07简历源代码可以上传照片的简单介绍[20240507更新]
- 05-07广告切换源代码免费下载(广告切换源代码免费下载安装)[20240507更新]
- 05-06阁楼网源代码(阁楼是什么网站)[20240506更新]
- 05-06源代码管理资源管理器(资源管理器运行代码)[20240506更新]
- 05-06人脸识别源代码pdf的简单介绍[20240506更新]
- 05-06包含超市管理系统java源代码的词条[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接