OPC服务器

2024-07-20

OPC服务器(精选六篇)

OPC服务器 篇1

随着工业生产技术的不断进步,工业控制类软件取得了长足发展,但在其开发过程中也面临很多问题。在传统控制系统中,数据采集设备之间及设备与控制系统之间信息传递主要通过特有驱动程序来实现。不同生产厂家设备使用不同驱动程序,因此在软件中必须包含工程所需全部设备通信驱动及 控制模块,为升级和 维护带来 极大不便,并且系统中存在若干驱动程序对其控制的硬件设备进行操作时,可能会引起冲突,甚至导致系统崩溃。

OPC(OLE for Process Control)技术能很好地解决多种设备共同使用问题。OPC是微软公司对象链接和嵌入技术在过程控制方面的应用。OPC以OLE、COM、DCOM技术为基础,采用B/S模式,为工业控制类软件系统开发提供了统一标准规范。利用该标准,硬件开发商可为硬件产品提供标准OPC接口,软件开发者可直接使用OPC标准接口控制不同硬件设备。

目前,公开发行 的OPC开发资料 较少,本文基于OPC2.0标准提出基于VC++6.0开发平台的OPC服务器和客户端开发步骤及方法。

1 OPC

OPC是一个工业标准,其规范了一整套接口、属性和方法,用于各种过程控制设备之间通信。OPC规范分服 务器和客户端两个部分。

OPC服务器端采集控制设备数 据信息,并通过标 准OPC接口将数据传送到OPC客户端;OPC客户端则利用标准的接口接收数据信息。OPC服务器端由3大部分构成,即服务器、组和项。服务器对象提供设备自身相关信息,包含组对象;OPC组对象提供数据组对象相关信息以及组织数据的方法,组对象包含项对象,并管理项对象。 组对象有两种:公共组合和私有组。OPC项代表服 务器扫数据源的一个物理连接。OPC标准中最主要的是数据访问规范和报警与事件规范。数据访问规范提供访问设备实时过程数据的方法接口,报警与事件规范提供将现场设备事件或报警数据告知客户程序的通知机制。

2OPC服务器实现

2.1支持接口添加

OPC规范定义了 两种接口:自定义接 口 (the OPC Custom Interfaces)和自动化 接口 (the OPC Automation interfaces)。OPC基金会为OPC开发规范,制定了OPCDA.IDL接口描述文件,该文件描述了一个 标准OPC服务器所 该支持的 接口。 比较常用 的有IOPCServer、 IOPCBrowseServerAddressSpace、 IOPCGroupStateMgt、 IOPCSyncIO、IOPCAsyncIO2等。开发时最便捷的方法是将OPCDA.IDL文件内容复制到项目IDL文件内,添加支持接口定义。

2.2服务器接口

根据OPC标准,设计OPC服务器,由3个对象构成: 服务器(OPCServer)、组(OPCGroup)、项(Item)。一个标准的OPC服务器对象支持的接口如图1所示,带有中括号标志的接口为 可选接口,其余为必 须实现的 接口。其中,IOPCServer接口最为重要,该接口定义了组对象管理方法,包括添加组、删除组、获取组对象索引等,是必须实现的接口。此外,IOPCBrowseServerAddressSpace接口允许用户浏览服务器中的组员空间,为用户提供组员定义列表;IOPCCommon接口为某个特定的对话设置和查询本地标识;IconnectionPointContainer为支持可 连接点对 象接口,用于客户端回调。

图2为一个基本的OPC服务器所应具有类对象的关系示意图。在OPC服务器中,服务器对象管理和维护组对象,而组对象管理和维护项对象,每个项对象实际上是和设备的一个物理连接。通过项对象和设备进行数据交换。

2.3OPC同步异步通讯

OPC可采用同步或异步方式进行通信。当以同步方式通信时,客户程序对服务器进行调用,且必须等到调用全部完成后才能返回,此期间客户端程序处于等待状态, 该方式适合数据量较少情况;当以异步方式时,客户程序调用后立即返回,继而进行其它操作,当服务器所有操作全部完成后,以回调方式通知客户程序,异步适合于多客户端同时访问服务器或大数据量操作情况。在异步方式下,有4种方式可以选择:数据订阅、异步读、异步写和异步刷新。

2.4OPC服务器框架实现示例

OPC基于COM方式开发,需开发人员熟悉COM体系。可通过VC+ +6.0提供的ATL简化OPC开发。 ATL(Active Template Library),即活动模板库,是微软提供的开发COM的快捷工具。ATL中使用COM技术、C ++ 模板类技 术和C+ + 多继承技 术等。开发者使 用ATL可快速开发出COM组件。从Microsoft Visual C+ + 5.0版本开始,微软公司将ATL集成到Visual C++ 开发环境中。

如图2所示,服务器对象包含组对象、组对象组织和管理项对象。客户程序通过服务器对象接口创建组对象, 进而实现对项对象的管理。按照OPC规范设计服务器基本功能如下:1进程外服务器;2支持异步通信;3支持组对象添加和删除;4支持数据项添加和删除;5支持对服务器所包含的数据空间的浏览。

下面以服务器对象为例说明实现过程:首先,用向导生成ATLCOM工程,由于采用可执行服务器程序,所以选择Executable方式;其次,修改系统 生成的IDL文件, 添加接口定义。可以直接拷贝下载的OPCDA.IDL文件中的内容,也可用MIDL命令生成IDL文件,直接拷贝文件的方法比较简单,建议采用。修改系统生成的IDL(接口描述)文件。在IDL文件library段中增加OPC服务器应支持的接口引用。添加服务器对象OPCServer,选择类型为Simple Object对象,属性为默认值。添加服务 器类对象后,修改其头文件添加IOPCServer接口定义和方法。IOPCServer接口定义了如下方法:[1]

STDMETHOD(GetStatus)(OPCSERVERSTATUS* * ppServerStatus);

STDMETHOD(GetErrorString)(HRESULT hr,LCID locale,LPWSTR* ppString);

STDMETHOD(AddGroup)(LPCWSTR szName,BOOL bActive, DWORD dwRequestedUpdateRate, OPCHANDLE hClientGroup,LONG* pTimeBias,

FLOAT *dPercentDeadband, DWORD dwLCID, OPCHANDLE* phServerGroup,DWORD* pRevisedUpdateRate,

REFIID riid,LPUNKNOWN* ppUnk);

STDMETHOD(GetGroupByName)(LPCWSTR szGroupName,REFIID riid,LPUNKNOWN* ppUnk);

STDMETHOD(RemoveGroup)(OPCHANDLE groupHandleID,BOOL bForce);

STDMETHOD (CreateGroupEnumerator)(OPCENUMSCOPE dwScope,REFIID riid,LPUNKNOWN* ppUnk)

其中,AddGroup方法实现 添加组的 工作,Remove Group从服务器 管理的组 对象列表 内删除某 个组,GetGroupByName通过组名称获取组对象引用,GetStatus获取状态函数。对于接口方法实现,OPC标准没有定义,用户可根据硬件设备情况自行实现。

