Я разрабатываю модель тензорного потока, чтобы сделать вывод о свойстве продукта.Я хочу, чтобы эта модель запускала онлайн-чтение данных с 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?