运行环境

  • python3.8-32位!32位!32位!
  • win10
  • KEPServerEX.6.4

其他

  • 项目地址

  • 官方api文档地址

  • opc 模拟服务器下载

    • https://www.matrikonopc.com/downloads/178/index.aspx

    • https://pan.baidu.com/s/1R4bC-NKLEl4s4FqRfhAIwQ
      提取码:07yy

环境以及依赖配置

OpenOPC 配置

  1. 下载 OpenOPC-1.3.1.win32-py2.7.exe 并安装

  2. 将 OpenOPC 安装目录下 src 文件夹下的 OpenOPC.py (其他3个py文件随意)复制到 python3.8 安装目录下的 Lib\site-packages 目录下,或者你的项目目录下(能import 就行)。

  3. 使用2to3工具

安装python会自动安装2to3工具,能够将python2 的代码一键转为python3的,支持批量修改

  • 查看使用帮助,执行:
2to3 --help
  • 这里我们直接把原来的python2 代码替换掉,从此以后只用python3,执行:
2to3 -w -n OpenOPC.py

-n 参数表示不备份原代码

  1. 修改包名

将 OpenOPC.py 中的 Pyro 全部替换为Pyro4
(升级到 Pyro5的请参考:兼容性转换)

  1. 修改环境变量

环境变量从哪改就不说了吧

OPC_MODE = open

pip 包依赖

pip install Pywin32
pip install OpenOPC-Python3x
pip install Pyro4   # 此处为 Pyro4(已经有Pyro5)

api 使用

参考上一篇 python2 的openOPC用法,注意开始创建客户端的方法不一样了:

import time

from openopc import OpenOPC

GROUP_NAME = 'test'

opc = OpenOPC.client()
# 查询可用服务
print(opc.servers(opc_host='localhost'))
   
opc.connect('Kepware.KEPServerEX.V6', 'localhost')
print(opc.list('通道 1.设备 1', recursive=True))

# 点位列表
taglist = [u'通道 1.设备 1.标记 1', u'通道 1.设备 1.标记 2', u'通道 1.设备 1.TAG1']
# 创建组对象
opc.read(taglist, group=GROUP_NAME)

try:
    # 循环周期读取
    while True:
        # 请求组
        opc_data = opc.read(group=GROUP_NAME)
        # 保存字典
        send_values = {}
        for item in opc_data:
            name, value, quality, time_ = item
            if quality == 'Good':
                send_values[name] = value
            else:
                print('Error:  {}'.format(item))
        print(send_values)

        time.sleep(5)
finally:
    # 释放资源
    opc.remove(opc.groups())
    opc.close()

详细用法请参考 官方 API

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