和利时OPC DA采集环境部署案例分享

发布时间:2026/6/25 8:05:43

和利时OPC DA采集环境部署案例分享 工控老司机实战Win10 离线环境下和利时 OPC DA 采集完整部署指南写在前面最近有不少做工业自动化的朋友在后台问我怎么在隔离网络的 Win10 工控机上把和利时 DCS 的 OPC DA 数据采集起来。这个坑我踩过今天把完整流程整理出来希望能帮大家少走弯路。背景与需求现场环境和利时 DCS 系统Hollysys客户要求在 Win10 工控机上离线部署 OPC DA 数据采集服务供上层应用Python / SCADA远程读取实时数据点。核心挑战工控现场无法访问互联网所有软件包必须提前准备好U 盘传输Win10 默认对 COM/DCOMOPC DA 的底层协议限制较多Python 生态里处理 OPC DA 的库对32/64 位极为敏感一步走错全是报错整体架构和利时 DCS ──OPC DA── KEPServerEX 6.4 ──OpenOPC 服务── Python 3.6 (32位) ── 上层应用KEPServerEX 6.4工业级 OPC 服务器负责连接 DCS 并对外暴露 OPC DA 接口OpenOPC开源中间件将 OPC DA 的 COM 调用包装成 TCP 服务端口 7766让非 Windows COM 客户端也能访问Python 3.632 位必须 32 位OPC DA 的 COM 组件是 32 位的64 位 Python 无法正确调用第一步准备离线安装包出发去现场前务必在有网络的环境提前下载好以下所有文件装进 U 盘文件说明python-3.6.x-x86.exePython 3.632位版本注意别下成 64 位pyro4-xxx.whl远程对象框架OpenOPC 依赖pypiwin32-xxx.whlWin32 API 绑定必须匹配 32 位 PythonOpenOPC-python3.6-master.zipOpenOPC 源码需解压到 C 盘KEPServerEX6.4.exeOPC 服务器安装包踩坑预警pywin32 有 32 位和 64 位两个包名字都叫 pywin32如果机器上同时存在 32/64 位 Pythonpip install大概率装到 64 位那个去后面运行必报错。第二步安装 Python 3.632 位运行安装程序时选择自定义安装建议安装路径设为C:\Program Files (x86)\Python36-32\安装完成后验证C:\Program Files (x86)\Python36-32\python.exe --version # 期望输出Python 3.6.x第三步安装依赖库离线方式关键点必须指定目标路径否则可能装到错误的 Python 环境pip install --targetC:\Program Files (x86)\Python36-32\Lib\site-packages pyro4-xxx.whl pip install --targetC:\Program Files (x86)\Python36-32\Lib\site-packages pypiwin32-xxx.whl为什么要加--target如果机器上同时有 32 位和 64 位 Python直接pip install会把包装到哪个 Python 环境是不确定的。显式指定路径100% 装对地方。第四步部署 OpenOPC 服务4.1 解压源码将OpenOPC-python3.6-master.zip解压到C:\OpenOPC36\目录结构如下C:\OpenOPC36\ ├── lib\ │ └── gbda_aut.dll ← OPC DA 自动化接口 DLL └── src\ └── OpenOPCService.py4.2 注册 COM 组件cd C:\OpenOPC36\lib regsvr32 gbda_aut.dll -u这一步是注册 OPC DA 自动化接口如果跳过后面连接 OPC Server 时会报 “Dispatch error”。4.3 配置环境变量在系统环境变量中新增两条变量名值OPC_GATE_HOST本机 IP如192.168.1.100OPC_GATE_PORT77664.4 安装并启动 Windows 服务cd C:\OpenOPC36\src C:\Program Files (x86)\Python36-32\python.exe OpenOPCService.py install net start zzzOpenOPCService如果启动失败怎么办先用调试模式排查C:\Program Files (x86)\Python36-32\python.exe OpenOPCService.py debug调试模式下会把详细报错打到控制台比直接看事件日志方便得多。常见原因pywin32 没装到 32 位 Python 下环境变量没生效需要重开 cmd 或重启防火墙拦截了 7766 端口第五步配置 KEPServerEX 6.45.1 安装并创建 OPC DA 通道打开 KEPServerEX新建通道时有几个必须注意的点通道名称只能用英文中文名称会导致 OPC Quick Client 扫描不到测点地址不支持中文如果原始标签是中文需要在 KEPServerEX 里手动映射成英文别名其余配置按向导默认点下一步即可5.2 连接并保存配置点击顶部菜单运行时 → 连接连接成功后会提示保存务必保存否则重启后配置丢失。5.3 验证 OPC DA 数据通过工具 → 启动 OPC Quick Client能看到扫描出的 OPC DA 节点树说明 KEPServerEX 与 DCS 连接正常。已知问题关闭 KEPServerEX 6 或切换工程时OPC Quick Client 会断连此时重启 OpenOPC 服务即可恢复net stop zzzOpenOPCService net start zzzOpenOPCService第六步Python 代码连接测试importOpenOPCimportos os.environ[OPC_GATE_HOST]127.0.0.1os.environ[OPC_GATE_PORT]7766# 连接 OpenOPC 网关服务opcOpenOPC.open_client(host127.0.0.1,port7766)# 连接 KEPServerEX服务器名称固定为根节点名opc.connect(KEPware.KEPServerEX.V6)# 读取数据点valueopc.read(Channel1.Device1.TagName)print(value)opc.close()APP 连接时服务器名称就是 KEPServerEX 的根节点KEPware.KEPServerEX.V6踩坑总结问题原因解决方法Dispatch errorgbda_aut.dll 未注册regsvr32 gbda_aut.dll -upywin32 导入失败装到了 64 位 Python用--target显式指定安装路径服务启动失败权限或依赖问题先用debug模式看详细报错OPC 标签乱码/找不到中文路径/标签名KEPServerEX 通道名和标签全用英文切换工程后断连OPC Quick Client 与服务绑定重启zzzOpenOPCService写在最后整套方案跑起来之后非常稳定OPC DA → OpenOPC 网关 → Python 这条链路我们在海南九丰的项目上已经运行了好几个月没出过问题。最核心的经验就两点32 位 Python 不能省这是整个方案成立的基础离线环境下把包管好所有 whl 文件和安装包提前验证好再进现场现场返工代价很大如果你也在做工业数据采集尤其是和利时、西门子这类老牌 DCS 的 OPC DA 接入欢迎评论区交流。参考资料Windows 上的 OpenOPC 和 Python 3.7 - joseamaita.com博客园OpenOPC 安装配置

相关新闻