下面以笔者编写的数据采集,举例说明系统中IOPCServer接口的AddGroup实现过程:

(1)在OPCServer类对象的头文件内添加如下声明:

STDMETHOD(AddGroup)(LPCWSTR szName,BOOL bActive, DWORD dwRequestedUpdateRate, OPCHANDLE hClientGroup,LONG* pTimeBias,

FLOAT *dPercentDeadband, DWORD dwLCID, OPCHANDLE* phServerGroup,DWORD* pRevisedUpdateRate,

REFIID riid,LPUNKNOWN* ppUnk);

该声明标志OPCServer类实现了IOPCServer接口的AddGroup函数。

(2)AddGroup函数的功能为在服务器对象内添加一个组。举例如下:

以上是IOPCServer接口的AddGroup方式实现 过程。除IOPCServer接口外,还需为服 务器对象 添加IOPCBrowseServerAddressSpace接口,该接口定 义如下:[1]

public IDispatchImpl< IOPCBrowseServerAddressSpace, &IID _IOPCBrowseServerAddressSpace, &LIBID _ OPCSERVERLib> COM_INTERFACE_ENTRY(IOPCBrowseServerAddressSpace)

IOPCBrowseServerAddressSpace接口实现 提供获取OPC服务器组对象和项对象的方法,因此,该接口需要添加如下方法定义:

STDMETHOD (BrowseAccessPaths)( LPCWSTR szItemID,LPENUMSTRING * ppIEnumString);

STDMETHOD(GetItemID)(LPWSTR szItemDataID,LPWSTR * szItemID);

STDMETHOD (BrowseOPCItemIDs)(? OPCBROWSETYPE dwBrowseFilterType,LPCWSTR szFilterCriteria,VARTYPE vtDataTypeFilter, DWORD dwAccessRightsFilter,? LPENUMSTRING * ppIEnumString);

STDMETHOD(ChangeBrowsePosition)(OPCBROWSEDIRECTION dwBrowseDirection,?LPCWSTR szString);STDMETHOD(QueryOrganization)(OPCNAMESPACETYPE * pNameSpaceType);

2.5添加其余对象类

除服务器对象外,还需添加组对象CGroup类,并设置连接点,为组对象添加IOPCItemMgt接口定义和接口方法,如下所示:

STDMETHOD (SetDatatypes) (DWORD dwCount, OPCHANDLE * phServer, VARTYPE * pRequestedDatatypes,HRESULT** ppErrors);

STDMETHOD (SetClientHandles) (DWORD dwNumItems,OPCHANDLE* phServer,OPCHANDLE* phClient, HRESULT** ppErrors);

STDMETHOD(SetActiveState)(DWORD dwNumItems, OPCHANDLE* phServer,BOOL bActive,HRESULT * * ppErrors);

STDMETHOD (RemoveItems)(DWORD dwNumItems, OPCHANDLE* phServer,HRESULT** ppErrors);

STDMETHOD(CreateEnumerator)(REFIID riid,LPUNKNOWN * ppUnk);

STDMETHODIMP? ValidateItems (DWORD dwNumItems,OPCITEMDEF * pItemArray,BOOL bBlobUpdate, OPCITEMRESULT* * ppValidationResults,HRESULT* * ppErrors);

STDMETHODIMP AddItems (DWORD dwNumItems, OPCITEMDEF* pItemArray,OPCITEMRESULT* * ppAddResults,HRESULT** ppErrors);

为组对象添 加IOPCAsyncIO2和IOPCGroupStateMgt接口,并添加接口方法定义:

//IOPCAsyncIO2

STDMETHOD(Cancel2)(DWORD dwCancelID);

STDMETHOD(GetEnable)(BOOL *pbEnable);

STDMETHOD(Read)(DWORD dwCount,OPCHANDLE * phServer,DWORD dwTransactionID,DWORD * pdwCancelID,HRESULT ** ppErrors);

STDMETHOD (Refresh2) (OPCDATASOURCE dwSource,DWORD dwTransactionID,DWORD * pdwCancelID );

STDMETHOD(SetEnable)(BOOL bEnable);

STDMETHOD(Write)(DWORD dwCount,OPCHANDLE * phServer,VARIANT * pItemValues,DWORD dwTransactionID,DWORD * pdwCancelID,HRESULT ** ppErrors);

//IOPCGroupStateMgt

STDMETHOD(CloneGroup)(LPCWSTR szName,REFIID riid,LPUNKNOWN * ppUnk);

STDMETHOD(SetName)(LPCWSTR szName);

STDMETHOD(SetState)(DWORD * pRequestedUpdateRate,DWORD * pRevisedUpdateRate,BOOL * pActive, LONG * pTimeBias,FLOAT * pPercentDeadband,DWORD * pLCID,OPCHANDLE * phClientGroup);

STDMETHOD (GetState)(DWORD * pUpdateRate, BOOL * pActive,LPWSTR * ppName,LONG * pTimeBias, FLOAT * pPercentDeadband,DWORD * pLCID,OPCHANDLE * phClientGroup,OPCHANDLE * phServerGroup);

通过以上步骤,基本建立OPC服务器框架。OPC服务器中采 用聚合方 式实现对Group对象的接 口支持 。类关系图如图3所示。实现组对象聚合需要在服务对象接口映射内添加组对象支持的接口。类似如下代码:

BEGIN_COM_MAP(CServer)中添加

COM _INTERFACE _ENTRY _AGGREGATE (IID _ IOPCItemMgt,m_pms)

COM_INTERFACE_ENTRY_AGGREGATE(IID_IOPCAsyncIO2,m_pms)

COM_INTERFACE_ENTRY_AGGREGATE(IID_IOPCGroupStateMgt,m_pms)

COM_INTERFACE_ENTRY_AGGREGATE(iid,punk)用来定义要聚 合的对象 的接口,iid代表GUID,punk代表IUnknown指针。

CComObject< CGroup> * m_pms[10];//定义了10个Group对象指针。

基本对象关系建立后,为管理方便,可在对象外围添加对其管理 的容器。添加ServerManaget类管理Server对象,负责该对象的刷新工作。添加GroupManager类管理组,负责组内数据刷新、项对象管理和维护,检查异步读写通知,以及检查是否回调等。添加ItemManager用来管理项对象,如Item仿真、Item值仿真实现等。

3结语

本文所描述的开发步骤严格遵循OPC2.0标准,程序已在VC++6.0开发环境下实现。鉴于OPC标准仅定义了OPC服务器实现功能接口,没有规定实现方式和方法,开发者可根据应用环境自行实现。

摘要:工业控制类软件系统开发面临着如何有效采集数量和种类不断增多的现场设备数据,采集设备间及与控制系统间数据如何实现共享,系统如何升级和维护,如何解决不同的、相对独立的驱动程序可能存在的冲突等问题。OPC为工业自动化软件的开发提供了统一标准,能很好地解决上述问题。采用OPC标准,硬件开发商可为其硬件产品开发统一的OPC接口,软件开发者可将精力集中在其核心产品开发上。基于OPC2.0标准,利用VC++6.0开发平台可方便进行OPC服务器和客户端开发。

