banner

运用VC#编程通过OPC方式实现PC机与西门子PLC通讯-异步篇 - Augusdi的专栏

作者: 大数据观察来源: 大数据观察时间:2017-01-22 17:13:510

1、 配置OPC服务器对于服务器的配置与同步通讯的配置一样,这里不需再讲解,若有不清楚的,可以参阅之前发布的

2、 OPC编程变量组、项的命名规则与同步通讯的一样,这里不再描叙,下面主要就开发一个异步通讯类 AsynServer来讲解如何编程。

、引用在VC#开发环境中添加对OpcRcw.Da库以及OpcRcw.Comn库的引用,该库属于.NET库,不属于COM库,西门子虽然编写了类库,以提供对.NET平台的支持,但这些类库仍然难于编程,里面包含了大量的在托管和非托管区传输数据,因此我们需要在它的基础上再开发一个类库,以简化以后的编程,首先在类的开头使用命名空间:using OpcRcw.Comn;using OpcRcw.Da;using System.Runtime.InteropServices;using System.Collections;

、编程异步编程的原理就是在OPC服务器那边检测当前活动的变量组,一但检测到某一个变量,譬如变量Q0.0从1变成0,就会执行一个回调函数,以实现针对变量发生变化时需要实现的动作,在这里可以采用委托来实现该功能。

1、 在命名空间的内部、类 AsynServer声明之前添加委托的申明:// 定义用于返回发生变化的项的值和其对应的客户句柄public delegate void DataChange(object[] values,int[] itemsID);

2、 该类继承于西门子提供的库接口IOPCDataCallbackpublic class AsynServer:IOPCDataCallback在类的开头部分声明变量:struct groupStru

其中参数obj用于返回当前发生变化的变量的结果值,而itemsID返回当前发生变化的变量的ID号,其与添加变量时服务器返回的ID号对应。以上就是一个基本的测试函数,其相对同步编程来说,应该还简单一些。

3、 同步编程与异步编程的使用场合

一般来讲,同步编程需要使用定时器来循环检测变量,而异步编程则不需要,当服务器检测到数据发生变化时,可以直接调用传入的函数,从这方面来讲,使用异步编程更简单一些,但同步编程使用外部的定时器控制,编程则会更加灵活,一般只监控变量时可以使用异步编程,而当需要写入数据时可以使用同步编程,但这也不是绝对的,我曾编写了一个标准监控程序,没有使用异步编程。

4、 关于开发监控界面的说明

毫无疑问,我们应该开发一系列控件,用于简化界面的设计,否则工作量会异常大。设计一个标准模块,用于第一次运行监控软件时添加变量,并可以设定当前已经组态的界面中的各控件元素与之关联,这样在以后再运行该软件时,不需要再设定,就可以直接连接变量,并进行相应的变化。否则若在编程时编写代码进行关联,其工作量将会异常大。

banner
看过还想看
可能还想看
热点推荐

永洪BI
更敏捷、更快速、更强大

申请试用
Copyright © 2012-2024开发者:北京永洪商智科技有限公司版本:V10.1
京ICP备12050607号-1京公网安备110110802011451号 隐私政策应用权限