Найти - Пользователи
Полная версия: Модуль OpenOPC и получение конечных итемов
Начало » Python для новичков » Модуль OpenOPC и получение конечных итемов
1
SergeyChmutov
Добрый день.
Работаю в АСУ ТП и начал изучать 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
Если кто-то будет искать подобное решение, все решается просто. Необходимо использовать параметр recursive.
 tags = opc.list(recursive=True)
response = opc.read(tags, group='name_of_group')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB