导入OPC UA XML文件遇‘QualifiedName解析未实现’错误求解决
问题描述
导入OPC UA设备(Di)、机械(Machinery)及泵(Pumps)相关NodeSet XML文件时,触发错误:
Parsing value of type 'QualifiedName' not implemented
使用的Python代码如下:
from opcua import ua, Server # Create server server = Server() # Set server endpoint url = "opc.tcp://10.220.1.163:4140" server.set_endpoint(url) # Set server name server.set_server_name("OPC UA Server") server.import_xml("Opc.Ua.Di.NodeSet2.xml") server.import_xml("Opc.Ua.Machinery.Nodeset2.xml") server.import_xml("Opc.Ua.Pumps.NodeSet2.xml") server.import_xml("NetschPump.xml") server.start()
已尝试同时导入所有文件,问题持续存在。
解决建议
升级python-opcua库:该错误大概率是旧版本库对
QualifiedName类型解析的功能缺失,执行命令升级到最新版:pip install --upgrade python-opcua注意:原
python-opcua库已停止维护,推荐切换到活跃分支opcua-asyncio,兼容性和功能更完善。切换到opcua-asyncio库:替换原库后,调整代码适配异步模式(opcua-asyncio的标准用法),示例代码:
from asyncua import ua, Server import asyncio async def main(): server = Server() url = "opc.tcp://10.220.1.163:4140" await server.init() server.set_endpoint(url) server.set_server_name("OPC UA Server") # 按依赖顺序导入XML await server.import_xml("Opc.Ua.Di.NodeSet2.xml") await server.import_xml("Opc.Ua.Machinery.Nodeset2.xml") await server.import_xml("Opc.Ua.Pumps.NodeSet2.xml") await server.import_xml("NetschPump.xml") async with server: while True: await asyncio.sleep(1) if __name__ == "__main__": asyncio.run(main())安装opcua-asyncio的命令:
pip install opcua-asyncio检查XML文件的合法性:
- 用文本编辑器打开报错相关的XML文件,搜索
<QualifiedName>标签,确认格式符合OPC UA规范(如<QualifiedName Index="0" Name="XXX"/>),排查是否存在命名空间索引缺失、格式错误的情况。 - 使用OPC UA官方工具(如UA Model Designer)验证NodeSet XML的有效性,修正不符合规范的内容。
- 用文本编辑器打开报错相关的XML文件,搜索
确认导入顺序:OPC UA节点集存在依赖关系,必须按
Di → Machinery → Pumps → 自定义文件的顺序导入,你的现有顺序是正确的,但可以尝试清除缓存后重新导入(比如删除临时生成的节点缓存文件)。
内容的提问来源于stack exchange,提问作者Ankit Mavani
相关产品推荐
相关产品推荐

