(详细)OPC DCOM配置

本文详细介绍了如何通过DCOM方式在Windows系统上配置OPC服务器,包括DCOM配置、服务器组件和服务设置、用户权限管理,以及常见问题的解决方法,旨在帮助读者顺利连接和管理OPCServer。
摘要由CSDN通过智能技术生成

最近在研究OPC协议,需要利用COM或DCOM的方式成功连接到OPC服务器获取流量,本文是以DCOM连接至OPC Server为例的。废话不多说,直接上才艺。(有什么疑问可以评论区留言,共同探讨,共同成长哈)

下面是我使用的客户端软件连接:链接: https://pan.baidu.com/s/1tvA8LFYlVpn5II8eaqEzCA 提取码: 2gip ,自己也可到Matrikon OPC官网去下载

1 DCOM配置

以Windows 7操作系统为例说明DCOM配置方法。其它操作系统配置方法与此类似。

  • 对于32位操作系统,在运行对话框中命令行输入DCOMCNFG进行DCOM配置。
  • 对于64位操作系统,在运行对话框中命令行输入mmc-32,在弹出窗体中添加“组件服务”进行DCOM配置。

DCOM配置完成后,须重启计算机。同时要求服务器/客户端两边使用相同的用户名/密码登录计算机,且密码不能为空。

下面讲述Server PC的配置

1.1 组件服务配置

在OPC服务器所在的计算机上,选择使用快捷键Win+R,弹出运行对话框,在运行对话框中输入“dcomcnfg”,确定后进入“组件服务”界面如图:

1.1.1 电脑属性配置

在图所示的界面中选择【组件服务\计算机\我的电脑】,右键点击“我的电脑”,选择“属性”菜单,在弹出的对话框中选择“默认属性”页面,各设置项设置结果如图:

  • 选中“在此计算机上启用分布式 COM”。
  • “默认身份验证级别”设置为:无。
  • “默认模拟级别”设置为:默认。

切换到“默认协议”页面,设置结果如图所示。

切换到“COM安全”页面,如图所示:

“COM安全”页面中“访问权限”及“启动和激活权限”下的“编辑限制”、“编辑默认值”四个按钮均须点击进入相应界面并增加下述用户:

  • User(此处User是需和Server端账号密码完全一致的,例如Client账号为admin,密码为admin123,Server也需如此)
  • Everyone
  • Interactive
  • ANONYMOUSLOGIN
  • Administrator
  • Administrators
  • SYSTEM
  • Distributed COM Users(允许此组的成员在计算机上启动、激活和使用DCOM对象)

以Everyone的“编辑默认值”设置方法为例,各用户添加设置方法如下:点击“访问权限”下的“编辑默认值”按钮,弹出如图所示的界面。

点击“添加”按钮,在弹出的界面中点击“高级”,再点击“立即查找”按钮,选中“Everyone”,如图所示。

点击“确定”,查看选中的用户。如图所示:

再点击“确定”按钮后,“Everyone”添加成功。

选中“Everyone”,本地访问和远程访问均设置为“允许”,如图所示。

“启动和激活权限”设置添加Everyone用户权限后的界面如图所示。

必须保证新添加的上面所有用户权限的允许框处于选中状态。

1.1.2 OpcEnum属性设置

选择【组件服务\计算机\我的电脑\DCOM配置\OpcEnum】,右键菜单中选择“属性”,选择“常规”页,将身份验证级别改为“无”,如图所示。

选择“位置”页,勾选结果如图所示。

  • 选择“安全”页,三种权限选项全部勾选“自定义”,如图3-12所示。依次点击“编辑”按钮,添加User(此处User是需和Server端账号密码完全一致的,与前述一致)、Everyone、Interactive、ANONYMOUS LOGIN、Administrator、Administrators、SYSTEM六种用户,其权限全部选择“允许”,特殊权限不一定选上,可不选。操作方法参见上图。

选择“终结点”页,选择结果如图所示:

选择“标识”页,勾选“交互式用户”,如图所示。

如果交互式用户为灰色不可选,须在“运行”对话框中执行cmd命令,进入cmd界面后,先执行opcenum /unregserver命令,再执行opcenum /regserver命令,使交互式用户处于可选状态。

