搜档网
当前位置:搜档网 › 一个OPC服务器的简单实例

一个OPC服务器的简单实例

一个OPC服务器的简单实例
一个OPC服务器的简单实例

首先我们先来看一下什么是OPC

OPC (OLE for Process Control——用于过程控制的OLE)是基于Microsoft公司的DNA (Distributed Internet Application)构架和COM(Component Object Model)技术的一个工业标准接口,是根据易于扩展性而设计的。

再来了解一下OPC的用途

OPC主要适用于过程控制和制造自动化等应用领域。OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来然后我们再来看看OPC Server的组成

一个设备的OPC Server主要有两部组成,一是OPC标准接口的实现;二是与硬件设备的通信模块。

实现OPC 标准接口

在这些接口中,IOPCServer 是OPC Server的主接口,通过它实现OPC Server在操作系统中的安装和注册。此接口是必须要实现的,其所有方法也必须实现。其它的接口都是可选的我们就不做介绍了,下面主要来介绍如何实现IOPCServer接口。

在IOPCServer接口中共有六个法:

1、IOPCServer::AddGroup

HRESULT AddGroup( [in, string] LPCWSTR szName,

[in] BOOL bActive,

[in] DWORD dwRequestedUpdateRate,

[in] OPCHANDLE hClientGroup,

[unique, in] LONG *pTimeBias,

[in] FLOAT * pPercentDeadband,

[in] DWORD dwLCID,

[out] OPCHANDLE * phServerGroup,

[out] DWORD *pRevisedUpdateRate,

[in] REFIID riid,

[out, iid_is(riid)] LPUNKNOWN * ppUnk ;

此方法是在OPC Server上建立一个组。下在我们来实现这个方法:

….

….

首先要对组名(szName)进行检查,看是否有效或是否已经有这个组。

if (szName != NULL)

{

RequestedName = szName;

if (RequestedName == ""

RequestedName = pSvrObject->DefaultGroupName();

}

else

RequestedName = pSvrObject->DefaultGroupName();

for (i=0; iNumbrGroups(); i++)

{

pGroup = pSvrObject->GetGroup(i);

if (RequestedName == pGroup->Name)

return (OPC_E_DUPLICATENAME);

}

这需要在内存中维护OPC Group(组)的列表(还要有OPC 项的列表)。

如果szName(组名)正确并且没有建立过该组,就开始根据传过来的参数进行组的建立,建立好后将该组加到自己的组列表中以备后用。

if ((dwRequestedUpdateRate == 0) || (dwRequestedUpdateRate < pApp->ServerTickRate)) ActualRate = pApp->ServerTickRate;

else

{

ActualRate = dwRequestedUpdateRate;

MinRate = pApp->ServerTickRate;

ActualRate += (MinRate/2);

ActualRate /= MinRate;

ActualRate *= MinRate;

}

if (pRevisedUpdateRate)

*pRevisedUpdateRate = ActualRate;

pGroup = new (COPCGroup);

if(pGroup == NULL)

return (E_OUTOFMEMORY);

pGroup->Name = RequestedName;

pGroup->pSvrObject = pSvrObject;

pGroup->MarkedForDeletion = FALSE;

pGroup->ClientGroupHandle = hClientGroup;

pGroup->UpdateRate = ActualRate;

pGroup->IsActive = bActive;

if (pPercentDeadband)

pGroup->Deadband = *pPercentDeadband;

else

pGroup->Deadband = 0.0;

pGroup->LCID = dwLCID;

if (pTimeBias)

pGroup->TimeBias = *pTimeBias;

else

{

_ftime( &timebuffer ;

pGroup->TimeBias = timebuffer.timezone;

// pGroup->TimeBias = 300L;

}

r1 = pGroup->QueryInterface(riid, (LPVOID*) ppUnk);

if(FAILED(r1))

{

// If error - delete group and return

delete (pGroup);

return r1;

}

pSvrObject->AddNewGroup(pGroup);

最后将新建组的接口指针返回给客户端。

*phServerGroup = pGroup->ServerGroupHandle;

2、IOPCServer::GetErrorString

HRESULT GetErrorString( [in] HRESULT dwError,

[in] LCID dwLocale,

[out, string] LPWSTR *ppString ;

为Server的错误代码返回相应的错误字符串。

char buf[128];

BOOL bFound = FALSE;

for( int i = 0; i < nOpcErrors; {

OpcError* e = &OpcErrors[i++];

if( (bFound = (hr == e->hrErr)) != FALSE {

strcpy( buf, e->ErrText ;

break;

}

}

if( !bFound

{

DWORD dwStatus

= FormatMessage(

FORMAT_MESSAGE_FROM_SYSTEM

| FORMA T_MESSAGE_ARGUMENT_ARRAY, // Arguments is not a va_list NULL, // LPCVOID pointer to message source

hr, // DWORD requested message identifier

LANG_NEUTRAL, // DWORD language identifier for message

buf, // LPTSTR pointer to message buffer

127, // DWORD maximum size of message buffer

NULL ; // va_list *Arguments address of array of message inserts

if( !dwStatus {

_snprintf( buf, 127,

"", hr, hr ;

}

}

*ppString = pApp->WSTRFromCString( buf, TRUE);

3、IOPCServer::GetGroupByName

HRESULT GetGroupByName( [in, string] LPCWSTR szName,

[in] REFIID riid,

[out, iid_is(riid)] LPUNKNOWN * ppUnk ;

通过指定的组名(由同一客户端建立的)找到该组的接口指针。

此方法实现比较简单,只要根据提供的名子循环从组列表中找到该组的接口指针,并返回给客户端

*ppUnk = 0;

RequestedName = szGroupName;

for (i=0; iNumbrGroups(); i++)

{

pGroup = pSvrObject->GetGroup(i);

if (pGroup->Name == RequestedName)

{

r1 = pGroup->QueryInterface(riid, (LPVOID*) ppUnk);

return (r1);

}

}

4、IOPCServer::GetStatus

HRESULT GetStatus( [out] OPCSERVERSTATUS ** ppServerStatus ;

返回当前Server的状态信息。

此方法比较简单,但要注意的是在使用OPCSERVERSTAUS前要进行内存分配。

pServerStatus=(OPCSERVERSTA TUS*) pApp->AllocZero( sizeof(OPCSERVERSTATUS) ;

if (pServerStatus == NULL)

return (E_OUTOFMEMORY);

pServerStatus->szVendorInfo = pApp->WSTRFromCString (pApp->VendorInfo, TRUE);

pServerStatus->ftStartTime = pApp->OPCServerStartTime;

CoFileTimeNow( &pServerStatus->ftCurrentTime);

pServerStatus->ftLastUpdateTime = pSvrObject->mLastUpdate;

//RWD allow user to manipulate returned OPCSERVERSTATUS, lined up layout for clarity...

pServerStatus->dwServerState = pApp->ServerState;

//endRWD

pServerStatus->dwGroupCount = 0;

pServerStatus->dwBandWidth = 0;

pServerStatus->wMajorVersion = 0;

pServerStatus->wMinorVersion = 0;

pServerStatus->wBuildNumber = 0;

pServerStatus->wReserved = 42;

返回服务器状态

*ppServerStatus = pServerStatus;

5、IOPCServer::RemoveGroup

HRESULT RemoveGroup( [in] OPCHANDLE hServerGroup, [in] BOOL bForce ;

从服务器中删除指定组

在组列表中找到指定的组,并将其删除。

for (i=0; iNumbrGroups(); i++)

{

pGroup = pSvrObject->GetGroup(i);

if (groupHandleID == pGroup->ServerGroupHandle)

{

pSvrObject->RemoveGroup(i);

// if no outstanding references

// delete it

if (pGroup->RefCount == 0)

{

pSvrObject->LockGroupList();

delete (pGroup);

pSvrObject->UnlockGroupList();

}

else if (bForce)

{

DeletedGroupList.Add((CObject *)pGroup);

}

else

{

pGroup->MarkedForDeletion = TRUE;

pGroup->pSvrObject = NULL;

return (OPC_S_INUSE);

}

return (S_OK);

}

}

6、IOPCServer::CreateGroupEnumerator

HRESULT CreateGroupEnumerator( [in] OPCENUMSCOPE dwScope,

[in] REFIID riid,

[out, iid_is(riid)] LPUNKNOWN* ppUnk ;

为Server上所提供的组建立不同的列举器。

if ( riid == IID_IEnumUnknown)

{

pEnumerator = new(COPCGroupEnum);

if (pEnumerator == NULL)

return (E_OUTOFMEMORY);

pEnumerator->pSvrObject = pSvrObject;

pEnumerator->AddRef(); // will increment reference count

// for both the enumerator & server

// CopyGroupList will AddRef Each Group enumerated

pSvrObject->CopyGroupList(dwScope, &(pEnumerator->GroupList));

*ppUnk = pEnumerator;

if (pEnumerator->GroupList.GetSize() > 0)

return (S_OK);

else

return (S_FALSE);

}

if ( riid == IID_IEnumString)

{

pStrEnumerator = new(CIOPCStringEnum);

if (pStrEnumerator == NULL)

return (E_OUTOFMEMORY);

pStrEnumerator->AddRef();

pSvrObject->CopyGroupNameList(dwScope, &(pStrEnumerator->NameList));

*ppUnk = pStrEnumerator;

if (pStrEnumerator->NameList.GetSize() > 0)

return (S_OK);

else

return (S_FALSE);

}

上面是直接使用COM技术进行开发的,这要求你必须熟悉COM技术。如果你对COM 不是很了解那也没关系,可以选择OPC Server的开发工具,你只需要简单的调用开发工具的函数就可以实现OPC Server中的所有接口。

我们虽然实现了IOPCServer接口中的所有方法,但它只是OPC Client与我们通信的一个桥梁,最主要的还是我们要自己维护好OPC Group和OPC Item列表。这样我们才可以跟OPC Client进行真正的数据通信。

与硬件设备进行通信

接口已经实现好了,这回我们该从硬件设备中读取数据提供给OPC Client了。

同硬件设备通信有多种方法,如果你是设备的制造商就可以直对硬件进行数据操作了;你也可以通过设备驱动程序和硬件厂商提供的API或是通过TCP、串口等方法进行操作,这就要看硬件设备提供的与软件通信的接口是什么样的了。

不管你用什么方法只要把数据从硬件设备中读取上来并与OPC 项进行关联,就可以实现OPC Server了。

OPCDA远程连接设置

OPC DA远程连接设置 局域网内OPC DA客户端访问OPC DA服务器是基于DCOM组件的远程调用。新的OPC U A协议通过证书互换的方式可以更为简单的进行远程连接。如OPC服务器支持OPC U A建议使用OPC U A协议进行通讯,因实际工程的需要此次试验OPC D A的远程访问。 网上查阅的资料大部分通过大范围的开放DCOM调用权限来进行OPC DA通讯,通过测试和深入了解发现OPC访问的设置并不复杂,而且可以通过针对性的配置降低安全风险。 试验硬件: 局域网; 架设C(客户端)电脑和S(服务器)电脑; 保证两台PC相互ping 通; 试验软件: KEPserverEX V6(OPC客户端)安装于客户端电脑; Applicom console (OPC服务器)安装于服务器电脑;(只支持OPC DA) 关键设置: 1、用户配置(C和S都要配置) 2、防火墙配置(开启防火墙的PC需要配置) 3、本地电脑的DCOM配置(C和S均需要配置) 4、OPC服务器程序的DCOM配置(仅S需要配置) 一、创建用户账户 在C和S 上分别创建一个拥有管理员权限的同名同密码账号,例如:PMI; 要进行OPC D A远程接,C必须使用该账户登录系统,通过配置S可以以该账户登录系统。 二、配置防火墙 一般防火墙默认情况是开启的,如果C和S都不开防火墙,可以省略防火墙的配置,建议先关闭防火墙进行连接测试,测试连通后再开启防火墙进行配置。 关于防火墙的配置在最后说明。

三、配置本地电脑的DCOM 运行comexp.msc -32 进入32 位DCOM组建服务界面,一般OPC软件位32 位,如果软件为64 位,运行comexp.msc进入64 位DCOM组件服务界面进行配置。 1、客户端C和服务器S 的DCOM配置 两台电脑均进入组件服务—我的电脑—属性 如下图进行设置:

远程访问OPC服务器设置

远程访问OPC服务器设置 OPC客户端一方面可以访问本机上的OPC服务器,另一方面,它还可以利用微软的DCOM机制,通过网络来访问其它计算机上的OPC服务器,从而达到远程数据连接的目的。访问本地服务器比较简单,只要检索本地的OPC服务器,并配置相应的组(Group)和数据项(Item)即可,通过网络访问时需要考虑较多的网络连接因素,大体上来说大概有如下的几个需要配置的方面(以WINXP Xp2为例): 一. 运行OPC客户端的计算机和运行OPC服务器的计算机需要彼此能互相访问。 1.1要保证其物理连接,也就是网线正确的连接着两台计算机。 1.2在这两台计算机上分别建立同一个账号及密码,比如用户名[opcuser],密码[123456](注 意:用户密码最好不要设置为空),在这两台计算上使用这个账户都可以登录系统。关于增加账号及密码请参考对应Windows操作系统的帮助文档。 1.3启用各自Windows操作系统的Guest权限。 完成上面几步后,应该达到的效果是:从任何一台计算机搜索另一台计算机,都可以搜索到,并且可以访问对方计算机的共享目录及共享打印机等资源。如下图: 即便用户没有共享任何东西,也会显示空的共享文件夹,而不会产生诸如”不能访问”

等信息。 如果不能访问对方的计算机,首先用ping命令来保证网络的连通,如果必要的情况下,可以关闭这两台计算机的防火墙(无论是winxp xp2自带的防火墙还是专用的防火墙)以及杀毒软件,以杜绝可能产生的问题。 如果访问另一台计算机产生”拒绝访问”的错误,可从网络查找相关资源进行解决。 二. 配置OPCServer所在的计算机 2.1 注册OPCEnum.exe。 opcenum.exe是运行在服务器端的用于枚举本机OPC服务器的服务程序,由OPC基金会提供。注册opcenum有如下几种方式:a)将opcenum.exe拷贝到系统目录下,然后用命令行运行opcenum /regserver 来注册它。b)安装一些OPC服务器程序时会自动安装并注册这个服务程序,比如iconics的模拟OPC服务器程序。c)运行OPC基金会的OPC Core Redistributable安装包,其中包含必要的模块程序。 考虑到远程访问OPC服务器应用较少,以及opcenum.exe对一般用户在系统安全方面带来的混淆,在HMIBuilder中的OPC服务器本身不带OPCEnum.exe,用户根据自己的需要自行注册。 2.2 配置本机的DCOM安全 2.2.1 在命令行运行dcomcnfg,如下图: 产生配置界面如下:

OMRON-OPC培训

培训专题opc 周杨-2017年3月19日

基于OPC技术和欧姆龙协议宏的控制网络通信的实现 在工业控制网络中,由于控制软件和协议纷繁复杂,对工控产品联网和通信能力的要求不断提高,将不同厂家设备组网通信是一个关键环节。本文介绍了变风量空调控制系统中一种基于OPC技术和串口通信技术的网络通信方式,对系统硬件配置和软件编程做了简单介绍。

什么是opc? Opc(OLE for Process Control)用于过程控制的OLE是一个工业标准,管理这个标准的国际组织是OPC基金会,OPC基金会先有会员已超过220家。遍布全球,包括世界上所有主要的自动化控制系统、仪器仪表及过程控制系统的公司。 基于微软的OLE、COM(部件对象模型)和DCOM(分布式部件对象模型)技术。OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。

OPC的发展 OPC是基于Windows的应用程序和现场过程控制应用建立桥梁。过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编制专用的接口函数。现场设备的由于种类繁多,且产品的不断升级,往往给用户和软件开发商带来巨大的工作负担。通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,opc标准应运而生。OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE2技术,OLE标准允许多台微机之间交换文档、图像等对象。

OPC应运领域 1.工控解决方案用户 2.楼控解决方案用户 3.工控解决方案厂商 4.楼控解决方案厂商 5.工控解决方案集成商 6.楼控解决方案集成商 7.ALL Automation Fields(所有自动化领域)

OPC 连接名 配置

用SIMATIC NET通过ETHERNET 建立OPC 服务器与S7 PLC 的S7 连接 1.OPC 服务器与PLC S7 连接通讯的组态 步骤一:配置PC 站的硬件机架 当SIMATIC NET 软件成功安装后,在PC 机桌面上可看到Station Configurator 的快捷 图标,同时在任务栏(Taskbar)中也会有Station Configuration Editor 的图标。 图1: Station Configurator 桌面快捷图标 图2:任务栏中的图标 1) 通过点击图标打开Station Configuration Editor 配置窗口

2) 选择一号插槽,点击Add 按钮或鼠标右键选择添加,在添加组件窗口中选择OPC Server 点击OK 即完成。 2) 同样方法选择三号插槽添加IE General

插入IE General 后,即弹出其属性对话框。点击Network Properties,进行网卡参数配置 4) 网卡的配置 点击Network Properties 后,WINDOWS 网络配置窗口即打开,选择本地连接属性菜单设置网卡参数,如IP 地址,子网掩码等。 5) 分配PC Station 名称 点击“Station Name”按钮,指定PC 站的名称,这里命名为PCStation。点击“OK”确认即完成了PC 站的硬件组态

步骤二:配置控制台(Configuration Console)的使用与设置 1) 配置控制台(Configuration Console)是组态设置和诊断的核心工具,用于PC 硬件组件和PC 应用程序的组态和诊断。 2) 正确完成PC 站的硬件组态后,打开配置控制台(start→simatic→simatic net→Configuration console),可以看到所用以太网卡的模式已从PG mode 切换到Configuration mode,插槽号(Index)也自动指向3。

opc服务器与s7-plcs7连接的建立

一、实验名称:OPC服务器与S7-PLC S7连接的建立 二、实验目的:本试验通过ETHERNET使用OPC技术, 实现matlab与西门子s7300的数据交 换。 三、实验设备 1、硬件要求 S7-300PLC;西门子交换机X208;PC机。 2、软件要求 西门子step7;SIMATIC NET。 四、实验内容及步骤 通过ETHERNET 建立OPC 服务器与S7 PLC 的S7 连接(基于先进的PC组态)。 1、OPC 服务器与PLC S7 连接通讯的组态 步骤一:配置PC 站的硬件机架 当SIMATIC NET 软件成功安装后,在PC机桌面上可看到Station Configurator 的快捷图标,同时在任务栏(Taskbar)中也会有Station Configuration Editor 的图标。 1) 通过点击图标打开Station Configuration Editor 配置窗口 2) 选择一号插槽,点击Add 按钮或鼠标右键选择添加,在添加组件窗口中选择OPCServer 点击OK即完成。

3) 同样方法选择三号插槽添加IE General 图4:添加IE General

插入IE General 后,即弹出其属性对话框。点击Network Properties,进行网卡参数配置。 4) 网卡的配置 点击Network Properties 后,WINDOWS 网络配置窗口即打开,选择本地连接属性菜单设置网卡参数,如IP 地址,子网掩码等。步骤如图6,图7,图8。确认各步设置后,网卡配置完成。 图6: 本地连接

图7:网卡属性选择 图8:分配普通网卡参数

AB PLC通过OPC方式通讯的连接方法

AB PLC通过OPC方式通讯的连接方法 Rockwell Automation 的A-B PLC是一个著名的可编程控制器产品。其产品体系基本上涵盖了工业控制产品的各个领域,由于A-B的PLC的种类繁多,且各种类型的PLC支持的通信协议不尽相同,使得第三方的HMI软件都不能很好的与A-B PLC进行连接。RSLinx软件是A-B PLC通用的通信配置软件(2.2以上的版本支持对以太网的网关配置),目前主要有以下几个版本:RSLinx OEM、RSLinx Professional 、RSLinx Gateway、RSLinx SDK四个版本。且均支持OPC服务(2.3版以上支持OPC2.0版)。 多数上位机软件已内嵌了OPC服务功能,支持OPC客户端和OPC服务器的工作方式。这样就可以很方便的与A-B PLC进行通信。具体的配置方法如下: 与A-B PLC进行OPC的配置是必须要有A-B PLC及相关的通讯附件。 1、安装A-B PLC 、通讯卡、相关的软件,并作物理连接。 2、使用RSLinx连接A-B PLC的通讯网络。 配置通讯卡(参加图1),选择ConFigure Drivers。 图1 弹出入下的配置窗口(参见图2)。

图2 选择对应的通讯卡,并进行端口配置(可参照附带的安装手册),配置成功后将显示所配置的设备的运行状态。 使用RSWho命令查找连接的PLC设备(参见图3)。 参见图3 RSWho命令成功的执行后,将在设备列表中列出与本机连接的所有硬设备(参见图4)。

图4 使用Topic Configoration来进行OPC服务的配置(参见图5)。 图5 在Date Source配置框中配置Topic,选择一个物理设备(PLC),按New按钮即可建立一个Topic,在DATA SOURCE中选中你所要连接的物理设备,选中后,单击Done即可(参见图6)。

OPC服务器开发的几种方法

OPC服务器开发的几种方法 陈丹丹钱美夏立邵英 (武汉海军工程大学 湖北 武汉 430033) 摘要:简要介绍了OPC DA规范,描述了OPC DA(数据访问)服务器开发的三种方法:使用MFC的COM库函数开发OPC服务器、通过ATL开发OPC服务器和利用工具包快速开发OPC服务器,最后对三种方法的特点作出了比较。 关键词:OPC;ATL;服务器开发 Abstract: Simply describe the OPC DA specification ,then three Methods of server model design based on OPC DA(Data Access) specification are introduced. The three methods are using MFC ATL and the fast developmentToolkit to develop OPC server.At last, compare the characteristics of three methods . Key words: OPC;ATL;Server development 1.引言: OPC DA (OPC 数据访问规范)是OPC基金会最早发布的一个工业标准,主要是对现场设备的在线数据进行存取,目前已经发展到OPC DA 3.0版本。OPC基于微软的OLE/COM原理,采用客户/服务器模式。OPC 数据访问服务器主要由服务器对象、组对象和项对象组成。OPC 服务器对象维护服务器的有关信息并包容OPC组对象,可以动态的创建或释放组对象;而OPC 组对象维护有关其自身的信息并包容OPC项,逻辑上管理OPC项;OPC项则标识了与OPC服务器中数据的连接。OPC项不可以由OPC客户直接操作,所有对OPC项的操作都是通过包容该项的OPC组对象进行的。而OPC服务器对象和组对象是聚合关系,即OPC服务器对象产生OPC组对象后,将组对象的指针传递给客户,由客户之间操作对象。这样既提高了数据存取的速度也易于功能扩展,体现了组件软件的重用性。 它支持COM技术的双向通信机制,具有事件驱动功能,当OPC服务器的数据发生变化时它能自动通知OPC客户。在OPC1.0规范中事件驱动使用的是COM的通报连接机制,在OPC2.0规范中又增加了对连接点的支持。而一般的数据采集应用程序,从数据源读数据是主动的,相当于客户主动访问服务器的数据。这就要求客户不断地查询服务器的数据,不管服务器的数据是否发生了变化,增加了系统的开销。因此OPC DA的效率大大高于一般的数据采集应用程序。 2.OPC 服务器开发概述 OPC 服务器的设计与实现是一个较为复杂与繁重的任务,设计者需要有很高的编程水平,熟悉OPC规范,同时也必须掌握相应的硬件产品特性。OPC 数据服务器大致可以分解为不同的功能模块:OPC 对象接口管理,Item 数据项管理以及服务器界面和设置等[1]如图1。 图1.OPC服务器结构图 一个设备的OPC服务器主要由两部分组成,OPC标准接口的实现和与硬件设备的通信。OPC服务器的开发必须以OPC规范为基础,实现各个对象及其接口。下面将就OPC标准接口

OPC详解

OPC详解 名词解释 OPC——OLE for Process Contrl,微软公司对象链接和嵌入技术在过程控制方面的应用,是一系列接口、方法和属性的标准集。它基于OLE、COM、DCOM技术、XML,采用客户端/服务器(Client/Server)结构,将通讯协议与设备/应用隔离的技术。微软的OLE、COM定义了各种不同的软件如何交互使用和分享数据,从而使得OPC能够提供通用的接口规范,用于各种过程控制设备之间的通讯,不论过程中采用何种应用软件和硬件设备。 OLE——Object Linking & Embeding,对象链接与嵌入,也就是现在的微软的ActiveX。 传统技术与OPC技术 传统的过程控制系统是一对一的系统,任何一种HMI等上位监控软件或其它应用软件,在使用某种硬件设备时都需要开发专用的驱动程序。系统构建完成后的最终结果是: 1种软件要使用N类硬件设备需要开发N个驱动程序; M类软件要使用N类硬件设备需要开发M*N个驱动程序; 每增加1个新的应用软件需要另外开发N个硬件设备的驱动程序; 每增加1个新的硬件设备需要为M个软件开发新的设备驱动程序。 基于OPC技术的过程控制系统结构 基于OPC技术的过程控制系统则可以完美地解决传统方式种的上述问题。

任何一种设备只需要提供一种驱动就可以供任何软件系统使用,系统构建完成后的最终结果是: M类软件要使用N类硬件设备只需要开发N个驱动。 每增加1个新的应用软件不需要另外开发硬件设备的驱动程序; 每增加1个新的硬件设备只需要为开发1个新设备的驱动程序; OPC服务器所兼容的设备分类 硬件设备:DCS,PLC,扫描仪,电子设备… 应用软件:HMI,历史数据库,震动检测器… 通讯协议:DDE,Modbus,ODBC,GenCS… 操作系统:Windows,UNIX,VMS,Macintosh,嵌入式OS… 即OPC服务器可以从上面任何一种形式的数据产生实体中读取数据。这个实体可以是霍尼韦尔PHD的Application,也可以是Modbus 的通讯协议,还可以是一种PLC,也就是一种Device(硬件设备),或者是一种Platform。 配置时的几个关键概念 Chanel——通道是一个从PC到一个或多个外部设备之间的传播媒介。一个通道可以用来代表一个串行端口(一个安装在个人电脑上的卡或是以太网接口)。 Device——设备代表了与服务器进行通信的PLC或其他硬件。它受限于Channel所选择的设备驱动程序(Device driver)。 Group——对tags的分类管理,自定义的。类似于Java中的包。 Tag——一个Tag代表与服务器进行通信的PLC或其它硬件设备上的一个地址。服务器允许动态标签(客户端自定义创建)和用户定义的静态标签(服务端管理人员创建的标签)。动态标签是直接进入

局域网内远程连接OPC配置方法详解

局域网内远程连接O P C 配置方法详解 The manuscript was revised on the evening of 2021

一.运行环境 OPC服务器操作系统:Win7,客户端操作系统:Win7,如果是XP系统则配置方法类似(见后面)。 由于OPC(OLE for Process Control)建立在Microsoft的COM(Component Object Model)组件对象模型基础上,并且OPC的远程通讯依赖Microsoft的DCOM(Distribute COM),安全方面则依赖Microsof的Windows安全设置。 二.配置 (配置前先对注册表备份,特别是关键的几个项单独导出 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DCOM和 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole) 1.保持OPC Server服务器与客户端的用户名密码相同。(服务器端与客户端) 分别在客户端和服务端上添加相同的账户名和密码,一定要确保相同。因为访问是通过windows验证的,在远程访问时需要有着相同的账户和密码。操作如下: 若是为了安全考量,请保持密码不为空。要想使新创建的用户有使用DCOM的权限,需要将用户加入“Distribute COM Users”用户组。 2.关闭防火墙或在防火墙设置中将相应的程序和端口加入到例外(服务器端与客户端)

服务器端的防火墙设置中OPC服务器软件端口例外 3.组件服务配置(服务器端) 操作:开始--》运行--》输入:dcomcnfg 在“组件服务”管理器的左侧树形菜单,选择“组件服务\计算机\我的电脑”,在鼠标右键的弹出菜单,选择“属性”项目,在弹出的“我的电脑属性”,选择“默认属性”标签页,如下图: 注意,若“我的电脑”显示红色向下箭头,右键无“属性”项,处理如下: a.在运行中输入msdtc –resetlog; b.在命令行下运行 msdtc -uninstall,删除了 msdtc(Distributed Transaction Coordinator)服务 c.重新启动机器后,在命令行下运行 msdtc -install,安装 msdtc 服务。

opc服务器

Opc 1、在控制领域中,系统往往由分散的各子系统构成;并且各子系统往往采用不同厂家的设备和方案。用户需要,将这些子系统集成,并架构统一的实时监控系统。 2、这样的实时监控系统需要解决分散子系统间的数据共享,各子系统需要统一协调相应控制指令。 3、再考虑到实时监控系统往往需要升级和调整。 4、就需要各子系统具备统一的开放接口。 5、OPC(OLE for Process Control) 规范正是这一思维的产物。 6、OPC 基于Microsoft公司的Distributed interNet Application (DNA) 构架和Component Object Model (COM) 技术的,根据易于扩展性而设计的。OPC规范定义了一个工业标准接口。 7、OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。 8、OPC定义了一个开放的接口,在这个接口上,基于PC的软件组件能交换数据。它是基于Windows的OLE——对象链接和嵌入、COM——部件对象模型(Comp onent Object Model)和DCOM——分布式COM(Distributed COM)技术。因而,OP C为自动化层的典型现场设备连接工业应用程序和办公室程序提供了一个理想的方法。 OPC应用领域 1、工控解决方案用户 2、楼控解决方案用户 3、工控解决方案厂商 4、楼控解决方案厂商 5、工控解决方案集成商 6、楼控解决方案集成商 7、All Automation Fields OPC是为了连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标准。数据源可以是PLC,DCS,条形码读取器等控制设备。随控制系统构成的不同,作为数据源的OPC服务器即可以是和OPC应用程序在同一台计算机上运行的本地OPC服务器,也可以是在另外的计算机上运行的远程OPC服务器。 OPC接口既可以适用于通过网络把最下层的控制设备的原始数据提供给作为数据的使用者(OPC应用程序)的HMI(硬件监督接口)/SCADA(监督控制与数据采集),批处理等自动化程序,以至更上层的历史数据库等应用程序,也可以适用于应用程序和物理设备的直接连接。所以OPC接口是适用于很多系统的具有高厚度柔软性的接口标准。

ABLC通过OPC方式通讯的连接方法

A B L C通过O P C方式 通讯的连接方法 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

AB PLC通过OPC方式通讯的连接方法 Rockwell Automation 的A-B PLC是一个着名的可编程控制器产品。其产品体系基本上涵盖了工业控制产品的各个领域,由于A-B的PLC的种类繁多,且各种类型的PLC支持的通信协议不尽相同,使得第三方的HMI软件都不能很好的与A-B PLC进行连接。RSLinx软件是A-B PLC通用的通信配置软件以上的版 本支持对以太网的网关配置),目前主要有以下几个版本:RSLinx OEM、 RSLinx Professional 、RSLinx Gateway、 RSLinx SDK四个版本。且均支持OPC服务版以上支持版)。 多数上位机软件已内嵌了OPC服务功能,支持OPC客户端和OPC服务器的工作方式。这样就可以很方便的与A-B PLC进行通信。具体的配置方法如下: 与A-B PLC进行OPC的配置是必须要有A-B PLC及相关的通讯附件。 1、安装A-B PLC 、通讯卡、相关的软件,并作物理连接。 2、使用RSLinx连接A-B PLC的通讯网络。 配置通讯卡(参加图1),选择ConFigure Drivers。 图1 弹出入下的配置窗口(参见图2)。

