Python 3.6 x64 OpenOPC - PullRequest
       66

Python 3.6 x64 OpenOPC

0 голосов
/ 15 октября 2018

Я разрабатываю модель тензорного потока, чтобы сделать вывод о свойстве продукта.Я хочу, чтобы эта модель запускала онлайн-чтение данных с OPC-сервера и записывала результат обратно.Для этого я использую проект OpenOPC.

Tensorflow просто работает с Python 3.6 в 64-битной ОС.Поэтому мне нужно установить соединение OPC в той же среде.

Изначально OpenOPC был предназначен для работы с Python 2.7 в ОС x86.Есть несколько проектов, которые обновили его для работы с Python 3.4+.Для установки я следовал процедуре, указанной в следующей ссылке: https://github.com/joseamaita/openopc120

Я разрабатываю свою модель на виртуальной машине с Windows 2012 Server.Для OPC-сервера я использую 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 = ru

и зарегистрировал ее соответствующим образом.

Проблема также возникает, когда я пытаюсь использовать режим 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

У кого-нибудь есть идеи, как заставить это работать, или лучший способ чтения OPC с использованием Python?

...