OPC通信原理在数采中的应用

OPC是Object Linking and Embedding(OLE)for Process Control的缩写,它是微软公司的对象链接和嵌入技术在过程控制方面的应用。OPC以OLE/COM/DCOM技术为基础,采用客户/服务器模式,为工业自动化软件面向对象的开发提供了统一的标准,这个标准定义了应用Microsoft操作系统在基于PC的客户机之间交换自动化实时数据的方法。

在OPC数据存取规范中,一个OPC的数据存取服务器中包括几类对象(OPC Server)、组(OPC Group)和项(OPC Item)。OPC服务器对象维护有关服务器的信息并作为OPC组对象的容器,而OPC组对象维护有关其自身的信息,提供包容OPC项的机制,并管理OPC项。

OPC服务器对象主要实现IUnknown和IOPCServer接口,OPC客户通过OPC服务器的接口与OPC对象进行通信。IOPCServer接口为OPC客户提供了方便有效的OPC组的方法。OPC组提供了客户程序组织数据的手段,每个组中都可以定义一个或多个OPC项。组有两种类型:公共组(Public)和局部组(Local),公共组可以被多个客户共享,而局部组只能被一个客户使用。OPC组中有以下几个主要属性:

Name—组的名字;

Active—组的激活状态标志;

Update Rate OPC—服务器向客户程序提交数据变化的刷新率;

Percent Deadband—数据死区,即能引起数据变化的最小数据百分比。

OPC项代表了与服务器中的数据的连接,它并不是数据源,而仅仅是与数据源的连接。

每个项都与以下主要属性:

Active项的激活状态;

Value项的数据,类型为VARIANT;

Quality项的品质,代表数值的可信度,类型为SHORT;

Time Stamp时间戳,代表数据的存取时间。

OPC规范包含了两套接口:客户化接口(Custom Interface)和自动化接口(Automation Interface)。客户化接口是一个OPC服务器所必须实现的接口,它描述了OPC组件对象的接口和其中的方法,适合C++和PASCAL语言设计,并可实现最佳运行性能的客户应用程序,客户化接口没有项的对象,它对项的操作都是通过包容此项的组对象进行的。自动化接口是可选接口,它提供的是一个自动配置和存取过程控制数据的接口,它方便了Visual Basic、Excel及其它可以使用OLE自动化的服务器应用程序接口的高级商业软件使用。

服务器内安装有数据采集卡(通用多串口卡,网卡),软件安装有OPC Server完成对现场各个设备检测、监控、调节、诊断等功能。

考虑到系统对数据的实时性要求较高,在客户端安装的数据采集软件,开发工具用VC++6.0,与OPC服务器的通讯采用OPC定制接口。该软件包括两个模块:OPC数据采集和数据保存。模块之间采用Win32的多线程技术进行通讯,OPC数据采集作为工作线程在后台运行,数据保存即写系统主线程。工作线程的线程函数循环读取OPC服务器中的数据,数据的变化不断出发主线程的写库事件。此外为了保证数据的安全性,使用了信号灯同步对象,以协调两个线程对共享资源的访问。

装置的DCS系统是日本横河公司的CS3000,并有上位机软件,CS3000支持OPC通讯方式,可通过OPC方式和CS3000软件包的OPC Server进行通讯,取得实时数据。如下图,用一台工控机来采集实时数据,数采机安装两块网卡,其中一块网卡和PLC工程师站(上位机)连接,另一块通过交换机连接在厂内光纤网上。这样,数采机就同时和两个网络通讯,先通过OPC方式从上位机取得实时数据,然后把实时数据发送到实时数据库。

综上所述,目前此装置所采用的一些重要技术性指标有:

1.客户与服务器之间,采用了客户化接口和主动访问通信方式;

2.客户与服务器之间通信,也是进程间通道通信,不会占用CPU和内存过多资源;

3.客户与服务器之间数据通信,是以只读方式对服务器缓冲区数据的读取;

4.采集位号为207个;

5.刷新频率为20秒。

最新文章

  1. 在ssh中利用Solr服务建立的界面化站内搜索---solr2
  2. 【代码笔记】iOS-清除图片缓存UIActionSheet
  3. Android-将RGB彩色图转换为灰度图
  4. nrf51822裸机教程-PWM
  5. CentOS6.6 安装 Tengine 笔记
  6. Javascript -- toFixed()函数
  7. terminal bash 颜色的详细解释
  8. Windbg找出死锁
  9. JS获取图片实际宽高
  10. SQL基本之增删查改操作
  11. Python网络爬虫与信息提取(一)
  12. Python笔记·第十一章—— 函数 (二) 装饰器
  13. Java Script 学习笔记 (一) 基础
  14. java 实现加密算法(在网上看的,保存)
  15. 20175126《Java程序设计》第四周学习总结
  16. 潭州课堂25班:Ph201805201 django 项目 第十五课 用户注册功能后台实现 (课堂笔记)
  17. JSON.NET VS BinaryFormatter 性能
  18. 微信小程序细节
  19. 关于 Image Caption 中测试时用到的 beam search算法
  20. Python-统计svn代码总行数

热门文章

  1. ECMAScript基本对象——Global全局对象
  2. Apache Flink 任意 Jar 包上传致 RCE 漏洞复现
  3. (转)java 多线程 对象锁&类锁
  4. 使用nginx代理gogs遇到推送代码错误的问题(RPC failed; HTTP 413 curl 22 The requested URL returned error: 413)
  5. Django---Django安装数据库
  6. 最简单的githut操作命令
  7. svn error: "Previous operation has not finished; run 'cleanup' if it was interrupted"
  8. vsftpd最详细的配置文件
  9. JS 动态改变浏览器title标题
  10. Luogu1287 | 盒子与球 (排列组合)