APP下载

OPC应用实践

2019-02-10卢建勤赵彦鸿

山东工业技术 2019年3期
关键词:客户端服务器实践

卢建勤 赵彦鸿

摘 要:OPC为工业监控编程带来了便利,用户不用再为各种复杂的通讯协议而苦恼,OPC可以说是对几乎所有可编程控制器的万能通讯工具。本文以InCoSol公司的S7A为例,介绍了OPC的简单应用过程,并从使用的方便实用性和系统资源占用率两方面给出了相关建议。从OPC服务器的安装设置和OPC客户端的VB编程,提出了如何使得OPC服务器更加易用和友好,为读者提供参考。

关键词:OPC;服务器;应用;客户端;实践

1 概述

OPC(OLE for Process Control, 用于过程控制的OLE)是一个工业标准,管理这个标准的国际组织是OPC基金会,OPC基金会现有会员遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。 换言之,主流的PLC厂家都是OPC的会员单位,它们的每一种主流PLC,都有相应的OPC-Server应用软件与之配套,如西门子公司的S7-200的PC_ACCESS,S7-300/400的SimaticNET,ORMON 的ORMON-OPCserver。

这些OPC-Server软件有什么作用?当计算机安装了这些软件之后,一旦运行该软件,便主动实时采集有关PLC的数据到计算机上,然后为其他应用程序提供所需的数据。

基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术。OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。

我们要编写一个监控PLC的监控软件,只要在程序中放一个OPC-Client的对象,或者叫控件,通过简单的设置,就可以通过OPC-Server取到PLC中的实时数据。而且,这个方法适用于任何支持OPC的PLC。

OPC为工业监控编程带来了便利,用户不用再为各种复杂的通讯协议而苦恼,OPC可以说是对几乎所有可编程控制器的万能通讯工具。本文将在使用的方便实用性和系统资源占用率给出相关建议。

2 西门子S7-300/400OPC服务器应用

SimaticNET软件包是西门子公司为其S7-300/400可编程控制器提供的OPC服务器软件。在需要的计算机上安装SimaticNET软件后重启。SimaticNET后臺要运行许多与之相关的进程,会占用一些系统资源,在设置数据通讯时经常会出现编译下载失败的问题。

在此介绍另外一个S7-300/400的OPC服务器,InCoSol公司的S7A。

InCoSol分别取自以下三个单词Industrial Communications Solutions,意为工业通讯解决方案。这家公司的产品在其网站上只有一个,就是S7A。这款产品,它既是IFIX与西门子S7-300/400的I/O驱动程序,同时也是一个针对S7-300/400的独立的OPCServer。

它的7.20 224版本的安装包不到4M,不仅短小精悍,安装过程也很友好。如果是在已安装IFIX的计算机上,它会自动安装到IFIX软件所在目录中,反之,它会提示指定一个安装位置。作为S7-300/400的OPC服务器,它不需要西门子任何软件的支持。

安装完成后,它的使用也很方便,在“开始”中,就会出现如图1的快捷项,点击进入设置。DEFAULT.S7A是默认的配置文件,也是一个配置的实例。此实例中六项代表六种不同的接口和协议。如图2所示。

我们以通过ETHERNET建立OPC与S7-300PLC的连接为例,介绍设置过程,点击File->New,或者点击工具栏上的New,新建一个配置文件,如图3。

然后点击File->Save,取个名称为TEST.S7A,保存;点击Option

->Setup,跳出一个对话框,点击Default Path,输入TEST.S7A,表明OPC服务运行时的工作配置文件,如图4。

具体配置过程如下:第一步,添加一个Channel(通道),选择接口协议S7 TCP/IP,通道的名称可以由系统自动产生,并使能。第二步,添加一个Device(设备),设备名称修改为PLC1,配置IP地址为192.168.100.101,并使能,如图5。如有多台PLC,则继续添加设备。第三步,添加Data Block(数据块),指定数据区域,起始地址,数据长度,并使能。根据需要添加一个或多个数据块。设置完成,保存。点击Display Mode->Start进行运行,Display Mode->Stats Mode,立即可以看到通讯状态。

上述的三步,回答了三个问题,一是用什么通讯,用鼠标点击选择即可;二是和谁通讯,输入相应PLC的IP地址即可;三是要什么数据,选择PLC的存储区域,输入起始地址和字节数。S7A作为OPC服务器软件,安装方便,简单易用,功能强大,是优秀的OPC服务器软件的典范。

3 OPC客户端应用

OPC服务器软件正常运行后,就可以采集到PLC的实时数据。这些实时数据提供给OPC客户端软件使用,这个OPC客户端软件可以是组态软件的一个I/O驱动程序,也可以是一个独立的应用程序。

