OPC UA学习笔记

OPC UA  https://en.wikipedia.org/wiki/OPC_Unified_Architecture

OPC UA学习笔记_第1张图片

一、简介

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

你可能感兴趣的:(物联网,opcua,open62541)