本文主要讲述了在
C#
语言环境下,编程实现通过
SimaticNet
提供的
OPC Server
,
访问
PLC
中数据的步骤。此方法同样适用于
WinCC
作为
OPC Server
时的数据访问。
OPC
介绍
OPC 是
Object Linking and Embedding
(
OLE
)
for Process Control
的缩写,它是微软
公司的对象链接和嵌入技术在过程控制方面的应用。
OPC
以
OLE/COM/DCOM
技术为基
础,采用客户
/
服务器模式,为工业自动化软件面向对象的开发提供了统一的标准,这个标
准定义了应用
Microsoft
操作系统在基于
PC
的客户机之间交换自动化实时数据的方法,采
用这项标准后,硬件开发商将取代软件开发商为自己的硬件产品开发统一的
OPC
接口程
序,而软件开发者可免除开发驱动程序的工作,充分发挥自己的特长,把更多的精力投入
到其核心产品的开发上。
SimaticNet
是西门子全集成自动化系统中的一个重要组成部分,它为完善的工业自动化
控制系统的通讯提供部件和网络,同时提供多个
OPCServer
,为数据的外部访问提供接
口,本文主要以
OPC.SimaticNET
为例说明。
![](https://i-blog.csdnimg.cn/blog_migrate/a83c65281e6936df95dc908dd1b72086.png)
采用不同的通信方式,通过
OPC.SimaticNET
,现场数据可以方便地提供给用户:
![](https://i-blog.csdnimg.cn/blog_migrate/99e0e917b0c6ccd3421ca12948645030.png)
OPC
的读写方式
在实际使用中,主要包括对现场数据的读写操作。
OPC
读数有三种方式:同步、异步、订阅。
同步通讯时,OPC
客户程序向
OPC
服务器进行请求时,
OPC
客户程序必须等到
OPC
服务器对应的响应全部完成以后才能返回,在此期间
OPC
客户程序一直处于等待状态,若
进行读操作,那么必须等待
OPC
服务器响应后才返回。因此在同步通讯时,如果有大量数
据进行操作或者有很多
OPC
客户程序对
OPC
服务器进行读操作,必然造成
OPC
客户程序
的阻塞现象。因此同步通讯适用于
OPC
客户程序较少,数据量较小时的场合。
![](https://i-blog.csdnimg.cn/blog_migrate/b5167c09a558ea1b2893bbd1dbe309ac.png)
异步通讯时,OPC
客户程序对服务器进行请求时,
OPC
客户程序请求后立刻返回,不
用等待
OPC
服务器的响应,可以进行其它操作。
OPC
服务器完成响应后再通知
OPC
客户
程序,如进行读操作,
OPC
客户程序通知
OPC
服务器后离开返回,不等待
OPC
服务器的
读完成,而
OPC
服务器完成读后,会自动的通知
OPC
客户程序,把读结果传送给
OPC
客
户程序。因此相对于同步通讯,异步通讯的效率更高
![](https://i-blog.csdnimg.cn/blog_migrate/80bc8edf8636e2c8135d5edbce95d52f.png)
订阅方式时,OPC
客户程序对服务器进行请求时,
OPC
客户程序操作后立刻返回,不
用等待
OPC
服务器的操作,可以进行其它操作,
OPC
服务器的
Group
组在组内有数据发
生改变时,自动根据更新周期刷新相应的客户端数据,如下图,客户端只向
OPC
服务发送
一次请求,之后不再对服务器请求。
![](https://i-blog.csdnimg.cn/blog_migrate/f81745723d11595eb175325939cee785.png)
OPC 写数有两种方式:同步、异步。区别与上面讲的机制一样,在生产应用中,如果写
数据参与控制,一般采用同步方式。
OPC
访问接口方式
OPC 主要包含两种接口:
CUSTOM
标准接口和
OLE
自动化标准接口,自定义接口是
服务商必须提供的,而自动化接口则是可选的。
自定义接口是一组
COM
接口,主要用于采用
C++
语言的应用程序开发;
自动化接口是一组
OLE
接口,主要用于采用
VB
,
DELPHI
,
Excel
等基于脚本编程语
言的应用程序开发。
![](https://i-blog.csdnimg.cn/blog_migrate/afe13a49e2bf6406b408c41379853ff3.png)
许多 OPC
服务器,包括
OPC.SimaticNet
,是在
COM
平台开发的,从而对于基
于
.NET
框架下的
C#
语言,作为客户端程序语言访问
OPCServer
,需要解决两个平台间无缝
迁移的问题。
OPC
基金会对会员提供了
OpcRcw
动态链接库,
OPC NET COM
包装器和
OPC NET API
,将
OPC
复杂的规范封状成简单易用的
C#
类 ,可以比较容易地实现数据访
问。
本文中通过实验,逐步讲解了通过 C#
编写客户端程序,访问
OPC.SimaticNet
,对
PLC
数据进行读写的实现过程。自定义接口及自动化接口都进行了测试,但基于
C#
的语言
特性,建议采用自定义接口访问,同时有很多
OPCServer
服务商,对外是不提供自动化接
口的,西门子的
SimaticNet
及
WinCC
的
OPCServer
都提供自动化接口。
硬件要求
采用
400
系列
PLC
,通过以太网连接到安装有
simaticNet
的计算机上。
computer
:
windows 2003 server--------192.168.0.102
CPU
:
CPU414-3PN ------416-3FR05-0AB0--------192.168.0.1
软件要求
computer
:
ü
Simatic.net 2007
ü
Visual studio 2005
ü
Step7 V5.4 SP4
OPC Server
端组态配置
![](https://i-blog.csdnimg.cn/blog_migrate/81c014de97d155f0124e8513a67d7bbc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ac60825a43fca222057944e55516f6d9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c54942a91af6702d5fe14aeeff0eccbb.png)
如上图建立连接
S7_connection_1
,然后在
OPC Scout
测试连接的正确性。也可通过博图软件连接进行测试。
![](https://i-blog.csdnimg.cn/blog_migrate/7992b4a6039c450fddf52fbe4b7fc70c.png)
采用自定义接口过程
同步读写
建立同步读写项目:
Sync_RW
![](https://i-blog.csdnimg.cn/blog_migrate/6716696fdc8a88772c4f85b72fe64604.png)
测试中,对
db10.dbw0
及
db10.dbw2
读写操作,在
Form
窗口做如下设计:
Control name Text
Button: Btn_Conn Conn
Button: Btn_Read Read
Button: Btn_Write Write
Button: Btn_DisConn disConn