OPC 通讯测试中出现 RPC 服务器不可用 故障,核心原因是 OPC 服务器与客户端之间的 RPC(远程过程调用)协议交互失败,该故障常见于 OPC DA 协议(基于 DCOM/RPC 实现),与网络配置、权限设置、服务状态直接相关。以下是原理分析→分步排查→故障解决的完整方案:
OPC DA 通讯依赖 DCOM(分布式组件对象模型) 实现跨设备数据交互,而 DCOM 底层通过 RPC 协议 传输控制指令和数据。当客户端向 OPC 服务器发起连接请求时,需通过 RPC 协议建立会话;若 RPC 服务未启动、端口被拦截、权限不足或网络配置错误,就会触发 RPC 服务器不可用 报错。
注:OPC UA 协议基于 TCP/IP 直接通讯,不依赖 RPC/DCOM,极少出现此故障。
RPC 服务是 Windows 系统核心服务,必须确保 OPC 服务器和客户端的以下服务已启动且为自动运行:
按下 Win+R,输入 services.msc 打开服务管理器。
找到并检查以下服务:
| 服务名称 | 作用 | 启动类型 | 状态要求 |
|---|
| Remote Procedure Call (RPC) | RPC 协议核心服务 | 自动 | 正在运行 |
| RPC Endpoint Mapper | 分配 RPC 端口,匹配客户端请求 | 自动 | 正在运行 |
| OPC Server 服务(如 KEPServerEX、MatrikonOPC) | 第三方 OPC 服务器程序 | 自动 / 手动 | 正在运行 |
若服务未启动,右键启动;若启动失败,重启电脑后重试(部分服务依赖系统启动)。
RPC 协议默认使用 135 端口 进行端口映射,同时会动态分配随机端口(1024-65535)传输数据,防火墙或网络隔离会直接阻断通讯。
基础网络测试
防火墙配置(关键)
打开「Windows Defender 防火墙」→「高级设置」。
分别在 入站规则 和 出站规则 中,添加两条放行规则:
网络隔离排查:若客户端与服务器不在同一网段,确认路由器 / 交换机未限制 RPC 协议,或直接使用交叉网线直连测试。
OPC DA 依赖 DCOM 权限控制,权限不足会导致 RPC 调用被拒绝,需在 OPC 服务器电脑 上配置 DCOM 权限:
按下 Win+R,输入 dcomcnfg 打开「组件服务」。
依次展开 组件服务 → 计算机 → 我的电脑 → DCOM 配置。
找到 OPC 服务器对应的 DCOM 组件(如 KEPServerEX 对应 Kepware.KEPServerEX.V6,通用 OPC 组件可找 OPCEnum)。
右键组件 → 属性 → 切换至以下标签页配置权限:
| 标签页 | 配置项 | 操作要求 |
|---|
| 常规 | 身份验证级别 | 设为 无 或 连接(降低验证门槛) |
| 安全 | 启动和激活权限 | 点击编辑,添加客户端电脑的用户账户(如 Everyone),授予 本地启动、本地激活、远程启动、远程激活 权限 |
| 安全 | 访问权限 | 点击编辑,添加客户端账户,授予 本地访问、远程访问 权限 |
| 标识 | 登录身份 | 选择 交互式用户 或 此用户(需输入管理员账户密码) |
找到 OPCEnum 组件(OPC 枚举服务,用于客户端扫描服务器),重复上述权限配置步骤。
RPC/DCOM 对用户账户权限敏感,需确保客户端与服务器的账户满足以下条件:
账户一致性:在客户端和服务器电脑上,创建相同用户名和密码的管理员账户,并用该账户登录两台电脑(避免权限验证失败)。
远程访问权限:在服务器电脑上,打开「系统属性」→「远程」,勾选 允许远程协助连接这台计算机 和 允许远程桌面连接(增强远程访问权限)。
避免来宾账户:禁用服务器的 Guest 账户,来宾账户默认无 RPC 调用权限。
客户端 OPC 浏览器测试:使用 OPC 官方测试工具(如 OPC Scout、MatrikonOPC Explorer)连接服务器,若工具也报错,说明故障在服务器端;若工具连接成功,说明客户端程序配置错误。
32 位 / 64 位兼容性:若 OPC 服务器为 32 位,客户端需使用 32 位 OPC 组件(64 位系统需开启 32 位 DCOM 支持),否则会因位数不匹配导致 RPC 调用失败。
| 故障场景 | 具体现象 | 解决方案 |
|---|
| 同一电脑测试正常,跨电脑测试报错 | 本地客户端能连接,远程客户端无法连接 | 配置防火墙放行 135 端口 + OPC 程序,检查 DCOM 远程权限 |
| 重启服务器后故障消失,运行一段时间后报错 | RPC 服务内存溢出或端口耗尽 | 重启 RPC 服务 + OPC 服务器,或升级 OPC 服务器版本(修复内存泄漏) |
| 域环境下通讯失败 | 域策略限制 RPC 协议 | 联系网管,将 OPC 服务器 / 客户端加入域白名单,放行 DCOM/RPC 权限 |
先确认 RPC 核心服务和 OPC 服务器服务已启动。
用 ping/telnet 测试网络和 135 端口连通性,关闭防火墙测试。
在服务器端配置 DCOM 权限(启动、激活、访问权限)。
用 OPC 测试工具验证服务器是否正常,排除客户端程序问题。