OPC数据访问服务器研究与应用 篇2

计算机技术的不断发展,使得应用于工业控制领域的软件与硬件设备种类越来越丰富[1],由于没有统一的通信接口标准,难以方便高效地实现来自不同厂商的应用程序与硬件设备之间的数据通信,因此严重制约了工控领域的拓展。OPC技术的出现使来自不同数据源的数据与运行在各种平台上的应用软件能够顺利地集成在一起[2]。目前,OPC技术已经成为工业控制中系统集成与数据交换的重要工具。近年来国内不少高等院校、 研究院所和软硬件开发商都对OPC技术进行了研究和开发应用。为了进一步地节约成本,减少通信驱动数量,缩短开发周期,针对嵌入式多总线RTU硬件产品开发基于Modbus TCP通信协议的OPC数据访问服务器变得非常具有现实意义。

1 OPC数据访问规范

OPC技术是COM在工业领域的一种特殊应用,针对敏感度高的实时数据,可以将其从实时数据中分离。 从COM的角度分析,OPC规范实质就是定义了一些用于实时数据存取、事件报警处理、历史数据存取等的COM对象和接口[3]。

基于OPC软总线的过程控制系统(PCS)的基本架构中,整个PCS以OPC DA服务器为中心,以从OPC DA服务器上获得的实时数据为基础,OPC AE服务器根据用户的设置进行相关逻辑分析和处理,可以产生相应的事件/报警消息发送到客户端;OPC HAD服务器将按照用户设置要求进行保存历史数据,方便客户端用户进行查询和分析统计过程数据在过去的时间段内的变化情况;OPC DX服务器根据实际现场需要可以将多个OPC DA服务器的数据联系起来,便于多个OPC DA服务器之间进行数据交换[4];OPC XML DA服务器通过将实时数据转换成XML文本,以提供将过程数据发布到互联网的功能,实现更大范围内的数据共享;OPC Security服务器提供了访问数据的安全访问机制,可以对整个PCS中的数据进行安全保护。

OPC数据访问规范是OPC协议族中的核心和基础, 其他所有的OPC相关规范都是以OPC DA规范为基础进行扩展制定的。本文主要参照OPC Data Access Specifi-cation Version 3.0研究和应用OPC DA服务器。

只要遵循OPC规范实现OPC接口的客户应用端, 即可无缝连接OPC服务器进行数据通信,一个客户应用端可以同时访问多个OPC服务器,而一个OPC服务器也可以被多个OPC客户应用端访问,根据OPC服务器提供的功能可以知道OPC服务器内部结构大致分为3部分:设备驱动模块、数据管理模块和数据调度与分发模块。如图1所示。

OPC服务器支持多客户并发访问及数据存取请求, 数据调度与分发模块对客户的访问及数据存取请求进行协调和管理,然后将具体数据存取请求交给数据管理模块,数据管理模块将数据存取请求传递给设备驱动模块,设备驱动模块将数据存取请求转换为读写设备消息,对设备进行具体的读写操作,操作完成后将数据返回给数据管理模块,数据管理模块再更新数据缓冲区中对应的数据,并将更新的数据返回给各个请求数据的客户端。

OPC数据访问规范中定义了OPC客户端和服务器如何交互数据和数据存储结构[5],OPC服务器中的数据调度与分发模块负责与OPC客户端进行数据交互,其模块实现必须与OPC规范规定保持一致。数据管理模块与设备驱动模块由于针对不同的设备,读写数据方式和获取的数据就不同,因此需要根据具体需求开发实现。因此OPC服务器的具体实现会由于不同的应用而有所不同。

通常的数据采集应用的是主从式的应用结构,客户周期性地查询服务器的数据。在这种应用模式下,增加了系统的额外开销,而且效率比较低。基于COM的OPC支持的双向通信机制,具有事件驱动功能,当OPC服务器的数据发生变化时,能够自动通知OPC客户,客户可以从周期性的轮询中脱离出来,从而大大提高了效率,降低了系统负荷。OPC规范主要定义了3种数据访问方式:同步通信、异步通信和数据订阅。

2 OPC服务器设计

由于COM规范一般以C++语言描述,所以通常采用VC++开发OPC数据访问服务器[6]。在本文中,基于Windows的Dot NET平台,利用OPC接口动态库来开发OPC服务器。本文实现的OPC数据访问服务器要完成对Modbus TCP设备的数据采集功能,提供OPC数据存取规定的定制接口,同时通过数据存取区将设备数据与OPC接口联系起来。如图2所示的OPC数据存取服务器总体结构,各个功能模块之间相对独立又相互协作, 形成了一个有机整体。

本文设计的OPC数据存取服务器属于进程外服务器,拥有独立的进程空间,与客户进行数据交换时稳定性高,同时提供了用户友好的人机界面,便于用户的自定义组态操作。OPC对象接口模块通过数据存储区间接与设备驱动相互联系,以获取数据存储区内的数据或直接访问设备获取过程数据。OPC客户程序通过Group对象访问数据存储区中的数据项,设备通信驱动周期性将最新的设备过程数据写入到数据存储区内。客户通过Server对象的IOPCBrowse接口可以浏览数据存储区内所有数据项Item对象的相关属性。

针对某国产的硬件设备多总线RTU,硬件设备通信模块实现了标准的Mdbus TCP通信协议,可以和实现标准的Modbus TCP设备无缝互联通信,简单方便地获取硬件设备的过程数据。在实际应用中,此处采用了OPCMaster的OM_OPCSvr.dll OPC接口动态库工具来实现OPC接口模块部分,Modbus TCP是Modbus协议的网络协议,TCP端口号为502。Modbus TCP在Modbus RTU协议前,增加了6个字节的协议头MBAP[7],同时去掉了2 B的CRC16校验和协议格式。通信驱动模块主要使用6种标准的Modbus功能码。当主设备向从机发送请求,希望获取一个正常响应,但是可能由于各种原因,从机返回一个异常消息帧。因此需要通过异常码来标识发生了什么错误导致了异常响应。本Modbus TCP协议通信驱动模块属Modbus Slave,需要对设备返回的Modbus TCP消息帧进行MBAP验证、请求数据获取。图3是对设备进行读取数据的流程。

为了方便用户操作和使用OPC服务器,提高人机交互性,本文设计的OPC服务器设计了类Windows窗口的用户界面。通过将属性列表来对数据项进行组织和标识,通过属性设置对话框将数据项与硬件设备的数据绑定,并将数据存储区与硬件通信接口联系起来,进而可以实现用户自定义组态功能。另外还需要将数据项的属性和设备设置参数保存到配置文件中,便于下次在OPC服务器程序启动运行时,可以自动打开组态配置文件完成初始设置。

3 OPC服务器的实现

本文设计的基于Modbus TCP OPC服务器基于Windows平台开发,开发环境详细列表见表1和图4。

在Visual Studio2010中创建一个包含Win Form的Windows窗体应用工程项目的解决方案OPCServer,此时Visual Studio 2010自动生成一个带有Windows窗体的基础代码,通过自定义窗口的菜单、工具栏、状态栏及显示区等,使得用户自定义组态功能成为可能。 将OM_OPCSvr.dll文件复制到上述创建的工程目录的bin文件下,然后创建一个类OPCAPI对OM_OPCSvr.dll进行加载,以便调用其提供的OPC接口服务。

