Получить OP C UA Космический адрес, используя библиотеку python - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь получить адресное пространство на моем сервере op c ua. Я пытался использовать opcua-asyncio, используя скрипт simple-client.py:

import asyncio
import sys
sys.path.insert(0, "..")
import logging
from asyncua import Client, Node, ua

logging.basicConfig(level=logging.INFO)
_logger = logging.getLogger('asyncua')


async def main():
    url = 'opc.tcp://serveraddress/Server'
    # url = 'opc.tcp://commsvr.com:port/UA/CAS_UA_Server'
    async with Client(url=url) as client:
        # Client has a few methods to get proxy to UA nodes that should always be in address space such as Root or Objects
        root = client.get_root_node()
        _logger.info('Objects node is: %r', root)

        # Node objects have methods to read and write node attributes as well as browse or populate address space
        _logger.info('Children of root are: %r', await root.get_children())

        uri = "http://opcfoundation.org/UA/"
        idx = await client.get_namespace_index(uri)
        print(idx)
        # get a specific node knowing its node id
        var = client.get_node(ua.NodeId(85, 0))
        #var = client.get_node('i=85')
        #var = await root.get_child("[0: Objects , 0:Types , 0:Views]")
        print("My variable", var, await var.read_value())
        # print(var)
        # var.get_data_value() # get value of node as a DataValue object
        # var.read_value() # get value of node as a python builtin
        # var.write_value(ua.Variant([23], ua.VariantType.Int64)) #set node value using explicit data type
        # var.write_value(3.9) # set node value using implicit data type

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.set_debug(True)
    loop.run_until_complete(main())
    loop.close()

, но каждый раз, когда я пытаюсь его использовать, я получаю одну и ту же ошибку:

File " . \ client.py ", строка 39, asyncua.ua.uaerrors._auto.BadAttributeIdInvalid: Атрибут не поддерживается для указанного узла. (BadAttributeIdInvalid)

Кто-нибудь знает, как его решить ? Большое вам спасибо

1 Ответ

0 голосов
/ 08 марта 2020

Похоже, вы пытаетесь прочитать атрибут значения каждого узла, с которым вы сталкиваетесь. Только узлы типа NodeClass Variable или VariableType имеют атрибут Value.

Таким образом, ответ от сервера полностью уместен.

...