*(00)*

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

来源:https://www.cnblogs.com/ioufev/p/9365919.html

本文为Java实现OPC通信的一部分

系统:使用win10 64位专业版

PDF文件:

在线参考:英文的

使用的OPCServer服务器:

*注意:OPC服务器中,当OPC账户注销后,Opc Client 无法连接的问题,需要如下方式解决,错误提示如下:

 

或者

OPC服务器配置如下:

 

1.准备

1.1 OPC运行库

KEPServer集成了OPC运行库,所以不需要单独安装

1.2 创建用户并赋予访问权限 :计算机管理

创建用户:

    OPCUser

    123456

添加到DCOM组

说明:如果用户权限复杂,请用能登陆OPCServer的用户。

 

2.配置说明

 

2.1 防火墙关于 DCOM 和 OPC 的规则 :高级安全 Windows Defender 防火墙

开放 DCOM 访问 :DCOM(wmi)启用

135端口:只有一个计算机不需要设置

创建 OPC 程序规则 :允许程序 OPCEnum(就是OPC运行库的程序)

  位置:"C:\Windows\SysWOW64\OpcEnum.exe"

添加 OPC 服务器程序的规则:允许程序 KEPServer的server_runtime

  位置:"C:\Program Files (x 86) \Kepware\KEPServerEX 6\server_runtime.exe"

说明:如果使用了防火墙软件,请把这2条规则添加到白名单。

 

2.2 配置 DCOM 安全:组件服务

配置 COM 的安全设置:我的电脑--COM属性--安全--访问、激活 配置

配置 OPCEnum 的安全设置 :OpcEnum的安全选项

配置 OPCServer 的安全设置 :KEPServer的安全选项

 

2.3 配置本地安全策略 :

本地安全策略 本地策略--网络访问--匿名 :启用

 

2.4.关于Matrikon的DCOM配置

创建用户-->添加到DCOM组

高级安全 Windows Defender 防火墙:创建 OPC 程序规则 :允许程序 OPCEnum

  位置:"C:\Windows\SysWOW64\OpcEnum.exe"

如果还不行,可以将OPCSim加入防火墙

  位置:"C:\Program Files (x86)\Matrikon\OPC\Simulation\OPCSim.exe"

其他不需要了。

3.用户

最重要的是,【服务器端】需要安装OPC核心包,否则怎么配置也扫描不到服务器的DA服务(OPC_2.0_Core_Components-Setup.exe),此包可以不在OPC账号下安装。

3.1 创建用户(*服务器与客户端的账号密码要一模一样)

 

 

3.2添加到DCOM组

( *此处,可以增加超级管理员权限,用于登录用户,设置一些东西)

 

4.防火墙

4.1 配置防火墙规则:开放 DCOM 访问

打开防火墙

找到(DCOM-In)

右键属性--已启用

 

4.2 创建 OPC 程序规则 :允许程序 OPCEnum

新建入站规则--程序--找到OpcEnum.exe

 

 

4.3 添加 OPC 服务器程序的规则:允许程序 KEPServer的server_runtime

新建入站规则--程序--找到server_runtime.exe

 

 

5.组件服务(*一般安装完OPC核心包以后,下面设置保持默认就可以。但是要注意,要让OPC用户加入DCOM组中,在将DCOM组加入下面组件中即可。[默认DCOM组已经加入组件中了])

5.1组件服务:配置 COM 的安全设置

打开组件服务

 

(*此处默认身份验证级别:无 或者 连接。经过测试都可以)

 

 

5.2组件服务:OpcEnum的安全选项

详细信息

 

 

5.3组件服务:KEPServer的安全选项

 

 

6.本地安全策略(*此处不配置也好用)

6.1本地安全策略 本地策略--网络访问--匿名 :启用

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

来源:https://blog.csdn.net/rizhaolutong/article/details/20309779

 

最近做了一个小项目,功能很简单,就是编写一个OPC客户端软件实现从OPC服务器上获取数据然后转存到DB中。项目虽小但是值得考虑的地方仍不少,所谓麻雀虽小,五脏俱全。

1、DCOM正常配置

 

网上关于DCOM的配置五花八门,各种各样。当时刚开始配置的时候也是各种尝试,虽然能调通,但却不知道为什么通的。总结起来,主要是分为了两点:首先,要保证有权限访问对方,然后就是能够启动和激活com。

权限访问经常出现的连接失败等错误。这时候应该check一下:

a.对方防火墙是否关闭或者将相应的程序和端口加入到例外。