OPC服务器程序的基础代码创建完成后,通过调用Init OPCSvr(byte *p Svr CLSID,bool b Exe Svr,DWord dw-Co Init)对OPC服务器的CLSID、程序应用模型和初始化COM库的线程模式进行初始化设置。将数据项用树形结构标识,然后设计数据项和硬件设备的数据绑定设置界面以及实时显示数据项列表界面,并将数据存储区与硬件通信接口联系起来,实现用户自定义组态功能。设计用户界面主要包括6部分,分别是:菜单栏、工具栏、 设备树形列表、标签列表、信息列表和状态栏。借助Dot Net4.0平台的Socket类定义封装了一个Tcp Socket TCP通信类,通过此类可以完成TCP连接断开、发送接收数据和发现断开自动重连功能。

在OPC服务器程序关闭时需要将数据项的属性以及硬件设备设置的参数作为组态配置文件保存起来,便于下次OPC服务器运行时能自动调入组态配置文件, 自动完成初始设置。利用Dot Net 4.0的序列化和反序列化技术,可以将数据对象序列化到文件中和将文件反序列化到数据对象[8]。

经过用户自定义组态配置好数据点后,可以运行OPC服务器开始轮询设备数据,将实时获取的数据更新到数据缓冲区内。根据OPC服务器数据结构关系, 每一个设备对应一个轮询线程,这样OPC服务器可以对多个设备独立地读写设备数据。其中轮询线程是由Back Groud Monitor类实现的。

4 OPC服务器的测试结果与分析

如表2所示,OPC服务器的测试环境包括软件环境和硬件环境。图5显示了测试环境的结构图,在一台普通操作系统为Windosw XP的普通PC机上依次安装SIEMENS Win CC6.2,KEPware测试客户端和Modbus Slave数据模拟器。通过普通双绞线将PC与交换机连接, 一台Multi Bus-RTU网口直接连接交换机,另一台Multi-Bus-RTU的RS 485口通过Multi Bus网关与交换机连接。

4.1 OPC服务器功能测试

打开KEPware测试客户端,选中“Lensys.Modbus.TCP.DA.3”节点,可建立与OPC服务器的通信连接。在Lensys.Modbus. TCP.DA.3”节点中可查看OPC服务器的属性,打开Win CC项目管理器Win CC Exploer,点击新建菜单,创建一个单用户测试项目,项目名称为OPCSer-ver Test。 创建一个如图6所示的OPC服务器测试界面。其中Multi Bus-RTU1#直接连接交换机,Multi Bus-RTU 2#通过Multi Bus网关间接连接交换机。分别获取Multi Bus-RTU的4类共8个数据,具体含义参见表3。

打开添加驱动程序对话框,完成添加OPC接口驱动程序,打开OPC服务器,测试页面组态Multi Bus-RTU1#设备和Multi Bus-RTU 2#设备数据点的轮询周期为500 ms。

打开OPC条目管理器,选则要连接的OPC服务器,点击”浏览服务器“按钮,查看OPC服务器内的数据地址空间,依次将需要存取的数据点添加到变量管理器中。依次将变量管理器中的OPC数据点与组态表格中的值列关联,至此基于Win CC完成了对OPC服务器的测试项目。

4.2 OPC服务器性能测试

OPC服务器的性能测试需要大量数据源才能进行, 由于Multi Bus-RTU可以提供的数据量有限,因此利用Modbus Slave提供数据源。通过Modbus Slave,可以模拟一个通信协议为Modbus的设备,这个设备可以包含无限量的数据。打开一个Modbus Slaves进程,配置设备ID为1,通信参数Port为502,IP默认为本机地址。然后依次配置如表4所示的数据点。

按照上述配置,依次打开10个Modbus Slave进程, 此时有了10个模拟设备,每个模拟设备包括4类数据, 每类数据数量为25个,即共计1 000个数据点。

经过上述Modbus数据源配置、OPC服务器配置,首先将10个模拟设备(Modbus Slave)进行本地TCP绑定, 作为数据提供源;其次点击OPC服务器界面工具栏中的“启动服务器”按钮,则OPC服务器开始存取10个模拟设备数据,此时观察OPC服务器下侧的信息列表,是否有警告或错误信息,打开Windows任务管理器,观察OPC服务器进程的CPU和内存消耗。经过1天时间的测试,无任何警告或错误信息,OPC服务器进程的CPU占用保持在3%左右,内存消耗保持在8 MB左右。

5结论

本文基于Modbus TCP协议的OPC数据存取服务,在对市场进行深入调研的基础上,结合国产嵌入式产品工程应用的现状,开发了OPC数据存取服务器。通过OPC数据存取服务器实时获取设备过程数据,利用国内外现有SCADA的OPC客户端接口,轻松地实现了与某国产Multi Bus-RTU互联通信。不仅利用了OPC的技术优势,如访问速度和稳定性,还节约了成本,减少了通信驱动数量。鉴于Windows在工控领域的成熟度和稳定性,以及Dot Net Frame Work的跨平台性,基于Dot Net4.0平台封装OPC接口,通过编程实现了Modbus TCP通信协议以及良好的人机交互界面,并通过了功能测试和性能测试。

摘要:针对OPC技术在国内的应用现状,以OPC数据的存取规范为依据,利用国产Multi Bus-RTU系列模块基于Modbus TCP协议对OPC数据访问服务器进行开发,设计采用OPCMaster公司的OPC开发工具OMOPCSvr.dll实现OPC数据传输服务器的开发,通过以太网方式,在Modbus设备和OPC客户端之间提供数据交换通道。通过对OPC数据访问服务器结构和操作流程的设计,构建了服务器的功能框架。基于Modbus TCP OPC服务器和Windows平台,通过对服务器进行初始化,对通信驱动模块和用户界面进行规划,进而对OPC数据访问服务器进行了详细的实现。通过进一步的OPC服务器测试发现,该服务器具有可靠的稳定性,能切实地节约成本,减少通信驱动数量,并缩短开发周期。

关键词:OPC服务器,COM/DCOM,数据访问,Modbus TCP

参考文献

[1]李绍成,马连祥.面向PLC的OPC服务器设计与开发[J].制造业自动化,2011,33(12):19-21.

[2]望荆沙.基于OPC DA 3.0的OPC服务器与客户端的研究与实现[D].西安:西安电子科技大学,2012.

[3]孙绪洁,梁岚珍.基于TLSvr RDK.dll技术的电厂燃煤数据OPC服务器研究[J].化工自动化及仪表,2011(12):1461-1465.

[4]刘瑞祥,倪福生,顾明.基于VC++和OPC的冗余监控程序设计[J].机电工程,2012,31(8):1094-1097.

[5]杨之乐,郑学理,苏伟,等.工业无线网络测控系统OPC数据服务器的设计实现[J].计算机测量与控制,2013,21(4):865-869.

