OPC接口使用技巧

   OPC接口是由OPC基金会制定的,基于DCOM技术的,用于控制系统软件之间进行数据通讯的接口规范。由于其开放性和高效性,现在已被广泛应用于自动化控制领域及生产信息管理中。紫金桥软件遵照OPC接口规范实现了相应接口,大大增加紫金桥软件的开放性。在使用OPC接口驱动时,由于配置参数或者运行环境设置不当,可能达不预期的效果,有的甚至影响控制系统的稳定性。下面根据实际工作经验介绍一些OPC接口使用技巧:

   认真阅读OPC Server使用手册
   在使用OPC接口进行数据采集时一定要先阅读OPC Server的使用手册或在线帮助,因为在通讯时使用的OPC服务器名称(ProgID)及进行DCOM配置时使用的组件名称通常是由OPC Server软件提供商自己定义的,我通常会从使用手册或在线帮助上获得相关信息。

   有的OPC Server是不支持在线浏览的,通讯时使用数据项(连接项)是按着一定规范定义的,这时我们也需要阅读使用手册或在线帮助获得相关信息。例如,在从老的OPTO22系统采集数据时,它是不支持在线浏览的。通过在线帮助我们知道它的数据项定义如下所示:

   ControllerName[RefreshGroupName]:ItemType.ItemName[start-end].Field.BITn

并且在数据项字义时要填写访问路径(”OPTO_MDS_0”)。控制器名、刷写组名、项类类型等信息我们要通过控制系统竣工资料或OPTO22的组态工程中查找。

   正确配置采集周期
   由于不同的OPC Server能够支持的最快采集周期是不同的,因此在实施数据采集时我们要根据OPC Server所能提供的最嘉采集速度进行配置。大部分的OPC Server支持的采集周期不是连续的,如果我们设置的采集周期是服务器不支持的采集周期,OPC Server会使用与设定周期相近的固有周期进行通讯调度。

   通讯量控制
   在通常情况下建议使用异步方式进行通讯,因为在这种方式下客户端程序获得数据由OPC Server根据数据变化情况主动发送的,具有较高的通讯效率。在实际应用中我们可能会遇到这样的问题:与实时数据库通讯的控制系统运行负荷较满,如果不对通讯量进行控制就可能影响控制系统的正常运行(在通过APP NODE的OPC Server读取TDC3000系统的数据时就愚到过类似问题)。在这种情况下建议使用同步方式或单组同步方式执行数据采集,在这两种通讯方式下我们可以通过调整每组采集的数据项数及采集周期来控制通讯量。

   注意服务器特殊限制
   在使用OPC接口进行数据通讯时还要注意一些OPC Server的特殊限制,有的对可以连接客户端数有限制,有的对最多可访问的数据项数有限制,有的则是对每组包含的数据项数有限制。对于这些有特殊限制的服务器,如果不能正确配置通讯参数或者购买相受权,将产生通讯错误或只能采集部分数据。对于有访问客户数目限制的OPC Server,如果达到最大客户数,我们要重新购买受权增加允许访问客户数。对于有访问数据项数的OPC Server最好的方法也是重新购买受权增加允许访问数据项数,但也可以接口中提供的“单组同步”方式来增加可采集的数据点数。“单组同步”通讯方式是以牺牲通讯速度为代价的,并且在这种方式下不能进行数据回写(从客户端更新服务器的数据)。对于每组有数据项数限制的OPC Server则比较好处理,只要在接口设备定义时,将限制个数填写到“每组项数”即可。

   

   通过DCOM配置实现分布式通讯
   在实际应用中有时出于安全或运行环境的考虑不能将数据采集程序与OPC Server安装在同一台计算机上,这时我们就需要利用OPC的DCOM属性实现数据采集程序与OPC Server之间基于网络的分布式通讯。DCOM技术是自NT4.0系统以后,由操作支持的一种组件间跨计算机间的通讯技术。在实现组件时只要遵照COM规范定义接口,当服务端和客户端程序分布在不同的计算机上时,只要对服务端及客户端的DCOM属性进行相应配置就可以通过网络实现远程通讯。DCOM配置在不同的操作系统上配置方法不同,除了在Windows XP SP2系统外,其它系统即可以用指定用户进行通讯,也可以用匿名方式进行通讯。关于DCOM配置过程这里就不详细说明了,可以参考《紫金桥OPC服务器及接口》文档。