图2 选择对应的通讯卡,并进行端口配置(可参照附带的安装手册),配置成功后将显示所配置的设备的运行状态。 使用RSWho命令查找连接的PLC设备(参见图3)。 参见图3 RSWho命令成功的执行后,将在设备列表中列出与本机连接的所有硬设备(参见图4)。

PCS7远程访问OPC服务器设置

OPC服务器设置 OPC客户端一方面可以访问本机上的OPC服务器,另一方面,它还可以利用微软的DCOM机制,通过网络来访问其它计算机上的OPC服务器,从而达到远程数据连接的目的。访问本地服务器比较简单,只要检索本地的OPC服务器,并配置相应的组(Group)和数据项(Item)即可,通过网络访问时需要考虑较多的网络连接因素,大体上来说大概有如下的几个需要配置的方面(以WINXP Xp2为例): 一. 运行OPC客户端的计算机和运行OPC服务器的计算机需要彼此能互相访问。 1.1要保证其物理连接,也就是网线正确的连接着两台计算机。 1.2在这两台计算机上分别建立同一个账号及密码,比如用户名[opcuser],密码[123456](注 意:用户密码最好不要设置为空),在这两台计算上使用这个账户都可以登录系统。关于增加账号及密码请参考对应Windows操作系统的帮助文档。 1.3启用各自Windows操作系统的Guest权限。 完成上面几步后,应该达到的效果是:从任何一台计算机搜索另一台计算机,都可以搜索到,并且可以访问对方计算机的共享目录及共享打印机等资源。如下图: 即便用户没有共享任何东西,也会显示空的共享文件夹,而不会产生诸如”不能访问”

