OPC UA JAVA开发笔记(二):Server结点定义方式

本文深入探讨了OPC UA服务器中命名空间的定义,通过Milo库学习如何添加命名空间,并详细解释了结点定义,特别是变量结点(ScarlarNode)。文章介绍了OPC Foundation的命名空间概念,以及在Java OPC UA Server中如何添加和管理命名空间,包括预定义的Namespace和自定义命名空间。此外,还讨论了结点的注册过程,特别是如何在folder结点基础上创建和赋值操作,利用委托模式实现ValueLoggingDelegate。
摘要由CSDN通过智能技术生成

由于没有相应的Tutorial,学习Milo库的唯一方式就是通过阅读源码来学习。接着说之前的

1.添加命名空间:

命名空间的定义参考的是OPC Foundation官方:

Namespaces are used by OPC UA to create unique identifiers across different naming
authorities. — The NodeId and BrowseName Attributes are identifiers

大意就是说Namespace是通过创建相应的指示量来定义地址空间的浏览名称和结点ID。
看个例子就知道了:

Standard UA Namespace (0:http://opcfoundation.org/UA/) – 加粗的就是一个典型的命名空间,就类似URL

然后是在Server中定义Namespace的方式,examples里面已经有一个预定义好的Namespace:ExampleNamespace

我们在ExampleServer里面找到如下代码:

ExampleNamespace exampleNamespace = new ExampleNamespace(server);
exampleNamespace.startup();

将server传入其中,然后启动对应的命名空间,example里面是(urn:eclipse:milo:hello-world
如果我们又定义了一个机床的命名空间,那么就在其下添加

CncNamespace cncNamespace = new CncNamespace(server);
cncNamespace.startup();

之后server又会得到另一个命名空间。相应的index如下,我们将断点放在ExampleServer中的这一行:

server.startup().get();

执行一步,或者用Evaluate Expression,我们看到定义的命名空间:
在这里插入图片描述
有三个,其中编号0是基础的命名空间,第二个是服务器的命名空间,而第三个则是我们定义的命名空间,命名空间可以依次累加。

2.结点定义

接下来我们深入了解命名空间,也就是OPC UA中结点定义的地方。在ExampleNamespace中,最核心的就是它的onStartup方法:

@Override
    protected void onStartup() {
   
        super.onStartup();

可以看到,首先是唤醒了父类汇总的onStartup方法,查看源码可知:

@Override
    protected void onStartup() {
   
        super.onStartup();

        registerAddressSpace(this);
    }

父类的方法主要用于注册地址空间。

folder结点的定义上一篇已经讲过,接下来来看variable结点

addVariableNodes(folderNode);

对应的方法再本类中找到

private void addVariableNodes(UaFolderNode rootNode) {
   
        addArrayNodes(rootNode);
        addScalarNodes(rootNode);
        addAdminReadableNodes(rootNode);
        addAdminWritableNodes(rootNode);
        addDynamicNodes(rootNode);
        addDataAccessNodes(rootNode);
        addWriteOnlyNodes(rootNode);
    }

可以发现它添加了很多种类的结点,这里主要介绍ScarlarNode,即单值的标量变量结点

UaFolderNode scalarTypesFolder = new UaFolderNode(
            
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值