[6]吕亚锋,成立存.基于Modbus TCP/IP协议的海上油田发电机组网络监控系统[J].北京联合大学学报:自然科学版,2014,28(3):389-393.

[7]黄礼超,巫茜.基于OPC的工控系统软件集成[J].重庆理工大学学报:自然科学版,2012(3):109-113.

OPC服务器 篇3

PLC技术在港区电控领域的广泛应用大大提高了港口机械控制和管理自动化的程度,降低了劳动强度,提高了劳动生产效率。与此同时,随着各种微处理器的应用港口机械过程控制本身也发生了巨大变化,控制方式多种多样,复杂程度不断提高,控制功能也越来越丰富,牵涉不同厂家的设备越来越多。

现在港口实际控制过程中可能包括成百上千的不同类型和不同厂商的硬件采集控制设备和对应的监控程序,如何使他们有机协调地工作在一起,实施工作过程监控,已成为港口机械自动控制领域研究人员比较关心的问题。目前各个PLC厂商都不约而同的推出了自己个别型号PLC的OPC服务器接口标准和数据库界面,可是在港口机械监控系统上应用还没有推广,关键原因是对OP C服务器的规范和开发设置使用步骤不太了解,本文旨在探索和提供一条开发OPC服务器和设置实现OPC服务器的应用路径。

OPC的概念及解决的问题

港区电控系统规模越来越大,不同厂家生产的现场设备的种类在不断的增加,由于不同厂家所提供的现场设备通讯机制不尽相同,计算机监控系统软件需要开发的设备通讯驱动程序也越来越多,而基于COM/DCOM技术的OPC技术,通过一个统一的OPC技术规范标准,不同厂商只要遵循OPC技术标准就可以实现软硬件的互操作性。OPC是Object Linking and Embedding(OLE) for Process Control的缩写。它是微软公司的对象链接和嵌入技术在过程控制方面的应用。OPO以OLE/COM/DCOM技术为基础,采用客户/服务器模式,为工业自动化软件面向对象的开发提供了统一的标准,这个标准定义了应用Microsoft操作系统在基于PC的客户机之间交换自动化实时数据的方法。

传统港机监控系统中任何一个人机界面软件(HMI)或上位机监控界面软件或数据分析监控软件在监控某种应用设备不得不开发特定的驱动程序才能完成工作任务,实现监控目的。这种结构缺陷显而易见,一旦系统功能扩充或硬件更换都会造成驱动程序的开发和增加,后果只能是程序开发人员花费大量的精力和时间去一一对应开发驱动程序,重复开发而且不可避免。

OPC技术模式的标准决定了硬件开发商若要取代软件开发商开发驱动程序的目的必须为自己的硬件产品设计统一的OPC接口程序,同时无需配备多种多样的驱动程序。这样就解决了厂家不公开公司内部协议的基础上又让需要进行数据采集、监控和分析的第三方软件获取硬件设备数据的问题。所以,只要符合OPC服务器的规范,OPC客户都可以采集硬件设备数据,硬件厂家的工作只局限在开发一套驱动就可以满足多种不同功能系统的需要;而软件开发商的工作不是去开发各种各样的驱动程序而是去开发一套符合OP C服务器标准的客户端程序。这样对软件开发者来说就不必了解硬件设备究竟是何厂家,更不必了解设备内部硬件工作原理就可以实现软件接口的开发,实现数据的监控,比较理想的解决了传统过程控制系统中的矛盾。

OPC服务器类及数据结构设计

由于OPC技术规范对Server对象和G roup对象支持的接口作了具体的规定,为此,在本文设计的OPC服务器中实现了OPC规范中定义的一些类和数据结构,包括:服务器类:OPCSever类、OPCGroup类、OPCItem类、OPCItemtag类、CSafeLock类;服务器接口类:IOPCServer类、IOPCPGSM类、IOPCData类、IOPCASIO类、IOPCEnumIA类、IOPCEnum-String类、IOPCEnumUnknown类、1OPCIM类、IOPCPF类、IOPCASIO类以及与底层现场设备通信类OPCDvData类。下面介绍在课题研究设计中使用的主要的两个类的设计过程。

OPCServer类实现Server对象,Server对象所支持的接口由OPC规范定义。OPCServer类是用来管理Server对象中规范定义的接口。在此类中给出了一些它管理的接口类的指针和一些功能函数,它们是为IOPCServer接口实现枚举功能服务的。管理接口类的指针主要有:IOPCServer*m_pI-Server;IOPCPF*m_pIPF。此类中还定义了以下两个主要函数,分别是接口查询函数和实现枚举功能的函数,同时给出实现枚举功能函数的部分实现。

OPCGroup类实现Group对象,G roup对象主要提供了管理Item对象和提供给客户程序读写数据的接口,例如:IOPCSIO、IOPCASIO等。在OPCGroup类中定义了下列主要成员变量:OPCServer*m_ParentServer;指向创建Group对象的Server对象的指针;CHAR*m_sz-Name;Group对象的名字;BOOL m_bActive;Group对象的状态;TEMMAP itemmap;存放Group对象中的所有Item对象列表;DWORD m_scan;更新时间;LONG m_TimeBias;当客户端程序运行在一个时区,而数据是从运行在另一个时区的设备上收集时,m TimeBias提供把客户端程序收到的数据的timnestamp转换成设备的本地时间所需要的信息。

此类,为客户端访问数据提供读写地址服务,是本课题研究中使用最多的类。由于其它类的使用次数较少,这里不再继续赘述。

利用OPC监控港口机械控制核心PLC内部数据

在港口机械控制过程中S I-EMENS公司PLC作为控制核心应用比较广泛,这里利用我们常见的几种客户端程序监控S7-200内部数据。

这里主要是讨论监控过程,笔者只在PLC内部利用程序建立了两个过程变量,以便用于客户端采集。同样在港机控制过程中,有如电动机转速、各个执行器件工作状态、殊荣控制部件的操作、作业件数、小车运行当前位置、当前频率值、平均频率值等大量的数据需要监控。对于这些数据的监控不只是一个客户,也不只是一个客户端,这个问题的解决就要依靠OPC服务器的支持。

把编写的PLC程序下载到PLC并运行,然后打开PC Access进行服务器配置,首先从编辑/新建/P L C,进行PL C的服务器影像创建,并设置通信端口PC/PG,通信速率9600bit/s;无奇偶校验,数据位8位,停止位1。

然后建立条目,点击编辑/新建/条目,对PLC内部数据VB100、VB101,Q0.1和Q0.5进行条目创建。

由于OP C服务器是基于组建技术,每个公司在对驱动程序开发的时候都会配送大量动态连接库组建即DLL文件。我们利用Excel中宏的功能加载这些动态连接库文件就可以实现在Excel中监控采集S7-200中的数据。

客户端程序利用OPC服务器实现数据监控。比如北京亚控公司和SIEMENS公司的WINCC等上位机软件都可以通过OP C服务器发布的数据进行监控和采集,都很方便。总之只要是客户端程序有符合OPC服务器标准的接口都可以实现对OPC服务器的读写。利用OPC服务器可以方便实现不同客户端和不同客户端程序对同一设备的不同监控。