等信息。 如果不能访问对方的计算机,首先用ping命令来保证网络的连通,如果必要的情况下,可以关闭这两台计算机的防火墙(无论是winxp xp2自带的防火墙还是专用的防火墙)以及杀毒软件,以杜绝可能产生的问题。 如果访问另一台计算机产生”拒绝访问”的错误,可从网络查找相关资源进行解决。 二. 配置OPCServer所在的计算机 2.1 注册OPCEnum.exe。 opcenum.exe是运行在服务器端的用于枚举本机OPC服务器的服务程序,由OPC基金会提供。注册opcenum有如下几种方式:a)将opcenum.exe拷贝到系统目录下,然后用命令行运行opcenum /regserver 来注册它。b)安装一些OPC服务器程序时会自动安装并注册这个服务程序,比如iconics的模拟OPC服务器程序。c)运行OPC基金会的OPC Core Redistributable安装包,其中包含必要的模块程序。 考虑到远程访问OPC服务器应用较少,以及opcenum.exe对一般用户在系统安全方面带来的混淆,在HMIBuilder中的OPC服务器本身不带OPCEnum.exe,用户根据自己的需要自行注册。 2.2 配置本机的DCOM安全 2.2.1 在命令行运行dcomcnfg,如下图: 产生配置界面如下:

