C++编写OPC客户端程序出现unresolved external symbol IID_IOPCServer

C++编写OPC客户端程序出现unresolved external symbol IID_IOPCServer,第1张

小孩问富翁:小孩不解地又问:我爸爸难道没有用计费软件吗?富翁说,您爸爸图便宜,用的是破解版软件,软件经常连接不上,一耽误少说半天,多说几天,并且还有逃费漏费情况的发生,那能挣住钱呀?小孩摸了摸头,是懂非懂地说,我现在就回家让我爸爸去用摇钱树软件去!叔叔您能告诉我他们的****吗?——完全免费的网吧计费软件——摇钱树网吧管理软

使用OPC

DA进行Client的读写 *** 作时,我们使用Custom接口,出此之外还有Automation接口。以下是Custome接口开发时涉及到的三个关键对象:OpcServer、OpcGroup、OpcItem,下图是他们之间的逻辑关系:

在客户端开发时,要使用OpcServer对象来实现客户端与Opc服务器之间的连接。一个OpcServer对象下有多个OpcGroup,一个OpcGroup下有多个OpcItem,在自定义接口下的Client开发,是以Group为单位的 *** 作,数据读写都是通过OpcGroup进行的。

•搭建程序运行环境

程序运行需要的软硬件环境:

1Net Framework 40

2Simatic Net 2008(Or Other) HF1

3西门子300(Or Other) PLC

我们可以通过本机的配置来实现OPC的远程连接,我没有采用这种方式,一是这种配置比较麻烦,而是这种方式不稳定。所以我采用本机安装一个OPCServer来实现与PLC的交互。

对于OPCServer软件,我选择的是SimaticNet 2008 HF1(安装WinCC的时候会有选择安装SimaticNet的选项),没有特别的原因,就是比较熟悉了而已,而且PLC选用的是西门子的。

我们可以不写OPC Client程序来测试,如何通过OPCServer与PLC之间的交互。首先当我们安装完毕SimaticNet之后,需要对Station Configuration Editor进行配置,如下图:

首先我们要指定Station的名称,上图叫PCStation,点击下方的StationName可以进行更改。下一步在1号栈上选择一个OPCServer,3号栈上选择一个通信网卡。

接下来我们需要在Step 7中建立Station Configuration Editor与PLC之间的连接,我们暂且叫组态。组态的过程中要建立与Station Configuration Editor中对应的Opc Server和IE General(所在栈号相同),Station Configuration Edition起到桥接的作用 用,主要让PLC与Opc Server之间建立一条S7连接。暂时没有拿到组态图,以后补上。

当我们组态完毕时,如何判断组态是否正确呢?在SimaticNet的目录上有个叫Opc Scout(Opc Scout V10)的软件,打开如下图:

上图列出来了本机所有的Server,我们能使用名为OPCSimaticNET的Server。双击这个Server添加一个组,多次双击这个Server可以添加多个组,验证了上图的Server与Group的关系了。

我们双击新建的Group,进入如下图的界面:

上图列出了所有的连接。上文说到的组态中建立的S7连接可以在S7节点中看到,展开这个节点可以看到我们建立的S7连接,如下图:

上图列出了名为S7 connection_1的S7连接,展开Object对象,列出PLC的结构。我们选择一种来新建我们的Item,由于我这里没有PLC模块,所以无法截图给大家看。

至此我们的OPC Client的运行环境搭建完毕。

•编写OPC Client端程序。

我们需要使用OPC Foundation提供的自定义接口来进行开发,在Visual Studio引用名为:OpcRcwComndll和OpcRcwDadll这两个DLL。

我们定义一个名为OpcDaCustomAsync的类,让这个类继承自:IOPCDataCallback,IDisposable

服务器的话要看,如果是client-server结构的DCS,服务器位于上位和控制器之间,他将你的指令和现场数据通过服务器来经过交换,服务器一般是冗余配置,如果是并行结构来说没有所谓服务器的概念,只有个工程师站,程序的下装通过工程师站,但是数据的获取和指令的下达通过 *** 作员站就行,这个好处就是当工程师站坏了的话 *** 作员站可以正常工作

OPC服务器的作用是通过OPC协议将DCS的数据取出,并开放,一般一个OPC服务器下面连接一个或多个客户端,客户端通过安装相应的软件(也支持OPC协议),来取得DCS的协

