搜档网
当前位置:搜档网 › 基于RSLinxOPC的VB与PLC异步通信的实现

基于RSLinxOPC的VB与PLC异步通信的实现

基于RSLinx OPC 的VB 与PLC 异步通信的实现

(杭州钢铁集团公司转炉炼钢厂,浙江杭州310022)

摘要:在对杭州钢铁集团公司转炉炼钢厂4#

连铸机ControlLogix 自动化系统实时数据的采集和处理中,使用VB

编程语言编写客户程序,通过RSlinx 提供的OPC 服务实现计算机对PLC 数据的异步访问,构建二级计算机数据采集系统与ControlLogix 系统之间的高速数据通道,并实现连铸二冷配水过程二级控制系统数据的在线动态交换。

关键词:VB ;OPC ;PLC ;异步通信

收稿日期:2011-11-28;修改稿收到日期:2011-12-29作者简介:殷

松(1979-),男,安徽合肥人,工程师,主要从事工业过程控制、计算机自动化与网络通信等方面的研究工作。

0引言

为推进企业的信息化建设,使连铸生产过程实现流程化管理,保证生产信息的有效组织和集成,加速信息的处理和流通,提高工作效率和数据处理的准确性,为合理组织生产和正确决策提供科学依据,使用高效、稳定的数据通信方式尤为重要。本文用VB 编程语言编写应用软件,对生产数据进行网络监控和动态管理,

并为实现连铸机上位机的二级配水技术提供有效的解决方案。

杭州钢铁集团公司转炉炼钢厂4#

连铸机为五机五流全弧型连铸机,自动化控制系统采用Rock-well Allen-Bradley (以下简称AB )公司的Control-Logix 系统,主控网络为ControlNet 冗余双网。上位机监控软件为RSView32,下位机软件为RSlogix5000,网络通信软件为RSlinx ,PLC 控制器为AB Logix5550系列。自动化系统结构如图1所示

图1

连铸机自动化系统结构

RSLinx是AB公司专门开发的用于与AB公司所有智能产品进行通信的软件,具有强大的通信和网络搜寻功能。通过RSLinx,一台电脑就可以访问AB公司的三层网络,以太网(Ethernet)、控制网(ControlNet)和设备网(DeviceNet)内的所有可识别的设备,并对这些设备进行所有操作,例如,编程、在线监视、参数修改、过程控制等。

VB是Visual Basic的简称,是由美国微软公司开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。通过OPC接口,在VB环境下开发的OPC客户端应用程序,可实现上位机与AB Logix5550控制器之间的通信,程序能够接收连铸生产过程中的实时检测数据(工况参数),并同时将计算得出的控制量(二冷水量等)下发至一级PLC控制系统,可达到实时数据传递与过程优化控制的目的。

1OPC技术

OPC全称是Object Linking and Embeding (OLE)for Process Control,OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的。OPC采用客户/服务器模式,规范定义了一个工业标准接口,规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。这样,只要生产商开发一套遵循OPC规范的服务器与数据进行通信,其他任何客户应用程序便能通过服务器访问设备。

1.1OPC对象及操作模型

OPC数据访问服务器中主要包括三类对象:服务器(Server)、组(Group)和数据项(Item)。服务器对象维护自身的信息,并作为组对象的容器,一个服务器对应于一个OPC Server,即一种设备的驱动程序。组对象除了包含它自身信息外,还负责管理数据项。每一个数据项代表到数据源的一个连接,但它没有提供外部接口,客户端程序无法对数据项直接进行操作,应用程序必须依靠数据项的容器组对象来对它进行操作。VB应用程序连接和使用OPC服务器数据的正确顺序为:(1)连接OPCServer;(2)添加group();(3)将item添加到group()。当从OPC服务器断开的时候,需逆序来做。图2所示为操作OPC模型的流程

图2操作OPC类模型的流程

1.2OPC数据访问机制