基于OPC技术的上位机与PLC之间的通信

基于OPC技术的上位机与PLC之间的通信 2008-10-31 11:02:00网络转载供稿1 引言 现代工业控制系统通常以pc机为上位机,通过与现场工控设备如plc的数据交换与处理,实现对生产过程的自动控制。对于小型控制系统,采用专门的组态软件成本太高,用vb设计监控系统则可以降低成本,但首先要解决上位机与plc之间通信问题。以往使用较多的进程间通信方式是dde(动态数据交换)方式,随着opc技术的发展和普及,它已成为工业过程控制的通信标准。opc服务器有两类接口,其中自动化接口主要用于vb、delphi等开发工具。本文利用罗克韦尔公司提供的opc接口,用vb编写了客户端应用程序,实现了上位机与ab可编程控制器之间的数据交换。 2 opc技术简介 opc(ole for process control—用于过程控制的对象连接与嵌入)是一套以微软对象连接与嵌入ole、组件对象模型com、分布式组件对象模型dcom(distributed com)技术为基础,基于wind ows操作平台,为工业应用程序之间提供高效的信息集成和交互功能的组件对象模型接口标准。opc 实际上是提供了一种机制,通过这种机制,系统能够以服务器/客户端标准方式从服务器获取数据并将其传递给任何客户应用程序。这样,只要生产商开发一套遵循opc规范的服务器与数据进行通信,其他任何客户应用程序便能通过服务器访问设备。 opc服务器有两类接口:定制接口和自动化接口。定制接口为c++程序服务,自动化接口为vb这一类可使用自动化对象的程序服务。定制接口是服务商必须提供的,而自动化接口则是可选的,不过o pc基金会提供了一个叫做“自动化包装器”的动态连接库,用于在两者间转换。 opc数据存取规范规定的基本对象有三类:服务器(server)、组(group)和数据项(item)。服务器对象包含服务器的所有信息,也是组对象的容器,一个服务器对应于一个opc server,即一种设备的驱动程序。组对象除了包含它自身信息外,还负责管理数据项。每一个数据项代表到数据源的一个连接,但它没有提供外部接口,客户端程序无法对数据项直接进行操作,应用程序必须依靠数据项的容器组对象来对它进行操作。 3 通信实现 3.1 rslinx的配置 rslinx是ab可编程控制器在windows环境下建立工厂所用通信方案的工具,它不仅提供了多种网络驱动程序,而且提供了最快速的opc、dde和custom c/c++接口。本设计中上位机与logix55 50控制器采用rs-232串口方式连接,在rslinx中要对df1网络驱动程序组态,设置串口特性:com 1、波特率19200bps、一个停止位、无奇偶校验、全双工、bcc校验码。此外要使用rslinx的opc