若上述操作不通,则可使用下面方法:

①检查OpcEnum.exe存在哪个文件夹。

②如果OpcEnum.exe存在System32目录下,则在CMD中执行以下命令。

C:\Windows\System32\OpcEnum.exe /regserver

③如果OpcEnum.exe存在SysWOW64目录下,则在CMD中执行以下命令。

C:\Windows\SysWOW64\OpcEnum.exe /regserver

在上述操作中,确保OpcEnum.exe存在的文件夹内包括下述组件:

  • opc_aeps.dll
  • opcsec_ps.dll
  • opcproxy.dll
  • opchda_ps.dll
  • opccomn_ps.dll
  • opcbc_ps.dll
  • OpcServices.dll

1.2 文件夹选项配置

双击桌面“计算机”图标,进入计算机界面,选择【组织\文件夹和搜索选项】进入“文件夹选项”界面,选择“查看”页,不选择“使用共享向导(推荐)”,如图所示。

1.3 系统服务配置

按路径【开始/控制面板/系统和安全/管理工具/服务】启动进入系统服务界面,如图所示。

检查用红线框出的各项,要求其状态均为“已启动”状态。如图所示。

若所选项不是“已启动”状态,则须按以下方式将其设置为“已启动”状态。双击所选项,弹出对话框,点击“启动”按钮即可。

1.4 系统安全策略设置

在计算机上使用快捷键Win+R弹出运行对话框,在运行对话框中输入“secpol.msc”,确定后进入“本地安全策略”界面如图所示。

检查用红线框出的各项,要求其“安全设置”项状态如下图所示。

1.5 客户端配置

客户端与上述的服务端配置一致,“我的电脑”属性配置、OpcEnum属性设置、文件夹选项配置和系统安全策略设置都和上述一样,请各位小伙伴自行设置哈

2 成功连接标志

打开“MatrikonOPC Explorer”软件,点击“other network computers”添加OPC Server,添加界面如下图所示:

可连接远程OPC Server界面如图所示,且connected显示为“yes”,state为“Running”。

点击“Add group to selected OPC Server”添加Group,如图所示

3 OPC DCOM问题处理

因为本人在配置DCOM时也遇到了很多问题,查阅了很多大佬的公开资料,下面时个人整理和自己的一点经验之谈,请各位同僚参考哈

3.1 不能浏览远程计算机的OPC Server

首先遇到的问题是不能浏览远程计算机的OPC Servers。浏览的功能是OPC Client应用程序能够查看安装在远程计算机的OPC Servers。当OPC Client执行了一次浏览实际上是它连接到驻留在远程计算机上的OpcEnum的映像,并检索出可访问OPC Server的列表。这包括了每个OPC Server的ProgID(友好的用户接口名字)和GUID(数字形式的识别号)。从这一点看出,OPC Client并不是真正直接连接到OPC Server。因此,检索出的列表是与OPC Server的状态是无关的或者说是与OPC Server的可操作与否是无关。浏览OPC Servers失败导致的直接结果是不能获得远程计算机OpcEnum中通讯所需参数。造成这个问题可能有几个原因,如下所述:

3.1.1 OpcEnum没有安装

OpcEnum一般会在安装OPC Client或者OPC Server时安装。但可能出现没有安装OpcEnum的情况。即使是安装了OpcEnum在你的计算机上,也不能浏览远程的计算机。用Windows Explorer去查找一下OpcEnum是否安装在你期望浏览的计算机上,或者在C:\Windows\System32(也可能是C:\Windows\SysWOW64)文件夹内是否存在,文件名为OpcEnum.exe。如果OpcEnum没有安装,需要安装。

3.1.2 OpcEnum被禁止

即使是OpcEnum被安装在了远程的计算机上,它也必须能够被执行,否则,通讯将会失败。如果在“Startup Type”OpcEnum被设置成为“Disabled”那么Windows将不能运行OpcEnum。因此,必须将OpcEnum开启。

检查OpcEnum启动的类型,按下列步骤:

在桌面找到“我的电脑”右击点计算机管理。在计算机管理窗口里的控制树的根目录下显示“服务和应用程序”,打开服务找到OpcEnum服务将其开启:

3.1.3 匿名访问的权限没有被设置

OpcEnum需要匿名访问的的权限才能正常的工作。如果不提供这个访问权限,则不能成功连接到OpcEnum并且浏览计算机。这一点往往是容易被忽视的因此也需要在Windows COM缺省安全中添加匿名访问的权限。

3.2  不能连接到远程计算机的OPC Server

能够浏览远程计算机的OPC Server和连接到远程计算机的OPC Server是无关的。例如,即使是远程计算机没有安装OPCEnum,也是可以连接到远程计算机的OPC Server。在这种情况下,只要知道远程计算机的识别号(可以通过浏览或者只是简单“knowing”正确的GUID),但如果还是不能建立OPC的连接,可能有其它的原因造成失败。

3.2.1 OPC Server被禁止

如果OPC Server被设置以Windows服务的方式运行,是不能够禁止的。所以需要检查一下,检查的方法和前面“OpcEnum被禁止”里提到的方法一样。设置OPC Server启动类型按OPC Server供应商建议的方式设置。

3.2.2 用户身份认证的问题

可能的原因是在远程的计算机身份认证没有通过。认证是验证用户身份的流程。Windows系统会比较用户名和密码,如果是操作系统不能识别的用户,就会立即拒绝访问更不用提是与OPC Server建立连接,这可能发生了下面的两种情况:

a)用户的账户在远程的计算机上并不存在:如果试图从的一个域访问另一个域时,需要建立域间的信任关系,或者添加用户到所有的域。如果使用的是工作组,就需要添加用户到远程的计算机。如果使用单域系统就不存在这个问题。

b)关闭Simple File Sharing is turned on: Simple File Sharing可以去掉远程访问计算机的用户名和密码,这样用户就不能正确的被认证。

3.2.3 访问控制列表问题

当认证了一个来访问的用户账户后,存在系统检查是否用户账户有启动或者访问OPC Server的权限。这是利用访问控制列表来完成的(ACL)。对于每个应用程序的ACL包括了用户账户的信息,哪些用户被被允许或者拒绝对具有特定操作权限。因此,可能在ACL中由于账户没有有相应的操作权限而被操作系统拒绝访问。

3.3 所有的项显示为Bad

当与一个OPC Server建立连接时,必须能够识别远程计算机的账户并且给予它适当的访问OPCServer的权限。这就需要与OPC Server建立同步的通讯连接而且能够轮询到OPC Server的数据。如果所有的OPC Server项数据指示为bad quality,这可能是由于下面的两个原因引起:

a)在OPC Server里的数据实际就是bad。换言之,OPC Server从数据源中获得的数据就是失败的。这可能是由于各种原因造成的,但总的来说,可能是由于OPC Server没有和PLC建立连接。可利用简单的用同步读设备检查是否是这种情况。这类读的方法直接使OPC Server从数据源中检索最近的数据。如果在OPC Server仍然返回的是bad值,那么必须检查一下OPC Server和数据之间的通讯。

b)OPC Client采用订阅的方式来更新,可能是由于回调失败。如果是这种情况,可按“2.4 OPCClient不接收更新的数据”。

3.4 OPC Client不接收更新的数据

由于安全配置的问题会导致OPC Client应用不能接收更新的数据。在得出这个结论前,参考“2.3 所有的项显示Bad Quality”保证OPC Server实际上可以接收正确的接收数据。一旦确认OPC Server实际上是能够接收数据的,这样就不用怀疑是OPC Server通讯失败造成的。OPC支持基于时间汇报机制,因此当数据发生了变化OPC Server就会发送更新的数据到OPC Client。OPC术语中指的“subscription”机制。OPC Servers通过异步回调把订阅的数据更新。换言之,当OPC Server侦察到一个数据的改变,它就会立即“calls” client带着更新的数据。

这也是一个异步机制因为OPC Client不知到OPC Server将会在什么时候发送数据。然而如果不能正确设为设置安全的设置,数据的更新就会失败。在OPC Client应用程序指示为“Bad”若发现从OPC Server中取得的数据不更新,就可以尝试用同步的方式从OPC Server读数据。若此时数据读到了,那么肯定是异步回调失败,这可能是由下面的原因造成。

