banner

基于OPC 技术的上位机与S7-200 系列PLC通讯的实现 - Augusdi的专栏

作者: 大数据观察来源: 大数据观察时间:2017-03-06 11:26:530

摘要:介绍了OPC 技术及其数据访问方式,在此基础上提出了基于OPC 技术开发监控软件的方案,并简单介绍了系统的组成。利用OPC 技术在VB 中实现了上位机与S7-200PLC 的实时通讯,并提供了详细的开发步骤及关键代码。该方法具有一定的代表性,已成功应用于某稀油站监控系统,目前系统运行可靠,效果良好。关键词:OPC;数据访问;VB;监控系统0 引言随着自动控制技术和计算机技术的进一步融合,计算机在自动控制系统中发挥着不可替代的作用。工业控制中的各种仪器、仪表、PLC 和单片机系统等都提供了与计算机的通讯协议,从而为计算机控制系统的设计提供了极大地方便。传统的计算机应用软件通过其内部的驱动程序来建立与现场设备的通讯从而存取设备数据信息,这就要求对每一种设备开发相应的驱动程序集成到应用软件中,造成应用软件规模的庞大,且不利于维护[1]。OPC 技术就是在这种背景下产生的。1 OPC 技术概述OPC 规范提出了一套统一的标准,它采用典型CLIENT/SERVER 模式,将软件开发分为客户端和服务器两部分。针对硬件设备的驱动程序由硬件厂商或专门的软件公司完成,并提供具有统一接口标准的SERVER 程序,软件厂商只需按照OPC 规范编写CLIENT 程序访问服务器程序,即可实现与硬件设备的通信[2]。OPC 技术为自动化层的现场设备与上位机应用程序之间的数据交换提供了一个理想的方法。客户与服务器的关系.在这种应用模式下,上位机应用程序只需要开发一个符合OPC 规范的客户端接口就可以与各种各样的硬件设备进行数据交换,不需要关心它们遵守的是何种通讯协议,以何种方式进行连接。OPC 客户端与OPC 服务器交互包括两个方面:客户端程序从服务器读取数据以及客户端向服务器写入数据。OPC 规范中数据访问方法有同步访问、异步访问两种方式。同步数据访问是OPC 服务器按照OPC 客户的要求得到数据访问结果作为方法的引数返回给OPC 客户,OPC 客户程序在结果返回之前一直处于等待状态。异步数据访问是OPC 服务器接到OPC 客户端的要求后,几乎立即将方法返回。当OPC服务器完成数据访问时,触发OPC 客户程序的异步访问完成事件,将数据访问结果传送给OPC 客户端。另外还有一种订阅式数据采集,这种方式实质是异步访问的一种方式。服务器按照一定的周期更新服务器数据缓冲区的数值,如果发现数值发生变化,就以数据变化事件通知OPC客户端,自动将数据回传到客户端。采用这种方式可以减轻OPC 服务器和客户端的负担,在实际中一般常用此方式。2 监控系统分析本文以某煤矿风机稀油站监控为实例基于OPC 技术开发上位机应用软件。控制系统由上位计算机、PLC、各种传感器构成,其中西门子S7-226PLC 作为主控制器,完成各种信号的控制、传递,实现手动和自动两种控制方式;模拟量输入模块EM235 实时采集稀油站油箱油压、油温、液位等模拟量信号。根据稀油站的监控要求,利用VB 编写OPC 客户端应用程序,建立友好的人机交互界面,在界面上实时显示系统各种参数,同时还可以对PLC进行操作以实现远程控制功能。系统中所用的OPC 服务器是S7-200 PC Access 软件,它是西门子公司推出的专为连接S7-200 系列PLC 而开发的OPC 服务器,它从现场数据源PLC 获取数据,然后向标准的OPC客户端提供数据信息。3 OPC 客户端接口程序开发3.1 开发环境无论开发者还是最终使用者都必须安装OPC 代理/存根(Proxy/Stub)DLL 文件[4],并进行环境设置。这些文件(opc_aeps.dll,opccomn_ps.dll,opchda_ps.dll,opcproxy.dll,aprxdist.exe,opcenum.exe)可以从OPC 基金会网站下载。建立VB 项目之后,首先要在VB 开发环境中,在菜单的“项目”→“引用”中添加OPC 自动化包装库OPC Automation 2.0。3.2 开发流程及关键代码第一步:变量声明Option Explicit ‘所有变量需要显式声明‘关键字WithEvents 表明对象支持事件Dim WithEvents ServerObj As OPCServerDim objGroups As OPCGroups ‘组集合对象,用于添加OPC 组集合Dim WithEvents objGroup As OPCGroup ‘组对象,创建OPC 组实例Dim objItems As OPCItems ‘项集合对象,用于添加OPC 项集合Dim lServerHandles() As Long ‘定义数组保存OPC 项的服务器句柄Dim lTransID_Rd As Long ‘异步用的事务标识符,用于读取Dim lTransID_Wt As Long ‘异步用的事务标识符,用于写入