局域网内远程连接OPC配置方法详解

Win7系统局域连接OPC配置 一.运行环境 OPC服务器操作系统:Win7,客户端操作系统:Win7,如果是XP系统则配置方法类似(见后面)。 由于OPC(OLE for Process Control)建立在Microsoft的COM(Component Object Model)组件对象模型基础上,并且OPC的远程通讯依赖Microsoft的DCOM(Distribute COM),安全方面则依赖Microsof的Windows安全设置。 二.配置 (配置前先对注册表备份,特别是关键的几个项单独导出 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DCOM和 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole) 1.保持OPC Server服务器与客户端的用户名密码相同。(服务器端与客户端) 分别在客户端和服务端上添加相同的账户名和密码,一定要确保相同。因为访问是通过windows验证的,在远程访问时需要有着相同的账户和密码。操作如下: 若是为了安全考量,请保持密码不为空。要想使新创建的用户有使用DCOM的权限,需要将用户加入“Distribute COM Users”用户组。 2.关闭防火墙或在防火墙设置中将相应的程序和端口加入到例外(服务器端与客户端) 服务器端的防火墙设置中OPC服务器软件端口例外

3.组件服务配置(服务器端) 操作:开始--》运行--》输入:dcomcnfg 在“组件服务”管理器的左侧树形菜单,选择“组件服务\计算机\我的电脑”,在鼠标右键的弹出菜单,选择“属性”项目,在弹出的“我的电脑属性”,选择“默认属性”标签页,如下图: 注意,若“我的电脑”显示红色向下箭头,右键无“属性”项,处理如下: a.在运行中输入msdtc–resetlog; b.在命令行下运行msdtc -uninstall,删除了msdtc(Distributed Transaction Coordinator)服务 c.重新启动机器后,在命令行下运行msdtc -install,安装msdtc服务。

