精华内容
下载资源
问答
  • open62541 open62541 (http://open62541.org) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++98 languages. The library is ...
  • open62541.rar

    2021-02-02 13:58:30
    vs2015编译的OPC UA open62541.lib、open62541.dll。配套含open62541.h 、WS2_32.Lib,可直接引用。
  • 如何正确使用open62541

    本篇文章主要是指导大家如何正确使用open62541,避免进入坑里。


    step 1 下载源码

    墙裂推荐自己下载源码,然后编译,最后使用,这样会和运行的平台更加契合,减少无谓的错误。

    如何下载源码呢?点击这里进入open62541的github地址,然后在右侧找到Releases,点击蓝色的“+35 releases”,
    在这里插入图片描述

    展开后,找到想要的release版本,这里以v1.1.3为例,
    在这里插入图片描述
    往下找到这个版本的Asserts,然后点击展开,最后2项就是源码,随便选一个下载就行了(点击就可下载)。
    在这里插入图片描述
    一定要选择release版本的,不要使用main分支的代码,因为release版本的是经过测试验证的,而main分支的代码,很多都是处于修改中,没有正式测试,轻易使用会产生无法预料的后果。


    step 2 子模块下载

    之前文中说过,当enable某些功能(如自定义namespace)时就需要下载一些子模块,需要执行如下命令

    git submodule update --init
    

    但是往往速度很慢,有时无法下载。经过本人严密分析,所下载的子模块有2个,

    • mdnsd,位置:open62541源码目录/deps/mdnsd
    • ua-nodeset,位置:open62541源码目录/deps/ua-nodeset

    这些个子模块可以单独去github网站上下载,本人发现如果去网站使用浏览器下载,速度会比在命令行下快,应该是浏览器的下载加成所致。


    小结

    基本上来说,按照上述2个步骤来操作,就不会有太多问题。

    展开全文
  • Windows下如何使用Visual Studio来编译open62541,以及基于open62541去开发OPCUA程序

    本文主要讲述在Windows下如何使用Visual Studio来编译open62541,以及基于open62541去开发OPCUA程序。


    一 Visual Studio版本选择

    本人使用的是VS2015,之前使用的是VS2013,但是生成open62541工程时总是各种错误,不知咋回事,官方教程使用的是VS2015,
    在这里插入图片描述
    于是又安装了VS2015,安装完VS2015时又遇到个坑,创建工程时没有Win32 控制台程序选项,百度一下也解决了,后面就都OK了。

    PS:VS2015及以后的版本都是可以的。


    二 编译open62541

    可以使用上节图片中的命令行方式调用cmake.exe去生成VS2015的工程。本人使用的是cmake-gui,更加方便一点,另外,需要提前安装好Python3
    首先在open62541源码目录下创建一个build文件夹,然后打开cmake-gui,
    在这里插入图片描述
    第一行输入open62541源码目录,第二行输入刚刚创建的build目录,VS工程最后会生成在这个目录里,然后点击左下角的Configure,在弹出的界面里选择Visual Studio 14 2015,如下,
    在这里插入图片描述
    然后点击Finish开始进行配置,配置完成后如下,
    在这里插入图片描述
    红色一片是open62541自带的CMakeLists里提供的配置选择,这里以gui的方式显示出来了。这里勾选上UA_ENABLE_AMALGAMATION,其它暂时默认就行了。然后点击Generate进行生成,
    在这里插入图片描述
    OK之后我们打开open62541下的build目录,可以看到生成的sln文件,打开之,
    在这里插入图片描述
    如下,
    在这里插入图片描述
    生成下点击生成解决方案就行了,然后等待生成,
    在这里插入图片描述
    最后生成成功,如下显示,
    在这里插入图片描述
    这时回到之前的build目录下,可以看到open62541.h,open62541.c以及bin/Debug/open62541.lib都生成出来了。
    在这里插入图片描述
    在这里插入图片描述


    三 编写OPC UA Server

    首先使用VS2015建立一个Win32控制台工程,建立过程中选择空项目,
    在这里插入图片描述
    建好后,把open62541.h和open62541.c拷贝到工程目录里,然后添加到工程里,最后添加一个main.cpp到工程里(main.c也是可以的),其内容如下,

    // server.c
    
    /* This work is licensed under a Creative Commons CCZero 1.0 Universal License.
     * See http://creativecommons.org/publicdomain/zero/1.0/ for more information. */
    
    #include "open62541.h"
    
    #include <signal.h>
    #include <stdlib.h>
    
    UA_Boolean running = true;
    
    static void stopHandler(int sign) {
        UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, "received ctrl-c");
        running = false;
    }
    
    int main(void) 
    {
        signal(SIGINT, stopHandler);
        signal(SIGTERM, stopHandler);
    
        UA_Server *server = UA_Server_new();
        UA_ServerConfig_setDefault(UA_Server_getConfig(server));
        UA_StatusCode retval = UA_Server_run(server, &running);
        
        UA_Server_delete(server);
        
        return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
    }
    

    整体工程目录如下,
    在这里插入图片描述
    此时,点击生成->生成解决方案,但是会报错,如下,
    在这里插入图片描述
    看上去是open62541自身依赖的库没有添加,看名字和网络相关,于是网上搜了下,原因是:open62541使用socket,而windows下的socket要依赖ws2_32.lib。

    网上找的这个库,然后添加到工程里,也可以点击这里下载(本人下载好后传到百度云,提取码9d92)
    在这里插入图片描述
    再次生成解决方案,成功!
    在这里插入图片描述
    运行,控制台打印如下(只截取一部分),Server运行成功
    在这里插入图片描述


    四 编写OPC UA Client

    按照相同操作我们再建一个工程来编写OPC UA Client代码,过程不再赘述,Client的main.cpp代码如下,

    // client.c,功能主要是从server那里获取时间
    
    #include <stdlib.h>
    #include "open62541.h"
    
    int main(void)
    {
    	UA_Client *client = UA_Client_new();
    	UA_ClientConfig_setDefault(UA_Client_getConfig(client));
    	UA_StatusCode retval = UA_Client_connect(client, "opc.tcp://localhost:4840");
    	if (retval != UA_STATUSCODE_GOOD) {
    		UA_Client_delete(client);
    		return (int)retval;
    	}
    
    	/* Read the value attribute of the node. UA_Client_readValueAttribute is a
    	* wrapper for the raw read service available as UA_Client_Service_read. */
    	UA_Variant value; /* Variants can hold scalar values and arrays of any type */
    	UA_Variant_init(&value);
    
    	/* NodeId of the variable holding the current time */
    	const UA_NodeId nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERSTATUS_CURRENTTIME);
    	retval = UA_Client_readValueAttribute(client, nodeId, &value);
    
    	if (retval == UA_STATUSCODE_GOOD && UA_Variant_hasScalarType(&value, &UA_TYPES[UA_TYPES_DATETIME]))
    	{
    		UA_DateTime raw_date = *(UA_DateTime *)value.data;
    		UA_DateTimeStruct dts = UA_DateTime_toStruct(raw_date);
    		UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "date is: %u-%u-%u %u:%u:%u.%03u\n",
    			dts.day, dts.month, dts.year, dts.hour, dts.min, dts.sec, dts.milliSec);
    	}
    
    	/* Clean up */
    	UA_Variant_clear(&value);
    	UA_Client_delete(client); /* Disconnects the client internally */
    	
    	system("pause"); // 防止控制台一闪而过
    	
    	return EXIT_SUCCESS;
    }
    

    client的功能是从server那边获取系统时间,然后打印出来,工程结构如下,
    在这里插入图片描述
    编译成功后,运行(要先运行Server),成功获取时间并打印,
    在这里插入图片描述


    五 使用UaExpert连接Server

    UaExpert的使用可以参照这篇文章,连接成功后如下,
    在这里插入图片描述
    如果看过前面的系列文章,都知道这是熟悉的界面。

    有些读者运行时会遇到错误:应用程序没有调用 WSAStartup,或者 WSAStartup 失败。可以添加以下2行代码解决,

    WSADATA wsaData; 
    WSAStartup(MAKEWORD(2,2), &wsaData);
    

    六 总结

    本文主要讲述如何在Win下使用VS编译及使用open62541,本系列的第一篇文章是讲述如何在Linux下编译及使用open62541。

    能在2个平台下使用,且体验一样,这正体现了OPC UA里的UA,即Unified Architecture,这也符合未来万物互联发展趋势。

    如果有写的不对的地方,希望能留言指正,谢谢阅读。

    展开全文
  • <div><p>Fixes #2906</p><p>该提问来源于开源项目:open62541/open62541</p></div>
  • 这些时间一直在进行OPCUA服务器代码的学习,一开始最麻烦的是进行在gethub上下载下来open62541的开源项目进行.c和.h的生成,由于本人在window下生成的.c和.h文件在项目移植到ubuntu下后出现了下图所示错误。...

    这些时间一直在进行OPCUA服务器代码的学习,一开始最麻烦的是进行在gethub上下载下来open62541的开源项目进行.c和.h的生成,由于本人在window下生成的.c和.h文件在项目移植到ubuntu下后出现了下图所示错误。
    ubuntu下编译错误
    最后定位错误为在gethub网站下载的代码缺少部分代码和使能,导致.h中的函数无法定位到.c文件中的函数引发的错误。最后还是在ubuntu下编译工程文件后使用其.c和.h文件才使得代码顺利生成.o文件
    ubuntu下编译成功

    一、下载和安装CMake-gui

    sudo apt-get install cmake-qt-gui

    二、获取Open62541源码

    使用以下命令去下载源码(在终端中输入,文件下载在运行终端的目录下)
    git clone https://github.com/open62541/open62541.git

    open62541还有一些子模块,当enable一些特殊功能时就需要他们了,例如namespace等,这个需要使用以下命令去下载(在上面下载源码后的源码根目录下操作)
    git submodule update --init

    三、编译

    cd到源码根目录下,创建build目录,然后cd到build目录下,输入以下命令去调用cmake,
    cmake .. -DUA_ENABLE_AMALGAMATION=ON
    接着再运行make,生成以下文件,
    编译1
    这里解释下cmake的命令行中的UA_ENABLE_AMALGAMATION选项,这是open62541的CMakeLists.txt提供的选项,专门用于生成single distribution版本的open62541,即open62541.c 和 open62541.h文件,方便用于集成到其它程序里。

    在bin目录下生成的是open62541的静态库,可以用于和别的程序进行链接。
    编译2
    也就是说open62541的CMakeLists.txt提供了2种调用方式:

    1. libopen62541.a + open62541.h
    2. open62541.c + open62541.h

    四、运行自己的demo

    • 第一种方法(使用libopen62541.a和open62541.h)

      我们在别的地方建立一个目录runDemoOpen62541,然后把libopen62541.a 和open62541.h拷贝进来,然后在这个目录下创建bin和build目录,创建server.c(也可以是自己写的demo),client.c(也可以是自己写的demo)和CMakeLists.txt,整体结构如下,
      编译3
      CMakeLists.txt的内容如下:

    cmake_minimum_required(VERSION 3.5)
    
    project(demoOpen62541)
    
    set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
    
    add_definitions(-std=c99)
    
    link_directories (${PROJECT_SOURCE_DIR})
    
    add_executable(server server.c)
    target_link_libraries(server libopen62541.a)
    
    add_executable(client client.c)
    target_link_libraries(client libopen62541.a)
    

    然后cd到build目录下,运行cmake .. && make,就会在bin目录下生成server和client这2个bin,

    编译4

    • 第二种方法(使用open62541.c和open62541.h)

    我们在别的地方建立一个目录runDemoOpen62541,然后把open62541.c 和open62541.h拷贝进来,然后在这个目录下创建bin和build目录,创建server.c(也可以是自己写的demo),client.c(也可以是自己写的demo)和CMakeLists.txt,整体结构如下,
    编译5
    CMakeLists.txt与第一种有所不同,内容如下,

    cmake_minimum_required(VERSION 3.5)
    
    project(demoOpen62541)
    
    set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
    
    add_compile_options(-std=c99)
    
    add_executable(server server.c open62541.c)
    
    add_executable(client client.c open62541.c)
    

    然后cd到build目录下,运行cmake .. && make,就会在bin目录下生成server和client这2个bin,
    编译4

    五、总结

    open62541在windows下使用CMake编译生成open62541.h和open62541.c文件会缺少一些函数导致工程无法编译,可以在linux下编译.c和.h文件后拷贝到windows下使用。

    展开全文
  • open62541.h

    2019-10-10 19:20:57
    open62541开源项目中的.h文件open62541通过CMake编译后产生的集成文件
  • open62541.c

    2019-10-10 19:20:17
    open62541开源项目中的.c文件open62541.c通过CMake编译后产生的集成文件
  • open62541.7z

    2020-08-18 17:36:00
    opcua开源协议库open62541.c + open62541.h + libopen62541.a
  • 生成 open62541.c/.h 环境: windows 7 、 VisualStudio2019 、CMake-3.18.2-win64-x64、open62541源文件(目前最新版 1.1.2) 注意: CMake、open62541源文件、输出的生成文件等,不能放在带有中文名字的目录中。 ...

    生成 open62541.c/.h

    环境:

    windows 7 、 VisualStudio2019 、CMake-3.18.2-win64-x64、open62541源文件(目前最新版 1.1.2)
    注意: CMake、open62541源文件、输出的生成文件等,不能放在带有中文名字的目录中。

    运行CMake

    CMake执行文件在 bin 目录中,运行 cmake-gui.exe 进入图形界面
    在这里插入图片描述
    where is source code:(选择open62541源文件所在目录)
    where si build the binaries:(选择输出项目文件位置)
    选完源目录和输出目录后,点击下面 < Configure > 按钮,弹出开发工具选择对话框。如下图
    在这里插入图片描述
    Specify the generator for this project:指定此项目的生成器 < 本机安装的是VS2019 >。
    Optional platform for generator(if empty ,generator uses:x64):指定生成的平台(默认 x64)< x64 >
    Optional toolset to use (argument to -T):配置工具集(参数 -T)< 空 >

    • use default native compilers:使用默认的本机编译器
    • Specify native compilers:指定本机编译器
    • specify toolchain file for cross-compiling:指定用于交叉编译的工具链文件
    • specify options for cross-compiling:指定交叉编译的选项
      点击 < finish > 返回上一界面,可看到已经在生成配置信息,生成完成后的界面,如下图
      在这里插入图片描述
      中间红色的列表为生成代码可选项配置(各配置信息的意思参见 open62541文档 第 2 章)
      ** UA_ENABLE_AMALGAMATION ** 这个选项就i是否生成 open62541.c/.h 文件。选中此项。其它为默认项。
      然后点击 < Generate > 按钮。进行你项目文件生成。生成完如下图。
      在这里插入图片描述
      生成的文件
      生成的文件内容

    生成完以后,启动 VS2019,打开刚生成的解决方案。
    在这里插入图片描述
    打开解决方案后,重新生成解决方案 ,生成完成后,在解决方案目录中就生成了 open62541.c/.h 文件。

    在这里插入图片描述
    在这里插入图片描述
    使用 VS 2019 新建测试项目
    引入上面生成的 open62541.c/.h 文件,添加 WS2_32.Lib 库文件(网络接口),编写代码
    Server.c

    #include <signal.h>
    #include "open62541.h"
    
    UA_Boolean running = true;
    void signalHandler(int sig) {
        running = false;
    }
    
    int main(int argc, char** argv)
    {
        signal(SIGINT, signalHandler); /* catch ctrl-c */
    
        /* Create a server listening on port 4840 */
        UA_Server *server = UA_Server_new();
        UA_ServerConfig_setDefault(UA_Server_getConfig(server));
    
        /* Add a variable node */
        /* 1) Define the node attributes */
        UA_VariableAttributes attr = UA_VariableAttributes_default;
        attr.displayName = UA_LOCALIZEDTEXT("en-US", "the answer");
        UA_Int32 myInteger = 42;
        UA_Variant_setScalar(&attr.value, &myInteger, &UA_TYPES[UA_TYPES_INT32]);
    
        /* 2) Define where the node shall be added with which browsename */
        UA_NodeId newNodeId = UA_NODEID_STRING(1, "the.answer");
        UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
        UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
        UA_NodeId variableType = UA_NODEID_NULL; /* take the default variable type */
        UA_QualifiedName browseName = UA_QUALIFIEDNAME(1, "the answer");
    
        /* 3) Add the node */
        UA_Server_addVariableNode(server, newNodeId, parentNodeId, parentReferenceNodeId,
                                  browseName, variableType, attr, NULL, NULL);
    
        /* Run the server loop */
        UA_StatusCode status = UA_Server_run(server, &running);
    
        UA_Server_delete(server);
        return status;
    }
    
    

    Client.c

    #include <stdio.h>
    #include "open62541.h"
    
    int main(int argc, char* argv[])
    {
        /* Create a client and connect */
        UA_ClientConfig UA_ClientConfig_default;
        memset(&UA_ClientConfig_default, 0, sizeof(UA_ClientConfig));
        UA_ClientConfig_setDefault(&UA_ClientConfig_default);
        //UA_Client* client = UA_Client_new(UA_ClientConfig_default);
        UA_Client* client = UA_Client_newWithConfig(&UA_ClientConfig_default);
    
            
        UA_StatusCode status = UA_Client_connect(client, "opc.tcp://XueLei-PC:4840");
        if (status != UA_STATUSCODE_GOOD) {
            UA_Client_delete(client);
            return status;
        }
    
        /* Read the value attribute of the node. UA_Client_readValueAttribute is a
         * wrapper for the raw read service available as UA_Client_Service_read. */
        UA_Variant value; /* Variants can hold scalar values and arrays of any type */
        UA_Variant_init(&value);
        status = UA_Client_readValueAttribute(client, UA_NODEID_STRING(1, "the.answer"), &value);
        if (status == UA_STATUSCODE_GOOD &&
            UA_Variant_hasScalarType(&value, &UA_TYPES[UA_TYPES_INT32])) {
            printf("the value is: %i\n", *(UA_Int32*)value.data);
        }
    
        /* Clean up */
        UA_Variant_deleteMembers(&value);
        UA_Client_delete(client); /* Disconnects the client internally */
        system("pause");
        return status;
    }
    

    运行效果如图
    在这里插入图片描述
    结束

    展开全文
  • open62541-linux32

    2018-06-17 16:05:56
    open62541源码,实例和协议详细pdf说明文档 open62541 (http://open62541.org) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in
  • Problem Building open62541

    2020-11-28 08:28:54
    <div><p>Hi! I cant compile the project. sudo apt-get install git build-essential gcc cmake python python-lxml git clone https://github.com/acplt/open62541.git ...open62541/open62541</p></div>
  • open62541.dll

    2020-11-28 08:35:12
    <p>I would like to use open62541, but not in C/C++. I think (but i'm not use) it's possible to create a dll (open62541.dll) and use it with other language like Delphi ? Is it possible ...
  • open62541-master.zip

    2021-03-24 17:56:34
    open62541-master.zip
  • OPEN62541 compilation

    2020-11-27 13:28:01
    <div><p>Hello, I am just trying to build a simple client/server, but am running into the issue when compiling on Visual Studio. When using the latest master file from ...open62541/open62541</p></div>
  • open62541开发文档

    2018-08-23 17:28:19
    Open62541官方开发文档,其中有编译、SERVER CLIENT 等先关开发说明。
  • open62541中文文档

    万次阅读 多人点赞 2018-12-04 23:11:10
    介绍 open62541(http://open62541.org)是一个开源的免费实现OPC UA(OPC统一架构),用C99和C ++ 98语言的通用...open62541库与平台无关。所有特定于平台的功能都是通过可交换的插件实现的。为主要操作系统提...
  • Open62541 Linux静态库

    2018-08-24 13:13:27
    Linux 下编译的OPC UA Open62541 静态库文件,包括server Client
  • Arduino-open62541-arduino.zip,Open62541用于Arduino的OPC UA示例用于Arduino的OPC UA使用Open62541,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统...
  • open62541简单的封装类

    2020-10-13 09:12:59
    将常用的open62541的功能进行简单的封装。可以将其进行简单的改造之后用于MFC中。仅供参考使用。
  • open62541 Version 1.1.2(not the single-file distribution), Windows 10 Pro Using Cmake and Visual Studio 14 2015, I can successfully generate a build for open62541. I can open the project in Visual ...
  • open62541教程 我在论文中使用的教程打开62541
  • open62541-1.1开发文档,opc_ua开发文档
  • WINDOWS:OPEN62541编译

    2020-09-09 11:33:15
    WINDOWS:OPEN62541编译 编译时的配置 windows 10 Visual Studio 2019 Community CMake 3.15.0 source code: open62541-1.1.2 CMake 第一步,配置源码和编译目录 选择编译选项:UA_ENABLE_AMALGAMATION=ON 第二步,...
  • open62541-win32(C)

    2018-06-17 16:04:10
    open62541源码,实例和协议详细pdf说明文档 open62541 (http://open62541.org) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++...
  • <div><p>Hello Community, <p>I need to implement Alarms & Conditions in my system and I believe open62541 stack has that source code of the feature....open62541/open62541</p></div>
  • open62541 as LDS-ME server

    2020-11-27 14:27:25
    <p>I am new to open62541 OPC UA. I want to bring up a LDS-ME server. Will </p><pre><code>open62541</code></pre> support LDS-ME server?. If so, How can I use <pre><code>open62541</code></pre> as <pre>...
  • Open62541 win32 动态库

    2018-08-24 13:06:45
    windows下编译的open62541,动态库(.dll,.lib,.h)3个文件。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,890
精华内容 756
关键字:

open62541