V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ninestep
V2EX  ›  问与答

有谁处理过 OPC 协议呢?求例子

  •  
  •   ninestep · 2019-04-28 12:40:50 +08:00 · 2572 次点击
    这是一个创建于 2061 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有个需求是使用 OPC 协议从组态王的接口中取出数据,原本设想是使用 Python 的 OPC 库开发,但是开发过程中遇到很多问题,举步维艰,各位大佬谁做过相关的开发,求例子,语言最好是 php,python,js 中其中一个

    6 条回复    2019-04-28 17:24:57 +08:00
    ruoyu0088
        1
    ruoyu0088  
       2019-04-28 12:49:25 +08:00
    是那个和 PLC 通讯的 OPC 吗,我用 Python 做过一个项目,没有遇到什么问题啊。
    Joe0920
        2
    Joe0920  
       2019-04-28 12:56:25 +08:00 via iPhone
    以前用 cpp 写过,依稀记得有 1.0 2.0 3.0 版本的都不一样吧,是个很头疼的东西
    ninestep
        3
    ninestep  
    OP
       2019-04-28 14:26:08 +08:00
    @ruoyu0088 我对 opc 这方面没有了解,我用的库是`http://openopc.sourceforge.net/`这个库,然后我在本地使用`http://www.matrikonopc.com/downloads/178/index.aspx`家里了一个虚拟 OPC 接口,在使用下载的 opc 工具的时候可以访问,但是自己读服务器列表的时候就会报错
    ![1]( https://i.loli.net/2019/04/28/5cc547601ecb8.png)
    ![2]( https://i.loli.net/2019/04/28/5cc54767c4c5c.png)
    loserwn
        4
    loserwn  
       2019-04-28 14:47:52 +08:00
    js opc 就算了。协议相对传统,目前也就 python 好一点。
    windflyer
        5
    windflyer  
       2019-04-28 15:45:00 +08:00
    @ninestep 感觉你使用 OpenOPC 的方式有问题。


    如果通过本地 COM 访问:
    opc = OpenOPC.client()

    如果是通过网络访问(前提是在运行 OPC server 的机器上需要安装并启动一个服务来作为 proxy,这个 proxy 本质上还是通过 COM 访问 OPC server ):
    opc = OpenOPC.open_client(host, port)


    不论通过哪种方式,获得一个 opc 对象之后,就可以调用其他 API 了
    opc.servers()
    opc.connect('YOUR OPC SERVER'))
    ninestep
        6
    ninestep  
    OP
       2019-04-28 17:24:57 +08:00
    @windflyer 现在的问题是用下载的 opc 软件可以连上,但是如果是自己写这两种方式全部都不行,都连不上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5203 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.