由于OPC服务器的开发和使用都教方便,同时各个硬件生产厂商对于O P C服务器的认识逐步达到了统一,各种新型号的自动控制设备都配备OPC的标准软硬端口。

此次课题研究过程中使用O P C服务器进行了上位机大屏幕监控设计,同时利用EXCEL进行了在线数据采集,方便实现了不同厂商设备间的数据交换。

OPC标准应用研究 篇4

一、OPC的基本结构及服务器对象

1. OPC的整体结构。

OPC的结构为客户/服务器模式。当客户访问数据时, 物理设备的原始数据或经物理接口直接递交服务器, 或通过物理接口、SCADA/DCS系统、OPC接口递交服务器, 最后由服务器完成与客户的数据交换。在此过程中, 服务器统一并优化不同客户的数据访问, 以达到与物理设备的有效通信。输入 (读时, 有设备返回的数据存放在服务器缓冲区中, 以满足不同OPC客户的异步数据分配或同步数据收集要求。输出 (写) 时, OPC服务器代替OPC客户刷新物理设备数据。虽然OPC的设计主要从网络服务器处访问数据, 但实际中的OPC服务器可以是能从物理设备收集数据的本地或远程EXE程序。此外, OPC服务器必须实现定制接口, 可选择实现自动化接口。

2. OPC服务器对象。

在逻辑层次上, OPC服务器包含3个对象:服务器对象、组对象和项目对象。OPC服务器对象包含了服务器自身的有关信息, 并用作为OPC组对象的容器。它为OPC客户提供了建立和操作OPC组对象的功能。同样, OPC组对象包含了自身有关信息并组织OPC项目对象。组对象还为客户应用程序预定功能, 当项目发生改变时, 客户可及时得到通知。至于项目对象则代表一种与服务器中数据源的连接关系, 客户程序正是通过这种连接关系来访问数据的。

二、OPC定制接口

OPC服务器对象和组对象的各接口都是以C++语言编写的。需要知道的是, OPC规范中并没有给出各对象接口的具体实现, 而是只描述了它们的外部功能, 这些外部功能正是程序所关心的。

1. OPC服务器的对象。

OPC服务器对象是OPC的首要对象。提供的接口如下:Iunknown接口是COM的标准接口;IOPCServer接口对组对象进行有关操作, 获取服务器状态信息等;IOPCServer Public Groups接口为客户和服务器提供了方便管理这些公共组的功能。IOPCBrowse Server Address Space接口提供了客户浏览服务器数据项目的功能, 它给出项目标示的有效定义。IPersist File接口允许客户装载或保存服务器的配置信息。

2. OPC组对象。

OPC组对象是由OPC服务器创建的用以管理项目集合的对象, 此对象提供的接口如下:Iunknow接口是COM标准接口;IOPCItem Mgt接口允许客户添加、删除和控制组中的数据项目;IOPCGroup State Mgt接口允许客户管理组中所有状态信息, 包括刷新速度、名称、时差、百分数死区和客户句柄等。这些状态信息影响接口和接口中方法的操作;IOPCPublic Group State Mgt接口用以将私有组转换成公共组。因为客户创建的组都是私有组, 为实现数据项目的共享, 必须使用此接口来转换;IOPCSync Io接口允许客户对服务器执行同步读写操作。所谓同步是指客户在一次事务中读写数值和属性的能力。接口中的同步读方法从高速缓存或设备中为组中项目读取有关信息;接口中的同步写方法将数值写到设备中, 在返回之前, 这些方法必须运行到结束;除同步接口外, OPC提供了IOPCAsync Io这样的异步接口。IOPCAsync Io允许客户对服务器执行异步读写操作。多个异步操作同时出现时, OPC用排队的方式处理它们, 并让每个异步操作结束后立即返回以使客户程序继续执行。IEnum OPCItem Attribute接口允许客户检查组中内容以及这些项目的属性;Idata Object允许在客户和使用OPC数据流格式的组之间产生连接, 以达到高效的数据传输。

3. 客户方接口。

Iadvise Sink接口由客户提供, 处理从OPC组中产生的回调函数的原因可能是数据发生变化、异步读、刷新和异步写完成。在回调函数中, 包含有事务标志的数据流从服务器传递给客户。客户通过检查数据格式和事务标志来判断回调函数产生的原因。此外, 客户可以将传递过来的事务标志保存在事务列表中, 以检查每一个事务的完成情况。

三、OPC自动化接口

设计自动化接口的目的是方便使用Visual Basic、Delphi或其他嵌有自动化功能的软件与OPC服务器接口。

1. OPC服务器对象。

此对象与运行的服务器相连。客户在使用自动化接口时, 必须在产生组对象和项目对象前创建此对象。IOPCServer Disp为OPC服务器对象的缺省接口, 对组对象、配置信息等进行有关操作;PCServer Public Groups Disp接口用以对公共组的管理。如获取公共组的组名、删除公共组等;PCBrowse Server Address Space Disp接口提供了客户浏览服务器数据项目功能。给出项目标志的有效定义。

2. OPC组对象。

此对象用以管理项目对象集合。IOPCItemMgt Disp接口允许客户添加、删除和控制组对象中的数据项目;IOPCGroup State Mgt Disp接口允许客户管理组对象中所有状态信息。主要用于对组的刷新速度和活动状态进行修改;IOPCSync IoDisp接口允许客户对服务器执行同步读写操作。接口中的同步读方法从高速缓存或设备中为组中项目读取有关信息;接口中的同步写方法将数值写到设备中。在返回之前, 这些方法必须运行到结束。IOPCAsync Io Disp接口允许客户对服务器执行异步读写操作, 多个异步操作同时出现时, OPC用排队方式处理它们, 并让每个异步操作结束后立即返回以使客户程序继续运行。每一异步操作都当成事务处理, 并被赋予事务标志。当操作完成时, 回调函数把事务处理结果和事务标志传递给客户方Iadivse Sink接口;IOPCPublic GroupState Mgt Disp接口将私有组转换成公共组。由客户创建的组是私有组, 此接口可以从私有组中获得。

3. OPC项目对象。

IOPCItem Disp接口提供了项目对象的属性和方法。接口中的读方法从数据源 (高速缓存或设备) 读取项目的有关属性和数值。接口中的写方法将数值写到设备中。

4. 客户方接口。

基于OPC技术的数据采集系统 篇5

数据采集系统在现代钢铁企业中具有广泛的用途。企业在发展过程中,有时会同时出现多个不同型号、不同厂家的自动控制系统,给数据采集带来了诸多不便。沙钢集团润忠高线一车间和沙景棒线一车间各有两个自控系统,系统间不仅地理位置分散且相互之间无数据交换。随生产规模扩大和管理水平提升,原有的体系结构存在的诸多弊端显现出来:1)两车间的四个控制系统不仅相互独立且种类多,无法实现产品性能的在线预报;2)这些系统都没有实时和历史数据的存储和查询,给生产管理带来诸多不利影响;3)系统中无加热炉炉内跟踪画面;4)系统分布较分散,无法集中在一个地方进行监控。

