Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2017 17:40:18

SergeyChmutov
Зарегистрирован: 2017-08-04
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль OpenOPC и получение конечных итемов

Добрый день.
Работаю в АСУ ТП и начал изучать Python. Сейчас пытаюсь написать приложение, которое будет взаимодействовать с сервером ввода/вывода через OPC. Использую для этого модуль OpenOPC. Все методы просты и понятны. Вот только из OPC могу вычитать корневые узлы а сами OPC-теги не могу получить. Для всего это использую opc.list()

 # -*- coding: cp1251 -*-
#pywin32-221.win32-py2.7
import OpenOPC
 
    
opc = OpenOPC.client()
listServers = opc.servers()
print "Список OPC серверов:"
for nameServer in listServers:
    print listServers.index(nameServer) + 1, "-", nameServer
 
numServer = int(raw_input("\nУкажите номер OPC сервера для подключения: "))
OPCServer = listServers[numServer - 1]
print "Выбран источник:", OPCServer
 
try:
    opc.connect(OPCServer)
except: #Добавить обработчик исключений на случай если связь с OPC сервером
            #не удалось установить
    pass
 
print "Подключение к серверу", OPCServer, "успешно"
 
listOPCTag = []
listOPCTag = opc.list()

Подключаюсь я к специфичному источнику Infinity.OPCServer (возможно кому-то знаком и будет плюсом для понимания). Структура OPC-дерева на скриншоте во вложении.
И из этого получается получить наименование папок. А вот наименование самих тегов (например, Double - GS, RESET, T1…) вложенных в папку не получается получить метод list возвращает пустой массив.

Подскажите, может кто знает, как получить все opc-теги.
Заранее спасибо.

Отредактировано SergeyChmutov (Авг. 4, 2017 17:41:02)

Прикреплённый файлы:
attachment Screenshot_1.png (53,5 KБ)

Офлайн

#2 Сен. 13, 2018 15:41:43

SergeyChmutov
Зарегистрирован: 2017-08-04
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Модуль OpenOPC и получение конечных итемов

Если кто-то будет искать подобное решение, все решается просто. Необходимо использовать параметр recursive.

 tags = opc.list(recursive=True)
response = opc.read(tags, group='name_of_group')

Отредактировано SergeyChmutov (Сен. 13, 2018 15:42:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version