基于opc架构的数据采集系统及应用

随着计算机通信和网络技术的发展,计算机在工业自动化领域发挥着越来越重要的作用。在工业现场,通常会采用各种智能仪器仪表,这些智能设备的现场运行数据可以通过网络直接高速地采集到应用软件,从而将设备的运行状态采到分布在不同地理位置应用系统,方便进行设备的状态跟踪、故障诊断等。
    OPC(OLE for Process Control)是一种基于微软OLE、COM/DCOM技术的自动控制协定。数据采集技术是工业控制中的重要部分,针对工业过程数据采集开放性、可重用性和灵活性较差的问题,OPC基金会提出了工业控制软件接口标准,在工业控制设备与控制软件之间建立了数据通信标准,解决不同的设备和应用软件、不同协议和网络标准的底层通讯和互操作性问题。OPC包括OPC数据存取(Data Access)、OPC数据交换(DataeXchange)、OPC安全性(Security)、OPC XML-DA等规范和接口、属性、方法标准集,用于过程控制和工业自动化系统。COM/DCOM技术定义不同软件组件交互使用和分享数据,不论过程中采用什么软件或设备,OPC为各种过程控制设备间通信提供公用接口。因此OPC实际上提供了一种机制,通过这种机制,系统能以服务器/客户端方式从服务器获取数据并将其传递给客户应用程序。这样,只要设备生产商遵循OPC规范,任何客户应用程序访问设备,不必考虑设备的硬件差异,便可通过服务器从设备端取得所需的数据,开发者仅需专注于程序本身的流程控制。

1 在线数据采集系统体系结构

    使用的在线数据采集网络连接结构如图1所示,其中PLC1...PLCn是设备端的可编程控制器(PLC),应用系统通过数据采集接口程序采集设备端数据,接口程序直接向RSLinx服务器发送数据采集请求,RSLinx服务器则通过DH485局域网(LAN)和现场设备的PLC之间进行数据交换,用户或应用软件则通过Intranet/Internet到RSLinx服务器获得由数据采集接口程序采集的数据。


  

 图1 在线数据采集网络连接示意图

    其中DH-485是一种常用于工业现场的局域网技术,最大可连接32个设备,可连接包括可编程控制器、彩色图形终端、PC等设备,DH-485链路和辅助的RS-232-C链路一起构成了DH-485网络。RSLinx是AB公司可编程控制器的服务器软件,为AB公司的PLC处理器与其他公司的软件产品提供通信连接。通过RSLinx可在PC机上显示整个网络的结构和各网络节点的工作状态,通过RSLinx在人机界面和PLC编程软件之间、在PLC编程软件和对应的PLC的处理器之间建立通信连接。

