OPC同步和异步读写的实现

本文主要讲述了在 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 为例说明。
采用不同的通信方式,通过 OPC.SimaticNET ,现场数据可以方便地提供给用户:
OPC 的读写方式
在实际使用中,主要包括对现场数据的读写操作。
OPC 读数有三种方式:同步、异步、订阅。
        同步通讯时,OPC 客户程序向 OPC 服务器进行请求时, OPC 客户程序必须等到 OPC
服务器对应的响应全部完成以后才能返回,在此期间 OPC 客户程序一直处于等待状态,若
进行读操作,那么必须等待 OPC 服务器响应后才返回。因此在同步通讯时,如果有大量数
据进行操作或者有很多 OPC 客户程序对 OPC 服务器进行读操作,必然造成 OPC 客户程序
的阻塞现象。因此同步通讯适用于 OPC 客户程序较少,数据量较小时的场合。
        异步通讯时,OPC 客户程序对服务器进行请求时, OPC 客户程序请求后立刻返回,不
用等待 OPC 服务器的响应,可以进行其它操作。 OPC 服务器完成响应后再通知 OPC 客户
程序,如进行读操作, OPC 客户程序通知 OPC 服务器后离开返回,不等待 OPC 服务器的
读完成,而 OPC 服务器完成读后,会自动的通知 OPC 客户程序,把读结果传送给 OPC
户程序。因此相对于同步通讯,异步通讯的效率更高
        订阅方式时,OPC 客户程序对服务器进行请求时, OPC 客户程序操作后立刻返回,不
用等待 OPC 服务器的操作,可以进行其它操作, OPC 服务器的 Group 组在组内有数据发
生改变时,自动根据更新周期刷新相应的客户端数据,如下图,客户端只向 OPC 服务发送
一次请求,之后不再对服务器请求。
        OPC 写数有两种方式:同步、异步。区别与上面讲的机制一样,在生产应用中,如果写
数据参与控制,一般采用同步方式。
OPC 访问接口方式
        OPC 主要包含两种接口: CUSTOM 标准接口和 OLE 自动化标准接口,自定义接口是
服务商必须提供的,而自动化接口则是可选的。
自定义接口是一组 COM 接口,主要用于采用 C++ 语言的应用程序开发;
自动化接口是一组 OLE 接口,主要用于采用 VB DELPHI Excel 等基于脚本编程语
言的应用程序开发。
        许多 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 端组态配置
如上图建立连接 S7_connection_1 ,然后在 OPC Scout 测试连接的正确性。也可通过博图软件连接进行测试。
采用自定义接口过程
同步读写
建立同步读写项目: Sync_RW
测试中,对 db10.dbw0 db10.dbw2 读写操作,在 Form 窗口做如下设计:
Control name Text
Button: Btn_Conn Conn
Button: Btn_Read Read
Button: Btn_Write Write
Button: Btn_DisConn disConn
  • 26
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
同步读写异步读写是在 OPC 通信中常用的两种方式,它们的主要区别在于调用方式和返回结果。 同步读写是指应用程序发起 OPC 读写请求后,等待 OPC 服务器返回响应后再继续执行后续代码。在同步读写中,应用程序会一直阻塞等待 OPC 服务器的响应,直到响应返回或超时才会继续执行后续代码。同步读写通常用于对实时性要求不高,但读写操作顺序有要求的场景。 异步读写是指应用程序发起 OPC 读写请求后,不等待 OPC 服务器返回响应,而是继续执行后续代码。在异步读写中,应用程序不会阻塞等待 OPC 服务器的响应,而是通过回调函数的方式获取读写结果。异步读写通常用于对实时性要求较高,或读写操作顺序无要求的场景。 在 OPCAutomation 提供的接口中,同步读写使用 IOPCSyncIO 接口,异步读写使用 IOPCAsyncIO2 接口。在同步读写中,读写数据的值和错误信息会在调用 SyncReadSyncWrite 方法时直接返回。而在异步读写中,读写数据的值和错误信息会在回调函数中返回。因此,在异步读写中需要实现回调函数来接收读写结果。 需要注意的是,异步读写需要通过设置 IOPCDataCallback 接口的回调函数来实现。在设置回调函数时,需要使用 IConnectionPointContainer 接口和 IConnectionPoint 接口来注册回调函数,并在程序退出时使用 IConnectionPointContainer 接口和 IConnectionPoint 接口来取消注册。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_nanda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值