3.4.1 防火墙

如果OPC Client计算机在防火墙(硬件的或者软件的)之后,到达目的地时回调可能失败。当然OPC Client能够发出OPC请求,但当从OPC Server发出的回调被防火墙阻塞,关于如何关闭Windows的防火墙可参考Win7如下所示(控制面板\系统和安全\Windows防火墙\自定义设置)。

3.4.2 身份认证失败

一旦回调到达OPC Client的计算机,操作系统试图认证这个用户的账号和密码,与存在的列表进行比较。如果组合与列表不一样Windows会拒绝访问,如下面的原因:

1)用户名和密码的组合

用户名和密码必须在OPC Client和Server的计算机上都能被认证。在回调的情况,可能出现两台计算机上的用户和密码不匹配。必须保证在两台计算机的组合是一致的。

2Guest

在Windows XP或者后期的版本,当使用工作组,缺省的情况下会把远程的用户账号强制为本地的Guest用户。这就是由 Simple File Sharing完成的。这种缺省的设置使得的认证不能正常工作。因此,需要关闭这个项。

3.5 OPC Client能遍历远程PC上的OPC Server 列表,无法连接指定的OPC Server

能遍历远程计算机上的OPCServer列表,说明远程计算机整体的DCOM配置已经ok,连接不到指定的OPCServer,那么说明一定是目标OPCServer的配置或OPCServer本身的问题(如连接数限制,未授权等),也可查阅Matrikon OPC系列教程(官方手册)。

3.6 OPC Client能遍历远程PC上的OPC Server 列表,也可连接指定的OPC Server,但无法增加组

当你已经可以连接到远程计算机上指定的OPCServer时,说明已经成功了99%,但是无法添加组,则是OPC Client所在计算机的OPC配置不正确导致的。可使用Matrikon提供的OPCClient工具OPC Explorer.exe,添加组时选择“同步方式”试一试,你会发现是可以连接上的,而选择“异步方式”却不通。此时需要检查DCOM配置是否正确。也可查阅Matrikon OPC系列教程(官方手册)。

以下列举了OPC连接可能出现的错误码:

好了,又完事了,麻烦各位小伙伴动动小手点个赞再关闭网页哈,感谢

WINCC是西门子开发的人机界面软件,OPC是一种标准的工业自动化通信协议,DCOM是分布式组件对象模型。 WINCC OPC DCOM配置是指在WINCC中使用OPC进行通信时需要进行的配置。具体步骤如下: 1. 首先确保计算机已安装OPC服务器软件并且配置正确。 2. 在WINCC中打开配置工具,选择需要进行配置的项目。 3. 在配置工具中选择通信选项,找到OPC选项并点击进入。 4. 在OPC设置中,选择添加OPC服务器。 5. 输入OPC服务器名称和IP地址。 6. 选择所需的OPC服务器和通道。 7. 配置OPC服务器的认证方式,通常有匿名或者用户名密码的方式。 8. 设置OPC项目名称和项名列表。 9. 确认配置信息无误后,保存配置并关闭配置工具。 10. 在WINCC界面上使用OPC进行数据通信时,需要使用相应的OPC函数进行编程,具体可以参考WINCC提供的开发手册。 需要注意的是,在使用DCOM进行通信时,需要进行一些额外的配置: 1. 在开始菜单中打开“控制面板”,找到“管理工具”,进入“组件服务”。 2. 找到“计算机”,右键点击选择“属性”。 3. 在属性窗口中,选择“COM安全”选项卡,找到“访问权限”并点击“编辑默认”按钮。 4. 在“安全”选项卡中,为“启动和激活权限”和“访问权限”设置合适的权限。 5. 配置完成后,保存设置并关闭窗口。 通过以上步骤,就可以完成WINCC OPC DCOM配置,实现WINCC与OPC服务器的数据通信。当然,具体的配置步骤还会有所差异,具体需要根据实际情况和所使用的OPC服务器软件进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值