ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

KepServer连不上PLC?DCOM配置全解析与避坑指南

KepServer连不上PLC?DCOM配置全解析与避坑指南 简介这份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 的 RPCSSRemote 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.exeregsvr32是注册 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、用的账户、权限要点和导出文件路径。下次再出问题不用从头翻文档打开这个文件五分钟定位。这套东西不复杂但省下的都是半夜爬起来排查的时间。希望帮到你。本文还有配套的精品资源点击获取
返回列表