【发布时间】:2018-10-15 20:15:16
【问题描述】:
我正在开发一个张量流模型来推断产品属性。我想让这个模型运行从 OPC 服务器在线读取数据并将结果写回。为此,我正在使用 OpenOPC 项目。
Tensorflow 仅适用于 64 位操作系统中的 Python 3.6。所以我需要在同一个环境中建立一个OPC连接。
OpenOPC 最初设计用于 x86 操作系统中的 Python 2.7。有一些项目将其升级为使用 Python 3.4+。我按照以下链接中的过程进行安装: https://github.com/joseamaita/openopc120
我正在使用 Windows 2012 Server 的 VM 中开发我的模型。对于 OPC Server,我使用 Matrikon OPC 进行模拟。
OpenOPC 的列表功能似乎工作正常。当我运行以下脚本时
import OpenOPC
open_host='10.0.2.15'
open_port='7766'
opc = OpenOPC.open_client(open_host, open_port)
opc.connect('Matrikon.OPC.Simulation.1')
aux=opc.list('Simulation Items.Random')
for item in aux:
print(item)
opc.close()
我得到了以下结果
Random.ArrayOfReal8
Random.ArrayOfString
Random.Boolean
Random.Int1
Random.Int2
Random.Int4
Random.Money
Random.Qualities
Random.Real4
Random.Real8
Random.String
Random.Time
Random.UInt1
Random.UInt2
Random.UInt4
这是有希望的。但是当我尝试运行以下代码来读取一个值时:
import OpenOPC
open_host='10.0.2.15'
open_port='7766'
opc = OpenOPC.open_client(open_host, open_port)
opc.connect('Matrikon.OPC.Simulation.1')
aux = opc.read(['Random.Int4'])
for item in aux:
print(item)
opc.close()
OpenOPC 网关服务停止,在事件查看器中我有以下内容
Faulting application name: PythonService.exe, version: 0.0.0.0, time stamp: 0x5af24199
Faulting module name: gbda_aut.dll, version: 1.0.8.304, time stamp: 0x4d92bcca
Exception code: 0xc0000005
Fault offset: 0x000000000001b966
Faulting process id: 0xa90
Faulting application start time: 0x01d464c2264cd7ec
Faulting application path: C:\ProgramData\Anaconda3\lib\site-packages\win32\PythonService.exe
Faulting module path: c:\Windows\System32\gbda_aut.dll
Report Id: 69629dee-d0b5-11e8-8120-080027bc5cb4
Faulting package full name:
Faulting package-relative application ID: ` .
看来问题与这个gbda_aut.dll有关。我已经从
下载了它的 x64 版本http://gray-box.net/download_daawrapper.php?lang=en
并以适当的方式注册。
当我尝试使用 DCOM 模式时也会出现此问题。这样做时,我会收到以下信息。
Problem signature:
Problem Event Name: APPCRASH
Application Name: pythonw.exe
Application Version: 3.6.5150.1013
Application Timestamp: 5abd3212
Fault Module Name: gbda_aut.dll
Fault Module Version: 1.0.8.304
Fault Module Timestamp: 4d92bcca
Exception Code: c0000005
Exception Offset: 000000000001b966
OS Version: 6.3.9600.2.0.0.272.7
Locale ID: 1033
Additional Information 1: e0f5
Additional Information 2: e0f51433c52d71c63f2bde60bf8cf401
Additional Information 3: 1c6f
Additional Information 4: 1c6f1bc49be4e21c20f4309779c02df6
有没有人知道如何使它工作或使用 Python 进行 OPC 读取的更好方法?
【问题讨论】:
-
问题解决了吗?我也有这个。
-
很遗憾没有。我看到了一个从 64 位 OPC 服务器读取的 32 位应用程序。但 Open OPC 不适用于 Python 64 位
-
我明白了。我通过用 Python x86 替换 Python x64 解决了这个问题
-
@Dariva 你是如何安装
OpenOPC的。它给了我没有找到模块的错误。 -
@SAndrew。只需将 OpenOPC.py 文件复制到 phyton 文件夹中的 lib\site_packages 文件夹即可。您需要注意在 windows 中创建环境变量。看看安装手册。
标签: tensorflow 64-bit python-3.6 opc