天天看點

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

前兩天一直在搞open62541,因為milo庫的server sdk沒有辦法根據xml生成結點檔案,于是準備用open62541來搭建伺服器,milo結合Spring Boot來構件用戶端。

網絡上大多是建立一個open62541.h的頭檔案,還有就是open62541.c的執行檔案,但是新版好像并不是這樣的。

然後很多教程都是講的linux,但是初學者用linux的還是比較少,所我寫了這一篇幫助大家配置。

但是open62541的構件相當的麻煩,我試了一下午都沒搞明白,今天上午算是終于有點懂了。接下來,我一步一步來講。

為什麼用open62541?
  1. 和商業庫一樣,可以根據uamodeler生成的xml檔案直接生成相應的代碼,步驟簡單。
  2. 有完備的tutorial,适合新手,一步一步上手。

    3.國内有許多關于open62541的部落格可供參考

了解了理由,我們就需要來實操,首先是最難的一步,也就是安裝

1.首先是下載下傳

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

我們進入open62541的github官網open62541,選擇release版本。

這裡我用的是win64的版本。

下好解壓完成後得到如下檔案,這個myserver.c是一會兒要建立的檔案

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

2.建立工程

在VS2019中建立一個C++的 空工程。

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

打開工程,并打開工程所在的檔案夾 E:\Code_Library\TeachingOPC\TeachingOPC,注意是sln裡面的那個檔案夾。複制我們下載下傳的release檔案夾中的這幾個檔案到工程檔案夾中。

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

位置如下

OPC UA Java 開發筆記(三):open62541建立基礎伺服器
OPC UA Java 開發筆記(三):open62541建立基礎伺服器

一個是open62541的x64庫檔案,一個是open62541的頭檔案

在VS中打開工程,然後對所有檔案選擇 包括在項目中

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

這是包括完後

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

然後最玄學的地方來了,我到現在還是沒搞明白為什麼的東西。這個時候我們需要VS2015,對又要打開2015

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

然後在附加包含目錄裡面加上這一句,$(ProjectDir),然後就可以了。

關于這點我也有疑問,這個操作我再VS2019上做就不行,然後在2015上做就可以,我猜測可能是因為原來的檔案是用的2015編譯的,但是這樣操作後2019上面也可以使用,就很奇怪。

接下來我們建立一個c或者cpp檔案,輸入以下代碼,這個是源碼:

#include <open62541/plugin/log_stdout.h>
#include <open62541/server.h>
#include <open62541/server_config_default.h>
#include <signal.h>
#include <stdlib.h>

static volatile UA_Boolean running = true;

static void stopHandler(int sig) {
	UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "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;
}
           

運作成功

OPC UA Java 開發筆記(三):open62541建立基礎伺服器

PS:

  1. 如果Console裡面出現異常報錯的話,可能是端口被占用了,參見解決端口占用
  2. 如果提示少了個dll檔案的話,去網上搜這個檔案,有教程怎麼下,具體什麼名字我忘了,很好解決的問題

這個就是windows端,建立opc server的方法

繼續閱讀