简介:这份PDF文档面向工业自动化领域的工程师与运维人员,聚焦KepServer OPC服务器在跨网络通信中的DCOM配置问题。内容以广州市管污水厂自动改造项目为实际背景,系统梳理了从进入DCOM配置程序、服务端DCOM属性与安全策略设置、防火墙端口开放,到客户端DCOM与防火墙匹配配置的完整流程,并针对身份验证级别、访问权限、分布式COM启用等关键环节给出具体操作指引,帮助读者解决跨主机数据交换中的连接失败与权限受限问题。资源包内含1个PDF文件,大小约2.34MB,页面结构按章节划分,配有配置界面截图与步骤说明,便于对照实操。目前已有1002人学习下载,适合需要快速掌握KepServer DCOM配置要点、排查OPC通信故障的初、中级技术人员参考。
1. KepServer 连不上 PLC 时,为什么 90% 的人最后都翻到 DCOM 这一页
产线半夜停机,上位机 KepServer 的 Tag 全是Bad Quality,重启服务没用,换网线没用,ping 得通、端口也通,就是读不到数据。折腾到凌晨,老工程师丢过来一句「去把 DCOM 配一下」,然后你打开搜索引擎,翻到的第一份资料往往就是一份叫《KepServer服务器DCOM配置.pdf》的文档。这个标题背后讲的不是 KepServer 本身怎么用,而是 Windows 组件服务里那套分布式 COM 的权限模型——它决定了 KepServer 作为 OPC DA 服务器时,能不能被本机或远程的 OPC 客户端正常调用。KepServer 走 OPC DA(经典 COM 架构)时,跨进程、跨账户、跨机器的每一次接口调用都要过 DCOM 这道关,配置错一个权限位,表现就是连接被拒、枚举不到服务器、或者连上后瞬间掉线。这篇写给正在被 OPC DA 通讯折磨的自动化、工控上位机、SCADA 集成工程师,从「为什么必须配」讲到「每一项怎么点」,再到「配完还是不行看哪里」,让你照着能复现,踩过的坑不再踩第二遍。
2. DCOM 在 KepServer 里到底管什么:先搞懂调用链再动手
2.1 OPC DA 为什么绕不开 DCOM
很多人以为 KepServer 是个独立服务,客户端连它就像连数据库一样简单。但 OPC DA 规范是上世纪基于 COM/DCOM 定的,客户端拿到的不是 socket 连接,而是一个 COM 接口指针。这个指针的创建过程叫「激活」,由 Windows 的 RPCSS(Remote Procedure Call Service)服务统一调度。当客户端和 KepServer 不在同一个进程、同一个登录会话、甚至不在同一台机器时,激活请求就要经过 DCOM 的安全检查:调用者是谁、有没有启动权限、有没有访问权限、身份验证级别够不够。任何一项不满足,激活直接失败,客户端看到的就是「无法枚举 OPC 服务器」或者「0x80070005 拒绝访问」。
所以 DCOM 配置的本质,是给「谁」授予「启动/访问/配置」KepServer 这个 COM 应用的权限。它跟防火墙是两码事:防火墙管的是 TCP 135 和动态端口能不能通,DCOM 管的是通了之后对方有没有资格调用。两个都对了才通,缺一个都白搭。这也是为什么很多人防火墙全关还是连不上——问题根本不在网络层。
2.2 本机、局域网、域环境三种场景的差异
配置前先分清你的部署形态,三种场景的坑完全不同。
本机场景(客户端和 KepServer 同一台机器):理论上同账户下不需要额外配 DCOM,但只要你用了「以交互式用户身份登录」以外的启动账户,或者客户端以管理员身份跑、KepServer 以服务账户跑,就会撞上会话隔离,照样报拒绝访问。这种最容易让人误判成「本机不用配」。
局域网工作组场景(最常见的翻车现场):两台机器不在域里,没有统一的账户体系。Windows 默认会用「匿名」去激活远程 COM,而 KepServer 默认不允许匿名访问,于是直接失败。解决办法是在两边建同名同密码的本地账户,或者显式放开 Everyone/ANONYMOUS LOGON 的权限。这一步是绝大多数《KepServer服务器DCOM配置.pdf》的核心内容。
域环境场景:账户由域控统一管理,权限继承关系复杂。坑在于域账户可能被组策略限制了「作为批处理作业登录」或「从网络访问此计算机」,DCOM 权限配对了但账户本身没资格登录,一样连不上。
2.3 配置前必须确认的三件事
动手前先确认,能省掉一半返工。
第一,确认 KepServer 的 OPC DA 服务确实在跑,用本机客户端(比如 Kepware 自带的 OPC Quick Client)先连一次本机,本机都不通就别急着配远程。
第二,确认两边的账户情况:是域账户还是本地账户,用户名密码是否一致,客户端进程是以哪个账户启动的。任务管理器里看得到进程的「用户名」列,别猜。
第三,确认系统版本和位数。32 位客户端连 64 位 KepServer 时,COM 组件注册在 64 位注册表里,客户端如果也是 32 位反而要注意dcomcnfg打开的是哪个版本的组件服务。64 位系统上dcomcnfg默认打开 64 位视图,32 位组件要用mmc comexp.msc /32才能看到。
提示:先把本机连通性跑通再动远程配置,本机不通时配 DCOM 是无效劳动。
3. 手把手配 DCOM:从组件服务到权限位逐项落地
3.1 打开组件服务并定位 KepServer 应用
第一步是找到 KepServer 对应的 DCOM 应用项。按Win + R输入dcomcnfg回车,展开「组件服务 → 计算机 → 我的电脑 → DCOM 配置」。在列表里找名字里带KepServer或Kepware的项,通常叫KepServerEx V6之类,版本号跟着你装的版本走。
如果列表里找不到,说明 KepServer 的 OPC DA 组件没注册成功,或者你打开的是 32 位视图而组件注册在 64 位。用管理员权限的 CMD 跑一下注册命令,路径按实际安装目录调整:
:: 以管理员身份运行,注册 OPC DA 相关组件 :: 路径按实际安装目录替换,常见为 Program Files (x86)\Kepware cd /d "C:\Program Files (x86)\Kepware\KEPServerEX\V6" regsvr32 "OPC Core Components\OpcProxy.dll" regsvr32 "OPC Core Components\OpcEnum.exe"regsvr32是注册 COM 组件的标准命令,OpcProxy.dll是 OPC 代理存根,负责跨进程封送接口调用,OpcEnum.exe是 OPC 服务器枚举器,客户端「浏览服务器列表」靠的就是它。注册成功后弹窗提示成功,再回组件服务就能看到应用项。注意 64 位系统上这两个组件可能同时存在 32 位和 64 位版本,客户端是哪种位数就注册哪种,注册错了列表里照样看不到。
3.2 常规选项卡:身份验证级别和身份模拟
右键 KepServer 应用项 → 属性 → 「常规」选项卡。这里两个关键项。
「身份验证级别」默认是「默认」,建议显式改成「连接」。这个级别表示每次调用都验证调用者身份,安全性够用且兼容性好。改成「无」虽然能通,但等于关掉身份校验,生产环境不要这么干。
「身份模拟级别」默认「标识」,一般保持默认即可。它决定服务端在代表客户端访问资源时能模拟到什么程度,KepServer 读 PLC 用的是自己配置的通道,不依赖客户端身份去访问外部资源,所以这里不用改。
3.3 安全选项卡:三个权限一个都不能少
切到「安全」选项卡,这是配置的核心。三个按钮:启动和激活权限、访问权限、配置权限。
启动和激活权限:决定谁能启动这个 COM 应用。点「自定义」→「编辑」,把Everyone、ANONYMOUS LOGON、以及你实际使用的账户都加进去,勾上「本地启动」和「远程启动」。工作组环境下ANONYMOUS LOGON是关键,因为远程激活默认走匿名。
访问权限:决定谁能调用这个应用。同样加Everyone、ANONYMOUS LOGON和实际账户,勾「本地访问」和「远程访问」。
配置权限:决定谁能改这个 DCOM 配置。加Everyone和SYSTEM,勾「完全控制」即可,这项不影响通讯,但配全了省得以后改配置时权限不够。
每一项加完记得点「确定」逐层退出,别直接叉掉窗口,否则改动不生效。这是血泪经验,很多人配完没保存,回头查半天。
3.4 用 dcomcnfg 之外的命令行核对权限
图形界面点多了容易漏,可以用命令行核对当前 DCOM 权限。以管理员身份跑 PowerShell:
# 查看指定 DCOM 应用的安全描述符,确认权限是否写入 # AppID 需从注册表 HKEY_CLASSES_ROOT\AppID 下按 KepServer 名称查得 $appid = "{你的AppID-GUID}" $regPath = "HKLM:\SOFTWARE\Classes\AppID\$appid" Get-ItemProperty -Path $regPath | Select-Object *AppID是 COM 应用的全局唯一标识,DCOM 权限最终以二进制安全描述符存在注册表里。这条命令帮你确认应用项确实存在、AppID 没写错。如果图形界面改了但注册表没变,说明改动没落盘,回去重配。核对完权限,再确认HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole下的EnableDCOM值为Y,为N时整个 DCOM 被禁用,什么配置都没用。
3.5 客户端侧也要配:别只改服务器
只配服务器是新手最常犯的错。客户端机器上同样要打开dcomcnfg,在「我的电脑」属性里确认「在这台计算机上启用分布式 COM」勾上,默认身份验证级别设为「连接」。然后在客户端机器的 DCOM 配置里,如果列表里有 KepServer 项(装了客户端组件的话),同样给它配启动和访问权限。
更稳的做法是两边建同名同密码的账户,客户端进程用这个账户启动,服务器端也把这个账户加进 DCOM 权限。这样身份验证一路对得上,不依赖匿名,安全性也好。账户密码改了就两边一起改,否则又是拒绝访问。
4. 配完还是连不上?这些坑我替你踩过了
4.1 现象:能 ping 通、端口也通,就是枚举不到服务器
原因:OpcEnum服务没跑或没注册。客户端「浏览服务器」这个动作是向目标机器的 OPC 枚举器发请求,枚举器不在,列表就是空的,但 TCP 层完全正常,所以 ping 和端口测试都过。
解决:在服务器端确认OpcEnum服务已启动,服务名通常显示为OpcEnum,启动类型设为自动。没注册就按 3.1 的regsvr32重新注册。注册后重启一下 RPCSS 服务。
4.2 现象:报 0x80070005 拒绝访问
原因:DCOM 权限没给够,或者账户对不上。工作组环境下最常见的是没放ANONYMOUS LOGON,或者两边账户密码不一致导致身份验证失败。
解决:按 3.3 把Everyone和ANONYMOUS LOGON的启动、访问权限都加上。如果坚持用命名账户,确认两边用户名密码完全一致,注意大小写和空格。改完权限后重启 KepServer 服务,权限变更对已建立的连接不生效。
4.3 现象:本机能连,远程连不上
原因:防火墙拦了 DCOM 的动态端口。DCOM 除了 TCP 135,还会随机分配一个高位端口做实际数据传输,只开 135 不够。
解决:要么在防火墙里为 KepServer 和 RPC 放行,要么把 DCOM 限制在固定端口范围。改端口范围要动注册表HKLM\SOFTWARE\Microsoft\Rpc\Internet,配置Ports和PortsInternetAvailable,改完必须重启。生产环境建议直接放行程序而不是关防火墙。
4.4 现象:连上几秒后掉线,Tag 变 Bad
原因:DCOM 空闲超时或身份模拟级别不匹配。默认 DCOM 调用有超时限制,长时间无数据交互会被回收;身份模拟级别设错也会导致服务端拿不到客户端上下文。
解决:确认「身份验证级别」是「连接」而非「无」,模拟级别保持「标识」。检查 KepServer 通道的扫描速率,别设得比 DCOM 超时还长。必要时在服务器端把 DCOM 的「在此计算机上启用分布式 COM」相关超时参数调大。
4.5 现象:改了配置重启后全部失效
原因:改动没保存,或者被组策略覆盖。图形界面直接叉窗口不点确定,改动不落盘;域环境下组策略可能强制重置 DCOM 权限。
解决:每层对话框都点「确定」退出。域环境用gpresult /h report.html看有没有相关策略,有的话找域管理员协调,本地改是改不过组策略的。
5. 让 DCOM 配置可复现:导出、验证与长期维护
配一次能用不算本事,换台机器、重装系统还能快速复现才算。我一般会把配好的 DCOM 权限导出成注册表文件存档。在服务器端用reg export把相关 AppID 项导出来:
:: 导出 KepServer 的 DCOM 配置,AppID 按实际替换 reg export "HKLM\SOFTWARE\Classes\AppID\{你的AppID-GUID}" kep_dcom_backup.reg :: 导出 OLE 全局设置 reg export "HKLM\SOFTWARE\Microsoft\Ole" ole_backup.regreg export把指定注册表项连同子项和值导出成.reg文件,换机器时双击导入即可复用权限配置。注意导入前目标机器上 KepServer 必须已安装并注册过组件,否则 AppID 对不上。导入后重启 RPCSS 和 KepServer 服务。
验证环节别只靠客户端「能连上」这一个信号。我习惯用 Kepware 自带的 OPC Quick Client 先在本机连,再用远程客户端连,两步都过才算稳。远程连的时候盯着客户端日志看激活耗时,正常在几百毫秒内,超过两三秒说明身份验证在反复重试,权限八成还有问题。
长期维护上,账户密码变更是 DCOM 失效的头号原因。建议把 KepServer 相关账户的密码变更纳入变更流程,改完立刻回归测试。另外系统打补丁、升级 KepServer 版本后,组件可能重新注册,DCOM 权限有时会被重置,升级后第一件事就是回归连通性。
说个我自己的习惯:每台配好 DCOM 的机器,我都会在桌面留一个dcom_check.txt,记着 AppID、用的账户、权限要点和导出文件路径。下次再出问题,不用从头翻文档,打开这个文件五分钟定位。这套东西不复杂,但省下的都是半夜爬起来排查的时间。希望帮到你。
本文还有配套的精品资源,点击获取