局域网内远程连接OPC配置方法详解

wn 系统局域连接OPC 配置 一.运行环境 OPC 服务器操作系统: wn ,客户端操作系统: wn ,如果是XP 系统则配置方法类似(见后面)。 由于 OPC ( OLE for Process Control )建立在 Microsoft 的 COM ( Component Object Model )组件对象 模型基础上,并且 OPC 的远程通讯依赖 Microsoft 的DCOM ( Distribute COM ),安全方面则依赖 Microsof 的Windows 安全设置。 二?配置 (配置前先对注册表备份,特别是关键的几个项单独导出 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Wi ndows NT'DCOM 和 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole ) 1. 保持OPC Server 服务器与客户端的用户名密码相同。 (服务器端与客户 端) 分别在客户端和服务端上添加相同的账户名和密码,一定要确保相同。因为访问是通过 win dows 验证的,在 远程访问时需要有着相同的账户和密码。操作如下: 若是为了安全考量,请保持密码不为空。要想使新创建的用户有使用 的权限,需要将用户加入 a Distribute COM Users ”用户组。 2. 关闭防火墙或在防火墙设置中将相应的程序和端口加入到例外 (服务器端与客户端) 十算机管理侔地) 0揺工具 L- G 睁网曲 A 期事 件査看器 崑共享文件夹 M 期不地用户和组 J 用户 4组 宜设备管理器 存擔 冒磁盘管理 勺服务和应用程序 名称 匚 Administrator *-ASPNET ■ FixIOUser Guest 儿OPC 全名 描述 管理计 https://www.sodocs.net/doc/986020026.html, Machin... Account L FixIOUser A 匚count f 供来宾访叵 OPC OPC 常规 隶属刃配蚤文件 _________________ 隶于Oi ): Admini s trat ors Distributed COM Users

WINCC-OPC服务器配置

两台WinCC 之间OPC通讯方法(WinXP ) OPC客户端 1登陆计算机名及密码要与服务器端(OPCServer)一致。 a)女口:用户名:admi ni strator 密码:1234 2、OPC客户端要与服务器端处于同一个网络。 a)女口:OPCServer IP: 192.168.0.100 b)女口:OPClient IP: 192.168.0.101 3、关闭Windows防火墙或者在弹出Window安全警报Loader for WinCC datamage中选择解除阻止。 4、运行DCOMCNFG .EXE a)在弹出的组件服务右击我的电脑->选择属性->选择COM安全 b) 或

