基于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规范,任何客户应⽤程序访问设备,不必考虑设备的硬件差异,便可通过服务器从设备端取得所需的数据,开发者仅需专注于程序本⾝的流程控制。
wifi是什么
1 在线数据采集系统体系结构
使⽤的在线数据采集⽹络连接结构如图1所⽰,其中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服务器
DimGetrver As OPCServeraccommodation翻译
DimServers As Variant
Set Getrver= New OPCServer
Servers=Getrver.Get OPCServers
If UBound( Serv ers) > 0Then
For i= LBound(Servers) To UBound(Servers)
ServerName.AddItemServers(i)
Next i
Set Getrver= Nothing
ServerName.ListIndex=0
End If
②连接OPC服务器。以上程序实现⾃动探索OPC服务器,搜索到OPC服务器后,在搜索到的OPC服务器列表中选取并连接OPC服务器:
SetOPCMyrver = New OPCServer
OPCMyrver.ConnectServerName.List(ServerName.ListIndex),trans
③创建⼀个OPC的群组(Group)
sSet OPCMygroups=OPCMyrver.OPCGroups
Set OPCMy group Pouch=OPCMygroups.Add("Grouppouch1")OPCMygroupPouch.UpdateRate=1000
office lady
instruct④添加⼀个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=Fal的读取数据⽅式。若需要采集的数据是不连续变化的数据,并需要全部保存,如每⼀箱产品的重量时,可以采取IsActive=True的读取⽅式。
OPCMygroupPouch.IsActive=Fal
⑥读取数据
*当IsActive=Fal时,客户端主动读取数据,可由计时器触发,使系统实现定时采集数据。
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
rounderEnd Sub
3 在线数据采集接⼝在⼴州美赞⾂在线SPC系统中的应⽤
SPC(Statistical Process Control)系统即统计过程控制系统,是⼀种借助数理统计⽅法的过程控制⼯具,通过对⽣产过程数据的分析发现系统性问题并采取措施,使过程维持在受控状态。⼴州美赞⾂的SPC系统主要是采集⽣产现场的各种数据,并对采集的数据进⾏各种质量状态的分析。作为SPC的基础,就是要将现场的数据采集到系统并存放到数据库中,美赞⾂整个⽣产线采⽤AB公司的PLC控制系统,OPC 服务器采⽤AB公司的RSLinx服务器,并通过DH-485⽹络与⽣产现场PLC设备相连。在⼴州美赞⾂的在线SPC系统中采⽤本⽂开发的在线数据采集接⼝程序采集⽣产线的装箱机产量,各种不良品剔出数,以及⽣产线的所有产品重量,运⾏结果表明,接⼝程序在以下⽅⾯具有较好的表现:
*通⽤性好
本⽂开发的数据采集接⼝程序⽅案稍作更改后,就能应⽤于不同的统计过程控制系统作为数据采集的接⼝程序。
*数据采集效率和稳定性好
本⽂提出的数据采集接⼝程序在实际⽣产现场的应⽤中,在数据采集效率和稳定性⽅⾯都取得⽐较好
的实际应⽤效果。
*存在的不⾜
在实际⽣产现场的应⽤中也发现,采⽤IsActive=True的⽅式读取现场数据的时候,当数据变化较快(1min100次左右时),会产⽣遗漏⼀部分数据的情况。
>经典台词对白