因此,在原有系统的基础上,将不同系统融合在一起,新增加热炉跟踪画面,实时储存线材产品相关数据,实现线材产品性能在线预报势在必行。本文综述了不改变现有控制系统的情况下实现一个基于O P C技术的数据采集系统[3]。

2 OPC技术概述

OPC全称是OLE for Process Control,以微软公司的O L E/C O M和D C O M机制作为应用程序的通信标准,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。COM是Component Object Model的缩写,是所有O L E机制的基础。C O M是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。[1,2]

通常组态软件通过驱动程序与工业设备通信,而不同的厂商和工业设备往往需要不同的驱动程序,这不仅提高了系统开发的成本,不利于系统硬件的改变和升级,同时也容易带来系统的兼容性问题。

OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。

3 系统概述

现有控制系统(以润忠高线一车间为例)使用的软件为Windows 2000 Server、Intouch 9。硬件为Siemens公司的S5 155U,一共有6套;加热炉现有的控制系统为S7 400,一共有2套。

3.1 设计思路

考虑到现场情况和用户需求,数据采集系统总体设计思路为:保留原有系统的总体架构不变,根据实际统需要,润忠高线和沙景棒线均增加加热炉炉内跟踪画面,留有线材产品数据的录入界面且人机界面友好、便于操作;润忠高线和求的数据格式和文件名称存储其数据于Oracle数据库中;数据服务器安装INSQL用于存储线材性能在线预报系统的历史数据,增加数据库管理功能,使查询准确、方便;实现I N T O U C H和O R A C L E、INSQL相互之间通信。

3.2 系统结构

从网络结构上看,一共分为两层,其中应用服务器、数据服务器、加热炉新增计算机装有双网卡,他们向下与轧线PLC和加热炉PLC连接;向上和性能预报计算机形成上层的网络,系统结构图如图2所示,网络布置图如图3所示。

数据采集的通讯分成2个部分,轧线S5 155U的通讯通过粗缆转RJ45转换器连接Siemens的H1网和应用服务器,在应用服务器上安装S5 OPC Server软件,以OPC的通讯方式将S5上的数据项读取到应用服务器上的Intouch中,并按照与性能预报系统约定好的数据项名存入Oracle 10g数据库中;安装在性能预报计算机上的沙钢润忠高线性能预报模型软件通过以太网读取存储在Oracle 10g数据库中的数据。加热炉新增计算机上的Intouch通过DA server访问加热炉S7-300PLC。

4 系统通信及配置

由于润忠高线的P L C有西门子S 5、S 7 P L C,INTOUCH采用不同的OPC Server与这两种PLC通讯,与S7的通讯采用Wondware公司的DA Sever(Data Access Server),与S5的通讯采用第三方OPC Server(本文不展开叙述)[4]。

Wonderware的DA Servers产品应用了基于工业标准的ArchestrA技术、Wonderware的SuiteLink协议、OPC技术以及DDE,从而可以将Wonderware软件与第三方产品连接,并符合O P C的设备及应用。Wonderware DA Servers还支持同时连接到多个客户端节点,使得用户能够轻松地扩展其现有的H M I、S C A D A和生产与绩效管理应用软件。

4.1 S7-300 PLC通讯配置

首先,安装DA Server软件,然后打开SMC(System Management Console),单击DAServer Manager项,再单击ArchestrA.DASSIDirect.1,具体配置如图4所示。

第二步,配置访问名,配置图如下:

第三步,数据绑定。为保持数据库的实时更新,INTOUCH中将标记名与数据库中的相应表的字段进行绑定,配置如图5所示。

5 系统实现

系统的人机界面由加热炉监控画面和产品性能预报监控画面等组成;

5.1 加热炉监控画面

加热炉画面实时显示反应加热炉状况的重要数据,同时根据钢号首先从v_zl_hx库中查找该钢号的化学成分,如存在,则将该钢号化学成分显示在监控画面中;若不存在,给出提示,并在v_vod_chemical数据库中寻找;若v_vod_chemical数据库中无此数据则给出提示,提示操作人员通知实验室分析员增加此批钢化学成分。画面中要求显示正轧炉号、待轧炉号、钢号、规格、坯宽、坯长、终轧速度、支数,实时显示每根在加热炉生产线中的位置。

5.2 产品性能预报监控画面

应用服务器画面中,显示8个温度点、6个水流量、13个风量数据,以及当前位于加热炉中钢的化学成分和操作参数,如:C、S、P、Mn、Si、Cr、Ni、Cu、Nf、炉号、钢号、规格、坯宽、坯长、终轧速度等。

6 结束语

本文介绍了基于O P C技术的数据采集系统的通信原理和实现方法。这种通信技术很广泛的应用于系统的综合自动化及监控中,本文阐述的基于OPC技术数据采集系统系统在沙钢轧钢性能在线预报系统中投入运行以来,通信正常,运行良好,易于维护。

参考文献

[1]邓全亮,益仁.基于OPC技术的系统集成[J].计算机应用研究,2005,22(1):28-36.

[2]马龙华等.OPC数据存取规范的研究和应用[J].化工自动化及仪表.2002.29(1):43-45.

[3][德]W.韦贝尔等.钢铁生产自动化[M].上海:上海科学技术出版社,1984

模拟机中OPC接口技术研究 篇6

用于过程控制的OPC (OLE for Process Control) 标准是为解决现场管理层和过程管理层之间的通信标准而设计的规范, 已在工业控制中有着广泛的应用。OPC基金会会员包括世界上所有主要的自动化控制系统仪器仪表及自动化控制系统公司, 例如德国西门子公司的Win CC软件已经集成了OPC服务。OPC规范定义了一个开放的接口, 在这个接口上, 基于不同平台的软件组件能够灵活、高效地获取数据, 实现交互操作。

模拟机仿真平台通常提供专用接口实现仿真主机、盘台控制计算机、第三方软件之间的数据及控制命令传输。当模拟机采用新的厂商的硬件板卡或者需要再次合作开发时, 需要重新开发通信接口。近年来, 随着DCS系统广泛应用, DCS仿真已成为模拟机的不可缺少的组成部分。安全级和非安全级DCS以及专用仪控系统可能由分散的不同厂家的设备和方案组成, 数据量、计算量较大。仿真主机与DCS仿真系统之间也需要再次开发通信接口。

作为连接模拟机各个节点之间软件总线, 接口软件的性能直接地影响模拟机系统性能, 从而影响模拟机项目的质量。好的接口软件系统在开发层面提供测试充分的API函数及常规的开发模板, 在应用层面提供稳定、可靠的数据传输服务及使用方便的测试工具。基于OPC技术的模拟机接口系统能够较好地整合DCS仿真系统与传统的模拟机系统, 使模拟机易于升级和扩充, 标准的通讯协议能保证通信更稳定, 通用的测试工具及测试方法能够缩短模拟机项目的开发周期。

1 OPC技术