使 用OPC Scout监 视S7-300/400的STRING类 型变量,但是在OPC Scout中 总是没有字符显示。

如 图1所 示,在PLC的DB1中 定义了两个字符串S1和S2。

图 1

在OB1程 序中为字符串S2赋 值如图2。

图2

如 图3所 示,OPC Scout中 定义了两个Item, 分别监视DB1中 的两个字符串S1和S2, 结果第一个字符串可正常显示字符串内容,第二个字符串无字符显示。

图3

String数 据类型作为复杂数据类型无法在DB块 中直接监视,可通过变量表来监视但需要拆分为多个字节来监视和修改,如图4变 量表中监视两个字符串的部分字节。

图4

对 照图5所 示Sting数 据类型的结构来看,DB1DBB0和DB1DBB12分 别为字符串S1和S2的 最大长度,DB1DBB1和DB1DBB13为 字符串S1和S2的 实际长度,从变量表监视结果可看到,S1的 实际长度为5个 字符,而S2的 实际长度为0, 所以在OPC Scout中 监视S2始 终都没有字符显示。

图5

解 决方法:

在 程序中增加为S2实 际长度字节赋值的指令。如将实际长度3通 过MOVE指 令传递给DB1DBB13, 在OPC Scout中 能看到第二个字符串显示位“fal”。如 果将S1的 实际长度字节值修改为3, 在OPC Scout中 显示的字符串将是“abc” 而不是现在的“abcde”。

OPC是OLE for Process Control的缩写,即应用于过程控制的OLE。

OLE原意是对象连接和嵌入,随着OLE2的发行,其范围已远远超出了这个概念。现在的OLE包含了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于计算机语言、 *** 作系统甚至硬件平台的一种规范。

OPC建立于OLE规范之上,它为工业控制领域提供了一种标准的数据访问机制。工业控制领域用到大量的现场设备,在OPC出现以前,软件开发商需要开发大量的驱动程序来连接这些设备。

扩展资料:

OPC以OLE/COM机制作为应用程序的通信标准,而OLE/COM是一种客户端/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。

OPC服务器中的代码确定了服务器所存取的设备和数据、数据项的命名规则和服务器存取数据的细节,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。

客户应用程序仅须使用标准接口和服务器通信,而并不需要知道底层的实现细节。

OPC全称是Object Linking and Embedding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。

在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。

通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互 *** 作性的即插即用的设备驱动程序。

在这种情况下,OPC标准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE 2技术,OLE标准允许多台微机之间交换文档、图形等对象。

扩展资料

OPC是世界上最受欢迎的基于标准的数据通信方法。它旨在解决自动化行业中的最大的挑战:如何摆脱传统的基于特制驱动器的通信方式,在不同设备、控制器、和/或应用程序之间实现通讯。

OPC之所以能够成功地创造真正独立于供应商的通讯是因为,OPC从双方提取了数据发送设备(例如PLC)和数据接收端(例如HMI)的执行细节,因此可以在它们之间进行数据交换而不需要了解彼此的本地通信协议和内部数据组织形式。

这与特制驱动器的要求满足只针对于通信方两端的编写方法形成了鲜明的对比。OPC可以代表为一个位于数据发送端和数据接收端之间的“提取”界面,这个界面允许在数据发送端和数据接收端之间交换数据而不需要对对方有任何了解。

OPC的“设备细节提取”是通过运用两个称为OPC客户端和OPC服务器的OPC构件得以实现的。其中每一个构件将在以下章节予以描述。需要注意的是,数据发送端和数据接收端能够彼此通过OPC进行通讯并不意味着它们各自的本地协议就不需要了,或者是被OPC取代了。

相反,这些本地协议和/或接口仍然存在,但只是与两个OPC构件的其中某一个通讯。然后,OPC构件之间进行数据交换,从而结束数据传递。数据也可以从应用程序端被传输至设备,而不需要彼此直接联系。

参考资料来源:百度百科-opc

以上就是关于C++编写OPC客户端程序出现unresolved external symbol IID_IOPCServer全部的内容,包括:C++编写OPC客户端程序出现unresolved external symbol IID_IOPCServer、如何通过OPC自定义接口来实现客户端数据的读取、你好,关于OPC客户端如何判断OPC连接的问题,请问你是怎么做的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9518676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存