opc客户端与服务器建立连接
服务器的话要看,如果是client-server结构的DCS,服务器位于上位和控制器之间,他将你的指令和现场数据通过服务器来经过交换,服务器一般是冗余配置,如果是并行结构来说没有所谓服务器的概念,只有个工程师站,程序的下装通过工程师站,但是数据的获取和指令的下达通过操作员站就行,这个好处就是当工程师站坏了的话操作员站可以正常工作
OPC服务器的作用是通过OPC协议将DCS的数据取出,并开放,一般一个OPC服务器下面连接一个或多个客户端,客户端通过安装相应的软件(也支持OPC协议),来取得DCS的协议
个人理解:
举个简单的例子吧。比如我公司用的ABB DCS,有专门的上位机软件Digivis,可以实现现场数据读和写;同时,这个DCS也提供了OPC访问接口,我们自己也做了一个OPC Client也实现了对现场数据的读和写。
1、如果没有ABB DCS的底层驱动(原生组态软件),是无法实现PC与现场硬件的通讯的,那就不会有OPCServer了。
2、先有了ABB DCS的原生软件,将现场数据采集过来,然后在将这些数据通过OPC Server发布出去。
又比如Siemens S7 200的PLC,你能直接连接其OPC么?不能。因为它根本没这个接口。你得需要先使用Wincc与PLC建立连接,然后通过Wincc的OPCServer将数据发布出来,你才能使用OPC Client与该PLC通讯。OPC的出现就是为了解决我们用户访问各类控制器而提供的一个标准接口,它避免了用户去编写各类复杂甚至加密了的底层驱动。 其实组态王什么的工控软件,它就是编写了各类底层通讯驱动,所以,只有OPC Client是不行的。
不是一个概念。
OPC是一个通用的数据接口。分为OPC服务器和OPC客户端。
MES一般是指生产管理制造系统。MES的服务器一般是指数据汇总,数据处理的计算机及计算机软件。
我用过kepware写过,没用过组态王,不太明白你说的主动与被动。客户端添加Group的时候,你只要把IsSubscribed设置为true,服务器端就会在数据发生变化时,触发客户端的DataChange事件,这应该就是你说的主动;而客户端的异步读、写事件AsyncRead、AsyncWrite,则是主动向服务器请求,这应该就是你说的被动。
使用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
OPC(OLE for Process Control), 用于过程控制的OLE,是一个工业标准。
OPC全称是Object Linking and Embedding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。
由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。
在这种情况下,OPC标准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE 2技术,OLE标准允许多台微机之间交换文档、图形等对象。
扩展资料:
OPC有以下3个特点:
1、计算机硬件厂商只需要编写一套驱动程序就可以满足不同用户的需要。硬件供应商只需提供一套符合OPC Server规范的程序组,无需考虑工程人员需求。
2、应用程序开发者只需编写一个接口程序便可以连接不同的设备。软件开发商无需重写大量的设备驱动程序。
3、工程人员在设备选型上有了更多的选择。对于最终用户而言,可以根据实际情况的不同,选择符合实际的设备。
-opc(工业标准OLE for Process Control)
-OPC技术
0条评论