基于OPC技术的系统采用客户端/服务器模式, OPC服务器是数据的供应方, 客户端是数据的使用方。每个OPC服务有唯一的标志 (CLSID) 。一个OPC客户端可以同时连接到一个或多个不同厂家的OPC服务器。数据存取服务器是由服务器 (Server) 对象、组 (Group) 对象和项 (Item) 组成。服务器对象包含服务器信息, 是组对象的容器。组对象包含自身信息, 是项的容器。OPC项描述了服务器中数据源的连接, 包含值 (value) 、品质 (quality) 和时间邮戳 (Time Stamp) 。

OPC客户端可以采用同步访问、异步访问或订阅方式从OPC服务器端获取数据。在同步访问方式中, OPC服务器把按照客户端的要求得到的数据访问结果作为方法的参数返回给客户端, 客户端在结果被返回前必须处于等待状态。在异步访问中, OPC服务器收到OPC客户端的要求后, 几乎立即将方法返回, 客户端随后可以进行其他处理, 当服务器完成数据访问时, 触发客户端的异步访问完成事件, 将数据访问结果传送给客户端, 客户端在事件处理程序中接受从服务器传送来的数据。在订阅方式中, 不需要OPC客户端向OPC服务器请求, 服务器按一定的更新周期更新数据缓冲区的数值时, 如果发现数值有变化时, 就会以数据变化事件通知客户端。

开发符合OPC规范的应用程序主要有两种方式:1) 利用软件开发商提供的API。这种方式能够提高程序的质量、缩短开发周期, 可以较少的关注细节, 将注意力集中到专业领域;2) 根据OPC基金会免费提供的规范开发, 这需要了解底层细节, 熟悉COM、DCOM技术。

在模拟机接口系统软件中应用, 适合第一种方式, 例如使用成熟的OPC技术开发商开发的工具软件产品。这些软件产品技术稳定、通用性好, 提供工程模板可生成vs.net工程, 提供库函数帮助文档、程序demo及测试工具OPC demo client, 开发、测试都比较方便并且可以为使用者提供相应的技术服务。

2 基于OPC的接口系统

2.1 工作流程

基于OPC的接口系统工作流程图见图1。

OPC服务器程序首先创建服务器对象, 创建数据地址空间, 然后创建请求处理进程, 等待客户端接口调用, 通过响应请求实现一系列功能, 例如获取服务器状态, 添加、删除OPC数据项, 获取或设置数据项的值等。

OPC客户端程序创建客户端对象之后, 创建和服务器端连接。连接成功后, 不断向服务器发送请求, 得到反馈信息。

2.2 全范围模拟机异构平台系统

在OPC XML-DA规范发布之前, OPC技术依赖于Microsoft的COM、DCOM技术, 仅限于Windows操作平台。XML-DA基于Web Services概念, 用SOAP (简单对象访问协议) 对应用程序消息进行包装, 在客户端和服务器端通过HTTP进行数据传输, 使得OPC的跨平台通信成为可能。

2.2.1 系统结构

本系统结构的特点是, 多个OPC服务端除了相互发送和接收数据外, 还分别为各自的客户端提供数据。仿真主机搭载LINUX操作系统, 而DCS仿真主机、盘台工控机搭载Windows操作系统, 第三方软件运行在搭载LINUX或Windows的计算机上。在这种体系结构下, 使用软件开发商提供的Easy Connect连接管理工具, 可以方便地实现两个OPC Server直接交换数据。通过配置, 为两个数据源建立桥连接, 确定对点关系, 将各自的数据项导入到Easy Connect的名字空间, 见图3 (服务器至服务器数据对点窗口) 。Easy Connect负责在OPC Server对应的数据项之间复制数据。仿真主机能够通过服务器间数据交换和盘台工控机、DCS主机快速交换数据。同时存在的C/S模式又可以保证局域数据在各自的范围内高效传递。

Easy Connect能够将数据存储到 Microsoft SQL Server,  Oracle,  My SQL,  IBM DB2 等支持ODBC接口的数据库, 支持通用的SQL语句, 或者以*.txt,  *.xml ,  *.html格式输出数据。

2.2.2 系统配置

对于跨平台异构系统, 研究出2种应用用法。

1) OPC客户端程序运行在LINUX端。在Windows端通过Easy Connect建立桥连接 (OPC bridge) 。配置OPC客户端属性, 包括激活OPC XML-DA服务, 设置存放地址 (Address Suffi) 及TCP/IP端口号。

在LINUX端编写OPC客户端程序, 工作流程见图1, 在建立连接对象时, 传入参数:http://Windows IP Address:Port/Address Suffi。

2) OPC服务器程序运行在LINUX端。在LINUX端编写OPC服务程序, 工作流程见图1, 需要设置服务的CLSID, 最小更新速度, 客户端检测周期, 设置存放地址 (Address Suffi) 及TCP/IP端口号等参数。

在Windows端通过Easy Connect 建立本地OPC服务器, 为Linux OPC服务器建立的本地服务器类型设置为XML-DA Server, 设置外部OPC服务的地址:http://Linux IP地址:端口号/Address Suffi, 设置连接外部OPC服务的用户名和密码。设置完毕, 进行测试判断连接是否成功。如果连接成功, 启动Softing OPC Toolbox Demo Client, 添加服务地址, 能够观测Linux OPC地址空间的各个变量 (Item) 的值及其它属性。

3 结论

本接口系统已在某核动力装置模拟机中应用。本文只讨论了OPC数据存取在模拟机接口系统中应用。OPC报警与事件、历史数据存取等规范在模拟机系统中都有应用场景。OPC报警与事件规范提供了当特定的事件和报警发生时, 客户端程序可从服务器得到通报的机制, 允许客户端确定事件和条件。OPC历史数据存取规范可提供原始数据或压缩数据的存储机制, 还提供汇总、分析数据功能。此外还有批量数据存取规范, 安全性规范等。这些技术在模拟机系统软件中应用有待于进一步研究、尝试。OPC标准接口的引入, 必然会使模拟机系统更实时, 更稳定、开放, 易于扩展、掌握和实施。

摘要:全范围模拟机被广泛地用来培训操作人员, 进行设计优化和验证、技术改造验证。模拟机仿真平台通常提供专用接口实现仿真主机、盘台数据采集计算机、DCS系统、第三方软件之间的数据及控制命令传输。作为连接模拟机各个节点之间软件总线, 接口系统的性能直接影响着模拟机系统性能。OPC技术在工业控制领域有着广泛的应用, 将OPC技术在模拟机接口系统中应用, 介绍了工作原理, 给出了工作流程、异构平台系统结构及配置实现方法。研究结果说明, 基于OPC技术的接口系统能够较好地整合DCS系统与传统的模拟机系统, 使模拟机运行稳定, 测试方便, 易于升级和扩充。此接口系统已在某核动力装置模拟机中应用, 满足客户要求。

关键词:模拟机,接口,OPC,XML-DA

参考文献

[1]ANSI/ANS-3.5-2009“nuclear power plant simulators for use in operator training and examination”

[2]彭瑾, 王锦标.新的OPC规范——OPC XML-DA[J].冶金自动化, 2004, 28 (1) :6-9.

上一篇:应当意识下一篇:破碎施工