C#上位机与S7-1200PLC通过OPC方式通讯---读写数据
一、OPC介绍
OPC(OLE for Process Control)工业控制和生产自动化领域中使用的硬件和软件的接口标准,以便有效地在应用和过程控制设备之间读写数据。我们在使用过程中就把它理解一套协议或者规范,主要用于工控领域。OPC中有很多规范,这里使用OPC DA规范来进行数据的读写操作。
OPC标准采用C/S模式,OPC服务器负责向OPC客户端不断的提供数据。OPC服务器包括3类对象(Object):服务器对象(Server)、组对象(Group)和项对象(Item)。
在客户端开发时,要使用OpcServer对象来实现客户端与Opc服务器之间的连接。一个OpcServer对象下有多个OpcGroup,一个OpcGroup下有多个OpcItem,在自定义接口下的Client开发,是以Group为单位的操作,数据读写都是通过OpcGroup进行的。

二、OPC服务器连接PLC
对于OpcSever,我选用的是KEPServer来与PLC进行通讯,当然也可以使用西门子的Simatic Net。
那么KEPServer的基本原理是什么?
在C#中我们需要调用动态库Interop.OPCAutomation.dll(使用Simatic Net的话,动态链接库会不同),这个动态库可以理解为是KEPServer的一个客户端,这个客户端给我我们提供读写PLC的接口,我们通过接口调用,与KepServer服务端交互,实现PLC操作。
KEPServerEX提供的西门子SiemensTCP/IP驱动能够为用户提供一个OPC服务器接口,将西门子TCP/IP以太网设备连接到OPC客户端应用程序中。
下面以西门子S7-1200系列PLC为例,说明C#如何通过KEPServer如何与PLC通讯。(以下配置是我在测试时实际配置,大家在测试时可根据自身情况进行)
1.硬件软件配置
博途V15(或其他)
Visual Studio2017 .Net Framework 4.6
KEPServerEX5