紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 4238|回复: 3

[OPC技术] OPC自动化接口的浅析

[复制链接]
冰糖 发表于 2011-3-18 21:24:36 | 显示全部楼层 |阅读模式
1 引言
OPC全称是OLE for Process Control,直译为过程控制中的对象连接嵌入技术。在当今过程控制领域,是一种非常流行的数据交换技术。其实质上是将微软的Activex(控件)技术应用于过程控制领域。也就是说在过程控制系统中,硬件服务商或软件提供者提供的数据源,在设计数据接口方面就采用了微软的OLE技术,并提供相应的控件、动态链接库,即支持OPC接口技术;当监控系统需要与数据源进行数据交换时,其开发的基于Windows的应用程序仅需将数据源提供的控件引入或者遵循OLE技术,就可以与数据源进行通讯,而无需开发数据源硬件驱动或与服务商软件通讯接口,大大地节省了开发费用,使应用程序和现场过程控制建立了桥梁,相互之间进行数据交换更加方便、灵活。OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automation interface);自定义接口(Custom interface), 如图1所示。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用Visual Basic、DelphiPowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。


图1 OPC的两种通用接口方式

OPC现已成为工业界系统互联的缺省方案,给工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。
2 OPC服务器数据访问过程
OPC数据访问提供从数据源读取和写入特定数据的手段,一个OPC对象具有一个作为子对象的OPC组集合对象(OPCGROUPS)。在这个OPC组集合对象里可以添加多个的OPC组。每个组对象都具有一个作为子对象的OPC标签集合对象(OPCITEMS)在这个OPC标签集合对象里可以添加多个OPC对象。假定现有一个由DCS、I/O驱动器或独立的软件供应商用C++开发的OPC服务器,其服务名称为OPC—Jsample SERVER, 自动化接口组件为:OPCDAAUTO.DLL,以下是用VB访问OPC服务器数据的过程。

2.1 注册OPC组件
利用VB开发OPC应用程序时,因为VB应用程序是运行在与OPC服务器不同的计算机空间,不能直接调用OPC服务器的接口进行数据交换,需要通动态链接库并利用操作系统提供的通信能力进行数据交换,所以必须注册OPC自动化接口组件OPCDAAUTO.DLL(一个动态连接库),这样就能够引用该组件建立OPC各种对象以便于OPC服务器连接。在批命令中运行语句%RegSvr32Path %RegSvr32/s opcdaauto.dll 进行注册。注册完后引用该组件。

2.2 引用OPC组件
如图2所示:在引用对话框中,将OPC Automation 2.0加入。这样在对象浏览器中将看到OPC的各种属性和方法,供编程时使用。


图2 引用对话框

2.3 建立OPC服务器对象
在申明服务器对象后,通过SET语句建立服务器对象:首先用“NEW”关键词创建生成一个用于连接数据服务的OPC服务器,然后建立该服务器的OPC组集合,在该组集合添加一个OPC组,建立OPC项集合, 生成项标识符, 添加OPC标签。这种结构使得应用程序可以像使用OPC对象支持的数据和功能。OPC应用程序可以取得OPC服务器支持属性的执行状态,调用OPC服务器支持的方法和服务器连接。

2.4 数据读取
OPC客户与服务器进行数据交互可以有2种不同方式,即同步方式和异步方式。异步方式比同步方法实现较为复杂,需要在客户程序中实现服务器回调函数。然而当有大量客户和大量数据交互时,异步方式的效率更高,能够避免客户数据请求的阻塞,并可以最大限度地节省CPU和网络资源。具体在OPC对象声明中,ObjTestGRP对象带有“WithEvents”语句,同时增加异步方式访问使用的新定义的变量,即事务标识符(LtransID等)用于读取和写入。以下是数据同步读取主程序:
Sub Connect(strProgID As String, Optional strNode As String)
Set objServer = New OPCServer’
建立一个OPC服务器对象
If objServer.ServerState = OPCDisconnected Then
objServer.Connect strProgID, strNode’
连接OPC服务器
End If
Set objGroups = objServer.OPCGroups’
建立一个OPC组集合
Set objTestGrp = objGroups.Add("TestGrp")’
添加一个OPC组
Set objItems = objTestGrp.OPCItems’
建立OPC项集合
For I = 1 To 8
strItemIDs(I) = "aTag" & I’
生成从TAG1到TAG8的项标识符
lClientHandles(I) = I
Next
objItems.AddItems 8, strItemIDs, lClientHandles, lServerHandles, lErrors’添加OPC项
objTestGrp.SyncRead nSource, 8, lServerHandles, vtItemValues, lErrors’同期读取
for i= 1 to 8
msgbox vtItemValues(i)’
读取的数可以根据自己的需要,灵活使用。
next i
End Sub

2.5 网络访问的设置
OPC服务器和客户应用程序分别在不同的计算机上运行并进行远程连接时,一般运转在自动控制系统的控制计算机并没有隶属于域,而是运转在工作组中。这时候,OPC服务器计算机没有办法识别客户应用程序计算机的身份,无法完成数据的读取过程,需添加专用用户。进行分布式COM安全机制的设置。设置的项目包括:身份验证级别、访问权限、启动权限、身份标识。首先以管理理员者的权限登录计算机,运行dcomcnfg.exe 启动COM配置属性的实用程序,打开组件服务对话框,如图3所示。


图3 组件服务对话框

选中要设置的OPC服务器(OPC-J Sample Server),打开属性对话框,在[常规>选项卡中设置身份认证级别,设为“无”;[安全>选项卡中设置启动、访问级别,一般设为“Everyone”,保证客户端能启支动或访问服务端程序。在[标识>选项卡中设置身份标识。
3 OPC应用实例
Deltav系统是美国艾默生(Emerson)公司推出的第一个采用现场总线的集散系统,同时在Deltav系统中开发出许多OPC标准产品,如WEBSERVER,OPCPAGER、OPC MIRROR等,这些产品为用户的数据信息管理提供了很大帮助,使系统之间的集成变得更加容易。

中铝山西分公司精制车间采用了Deltav系统进行控制,下属三个工段通过光缆连接,组成工作组局域网。在一个节点上安装了应用PLUS站,并安装OPC服务器,另外两个节点安装操作员站。在调度室安装OPC客户应用程序进行远程监视。如图4所示:


图4 控制框图


用户可通过WEB SERVER在局域网上远程监视Deltav系统运行状况,进行故障诊断。用B/S模式,通过浏览器进行远程浏览数据。可监视动态控制流程图;监视实时、历史趋势;察看事件记录,报警信息、操作记录等。
4 结束语
OPC技术建立了一组符合工业控制要求的接口规范,只要硬件开发商提供带有OPC接口服务器,支持OPC接口的客户程序均可采用统一方式存取这些设备。为不同控制系统间,及用户与系统间提供了灵活开放的数据访问通道,在以太网控制系统中,使用这种技术将使企业现场控制层与生产管理调度层有机连接起来,大大加快工厂信息化步伐。
参考文献
[1> OPC技术及其性能测试[J>. 自动化仪表,22(10).
作者简介
梁会恩(1969-) 工程师 从事自动化仪表专业。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ss283031771 发表于 2011-4-21 21:38:02 | 显示全部楼层
好东西是用来顶的
习惯 发表于 2012-8-14 08:06:43 | 显示全部楼层
想学,一直没有机会弄到工作应用上来
孙飞 发表于 2012-12-5 10:27:08 | 显示全部楼层
正在学习中
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-4-24 04:28 , Processed in 0.343746 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表