open62541之概述 open62541 是一个用 C 语言编写的免费、开源的OPC UA (OPC 统一架构 / IEC 62541)实现。它提供了一个全功能的 SDK用于构建 OPC UA 服务器和客户端以及发布-订阅PubSub通信——所有这些都集成在单一且与平台无关的库中。无论你是在工厂车间连接工业设备还是将安全的机器对机器通信嵌入到微控制器中open62541 都能将完整的 OPC UA 协议栈以足够小的体积交付甚至能直接在裸机目标上运行。什么是 OPC UAOPC 统一架构是一种在IEC 62541系列标准中定义的工业通信协议。它定义了四个相互交织的层级open62541 将其作为一个内聚的 SDK 共同实现协议层— 一种基于 TCP或 HTTP/SOAP构建的异步消息交换协议被组织为安全通道、会话和原始连接。类型系统— 一种丰富的数据类型系统具有二进制和 JSON 编码方案涵盖 25 种内置类型以及任意复杂的结构体、数组和联合体。信息模型— 一种结合了面向对象与语义三元组关系节点-引用-节点的元模型能够实现数据的自描述表示。服务层— 37 种用于浏览、读写、调用方法、管理订阅等的标准服务——每种服务均定义为类型化的请求/响应消息对。OPC UA 由 OPC 基金会负责维护该基金会同时还推动伴随规范的制定将这些特定领域的概念机器人、机床、能源管理转化为可复用的 OPC UA 信息模型。高层架构open62541 的架构采用分层设计其核心是一个以插件为中心的抽象边界。所有与平台相关的及算法上可替换的功能都通过明确定义的插件接口暴露出来这使得核心库保持高度可移植性并且除 C99 标准库外没有任何其他依赖。公共 API 表面被有意设计得极简。开发者通过三个主要的入口头文件——server.h、client.h和pubsub.h——与库进行交互而types.h和common.h则提供共享的数据类型和状态码。位于include/open62541/plugin/下的插件头文件定义了加密、事件循环、节点存储、访问控制、日志记录和历史数据的扩展点。项目结构一览代码仓库的组织结构清晰地分离了公共接口、核心逻辑、可替换插件、平台移植和构建工具open62541/ ├── include/open62541/ 公共 API 头文件 (server, client, pubsub, types) │ └── plugin/ 插件接口头文件 ├── src/ 核心库 (除 C99 外零外部依赖) │ ├── server/ 服务器服务、会话、订阅、NS0 │ ├── client/ 客户端连接、订阅、高级 API │ ├── pubsub/ 发布-订阅协议实现 │ └── util/ 事件过滤器解析器、内部工具 ├── plugins/ 默认插件实现 (加密、日志、节点存储) ├── arch/ ️ 特定平台的事件循环移植 (POSIX, Win32, Zephyr, FreeRTOS) ├── deps/ 第三方依赖 (mdnsd, mqtt-c, libc_time 等) ├── examples/ 教程与示例应用 ├── tools/ ️ 代码生成、证书、CI 脚本、代码合并 ├── tests/ ✅ 单元测试、模糊测试、加密测试、集成测试 └── doc/ Sphinx 文档源码这种分离确保了src/中的核心库仅需 C99 标准库即可干净地编译。其他所有功能——TLS 后端、网络 I/O、证书存储、发现多播——都是在构建时通过选定的插件注入的。支持的特性open62541 实现了全面的 OPC UA 特性集。当前的开发版本v1.5.0-rc2在已获认证的 v1.4 基线之上扩展了 PubSub 改进、新的实时 PubSub 模型以及类型化的异步客户端回调。通信栈类别特性状态编码OPC UA 二进制✅ 已支持OPC UA JSON (v1.05 规范)✅ 已支持OPC UA XML 部分支持传输UA-TCP 安全通道二进制✅ 已支持加密无✅ 已支持Basic128Rsa15✅ 已支持Basic256✅ 已支持Basic256Sha256✅ 已支持Aes256Sha256RsaPss✅ 已支持身份验证匿名✅ 已支持用户名 / 密码✅ 已支持X.509 证书✅ 已支持加密后端mbedTLS✅ 已支持OpenSSL✅ 已支持LibreSSL 实验性支持服务器服务服务集关键服务状态发现FindServers、GetEndpoints、RegisterServer✅安全通道Open / Close SecureChannel✅会话Create / Close / Activate / Cancel✅节点管理Add/Delete Nodes References✅视图Browse、TranslateBrowsePaths✅属性Read、Write、HistoryRead/Update✅方法Call✅被监控项Create / Delete / Modify / SetTriggering✅订阅Create / Modify / Publish / Transfer✅订阅DataChange、Event 被监控项、过滤器✅发现本地发现服务器、mDNS 多播✅发布-订阅 (PubSub)特性状态二进制编码 (UADP)✅JSON 编码✅消息加密 / 解密✅UDP / 多播传输✅以太网传输✅MQTT 传输✅运行时发布者与订阅者配置✅安全密钥服务 (SKS) 模型✅实时 PubSub 模型 (偏移表、自定义状态机)✅ 新增客户端 SDK客户端支持所有 OPC UA 服务并提供同步和异步两种 API。订阅通过事件循环在后台处理。client_highlevel.h中的高级 API 为常见的读写、浏览和调用操作提供了便捷的封装。平台支持open62541 被设计为可以运行在任何地方——从功能完备的 Linux 服务器到资源受限的微控制器。特定于平台的代码被隔离在事件循环插件架构之后并为主要目标平台提供了移植版本平台架构事件循环实现Linux / macOS / BSDPOSIXarch/posix/— epoll/kqueue TCP、UDP、以太网、中断WindowsWin32默认基于 Winsock 的事件循环Zephyr RTOSZephyrarch/zephyr/— 原生 Zephyr 网络FreeRTOS lwIPfreertos-lwiparch/freertos/arch/lwip/— lwIP TCP/UDPPOSIX lwIPposix-lwip混合 POSIX 时钟 lwIP 网络构建配置open62541 使用CMake作为其构建系统并提供大量选项以便你根据具体用例定制库。以下列出了最常用的选项CMake 选项默认值描述UA_ENABLE_AMALGAMATIONOFF将库合并为单个open62541.c/.h以便于集成UA_ENABLE_ENCRYPTIONOFF加密后端MBEDTLS、OPENSSL或LIBRESSLUA_ENABLE_SUBSCRIPTIONSON启用订阅和被监控项支持UA_ENABLE_SUBSCRIPTIONS_EVENTSON启用事件监控UA_ENABLE_HISTORIZINGON启用历史数据访问客户端和服务器UA_ENABLE_DISCOVERYON启用本地发现服务器 (LDS)UA_ENABLE_DISCOVERY_MULTICASTOFFmDNS 发现MDNSD或AVAHIUA_ENABLE_JSON_ENCODINGON启用 JSON 编码 (v1.05 规范)UA_ENABLE_PUBSUBOFF启用 PubSub 协议支持UA_MULTITHREADING0(嵌入式) /100(桌面端)线程安全级别≥100 会启用内部互斥锁UA_LOGLEVEL100最低日志级别TRACE(100) → FATAL(600)