b.检查“控制面板”-“管理工具”-“本地安全策略”-“网络访问:本地账户的共享和安全模式”设为“经典-本地用户以自己的身份验证”。

    c.dcom的默认配置中没有加入相应用户的权限。即,服务端的访问限制中要存在客户端发起访问的账户。一般添加everyone账户,这也可以让所有的账户都有权限,这也虽然方便但是不安全,对于安全性要求高的还要设置统一账户,统一密码。

对于启动和激活权限,简单的设定也是全加入everyone账户。(这里要说明一点,有些资料说不能在“限制”中添加everyone账户否则会导致无妨访问等问题,本人试了试发现并没有像说的那样,还有的资料说要将Interactive,system,network,administrator账户一并加入,这里我也没有加入,但依然可以访问。具体原因没有探索。。。)如果是使用opc客户端枚举DCOM端的com名称,则需要配置opcenum时加入ANONYMOUS LOGO账户,然而,这只是用于枚举com名称,并不会影响访问。就是说如果事先知道com名称则不需要配置opcenum,直接使用com名称来访问应该也是可以的。在配置具体的opc服务时,我觉得基本不用配置,使用默认的配置一般都是可以的,如果不行再按照opcenum的配置来配就可以。如果实在不知道怎么配,那就简单的给所有可配的把上述几种提到的转户一股脑的全加进去,也未尝不可。

2、失误配置

不能不说,我这人手贱。在尝试了各种配置不果时,我会尝试一些奇葩的配置。而这也让我尝到不少的苦头。
         a.在参照网上的配置,将“控制面板”-“管理工具”-“本地安全策略”-“DCOM-安全描述符。。。”的“没有定义”修改了一下,结果怎么也无法改回去了。而且还导致了“组建服务-“我的电脑”-“COM安全”-“编辑限制”变为灰色的,直接无妨编辑了。经过各种查找,删除注册表“HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DCOM”就可以了。
         b.另一个失误是将“组建服务-“我的电脑”-“COM安全”中的everyone账户给删除了,导致这个“COM安全”都编程灰色,无法编辑。依然是通过删除注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole”下的限制和默认项,不过在删除前,先导出保存一下注册表。防止误删。
        c.还有一个失误是不小心删除了OpcEnum “安全”里的某个选项的账户,导致整个OpcEnum都无法配置。无论重重新regserver,还是重新安装opcenum.exe,都无济于事。最后,依然是通过修改万能的注册表,“HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{13486D44-4821-11D2-A494-3CB306C10000}”额,删除那个来着,忘记了,好像也是个限制,如果没有权限,右键添加相应用户的权限。
   总之,以上失误导致的问题,除非重装系统,否则,即便是重新按照DCOM等也不能解决问题,任何配置都可以通过注册表来修改。也不要因此就将这个注册表导出备份,因为当你再导入的时候,会有很多项提示没有权限,而你也不知道是那个地方有问题,按个添加权限不现实。所以,需要修改那个项,就导出那个项好了。

3、交互式用户还是启动用户

这个问题,一开始一直不明白,只是听别人说选这交互式用户就行了。直到有一天,发现“交互式用户”无法启动COM,“启动用户”却可以启动COM,我才研究了一下这两个用户的区别。
交互式用户:何谓交互,就是交换,互换。当你通过DCOM访问对方的时候,采用交互式用户会将你的访问账户“转换”为对方当前登录的账户。所有的操作都是以对方当前登录用户的权限来操作的。当有多个用户访问的时候,都是以对方当前的登录用户来操作。如果,之前已经有人启动了服务,则使用之,不会再启动一个服务。是多对一个的关系。
  启动用户:启动用户没有转换的过程,你是以什么身份访问还是按照什么身份访问,只要你有这个权限。对方系统会给每一个登录到其系统的账户单独的开辟一份空间来启动相应的服务。也就是说,当有多个用户访问的时候,会导致多个内存空间,这样可能会导致内存的浪费。
值得一说到 是,我当初访问的OPC服务器是个工程机,而且装在机房,我只能通过远程连接来配置,当时选择的是交互式用户,配置完以后我通过远程连接重启了电脑,然后在远程连接登录进去,始终都无法启动com服务,提示说“因为配置标识不正确,无妨启动服务。。”,反反复复排除都无法解决,然而,选择启动用户就可以。最后发现我是使用远程连接登录的,采用交互式用户会转换为远程连接的用户,而这个用户我又没有配置访问和启动权限,所以一直无妨连接,最后还是跑到机房把电脑重启,然后使用管理员账户登录进去,然后再远程连接,这样就可以了。
万恶的DCOM,万恶的OPC。
 
 
posted on 2020-11-17 22:58  *(00)*  阅读(4302)  评论(0编辑  收藏  举报