一 r 访问权隈 塔可昼编辑默认僭谊下允许访问应用程序的用P.您也可以 在应甬程序上设置限制以决定蔑权限. 翳输眼制(!)….| 歸默认値斬鸟 启动和激活权限 您可以编辑默认焙呪下允许启动应用程厚或激活对彖的用 P.您也越以在应用程序上设置限制以决足茸权限. ■辑限制?…I 編辑款认值?) ■…I 确定] 取稱 | _ c) 在访问权限中选择编辑限制 *三|;沖一 遐或用 P 宕称⑤ gjABijmiUS llXkiN Everyone 新)om ) | ttf^r R ANOFTMO^ LO (?3U 的和艰 Igi 允许 拒绘 本地访何 回 □ □ 确定 I 常规1 选项 1默认愿i 谿人协议 COM 安宝 我的电店扉牲 MSDTC

d) ANONMOUS LOGON 组中选中远程访问。 5、剩下的就是在WinCC创建客户端项冃。效杲如图: < V.wIT-FfT tei OPC: 1 50 1J 6 、 D * ■卜■ ■ ■,?.t? LriXbtl*ru -「匕?M1AI 1TLQ订nUKBUlcmiCLTmjECrsWrrTHQ -□! M| jtPrtFf 義聲I

基于OPC技术的伺服控制