相关新闻

最新新闻

Agent之Skill:dashi-ppt-skill的简介、安装和使用方法、案例应用之详细攻略

Agent之Skill:dashi-ppt-skill的简介、安装和使用方法、案例应用之详细攻略

Agent之Skill:dashi-ppt-skill的简介、安装和使用方法、案例应用之详细攻略 目录 dashi-ppt-skill的简介 1、特点 dashi-ppt-skill的安装和使用方法 1、安装 2、使用方法 dashi-ppt-skill的案例应用 案例一:根据文档生成浏览器可编辑的演示文稿—…

2026/7/19 0:11:15
Agent之skills:google/skills的简介、安装和使用方法、案例应用之详细攻略

Agent之skills:google/skills的简介、安装和使用方法、案例应用之详细攻略

Agent之skills:google/skills的简介、安装和使用方法、案例应用之详细攻略 目录 google/skills的简介 1、特点 2、核心内容 google/skills的安装和使用方法 1、安装 2、使用方法 Google Skills的案例应用 案例一:安装 Google Skills 仓库—安装 …

2026/7/19 0:11:15
原汁机渣汁分离口感细腻,纯正果蔬原汁入口无残渣

原汁机渣汁分离口感细腻,纯正果蔬原汁入口无残渣

原汁机渣汁分离口感细腻,纯正果蔬原汁入口无残渣每天在厨房里折腾半小时,末了喝到嘴里还带着渣渣的果蔬汁,这样的体验确实让人头疼。直到接触蓝宝BP-YJ06多功能饮品机,才真正理解什么叫“渣汁分离口感细腻”——纯正果蔬原汁入口无…

2026/7/19 0:11:15
《AI 渐进编程》之十九:Agent 为什么也会制造技术债?

《AI 渐进编程》之十九:Agent 为什么也会制造技术债?

很多人使用 Agent 编程时,会有一个期待: AI 写代码更快,项目维护成本是不是也会更低? 不一定。 现在也常听到一些说法:某些项目的代码几乎全部由 AI 生成,甚至“100% 由 AI 写代码”。 但这里要区分两件事…

2026/7/19 0:11:15
现代C++ :constexpr:一个常态的世界

现代C++ :constexpr:一个常态的世界

引言我们已经连续讲了几讲比较累人的编译期编程了。今天我们还是继续这个话题,但是,相信今天学完之后,你会感觉比之前几讲要轻松很多。C 语言里的很多改进,让我们做编译期编程也变得越来越简单了。初识 constexpr我们先来看一些例…

2026/7/19 0:11:15
微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

2026/7/19 0:06:15

月新闻