这篇文章里介绍了UaModeler的安装、ubuntu环境下使用open62541处理XML、以及OPC UA Server代码的部分。
基于这位大佬的教程,我在windows下试了同样的操作,第二部分有些不同,记录下来,有需要的朋友可以做个参考。下面只介绍和上面文章不同的第二部分。
使用open62541处理XML
1. 配置open62541
首先,需要对open62541进行配置。原文章里说直接在open62541源码目录下执行
git submodule update --init
我自己是从网上下的open62541源码,单用这句试了很久不成功。
具体操作:
-
首先要下载git bash,比较好执行后面的操作。下载和安装教程网上很多这里不详述了。
-
创建文件夹,用于放后面下载的源码,在文件夹下右键选择git bash here。
-
在命令窗口中输入以下命令,初始化操作,会在文件夹下生成.git文件夹。
git init
- 使用以下命令去下载源码
git clone https://github.com/open62541/open62541.git
于是开始在文件夹下创建了open62541文件夹,下载源码过程比较慢。
- 完成后打开open62541文件夹,右键选择git bash here
git submodule update --init
等待它更新完成…有点久…
(之前用网上下载的源码,在源码目录下用这条语句更新子模块不成功,只能用git重新下载一遍,试过后果真可以了)
3. 在Cmake中编译open62541
在源码目录下新建文件夹,命名为build
在Cmake中编译,第一行输入open62541源码目录,第二行输入刚刚创建的build目录,点configure
选择visual studio版本,我是2019,就选择了2019
点finish后,红色一片是open62541自带的CMakeLists里提供的配置选择,这里以gui的方式显示出来了。
这里勾选上UA_ENABLE_AMALGAMATION;
以及最后一行把UA_NAMESPACE_ZERO的值由REDUCED改为FULL。
最后点击generate,完成编译。
编译后的文件都在build文件夹中。
3. 在VS2019中生成open62541.c和.h文件
点开build文件夹中的open62541.sln,在vs中打开如图
点生成–生成解决方案
再返回build文件夹中,可以看到编译好的.c和.h文件
4. 生成自定义信息模型代码
这一步就使用到了之前生成的example.xml文件
先把该xml文件拷贝到tools/nodeset_compiler下
win+R,输入cmd打开命令行窗口,先定位到tools/nodeset_compiler这个目录下。
F:
回车
cd F:\OPC UA\OPC UA\open62541\tools\nodeset_compiler
此时定位到了该文件夹,然后输入
python ./nodeset_compiler.py --types-array=UA_TYPES --existing ../../deps/ua-nodeset/Schema/Opc.Ua.NodeSet2.xml --xml example.xml myNS
最后一个参数myNS用来指示生成的代码文件名称,具体这一代码的实现过程和具体参数可以看open62541的官方文档。
打印了下面四条INFO信息表示生成成功。
再看文件夹中已经有了myNS.c和.h文件
5. 在VS2019中编写server端代码
导入myNS.c和.h文件,导入前面生成的open62541.c和.h文件。
server.cpp的代码参考open62541官方文档或这篇文章
按照上面的文章继续进行,就可以把信息模型转成代码并添加到OPC UA Server里了!