第二步:连接OPC 服务器和建立OPC 组Sub Connect(strProglD As String,Optional strNode As String)If Serverobj Is Nothing ThenSet Serverobj=New OPCServcr ‘创建一个OPC 服务器对象End IfIf Serverobj.ServerState=OPCDinsconnected ThenServerobj.Connect S7200.OPCServer ‘连接本地OPC 服务器S7200.OPCServerEnd IfIf objGroups Is Nothing ThenSet objGroups=Serverobj.OPCGroups ‘创建一个OPC 组集合End IfIf objGroup Is Nothing ThenSet Groupobj=objGroups.Add(”MyGroup”) ‘添加一个OPC 组对象End If

第三步:添加OPC 项对服务器进行访问前,必须先在OPC 组里添加要访问的OPC 项。本例子中,程序按照需求从OPC 服务器中浏览标签项,并添加到已建立的组MyGroup 中。Sub AddItem()Dim strItemIDs(8) As StringDim lClientHandles(8) As LongDim lErrors() As LongDim I As IntegerobjGroup.IsActive = True ‘设置组活动状态objGroup.IsSubscribed = False ‘取消组异步通知Set objItems = objGroup.OPCItems ‘建立OPC 标签集合For I = 1 To 8 ‘生成从TAG1 到TAG8 的项标识符strItemIDs(I) = "TAG" & IlClientHandles(I) = INext I‘添加OPC 标签项Call objItems.AddItems(8, strItemIDs, _lClientHandles, lServerHandles, lErrors)End Sub

第四步:数据读写在进行异步访问前,必须建立异步用的通信通路。使用这个通信通路,OPC 服务器可以回调OPC 应用程序的事件处理程序,以通知数据访问的结果。通信通路的建立方法是改变OPC 组的属性,把OPC 组的“IsSubscribed”属性设置为True,即objGroup.IsSubscribed= TrueSub Async_Read() ‘异步读取数据Dim lErrors() As LonglTransID_Rd = lTransID_Rd + 1objTestGrp.AsyncRead 8, lServerHandles, _lErrors, lTransID_Rd, lCancelID_RdEnd SubSub Async_Write() ‘异步写入数据Dim lHandle() As LonglTransID_Wt = lTransID_Wt + 1objTestGrp.AsyncWrite 1, lHandle(), vtItemValues, _lErrors, lTransID_Wt, lCancelID_WtEnd Sub为了使订阅方式的数据采取有效,必须将OPC 组以及OPC 标签的“IsActive”属性设置为True,然后在程序中加入如下代码:Private Sub objTestGrp_DataChange(ByVal TransactionID As Long, _ByVal NumItems AsLong, ClientHandles() As Long, ItemValues() As Variant, _Qualities() As Long, TimeStamps()As Date)

第五步:断开OPC 服务器退出前必须先断开与服务器连接,否则OPC 服务器使用的计算机资源不会被释放,这样的问题反复发生,连续运转的系统会使计算机资源逐渐枯竭从而发生严重问题[5]。Sub Disconnect()Itemobjs.Remove ‘清除所有OPC 项对象Set ItemObjs = NothingGroupActive.Enabled = False ‘组活动状态设为不活动ServerObj.OPCGroups.RemoveAll ‘清除所有的OPC 组对象Set Groupobjs=NothingServerObj.Disconnect ‘调用Disconnect 方法,断开与服务器的连接Set Serverobj=NothingEnd sub4 客户端测试及应用笔者在实际应用中基于OPC 技术开发了功能完善的上位机监控系统应用于某煤矿通风机的稀油站监控,设计了良好的人机交互界面,主界面如图8 所示。通过窗口界面实时监控系统运行状况,并进行必要的控制操作。经过长时间的运行测试,系统运行状况良好。5 结束语OPC 协议是一种通用的标准协议,可以很方便地连入其他综合监控系统,增强了系统的灵活性和可扩充性,并可节约软件成本。实际应用表明,基于OPC 技术的监控系统实时性好,可靠性高,组态灵活方便,并且可以通过局域网甚至Internet 实现多台上位机的监控,极大地扩展了监控系统的使用范围。

本计算机论文来自专业的理工论文网,如需转载请保留连接:计算机专业毕业论文

[参考文献] (References)[1]郭会娟,王涛等. OPC 技术在小型监控系统中的应用[J]. 控制系统,2009, 25(5),46-47.[2] OPC Foundation. Data Access Custom Interface Standard, Version 3.00 March 4, 2003.[3]周晓平,姜建芳等. S7-200 系列PLC 与监控计算机通信实现的研究[J]. 微计算机信息,[4] 潘武平. 基于OPC 协议的数据通信[D]. 北京:北京化工大学, 2004.[5]周新民,涂铮. 基于OPC 技术的PC 与S7-200PLC 的实时通信[J]. 武汉理工大学学报,2008,32(2), 354-357.[6]石林锁,王涛,刘顺波. 基于OPC 规范的客户应用程序实现[J]. 微计算机信息, 2003, 19 (5), 68-70.

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

永洪科技
致力于打造全球领先的数据技术厂商

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