首先,OPC客户连接到OPC服务器上,并建立OPC Group和OPC Item,这是OPC数据访问的基础;其次,客户通过对其建立的Group和Item进行访问实现对过程数据的访问;再次,当服务器响应客户的过程数据范围请求并处理完毕时通知客户。以上三方面机制是OPC数据访问服务器必须要实现的。

客户的过程数据访问包括过程数据的读取、更新、订阅、写入等,过程数据的读写还分为同步读写和异步读写。建立OPC连接后,客户应用程序一般通过三种方式从OPC服务器读取数据:同步方式、异步方式和订阅方式。

(1)同步读写方式。同步方式通信模式如图3所示。该方式简单有效,当客户数目较少且与服务器交互数据量也比较少时,可以采用这种方式。在这种方式下,当执行读写命令时,程序不能继续执行下面的操作,直到读写操作结束后程序才能继续往下执行,OPC客户程序直到结果被返回为止必须一直处于等待状态

图3同步方式通信模式

(2)异步读写方式。异步方式通信模式如图

4所示。该方式的实现需要在客户程序中实现服务器的回调函数,优点是当有大量客户和大量数据交互时,效率更高,能够避免客户数据请求的阻塞,并可以最大限度地节省CPU和网络资源。这种方式下只要有读或写的任务送达就马上申请读写,同时程序继续执行后面的操作,并由OPC服务器返回回调函数的执行结果。OPC服务器接收到OPC客户程序的要求后,几乎立即将方法返回,OPC客户程序随后可以进行其他处理。当OPC 服务器完成数据访问时,将结果传送给OPC客户程序。在4#连铸机动态二冷水量设置时,需对1 5流的足辊段和4个冷却段共25个点写入操作来控制调节阀,进行异步写入显然更为有效

图4异步方式通信模式

(3)订阅方式。订阅方式通信模式如图5所示。该方式其实也是一种异步方式,不需要OPC 应用程序向OPC服务器要求,服务器按一定的更新周期更新数据缓冲器的数值,当数据有变化时,服务器就会以数据变化事件(DataChange)自动通知OPC应用程序。在读取连铸机大量的动态数据时,采用该方法效率最高

图5订阅方式通信模式2VB与PLC异步通信实现

2.1RSLinx与PLC通信的建立

利用Rslinx自身提供OPC服务,读取AB控制器的寄存器,并通过OPC服务转发。RSLinx有很多版本,能够进行RSLinx通信的,只有RSLinx Professional和Gateway版。

(1)设置RSlinx连接AB PLC。在4#连铸机上位机上安装1784-KTCX15ControlNet网卡并进行组态以访问ControlNet中的设备,在RSLinx中完成对该卡的组态设置后,使用Autobrowse浏览网络,即可浏览4#连铸机ControlNet网络中的所有设备。

(2)对RSlinx OPC的服务进行设置。通过建立Topic访问PLC中的数据,就可以通过VB OPC Client程序对PLC中数据进行采集和控制。Topic 指的是一个路径的集合,一个Topic里存储的信息为该Topic所对应的CPU以及如何指向该CPU。

在RSLinx主界面“DDE/OPC”菜单里选择“Topic configuration”,新建Topic名,展开右侧的PLC设备,选中ControlLogix系统中的CPU,按下“Apply”并确认完成。这样就建立了各DDE/OPC 的Topic。图6所示为建立Topic的画面,共需要建立6个名称分别为HG4和HG4_1 HG4_5的Topic,分别对应4#连铸机公用PLC以及1 5流PLC的控制器。

2.2VB程序开发设计

在VB环境中,采用自动化接口访问OPC数据,首先在VB的“工程”菜单“引用”中添加“OPC DA Automation Wrapper2.02”项,这样才能使用自动化接口。主要程序设计以及代码如下。

(1)连接OPC服务器

‘定义OPC服务器变量和组的全局变量

Dim WithEvents objOPCServer As OPCServer

Dim WithEvents objOPCGroup As OPCGroup

Set objOPCServer=New OPCServer

‘连接RSLinx的OPC服务器

objOPCServer.Connect"RSLinx OPC Server",""

