关于pks提供的OPC接口.docx
《关于pks提供的OPC接口.docx》由会员分享,可在线阅读,更多相关《关于pks提供的OPC接口.docx(24页珍藏版)》请在冰豆网上搜索。
关于pks提供的OPC接口
1.ExperionOPC接口类型
Experion提供了下列可选的OPC接口,不同的接口用于不同的需求:
1.1.ExperionOPCClientInterface(OPC客户端接口)
OPC客户端接口用于与一些简单的子系统之间进行通讯,如PLC等。
这个组态需要在QuickBuilder中进行。
在这里,PKS系统作为OPC客户端的身份与第三方OPCserver进行通讯。
参考文档OPCClientInterfaceReference
在QuickBuilder中每一个OPCController下可以最多组态735个点(Item)
1.2.ExperionOPCAdvancedClient(OPC高级客户端)
OPC高级客户端包括Dataclient(数据客户端)和alarm/eventclient(报警及事件客户端)
OPC高级数据客户端用于与一些比较复杂的客户端之间的通信,比如其它DCS系统。
这些子系统的点结构是按照OPC基金会规定的OPCv2.05版进行架构的,也就是说这些点都有比较复杂的参数体系,比如PKS系统的点就是复杂的点结构。
OPC高级报警与事件客户端可以接收第三方OPC报警与事件服务器的报警及事件信息,在收到报警事件后,将会显示在报警汇总中,在操作员确认了这些报警后,其确认信息也将发送到OPC报警及事件服务器中。
报警和事件客户端的规范依据是OPC基金会报警与事件规范版本V1.0
1.3.ExperionOPCDisplayDataClient(OPC显示数据客户端)
OPC数据显示客户端用于在用户流程图中添加OPC数据,并且不需要其它额外的信息(如历史信息、报警信息等)。
这个客户端基于OPC基金会数据访问规范版本V2.05。
组态时,可以直接在流程图中添加数据ITEM,而不需要在QuickBuilder中建点。
1.4.ExperionOPCDataAccessServer(OPC数据访问服务)
ExperionOPCDataAccessServer提供了一种可以让其它OPC客户端Read/WritePKS系统点参数的功能。
基于OPC基金会版本V2.05,也可以向下兼容至OPCV1.0和OPCV2.0。
对于OPCDataAccessServer功能,PKS不需要做任何特殊组态,只需要有相应的License即可。
ProgId=HWHsc.OPCServer。
1.5.ExperionOPCAlarmandEventServer(OPC报警与事件服务)
ExperionOPCAlarmandEventServer允许OPCAlarmandEvent客户端从PKS系统接收报警和事件信息。
PKS支持OPC基金会的AlarmandEventV1.02规范。
PKS不需做特殊的组态。
1.6.ExperionOPCHistoricalDataAccessServer(OPC历史数据访问服务)
ExperionOPCHistoricalDataAccessServer为第三方OPC客户端提供了访问PKS点参数历史的功能。
基于OPCHistoricalDataAccess规范V1.2
PKS不需做特殊的组态。
1.7.ExperionOPCIntegrator(OPC集成)
ExperionOPCintegrator用于数据在2个或多个OPCServer之间进行传输。
在下列情况下,一般使用这种方式:
a)一个系统(第三方)已经提供的OPCServer,但是没有OPCClient,当这个系统还需要从Experion获得数据时。
b)在Experion的数据发生变化时(包括操作员改变的数据),需要传送到第三方的OPCServer中。
c)Experion过程控制器(Controllers)需要与管理控制层(SupervisoryControlLayer)之间进行数据传输时
警告:
不能利用这种方式在控制器之间传输安全或关键任务信息,对于涉及到安全方面的信息,需要使用直连线的方式在控制器之间进行传输。
2.OPC接口组态说明
由于PKS作为OPCServer时在PKS侧基本没有什么特殊设置,所以作为组态工作来讲,重点是:
在Experion作为OPCClient时该如何理解和操作。
有关于OPC的一些概念和术语可以参考附录OPC专用术语部分的描述。
注意:
无论什么时候,在组态OPC的Item时,对其名称及点参数一定要注意大小写的区别,OPC通信通常会对大小写敏感,为了减少不必要的麻烦和节省调试时间,在做OPC通信,最好养成良好的习惯。
2.1.关于OPC的数据传输方式
OPC是一种数据从数据源(Server)到任何一个客户端(Client)通信的标准,OPCServer和OPCClient可以在同一台计算机上,也可以在不同的计算机上。
OPC是如何进行数据传输工作的
OPCServer上的数据在OPCClient上是以Item的形式进行引用的,在OPCClient上,必须将一个或多个Item加入到一个Group(组)中,再从OPCServer获得Item数据。
OPCClient请求OPCServer创建一个组,并指定最大更新速率(UpdateRate)和死区(Deadband),然后OPCClient请求OPCServer添加Item到这个组中。
注:
虽然OPCClient指定了一个Group的更新速率,但是否采用这个速率是由OPCServer根据实际系统状况决定的。
虽然OPCClient指定了一个Group的死区,但是否采用这个死区是由OPCServer实际系统状况决定的。
Callback(回叫方式)
通常,OPCServer通过Callback的方式发送数据到OPCClient。
当创建了一个Group后,OPCServer会为这个Group的Item创建一个缓冲区,这个缓冲区依照Group指定的更新速率进行更新,在最后一次缓冲区更新后,当数据再次发生有效改变(是否为有效改变由Group的Deadband决定)时,OPCServer只发送Group中Item的最新值到OPCClient。
这种方法,减少了OPCServer和OPCClient之间的通信量,OPCClient只在数据发生有效改变时才接收到数据。
Explicitreadrequest(外部读请求方式)
OPCClient也可以发送外部读请求到OPCServer,而不受Callback的限制。
OPCClient可以直接请求OPCServer中缓冲区的数据或直接从现场设备(例如卡件)读取数据。
这种方式与Callback相比效率较低。
2.2.最简单的OPC客户端接口:
ExperionOPCDisplayClient
如果与第三方OPCServer进行通信,没有特殊要求,只需要在流程图中进行显示,则可以选择使用ExperionOPCDisplayClient方式来实现。
这种方式的特点是:
d)这种方式不需要专门的License许可
e)组态快捷、简单,不需要在QuickBuilder中组态SCADA通信点
f)组态好OPCDisplay后,剩下的工作就是在流程图中添加点信息即可
组态步骤:
g)首先确定第三方OPCServer的若干必要参数:
●第三方OPCServer的主机名/IP
●第三方OPCServer的ProgID。
关于这个ProgID,在不知道的情况下,可以通过枚举的方法获得,具体获得方法参见附录中的获得OPCServerProgID的方法部分的描述。
●与第三方通信点信息,包括完整的点参数和点类型信息。
在获得了点参数信息后,还需要规划Group(组),每一个Item(点参数)都必须属于一个Group,每一Group可以包含几十或几百个Item,每一个Group内的Item都使用相同的Update时间、Deadband(死区)等一些公共特性。
在Experion中的OPCDisplayClient每规划一个组就需要建立一个OPCDisplay的的SystemInterface,每一个OPCDisplayInterface缺省的可容纳Item的数量为500个,所以实际组态时可以根据实际情况规划Group的数量。
h)利用通用OPCClient软件测试与第三方OPCServer的通讯以及连接是否正常(具体方法参见附录中的利用通用OPCClient与OPCServer连接并通信部分),如果利用通用的OPCClient无法连接到第三方OPCServer,那么Experion也不会正常连接。
i)组态SystemInterface:
OPCDisplay
●首先打开Station,并选择菜单:
Configure->SystemHardware->SystemInterfaces,进入到SystemInterfaces组态界面,如图:
●在SystemInterfaces界面的Type项的下拉菜单中选择“OPCDISPLAY”,选择好后,再单击后面Alias项中的“-”,进入到OPCDisplay组态界面(这里以1号SystemInterface为例)。
●在OPCDisplay组态界面中的Configuration选项卡中,输入下图中所示的信息
●当配置完成后,如果与OPCServer连接正常,在Status选项卡中,可以看到连接状态,如图所示的连接状态就是正常的。
j)当OPCDisplay组态完成后,就可以在流程图中组态具体的点了,具体步骤如下:
●打开HMIDisplayBuilder,并在图中插入一个Alphanumeric对象
●在这个Alphanumeric对象的属性窗口中的Data选项卡中,输入OPC通信点信息,如图(这里的通信点是测试点,具体测试点的名称和内容参见利用通用OPCClient与OPCServer连接并通信中对测试点的说明)
保存流程图,并在Station中运行这张图
●如果想测试OPCWrite,则直接在Station中选中并输入测试数字即可,如图:
2.3.通用的OPC客户端接口:
ExperionOPCClientInterface
当Experion作为一个主系统与一些小规模的系统进行通信时,通常可以采用ExperionOPCClientInterface,大多数情况下,通信都可以使用这个客户端接口。
这个客户端接口需要License授权。
与ExperionOPCDisplayClient相比,ExperionOPCClientInterface需要在QuickBuilder中组态,并且在组态时可以组态报警、趋势等功能,同时也可以组态OPCWrite功能,OPCWrite的组态方式与MODBUS的组态类似。
与OPCDisplayClient一样,OPCClientInterface只能进行实时数据的读写操作(OPCDA)。
与MODBUS基本类似,ExperionOPCClientInterface的组态相对也比较简单,在获得必要参数后,需要组态Channel、Controller和Point。
具体过程如下:
k)首先确认在QuickBuilder中的Tools->ComponentManager中Device中“OPC”是被选中的(如图)。
l)创建OPCChannel,选择OPCChannel并填写参数。
这里的参数如没有特殊需要,都可以采用默认值。
这里单独将DiagnosticScanPeriod和BackgroundScanPeriod的概念说明一下:
DiagnosticScanPeriod:
诊断扫描周期,指定了相应周期后,Experion将按照周期时间发送同步请求至OPCServer,用于确认OPCServer的运行状态。
缺省60秒。
BackgroundScanPeriod:
后台扫描周期,指定了这个周期后,Experion会在每一周期将Controller中“backgroundscanning=enabled”控制器向OPCServer进行一次外部直接读数据请求。
简言之,就是定期全部读取一次指定控制器的数据,平时按照死区的定义接收有变化的数据。
缺省60秒。
m)建立Controller,并指定Deadband。
n)建点,这里做2个点,一个是模拟点,一个是状态点
模拟点
状态点
如果OPC点是可以读写的,则还需在Control选项卡中设置源参数和目标参数,如果没有特殊要求,源地址与目标地址可以与PV地址一致,如图:
o)在Station中激活Channel和Controller,并进入刚建好点的点细目,查看状态
如图,模拟点可以通过SP进行写操作
如图,状态点可以通过OP进行写操作
2.4.
3.附录
3.1.OPC专用术语
CLSID(ClassIdentifier,类ID)
CLSID,即类ID(类标识),“通用唯一标识符”(UUID),用于标识COM组件。
每个COM组件在Windows注册表中都有自己的CLSID,以便让其他应用程序加载。
Group(组)
在OPC对象结构中,使用同一更新速率(Update)和死区(Deadband)的Item的集合
Item(项)
OPCServer中的一个单一的数据源
OPC(OLEforProcessControl,专用于过程控制的OLE技术)
OPC(OLEforProcessControl,用于过程控制的OLE)是一个工业标准,管理这个标准国际组织是OPC基金会,OPC基金会现有会员已超过220家。
遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。
基于微软的OLE(现在的ActiveX)、COM(部件对象模型)和DCOM(分布式部件对象模型)技术。
OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
OPC全称是OLEforProcessControl,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。
在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。
由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。
通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。
在这种情况下,OPC标准应运而生。
OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE2技术,OLE标准允许多台微机之间交换文档、图形等对象。
COM是ComponentObjectModel的缩写,是所有OLE机制的基础。
COM是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对象定义为独立单元,可不受程序限制地访问这些单元。
这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。
例如,用户可以使用C++语言创建一个Windows对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用VisualBasic,C,Pascal,Smalltalk或其它语言编写对象访问程序。
在WindowsNT4.0操作系统下,COM规范扩展到可访问本机以外的其它对象,一个应用程序所使用的对象可分布在网络上,COM的这个扩展被称为DCOM(DistributedCOM)。
通过DCOM技术和OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。
OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。
OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。
这两种接口是:
自动化接口(Automationinterface);自定义接口(Custominterface)。
自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。
而自定义接口是专门为C++等高级编程语言而制定的标准接口。
OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。
任何一家自动化软件解决方案的提供者,如果它不能全方位地支持OPC,则必将被历史所淘汰。
ProgID(ProgrammaticIdentifier应用程序标识)
每一个COM组件都需要指定一个CLSID,并且不能重名,CLSID表示使用一个具有16个字节的数字(例如:
86A70E6F-3F1C-46B5-86F9-C21DAD69C756就是一个类标识),每个CLSID都在系统的注册表中被注册,它表示组件的实际路径,保证了组件路径的透明性,每一个类标识(CLSID)都可以有一个与之关联的ProgID,ProgID是以字符串的方式来标识一个CLSID,与CLSID的16字节的标识相比,ProgID比较容易记忆,其格式为:
..
UpdateRate(更新速率)
在OPCServer中Item的更新速率
3.2.获得ProgID的方法
每一个OPCServer在本机范围内都有一个唯一的识别类名,称之为ProgID。
当安装完OPCServer后会注册到系统COM类型库中。
当我们需要与OPCServer进行通信时,必须要知道相应的OPCServer的ProgID名。
通常情况下,不需要专门记忆某个ProgID,只需要掌握一般方法即可:
p)在与第三方OPCServer进行通信时,对方应提供这个ProgID。
例如,honeywellExperion中所提供的通用OPCServer为:
HWHsc.OPCServer,其名称是固定的。
q)通过通用的OPCClient软件可以枚举出指定机器或IP中的ProgID名及其简要描述,从中可以选择并记录需要的ProgID。
大部分OPCClient均提供这种枚举方式。
r)如果在Station中组态OPCDisplayClient,在输入了第三方OPCServer的机器名或IP后,在ServerProgID项中会自动枚举出对方机器中所有的PrigID(如图),从中选择需要的即可。
3.3.利用通用OPCClient与OPCServer通信
免费的OPCClient软件非常多,在这里推荐2款比较好的软件:
s)第一款软件是:
OPCClient,这款软件是一个绿色软件,不需要安装,使用简单,通常用于单纯的测试与OPCServer的连接,在现场调试时或做一些简单测试时推荐使用这款软件。
t)另一款软件是:
MatrikonOPC,这款软件需要安装,并且可以选择同时安装一个OPCServer,也就是说,MatrikonOPC同时包括了OPCServer和OPCClient的功能。
与ExperionOPCServer一样,MatrikonOPC的OPCServer功能也是通用的OPCServer,我们可以通过这款软件测试所有的Experion的OPC功能。
由于OPC客户端软件的操作基本上都类似,所以这里以“OPCClient”为例,说明OPC客户端软件的使用和测试方法。
OPCClient是一款绿色软件,不需要安装就可以直接运行程序。
这里,我们的例子是以OPCClient作为OPC的客户端程序,以Martikon作为OPC服务器端程序。
服务器端程序只需要在运行后,添加几个自定义点即可,下面重点将OPCClient的使用方法做一个详细的说明。
u)MatrikonOPCServer的ProgID为:
Matrikon.OPC.Simulation.1
v)MatrikonOPCServer安装在本机上,即客户端与服务器端在同一台机器上(注:
当客户端与服务器端不在同一台机上时,当客户端需要访问OPC服务器时,还需要对服务器端的DCOM进行一些权限配置,对于这些配置可参见附录配置OPCServer上的DCOM部分的描述)
w)运行Matrikon的OPCServer仿真程序MatrikonOPCServerforSimulation,并添加若干自定义点,如图所示,我们为MatrikonOPCServer添加了4个点(fd、fd_1、fd_Point1、fd_Point2)以及这4个点的上一级结构(fd1),从OPCClient的角度来看,可以认为一共有5个点,这5个点及其属性参数均可以通过客户端程序查询和读写。
(注:
在本文档中,与第三方OPCServer的测试,如没有特殊说明,均以这几个点为例)
x)运行OPCClient程序,并选择菜单OPC->Connect,如图
y)在弹出的SelectOPCServer对话框中选择Matrikon的OPCServerProgID(如果是本机,ServerNode一项可以为空),并点击OK。
zz)连接后,OPCClient窗口的标题会变为OPCServer的ProgID名称(如图),这时选择菜单OPC->ServerStatus,来查看OPCServer的运行状态,一定要确认图中红圈标注出的状态为Running。
aa)我们在做测试时,不需要建立多个Group(组),只需用使用默认的GroupOne即可,所以,这时候我们就可以添加Item了,如图所示,选择菜单OPC->AddItem,会弹出“AddItem”对话框,在对话框中,打开Root树形结构,就可以看到之前在MatrikonOPCServer中建立的点结构及其参数结构。
bb)在这里以点“fd_Point1”为例,选择了这个点以及我们在MatrikonOPCServer中定义的参数“PV”,选择后,ItemName项目中会自动显示将要添加的Item点参数。
选择了点参数之后,单击“AddItem”即可。
cc)添加完Item后,在主窗口中就可以看到已添加的Item,以及实时值和更新时间等信息,如果看到了数值和更新时间,则表明OPCClient与OPCServer之间的通信都正常
dd)如果这个点参数是可以Read/Write的,还可以测试Write过程。
如图,右键单击点名,选择菜单中“WriteValuetoItem”,在弹出对话框中输入测试值,这里是“55”,单击OK后,指定点参数值变为55,则表明这个点参数的OPCWrite功能是允许和可用的
3.4.配置OPCServer机器上的DCOM
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求