OPC UA学习笔记
OPC UA https://en.wikipedia.org/wiki/OPC_Unified_Architecture
一、简介
OPCUA指的是 Open Platform Communications Unified Architecture
以前OPC指的是 OLE for Process Control
但是以前的OPC只支持Windows系统,需要DCOM支持,用起来特别难用。
所以就有了现在的OPCUA,统一架构。
OPC 规范由国际非营利组织 OPC 基金会制定,该组织于 1994 年由领先的工业自动化产品制造商制定。
OPCUA与modbus的突出区别是OPCUA带有语义属性 semantic description,了解modbus的人都知道,modbus协议是以地址为位置存储数据的,每个位置存储一个word,16个bit。 比如modbus协议取地址100这个位置寄存器的值 0x 00 01 02 03, 数拿到了,至于这数代表的意思是温度还是速度等等,都是由设备定义,外界也要知道。 因此负责PLC开发的工程师要向SCADA的工程师提供一份数据点表,就是说明某个位置的值代表什么意思。
OPCUA就不需要这,OPCUA是对外界的抽象,以节点进行封装,还只需要一个节点名即可拿到这个值。
可以参考这个网页进行了解:
https://zhuanlan.zhihu.com/p/346842505
二、open62541
open62541(http://open62541.org)是一个开源的免费实现OPC UA,用C99和C ++ 98语言的通用子集编写。该库可与所有主要编译器一起使用,并提供实现专用OPC UA客户端和服务器的必要工具,或将基于OPC UA的通信集成到现有应用程序中。open62541库与平台无关。所有特定于平台的功能都是通过可交换的插件实现的。为主要操作系统提供了插件实现。
open62541根据Mozilla Public License v2.0获得许可。因此open62541库可用于非开源项目。
代码主页位于:GitHub - open62541/open62541: Open source implementation of OPC UA (OPC Unified Architecture) aka IEC 62541 licensed under Mozilla Public License v2.0
open62541的文档位于这里:
https://open62541.org/doc/current/index.html
编译open62541参考:
Building open62541 — open62541 1.2.0-rc2-44-ge5eba7bd documentation
安装参考:
Installing open62541 — open62541 1.2.0-rc2-44-ge5eba7bd documentation
一般流程是这样的:
cd open62541
mkdir build
cd build
cmake ..
make
但是需要注意在cmake的时候有几个参数需要注意一下:
cmake -DBUILD_SHARED_LIBS=OFF \-DCMAKE_BUILD_TYPE=Debug \-DUA_ENABLE_AMALGAMATION=OFF \-DUA_BUILD_EXAMPLES=ON \-DUA_ENABLE_SUBSCRIPTIONS=ON \-DUA_ENABLE_PUBSUB=ON \-DUA_ENABLE_PUBSUB_ETH_UADP=ON \-DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON \..make -j
UA_BUILD_EXAMPLES 是否生成examples
UA_BUILD_SELFSIGNED_CERTIFICATE 是否生成自签名证书
UA_ENABLE_SUBSCRIPTIONS 启用 sub订阅
UA_ENABLE_AMALGAMATION 用来生成独立的open62541.c 和 open62541.h头文件,不推荐开启这个选项,但编译61499的forte时要用
UA_ENABLE_PUBSUB 用于开启pub/sub功能 ,目前是试验性功能
编译选项说明见于:
Building open62541 — open62541 1.2.0-rc2-44-ge5eba7bd documentation
与FORTE集成的时候可以参考:
OPC UA with IEC 61499 Tutorial
三、examples
编译生成的examples位于build/bin/examples目录下。
不同的cmake选项会生成不同的文件,比如是否启用SUBSCRIPTIONS会对是否编译与 订阅相关的demo产生影响。
在CMakeLists.txt中是这么写的:
if(UA_ENABLE_SUBSCRIPTIONS)add_example(tutorial_server_monitoreditems tutorial_server_monitoreditems.c)
endif()
生成的examples
~/work/plc/open62541/build/bin/examples$ ll
总用量 45276
drwxrwxr-x 2 pcl pcl 4096 2月 17 15:00 ./
drwxrwxr-x 3 pcl pcl 4096 2月 17 15:00 ../
-rwxrwxr-x 1 pcl pcl 1866824 2月 17 15:00 access_control_client*
-rwxrwxr-x 1 pcl pcl 1819168 2月 17 15:00 access_control_server*
-rwxrwxr-x 1 pcl pcl 1926112 2月 17 15:00 client*
-rwxrwxr-x 1 pcl pcl 1894248 2月 17 15:00 client_async*
-rwxrwxr-x 1 pcl pcl 1871248 2月 17 15:00 client_connect*
-rwxrwxr-x 1 pcl pcl 1835808 2月 17 15:00 client_connectivitycheck_loop*
-rwxrwxr-x 1 pcl pcl 1871384 2月 17 15:00 client_connect_loop*
-rwxrwxr-x 1 pcl pcl 1844440 2月 17 15:00 client_subscription_loop*
-rwxrwxr-x 1 pcl pcl 1870576 2月 17 15:00 custom_datatype_client*
-rwxrwxr-x 1 pcl pcl 1825032 2月 17 15:00 custom_datatype_server*
-rwxrwxr-x 1 pcl pcl 1863112 2月 17 15:00 server_ctt*
-rwxrwxr-x 1 pcl pcl 1837120 2月 17 15:00 server_inheritance*
-rwxrwxr-x 1 pcl pcl 1823888 2月 17 15:00 server_instantiation*
-rwxrwxr-x 1 pcl pcl 1818144 2月 17 15:00 server_mainloop*
-rwxrwxr-x 1 pcl pcl 1841568 2月 17 15:00 server_nodeset*
-rwxrwxr-x 1 pcl pcl 1818008 2月 17 15:00 server_repeated_job*
-rwxrwxr-x 1 pcl pcl 1842832 2月 17 15:00 tutorial_client_events*
-rwxrwxr-x 1 pcl pcl 1867296 2月 17 15:00 tutorial_client_firststeps*
-rwxrwxr-x 1 pcl pcl 176728 2月 17 15:00 tutorial_datatypes*
-rwxrwxr-x 1 pcl pcl 1831056 2月 17 15:00 tutorial_server_datasource*
-rwxrwxr-x 1 pcl pcl 1817856 2月 17 15:00 tutorial_server_firststeps*
-rwxrwxr-x 1 pcl pcl 1830024 2月 17 15:00 tutorial_server_method*
-rwxrwxr-x 1 pcl pcl 1824104 2月 17 15:00 tutorial_server_monitoreditems*
-rwxrwxr-x 1 pcl pcl 1839960 2月 17 15:00 tutorial_server_object*
-rwxrwxr-x 1 pcl pcl 1825456 2月 17 15:00 tutorial_server_variable*
-rwxrwxr-x 1 pcl pcl 1825112 2月 17 15:00 tutorial_server_variabletype*
四、specification
英文原版specification链接如下
最新版本是v1.0.4
Unified Architecture - OPC Foundation
OPC UA学习笔记相关推荐
- OPC协议学习笔记?
OPC全称是Object Linking and Embedding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁. 换句话说, ...
- OPC UA学习心得 — 1 OPC基础
1. OPC概述 OPC是独立于平台的,用来确保不同厂商设备之间信息无缝传输的一系列规范,是用于数据安全交换时的互操作性标准. 最初的OPC标准仅限于Windows操作系统,因此OPC是OLE for ...
- [1] OPC UA基础知识简介
OPC UA简介 OPC 什么是OPC? 为什么需要OPC? OPCUA简介 什么是OPC UA? OPC UA的优势: OPC UA规范标准 OPC UA基础 OPC UA 软件层 OPC UA 学 ...
- OPC UA - Open62541学习
前言 这几天看了看Open62541,这是用C语言遵循C99标准实现的一个开源跨平台OPC UA库.学习过程中发现好多不明白的运行结果,可能是自己没搞太明白,也可能是源码有些潜在bug,希望大神看到指 ...
- 《通信统一架构OPC UA实践》 - 阅读笔记 1 工业4.0基础与OPC UA的实践
系列目录 - 阅读笔记 2 OPC UA信息模型及建模 目录 系列目录 第一章 OPC UA--工业4.0基础 1.1.通信协议 1.2.导入OPA UA的步骤 1.3. 趋势和展望 第二章 OPC ...
- Opcua学习笔记1 opc介绍
什么是opc Open Platform Communications=OPC,是工业信息通信的一系列标准和规范,规定了不同制造商的控制设备直接的实时数据通信标准.目的是统一不同硬件以及软件数据协议. ...
- OPC UA JAVA开发笔记(四):数据写入
这一节我们来将如何实现Client端的数据持续写入OPC UA.一下程序均在Spring Boot环境中,请先添加相应的依赖 首先,我们准备一个RestController用于提供JSON数据. @R ...
- OPC UA 统一架构学习2
opc ua 规范开始看起来还可以,后面越来越晦涩,翻译的水平还是有限,很多话说的不够浅显易懂,按照老外的原版生搬硬套. 转载于:https://blog.51cto.com/7296556/1901 ...
- HALCON 21.11:学习笔记---OPC_UA(I/O)
HALCON 21.11:学习笔记---OPC_UA(I/O) 本章主要提供有关OPC_UA的信息. 系统要求 Intel compatible PC with Windows 7 (32-bit o ...
最新文章
- 3dmax Vray建筑可视化入门学习教程
- util.Date与sql.Date的相互转换以及区别
- POJ 1741 树分治
- python常用模块之shelve模块
- 中国新能源商用车行业投资现状及前景规划分析报告2022-2027年版
- c语言错误 xef代表什么,单片机C语言代码手册 含100多个经典C程序
- html5点击事件_lt;detailsgt; | HTML5 详细内容标签
- [过年菜谱之]红烧鸡
- Javascript第二章中switch结构及与if的区别第二课
- orCAD导入AD库 连不上线 更改元件库 出现Unable To Save Part
- Python 正则表达式 re模块 groups/group
- 自动驾驶时代,巨头Tier 1的困境与突围
- 快商通AI智能客服机器人,荣获中国科学院《互联网周刊》重磅荣誉!
- springboot群发邮件问题实例
- eureka 缺点
- 一款开源的轻量级企业流程开发平台,源码分享
- 自学python接单_Python接私活,兼职轻松月薪过万,会技术就可走遍天下
- 脱机使用计算机是什么意思,电脑脱机状态是什么意思
- 防抖和节流的理解与实现
- ChatGPT软件技术栈解密