(2)添加OPC组对象

‘添加OPC组对象

Set objOPCGroup=objOPCServer.OPCGroups.Add("Group1")

‘启动组数据异步通知

objOPCGroup.IsSubscribed=True

图6建立RSlinx OPC Topic

‘设置该组为激活状态

objOPCGroup.IsActive=True

‘设置数据刷新时间为200ms objOPCGroup.UpdateRate=200

(3)添加数据项

‘项标识符

Dim abItemIDs()As String

‘客户端句柄

Dim abClientHandles()As Long

‘服务器端句柄

Dim rslinxServerHandles()As Long

Dim abErrors()As Long

‘需访问的数据总数为itemCount

For i=1To itemCount

‘将Topic标签名赋给项标识符

abItemIDs(i)=topicItemName(i)

‘给客户端句柄赋值

abClientHandles(i)=i

Next i

‘添加数据项操作方法

objOPCGroup.OPCItems.AddItems itemCount,abItemIDs,abClientHandles,rslinxServerHandles,abErrors

(4)异步写数据

使用VB OPCGroup对象的方法为:

AsyncWrite(NumItems As long,ServerHandles ()As long,Values()As Variant,ByRef Errors()As long,TransactionID As long,ByRef CancelID As long)

参数说明见表1。

表1AsyncWriet方法参数说明

参数说明

NumItems要写入OPC标签的数目

ServerHandles要写入OPC标签的服务器句柄的数组Values要写入的数值的数组

Errors返回的与写入项对应的错误码的数组TransactionID由OPC应用程序发行的事务标识符

CancelID由服务器发出的取消标识符

异步写入连铸机PLC二冷配水中25个冷却段水量值的VB关键代码为:

nTransID=nTransID+1

objOPCGroup.AsyncWrite25,rslinxServerHan-dles,itemValues,nErrors,nTransID,nCancelID (5)异步读数据

‘使用OPCGroup DataChange事件自动刷新

Private Sub objOPCGroup_DataChange(ByVal TransactionID As Long,ByVal NumItems As Long,ClientHandles()As Long,ItemValues()As Variant,Qualities()As Long,TimeStamps()As Date)

For i=1To itemCount

‘txtValue文本框显示获取项的值

txtValue(ClientHandles(i))=ItemValues(i)

Next i

End Sub

(6)断开OPC服务器并释放资源

应用程序结束时需断开OPC服务器并释放所占用的资源,按Item,Group,Server的顺序,使用OPC对象的remove方法依次删除对象,并设置对象为Nothing来释放资源。

3结束语

PLC异步与同步通信方式的区别在于,在调用数据访问方法时,同步通信方式下OPC客户应用程序必须等待OPC服务器的动作完成,也就是说同步方式的数据访问在要求没有完成前不能从调用的方法中回到主程序中去。所以从调用方法到返回主程序之间不能执行任何其他OPC应用程序,导致对用户操作也不能做出及时反应,在要求的数据比较多时,这样的问题就会变得尤为明显,在这种情况下,在4#连铸机中使用异步方式的数据访问就显得尤为有效。

VB对PLC的异步访问程序在杭钢转炉厂连铸系统中的作用主要有两个方面:

(1)为连铸机生产数据远程监控和动态管理信息系统提供数据基础,实现转炉炼钢厂的二级单位生产数据信息的快速采集、传输、处理,满足各级单位对生产数据的查询需要。

(2)在连铸机冷却水动态配水中为二级配水工艺提供技术支持,弥补一级配水的缺陷,有效提高铸坯质量。

参考文献:

[1]OPC基金会.OPC Data access automation interface standard V2.02[EB/OL].http://www.opcfoundation.

org,2009-11-23.

[2]日本OPC协会.OPC应用程序入门[M].郑立,译.

北京:OPC基金会中国促进委员会,2002.

[3]刘炳文,许蔓舒.Visual BASIC程序设计教程[M].北京:清华大学出版社,2000.

[编辑:赵晓坦]

相关主题