Активация тега OpenOPC?

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

Чего я не могу понять, так это способа чтения из определенного тега.

Некоторые теги доступны («SimControl»), а другие нет («ModelVariables»), тогда как эти теги должны быть доступны после инициализации сервера.

Есть ли способ активировать теги так же, как это делается в Matrikon Explorer.

Вот код, который я использовал:

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 06 09:48:09 2015
Simple test to connect to the Dymosim server generated with Dymola
"""

import os,sys
import time,OpenOPC

#%% Connexion to server
opcserv='Dymosim.OPCServer'

opc = OpenOPC.client()
opc.connect(opcserv)

#%% Tags description in a dictionnary form

# Following tags are for simulation control 
# and are available as soon as the client is connected to the server
root1='SimControl.'
l1=['Realtime','tScale',
'Initialize','Pause','Run','Stop',
'Delay','Initialized','Time','Status']
Sim={t:root1+t for t in l1}

# Following tags are for variables display during simulation.
# They should be available after the simulation was "Initialize"
root2='ModelVariables.'  # Available once the model has been initialized
v1=['heatCapacitor.port.T','heatCapacitor.port.Q_flow']
l2=['T','Q']
Var={k:root2+v for (k,v) in zip(l2,v1)}


#%% Simulation
# Initialization of the simulation
opc.write((Sim['Initialize'],True))

#%% Run the simulation
opc.write((Sim['Run'],True))

# Pause simulation after 2 s
time.sleep(2)
opc.write((Sim['Pause'],True)) 

#%% Read variables
opc.read(Sim['Time']) # OK
opc.read(Var['T'])       # Seems not accessible. Quality is bad
opc.list() # The 2 tags appear (SimControl and ModelVariables)

#%% Run the simulation until the end
opc.write((Sim['Run'],True))

Большое спасибо за любую помощь.


person Pleki    schedule 06.02.2015    source источник
comment
У меня нет опыта работы с OpenOPC, но я просто хотел бы объяснить одну вещь, которая привлекла мое внимание: ваш комментарий кажется недоступным. Качество плохое может быть недоразумение. Когда сервер OPC знает запрошенный элемент, он возвращает ошибку. Когда он ДЕЙСТВИТЕЛЬНО знает элемент, он возвращает структуру значение-время-качество (где качество может быть, например, хорошим или плохим). Поэтому, если вы не получаете ошибку, а получаете что-то плохого качества, то проблема не на вашей стороне - это просто данные, которые сервер вернул для этого элемента. Скорее всего, он вернет то же самое любому другому клиенту OPC.   -  person ZbynekZ    schedule 07.02.2015


Ответы (1)


Мне удалось найти обходной путь, используя метод properties OpenOPC.

Значение и качество, возвращаемые методом properties, не согласуются с методом read.

Кажется, что метод properties возвращает правильное значение (с хорошим качеством), а метод read — нет.

person Pleki    schedule 11.02.2015