上海交通大学 硕士学位论文 基于OPC技术的伺服控制 姓名:姜尚坤 申请学位级别:硕士 专业:控制理论与控制工程指导教师:陈坚 20060101

上海交通大学工学硕士学位论文 基于OPC技术的伺服控制 摘要 本论文是基于罗克韦尔自动化的Kinetix系统为对象,开发图形识别程序,OPC客户程序以及伺服控制程序从而实现对两轴绘图工具的精确控制。 本论文首先实现对图形坐标进行读取的:对于实时绘制图形通过用户选择的控件以及用户鼠标的移动来确定,而对于预先画好的图形则通过边缘检测的方法来读取图形的坐标。 然后在论文中通过编写的OPC客户程序,实现将系统读取到的坐标依次写到伺服控制器中。 本文最后实现在Kinetix系统上,根据通过OPC通讯传送来的用户设定的坐标值,编写伺服控制程序来实现对两轴绘图仪的驱动,从而绘制出用户要求的画面。 关键词Kinetix,边缘检测,OPC,现场总线 - -VI

上海交通大学工学硕士学位论文 Servo Control Based on OPC Tecnology ABSTRACT This paper takes the Kinetix system of Rockwell Automation as Object. It mainly introduce how to develop the identification of graphics, OPC client program and Servo Control program to realize the accurate control of two axis drawing device. First, the paper works out the problem which is how to identify the graphics and how to transfer them to coordinates: For the real-time graphics, we get the coordinates by the controls used by users and the movement of mouse; for the completed graphics, we get the coordinates by edge detection. Secondly, the paper develops a OPC client program to communicate with RSLinx OPC Server so that the system can transfer the coordinates from computer to the sevo-controller. Finally, the paper develops a PLC program to drive the two sevo motors to realize the accurate control based on the coordinates transferred from the Computer by OPC technology. Keywords Kinetix, Edge Detection, OPC, Field Bus - -VII

OPC与PLC连接配置

本次以MelsetExplorer为例讲述如何与三菱PLC的以太网连接1,打开OPC软件如下图 在左边空白处右击,左击New Device(新设备)如下图

出现了如上图所示的新设备设置,可以暂时全部选择默认然后直接点击OK 当新建完设备之后出现如上图所示的界面,右击Device,选择新建Group,并且命名,命名完之后就点击OK,之后再在新建的Group中右击新建一个新Tag,这个Tag值就是与PLC设备中可以相对应的地址可以自行设定地址tag设置如下图: 名称可自己更改,PLC处的可以选择很多,这边以数据寄存器来示范,

设定是数据号如上图就是D0,另外DataType设定数据的类型(short表示字节)表示一次可以发送一个字节的数据 2,到此界面处的设置已完成,但是与外部PLC的连接部分还未设置,下面就对OPC 与PLC连接的部分的设置: 点击菜单栏中Project下的Port setting 如下图: 如果使用的是COM口的话直接就用现成的COM口,但是如果使用的是网络与PLC的以太网模块用网络相连,所以需要点击New port创建一个新的 如上图,名字随意取,Select port:当选择以太网的时候选择第二个Ethernet port 点击下一步之后会出现下图的界面:

Adapter IP的设置根据自己电脑无线或者有线的IP地址设置 MELSEC IP Address的设置是所需要连接的PLC以太网模块中所设置的IP地址 3,当新建完port之后,再回到第一步中新建完Device的设置,对设备的设置进行更改一下,右击左上方的Device,点击properties(属性)中设置端口,如下图:

最简单的访问OPC服务器方法

最简单的访问OPC服务器 在网上搜了很多关于编写客户端访问OPC服务器的资料,同时也根据KEPWARE提供的案例源代码,同时进行研究,最后花了一个星期的时间进行研究,才粗略有了一点头绪,现共享出来,希望后来的初学者有所帮助。 一.要建一个OPC服务器 1)安装OPC服务器软件,KEPware是大家比较常用的,我使用的是Kepware OPC 。如图,添加CHANNEL,添加TAG.把Plc的点位添加进去,我建了6个变量(item)。具体添加的方法需要自行去学习。我添加的三菱Q系列的PLC,PLC采用以太网通讯的方式,在局部网就可以访问了。 2)设置DCOM,这个步骤很重要,具体的设置方法,网上很多资料,按步骤设置就可以。我原来按照组态王提供的方法,总是不成功,后来上了微软网站,按微软提供的方法设置肯定可以成功。 完成了以上两步,你的电脑就变成OPC服务器了。 二.访问服务器 1.利用组态软件访问OPC服务器。 如果用组态王访问,那就太简单了,左边列表,选opc服务器,点击添加服务器,就会弹出一个窗口,把本机的OPC服务器列成清单。在清单里面就可以发 现KEPSERVER的名称:选择,然后按确定,就完成了添加服务器。

在组态王的数据词典,新建变量,I/O变量,连接设备选择OPC服务器,寄存器可以看到KEPserver的变量(item),建立之后,就可以利用组网王,开发监控应用,组态软件的使用在此就不赘述了,总之,利用组态软件访问OPC是最简单的。 2.用开发客户端访问 访问opc服务器,必须使用OPC基金会提供的。学习过程,最好下载说明书,《OPC_20_Automation_Interface》,网上可以下载。

相关主题