2 在线数据采集接口程序的设计和实现

    开发OPC客户端程序常用的方法包括:使用OPCNetAPI(OPCNetAPI.dll)、使用自动化接口(OPCDaAuto.dll)、使用自定义接口(OpcRcw.Ae.dll,OpcRcw.Batch.dll,OpcRcw.Dx.dll,OpcRcw.Comn.dll,OpcRcw.Da.dll,OpcRcw.Hda.dll)。本文所采用的OPC服务器为AB公司的RSLinx服务器,在线数据采集接口程序采用VB6.0开发,使用自动化接口方式,通过调用OPCDaAuto.dll动态连接库实现。

    在线数据采集接口程序主要应用OPC数据访问规范。OPC数据访问规范主要解决服务器端和客户端的实时数据存取问题,OPC数据访问规范中包含三类对象,即服务器(Server)群组(Group)和数据项目(Item),三类对象的组织结构像普通文件系统,其中服务器与分区、群组与文件夹、项目与文件一一对应,各个部分都有自己的属性,同时负责管理其底层分支。接口程序主要通过以下几个主要环节实现:

    ①搜索OPC服务器

    DimGetserver As OPCServer

    DimServers As Variant

    Set Getserver= New OPCServer

    Servers=Getserver.Get OPCServers

    If UBound( Serv ers) > 0Then

    For i= LBound(Servers) To UBound(Servers)

    ServerName.AddItemServers(i)

    Next i

    Set Getserver= Nothing

    ServerName.ListIndex=0

    End If

    ②连接OPC服务器。以上程序实现自动探索OPC服务器,搜索到OPC服务器后,在搜索到的OPC服务器列表中选取并连接OPC服务器:

    SetOPCMyserver = New OPCServer

    OPCMyserver.ConnectServerName.List(ServerName.ListIndex),

    ③创建一个OPC的群组(Group)

    Set OPCMygroups=OPCMyserver.OPCGroups

    Set OPCMy group Pouch=OPCMygroups.Add("Grouppouch1")OPCMygroupPouch.UpdateRate=1000

    ④添加一个OPC项目(Item),一个OPC的项目(Item)对应PLC的一个地址,如下列程序中的[pouch]F8:19表示pouch节点的F8:19地址。

    SetOPCMyitems = OPCMy group Pouch. OPCItems

    Client Handles(1)=819

    OPCItemIDs(1)="[pouch]F8:19"

    OPCMyitems.AddItems1,OPCItemIDs,ClientHandles,ItemServerHandles,Errors''',RequestedDataTypes,AccessPaths

    ⑤设置OPC群组(group)的通讯方式,若IsActive为True,则为OPC服务器主动发数据,否则只有客户端发送读取请求,才读数据。当需要采集的数据是累加数,如统计产品的箱数等数据时,可采取IsActive=False的读取数据方式。若需要采集的数据是不连续变化的数据,并需要全部保存,如每一箱产品的重量时,可以采取IsActive=True的读取方式。

OPCMygroupPouch.IsActive=False
    ⑥读取数据

    *当IsActive=False时,客户端主动读取数据,可由计时器触发,使系统实现定时采集数据。

    DimanItemAsOPCItem

    DimValues Pouch(900)AsLong

    For EachanItemInOPCMygroup Pouch. OPCItems

    anItem.Read OPCDevice

    Values Pouch(anItem.ClientHandle)=anItem.value

    Next anItem

    *当IsActive=True时,通过DataChange事件触发,即若PLC地址的数据发生改变时触发该事件实现数据采集。在VB中定义了OPC的群组(Group)后,将自动产生该事件过程。

    Private Sub OPCMygroup Pouch DataChange(ByValTransactionID As Long , ByVal NumItems As Long ,Client Handles ( ) As Long , ItemValues ( ) AsVariant ,Qualities( ) As Long,TimeStamps( ) As Date)

    Dim Client As String

    Dim value As String

    For i= 1 To NumItems

    Client= ClientHandles(i)

    value= ItemValues(i)

    Next i

    End Sub

3 在线数据采集接口在广州美赞臣在线SPC系统中的应用

    SPC(Statistical Process Control)系统即统计过程控制系统,是一种借助数理统计方法的过程控制工具,通过对生产过程数据的分析发现系统性问题并采取措施,使过程维持在受控状态。广州美赞臣的SPC系统主要是采集生产现场的各种数据,并对采集的数据进行各种质量状态的分析。作为SPC的基础,就是要将现场的数据采集到系统并存放到数据库中,美赞臣整个生产线采用AB公司的PLC控制系统,OPC服务器采用AB公司的RSLinx服务器,并通过DH-485网络与生产现场PLC设备相连。在广州美赞臣的在线SPC系统中采用本文开发的在线数据采集接口程序采集生产线的装箱机产量,各种不良品剔出数,以及生产线的所有产品重量,运行结果表明,接口程序在以下方面具有较好的表现:

    *通用性好

    本文开发的数据采集接口程序方案稍作更改后,就能应用于不同的统计过程控制系统作为数据采集的接口程序。

    *数据采集效率和稳定性好

    本文提出的数据采集接口程序在实际生产现场的应用中,在数据采集效率和稳定性方面都取得比较好的实际应用效果。

    *存在的不足

    在实际生产现场的应用中也发现,采用IsActive=True的方式读取现场数据的时候,当数据变化较快(1min100次左右时),会产生遗漏一部分数据的情况。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值