当前作为针对PLC的数据监控系统,大多采用组态软件平台开发,而较少采用VB/VC等通用平台开发。即使采用组态平台开发数据监控系统,当用户提出一些复杂的报表系统,或者是给模拟屏发送显示数据之类的功能,组态平台就力不从心,甚至无法实现,而用VB编写一个OPC客户端的小程序,就可以轻松完成此类功能。

下面举个简例:PLC1是S7-300/400站点,S7A作OPC服务器。标签是OPC服务器和OPC客户端交换数据的基本单位,例中是3个标签。在VB中先定义一组全局变量,这是OPC客户端必须要有的。

Private Const TagNum = 3                 '标签数

Dim WithEvents MyOPCServer As OPCServer    'OPC服务器对象

Dim MyOPCGroupColl As OPCGroups         'OPC标签组集合

Dim WithEvents MyOPCGroup As OPCGroup'OPC标签组

Dim MyOPCItemColl As OPCItems          'OPC标签集合

Dim ServerIDs() As Long                     '服务端标识

Dim ClientIDs(1 To TagN) As Long          '客户端标识

Dim ItemIDs(1 To TagN) As String        '标签标识

Private Sub StartClient()                '启动OPC客户端

Dim Errs() as long

On Error Resume Next

For nn = 1 To TagN   '初始化客户端标识,每个标签有唯一的数字

ClientIDs(nn) = nn

Next nn

ItemIDs(1)= "PLC1:DB1.DBW0"       '整数型

ItemIDs(2)= "PLC1:DB1.DBW2"         '整数型

ItemIDs(3)= "PLC1:DB1.DBF4"        '浮點型

MyOPCServer.Connect  "InCoSol.S7AOPC" ,  "127.0.0.1"

Set MyOPCGroupColl = MyOPCServer.OPCGroups

MyOPCGroupColl.DefaultGroupIsActive = True

Set MyOPCGroup = MyOPCGroupColl.Add("ABC")

Set MyOPCItemColl = MyOPCGroup.OPCItems

MyOPCItemColl.AddItems TagN, ItemIDs, ClientIDs, ServerIDs, Errs

MyOPCGroup.IsSubscribed = True

End Sub

只要运行StartClient(可以放在FormLoad中),即可连接OPC服务器。OPC服务器总是在客户端第一次连接时,发送全部标签的数据,然后,只发送数据产生变化的标签。OPC客户端则在接收到数据后,激活DataChange事件,我们可以在此事件中处理数据。

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

'在此加入数据处理代码

End Sub

4 OPC的工作效率问题

有了OPC服务器,用户取得PLC的实时数据变得简单了。如果只是从一台或几台PLC中,取几个或几十个数据,那一切表现都正常;而当监控软件要通过OPC从几十台PLC中,取几百到几千个数据时,问题就来了,系统变得很慢,CPU占用率高达90%以上。SimaticNET,ORMON-OPCserver我们都有应用案例,说明它们的效率是不高的。

下面我们来探讨一下如何提高OPC的工作效率。OPC服务器的两个主要工作,一是和PLC通讯,二是和OPC客户端通讯。当OPC服务器和OPC客户端运行于同一台计算机时,相比这两者占用的时间和系统资源,前者占了绝大部分。因为前者使用的网络等硬件资源带宽通常小于100MBPS,而后者是CPU和内存之间交换数据通常大于10000MBPS。

因此,提高OPC服务器和PLC通讯的效率是关键。这个效率取决于两个因素:通讯次数和数据量。当OPC服务器要从PLC取得数据量一定时,通讯次数越少,则通讯效率越高。

SimaticNET,ORMON-OPCserver效率不高的原因是它们和PLC通讯的次数太多或者数据太多了。假设之一:OPC客户端所需的每个标签,OPC服务器都要和PLC进行一次通讯,这样通讯次数太多自然效率低下;假设之二:OPC服务器读取PLC所有存储器的数据,这个工作量很大,这样的通讯数据太多次数也不少,数据利用率低,总体效率也不会高。

S7A作为OPC服务器,增加了一项数据块定义,用户可以把所需数据标签尽量集中到一个或几个数据块中,减少了通讯次数,提高了数据利用率。它为所有PLC厂家树立了OPC服务器的典范。

5 结束语

本文以S7A为例,介绍了OPC的简单应用过程,给出OPC服务器的安装设置和OPC客户端的VB编程,提出如何使得OPC服务器更加易用和友好及如何提高OPC的效率,为读者提供参考,以适应复杂工程项目的需求。

参考文献:

[1]吕正斌.浅析OPC应用[J].2009.

[2]崔坚.西门子工业网络通信指南[S].2006.

[3]OPC基金会.数据访问自动化接口标准规范[S].1999,2(02).

猜你喜欢

客户端服务器实践
2018年全球服务器市场将保持温和增长
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
初中政治教学中强化新八德教育探讨
体验式学习在数学教学中的应用研究
生物专业师范生教学实习的问题与对策研究
校企协同实施高职专业课程改革的实践研究
浅析IEEE 802.1x及其客户端软件
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