当前位置: 首页 > 软件库 > 程序开发 > 协议和规范 >

open62541

OPC UA 规范的 C 语言实现
授权协议 MPL
开发语言 C/C++
所属分类 程序开发、 协议和规范
软件类型 开源软件
地区 不详
投 递 者 冯沛
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

open62541 是 OPC UA 规范的C语言开源实现。

OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,在企业层面的通信标准化是同样需要的。OPC UA之前的访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的弱点。加上传统OPC技术不够灵活、平台局限等问题的逐渐凸显, OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法 — OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范 (OPC DA)、OPC历史数据访问规范 (OPC HDA)、 OPC 报警事件访问规范 (OPC A&E) 和OPC安全协议 (OPC Security) 的不同方面, 但在其基础之上进行了功能扩展。

OPC UA,是在传统OPC技术取得很大成功之后的又一个突破,让数据采集、信息模型化以及工厂底层与企业层面之间的通讯更加安全、可靠。

特性

open62541 实现了 OPC UA 二进制协议栈以及客户端和服务器 SDK。它目前支持 Micro Embedded Device Server Profile 以及一些其他功能。最终的服务器二进制文件可以低于100kb,具体取决于信息模型的大小。

  • 通信栈

    • OPC UA 二进制协议

    • 分块(拆分大信息)

    • 可交换网络层(插件),用于使用自定义网络 API (e.g. 用于嵌入式)

  • 信息模型

    • 支持所有 OPC UA 节点类型 (包括方法节点)

    • 支持在运行时新增或删除节点与引用。

    • 支持对象和变量类型的继承和实例化 (自定义构造函数/析构函数,子节点的实例化)

  • 订阅

    • 支持订阅/监控项目以获取数据更改通知

    • 每个监控值的资源消耗非常低 (基于事件服务架构)

  • 代码生成

    • 支持从标准 XML 定义生成数据类型

    • 支持从标准 XML 定义生成服务器端信息模型(节点集)

  • 一:源码下载         https://gitee.com/mirrors/open62541.git 二:编译         sudo apt-get install git build-essential gcc pkg-config cmake python         # enable additional features         sudo apt-get inst

 相关资料
  • PHP 语言规范,Facebook 已经把所有该规范的版权贡献给献给 CC0 公共域协议,本规范的发布不提供任何保证,Facebook 公司在 2014 年发起该项目。

  • var关键字 总是用 var 关键字定义变量。 描述 如果不显式使用 var 关键字定义变量,变量会进入到全局上下文中,可能会和已有的变量发生冲突。另外,如果不使用var声明,很难说变量存在的作用域是哪个(可能在局部作用域里,也可能在document或者window上)。所以,要一直使用 var 关键字定义变量。 常量 使用字母全部大写(如 NAMES_LIKE_THIS )的方式命名 可以使用

  • Lint 小技巧 使用该 pylintrc 对你的代码运行pylint 定义: pylint是一个在Python源代码中查找bug的工具. 对于C和C++这样的不那么动态的(译者注: 原文是less dynamic)语言, 这些bug通常由编译器来捕获. 由于Python的动态特性, 有些警告可能不对. 不过伪告警应该很少. 优点: 可以捕获容易忽视的错误, 例如输入错误, 使用未赋值的变量等.

  • 对于那些不熟悉它们的人--我正在寻找这样的文档http://docs.oracle.com/javase/specs/jls/se7/html/index.html。 提前道谢!

  • 问题内容: Python中有什么类似于Java的JLS或C#的规范吗? 问题答案: 本身没有规范。最接近的是《Python语言参考》,其中详细介绍了该语言的语法和语义。

  • Go对于接口和其实现的命名规范是什么? 假设整个Web项目都依赖于接口,比如service: 但是好像对于GO来说一般不像在Java一样在后面加interface或者Imp来标识,之前看到有人是直接以大小写的UserService和userService来区分接口和实现,但是这样的话构造函数就只能返回接口不能返回具体实现了。 对于repository也有相同的疑问,对于dao和cache我是直接接

  • 这些插件添加了可以被编译并在JVM中执行的各种语言的支持 Table 22.1. Language plugins Plugin Id 自动应用 协同工作 描述 java java-base - 为项目添加java编译,测试及绑定能力,作为许多Gradle插件的基础.参见Chapter 7, Java Quickstart groovy java, groovy-base - 为Groovy项目构

  • 因此问题是:C++标准中的所有注释和示例都是非规范性的吗?脚注呢?