紫金桥OPC接口使用技巧的更多相关文章

  1. OPC接口相关资料地址

    OPC官方网址:https://opcfoundation.org/ OPC中国官网: http://www.chinaopc.org/ ------------------------------- ...

  2. C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题

    http://blog.csdn.net/aladdinty/article/details/3486532 using System; using System.Collections.Generi ...

  3. BA-siemens-insight在win7下如何配置opc接口

    一.运行环境:win7(OPC接口在win_xp下配置需安装插件,不好意思没搞定,现在只有win7系统32位下的教程了) 由于OPC(OLE for Process Control)建立在Micros ...

  4. C#接口实现技巧之借助第三方

    一个类继承了一个接口,对接口实现通常的做法---直接在这个类中对接口进行实现. 利用继承的概念,可以很巧妙地借助第三方类对接口进行实现,这种方式在实际的项目开发过程中其实用途很是比较大的,至少我们的游 ...

  5. OPC协议解析-OPC客户端与服务器通讯解析

    1      OPC服务器 OPC服务器, 是指按照OPC基金组织规定的OPC规范群开发的软件驱动.OPC服务器作为中间媒介负责从数据源读取数据再跟另外一端的客户端通信.在 OPC客户端/服务器 的结 ...

  6. OPC协议解析-关于OPC协议的几个问题

    1    什么是OPC协议? 为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范.有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据. OP ...

  7. 高并发秒杀系统--mybatis整合技巧

    mybatis实现DAO接口编码技巧 1.XML文件通过namespace命名空间关联接口类 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD ...

  8. 开发 C# OPC 客户端

    编写 opc 客户端的思路 1. 使用OPC Client浏览服务器, 查看测试代码修改后的结果. 2. 根据OPC Client搜集到的服务器信息编写代码和服务器交互 3. OPC Client 操 ...

  9. OPC服务器开发浅谈 — 服务器模型(转)

    这里主要讨论的是OPC Data Access 2.0服务器的开发,在掌握了这个最常用的OPC服务器开发之后,对其它类型的OPC服务器,如A&E.HDA等就可以触类旁通了. 一个OPC服务器的 ...

随机推荐

  1. 重温ASP.NET WebAPI(一)初阶

    重温ASP.NET WebAPI(一)初阶   前言 本文为个人对WebApi的回顾无参考价值.主要简单介绍WEB api和webapi项目的基本结构,并创建简单地webaapi项目实现CRUD操作. ...

  2. 【Html 学习笔记】第五节——表格

    表格也是日常用到的. 普通表格:<table> 表格边框:border 表头:th 表格标题:caption 横/纵向合并的单元格:colspan .rawspan 表格内标签: 单元格间 ...

  3. 【HTML5】HTML5 WebSocket简介以及简单示例

    互联网发展到现在,早已超越了原始的初衷,人类从来没有像现在这样依赖过他:也正是这种依赖,促进了互联网技术的飞速发展.而终端设备的创新与发展,更加速了互联网的进化: HTTP/1.1规范发布于1999年 ...

  4. javaScript高程笔记--最佳实践

    1.可维护性 <1>什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 <2>代码约定 (1)可读性---适当的进行注释[函数和方 ...

  5. RxJava 1.x 笔记:创建型操作符

    本篇文章是阅读 官方文档 的笔记. 作者:shixinzhang(百度搜索 "shixinzhang CSDN" 即可找到我) RxJava 也用了有段时间,那么多操作符总不想去记 ...

  6. UE4中类自动生成代码解析

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/73189272 作者:car ...

  7. [Python] 计算dataframe某一文本维度的平均长度

    print np.mean(df.title.apply(lambda x: len(x))) # 24.072694718 print df.title.apply(lambda x: len(x) ...

  8. iOS开发:UITableView的优化技巧-异步绘制Cell

    最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...

  9. PHP中 public、protected 和 privare的区别

    权限:public>protected>private public:谁都可以调用 protected:只有自己和派生类可以调用 privare:只有自己可以调用

  10. vue之全局守卫

    Vue的路由守卫是什么东西呢? 第一次接触很懵逼,知道自己遇到了这样一个需求, 在页面之间进行路由跳转时,需要进行一个判断,如果下一个页面是需要登录后才能进入的页面,那么就需要在点击进入该页面的时候进 ...