OPC统一架构的XML Schema是什么
发布时间 - 2025-12-31 00:00:00 点击率:次OPC UA的XML Schema是,命名空间为http://opcfoundation.org/UA/2011/03/UANodeSet.xsd,专用于地址空间节点导入导出,非通用XSD;必须严格声明命名空间,uax前缀引用基础类型,NodeId需全局唯一,NodeSet描述节点实例而非类型定义。
OPC UA 的 XML Schema 是 ,其命名空间为 http://opcfoundation.org/UA/2011/03/UANodeSet.xsd。这是 OPC Foundation 官方定义的、用于序列化地址空间结构的标准 XML 格式,不是通用 XSD 模式文件,而是专用于导入/导出节点定义(对象、变量、方法、引用等)的交换格式。
它不用于校验任意 XML,也不能直接用作 Python 或 C 的类型定义;它的作用是让不同 UA 工具(如 UaModeler、Prosys OPC UA Simulation Server、FreeOpcUa 的 import_xml())能互相理解地址空间拓扑。
XML Schema
命名空间与根元素必须严格匹配
如果你写一个 XML 文件想被 UA 工具识别为有效 NodeSet, 标签必须声明正确的命名空间,否则导入会失败或静默忽略节点:
- 缺
xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd"→ 大部分工具报“not a valid NodeSet”或直接跳过解析 -
uax:前缀用于引用基础数据类型(如uax:Int32,uax:String),必须声明且路径不能错 - 版本号嵌在 URL 里(如
2011/03),不是随便改的;新版 UA 规范仍沿用此命名空间(兼容性设计)
NodeSet XML 不是配置文件,而是节点“快照”
它描述的是节点实例(instance),不是模板或类型定义(TypeDefinition)。例如:
- 你导出一个
UAVariable节点,它包含→ 导入后该变量初始值就是 4242 - 但如果你只想要“定义一个整型变量类型”,得用
UADataType+UAVariableType,而非常见的UAVariable - 所有
NodeId必须全局唯一且符合 UA 编码规则(如i=85,s=MyDevice.Temperature,g=123e4567-e89b-12d3-a456-426614174000);重复或非法格式会导致导入中断
Python FreeOpcUa 中 import_xml() 的典型坑
用 server.import_xml("mynodes.xml") 加载时,常见失败原因不是语法错,而是语义错:
-
ParentNodeId指向一个不存在的节点(比如写成i=84,但 UA 标准对象文件没加载,也没手动创建)→ 报BadNotFound错误 -
ReferenceType写错,例如该用HasComponent却写了HasProperty→ 节点创建成功但关系丢失,浏览时看不到子节点 - 没提前调用
server.load_type_definitions()就导入含自定义类型(UADataType)的 XML → 类型无法解析,变量创建失败 - XML 中用了
uax:DateTime但值格式不是 ISO 8601(如2025-12-25T20:30:00Z)→ 解析失败,静默跳过该变量
别指望用浏览器打开 .xsd 查看结构
那个 URL http://opcfoundation.org/UA/2011/03/UANodeSet.xsd 是一个逻辑命名空间标识符,并非可公开访问的 HTTP 地址。你无法 curl 或浏览器打开它获取 XSD 文件——它只是告诉解析器:“按 OPC UA 第 5 部分(Information Model)第 7 节约定来解释这个 XML”。真正的结构定义藏在 OPC UA 规范 Part 5: Information Model 的附录中。
实际开发中,最靠谱的参考方式是:用 UaModeler 导出一个简单节点树,再对比其生成的 XML,而不是从零手写 Schema —— 手写极易漏掉必需字段(如 NodeClass、ModellingRule)或引用方向(IsForward="true" vs false)。
# python
# node
# 编码
# 浏览器
# 工具
# curl
# 配置文件
# typedef
# 2025
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
JavaScript如何实现音频处理_Web Audio API如何工作?
高防服务器租用如何选择配置与防御等级?
再谈Python中的字符串与字符编码(推荐)
如何在服务器上三步完成建站并提升流量?
新三国志曹操传主线渭水交兵攻略
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
如何快速启动建站代理加盟业务?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Laravel如何配置和使用缓存?(Redis代码示例)
如何在阿里云部署织梦网站?
详解Android——蓝牙技术 带你实现终端间数据传输
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
微信小程序 配置文件详细介绍
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何在宝塔面板中修改默认建站目录?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何确认建站备案号应放置的具体位置?
北京的网站制作公司有哪些,哪个视频网站最好?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
网站图片在线制作软件,怎么在图片上做链接?
智能起名网站制作软件有哪些,制作logo的软件?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何快速重置建站主机并恢复默认配置?
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Laravel如何使用Sanctum进行API认证?(SPA实战)
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
如何用免费手机建站系统零基础打造专业网站?
如何在香港服务器上快速搭建免备案网站?
如何快速查询域名建站关键信息?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
PHP正则匹配日期和时间(时间戳转换)的实例代码
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Internet Explorer官网直接进入 IE浏览器在线体验版网址
详解CentOS6.5 安装 MySQL5.1.71的方法
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
jQuery中的100个技巧汇总
Laravel模型事件有哪些_Laravel Model Event生命周期详解


命名空间与根元素必须严格匹配