一、内容简介
本篇内容主要介绍Node-Red如何用插件node-red-contrib-opcua来作为OPC UA服务器使用,用UaExpert用来进行连接测试。
插件node-red-contrib-opcua及UaExpert的安装请参考Node-Red如何与OPC UA服务器通讯。
二、OPC UA服务器的创建和连接
1.创建OPC UA服务器
在Node-Red左侧面板中将Opcua-Server节点拖放到工作区
双击该节点,打开属性编辑页面,记录下Port的值“53880”备用。
部署流程后可以看到OPC UA服务器正常运行。
2.UaExpert登陆
点击工具栏的“加号”按钮,打开Add Server窗口,选择Discovery选项卡
在树形列表中双击Custom Discovery下的“加号”按钮,打开URL输入对话框,输入服务器端点“opc.tcp://localhost:53880”,点击“OK”按钮确定。
可以看到在Custom Discovery下多了一个服务器,先选中服务器名“Node-RED OPCUA”下的“None”条目,Authentication Settings组合框默认选择第一项“Anonymous”,保持不变,点击“OK”按钮确定。
服务器连接成功,同时也说明Node-Red OPC UA服务器创建成功。
3.Node-Red登陆
这里我们介绍一另一种Node-Red登陆的方法,从Node-Red左侧面板中分别拖放一个inject节点、一个function节点、一个OpcUa-Client节点和一个debug节点到工作区,依次将其连接,如图
双击OpcUa-Client节点,打开属性编辑页面
点击Endpoint后的“笔型”按钮,打开Endpoint编辑页面
在Endpoint输入框输入“0”,点击“添加”按钮,完成修改,回到上级页面点击“完成”按钮,结束对OpcUa-Client节点的编辑。
双击function节点,输入如下代码:
msg.topic = "Reconnect";msg.action = "reconnect";msg.OpcUaEndpoint = { credentials: {}, endpoint: 'opc.tcp://localhost:53880', securityPolicy: 'None', securityMode: 'None', login: false, user: undefined, password: undefined}return msg;
点击“完成”按钮,确定修改,并部署流程,点击inject节点触发流,可以看到OpcUa-Client节点与服务器建立了连接。
调试窗口显示如图
三、添加元素
1.添加文件夹
从Node-Red左侧面板中施放一个inject节点和一个debug节点到工作区,使之与上面的Opcua-Server节点连接,如图
双击inject节点,打开属性编辑页面
将名称改为“添加文件夹”,在下面的列表中将msg.payload的类型改为“{} JSON”,在输入框中输入如下代码:
{"opcuaCommand":"addFolder"}
msg.topic的类型不变,在后面的输入框中输入如下代码:
ns=1;s=TestFolder
点击“完成”按钮确定修改,并部署流程。
点击inject节点触发流,在UaExpert的Address Space面板可以看到TestFolder已经添加成功。
2.选择文件夹
打开UaExpert,从Address Space面板找到文件夹“DeviceSet”
再在右侧Attributes选项卡中找到其NodeId“ns=2;i=5001”
复制“添加文件夹”节点,将其连接到Opcua-Server节点,双击打开属性编辑页面,将名称改为“选择文件夹”,msg.payload改为:
{"opcuaCommand":"setFolder"}
msg.topic改为:
ns=2;i=5001
点击“完成”之后部署流程,单独使用看不出效果,等添加变量时一起使用。
3.添加变量
复制“选择文件夹”节点,将其连接到Opcua-Server节点,双击打开属性编辑页面,将名称改为“添加变量”,msg.payload改为:
{"opcuaCommand":"addVariable"}
Msg.topic改为:
ns=1;s=TestAddVariable;datatype=Float;value=88.8
点击“完成”按钮确定修改,并部署流程。
点击“添加变量”节点触发流,在UaExpert的Address Space面板可以看到已经添加了一个名为TestAddVariable的变量。
拖动该变量到Data Access View选项卡,其值显示为88.8,添加变量的同时进行了初始化。
接下来我们再配合选择文件夹一起测试一下,重新部署Node-Red,以重新初始化OpcUa Server节点,点击“选择文件夹”节点,选择文件夹DeviceSet,再点击“添加变量”节点,调试窗口显示如下
打开UaExpert,在Address Space面板可以看到变量TestAddVariable在文件夹DeviceSet下
四、订阅
复制“添加变量”节点,将其与OpcUa Client节点连接,双击该节点,打开属性编辑页面
将名称改为“订阅”,msg.payload改为:
{ "action": "subscribe"}
msg.topic改为:
ns=1;s=TestAddVariable
订阅上面添加的变量。
点击“完成”按钮之后部署流程
部署流程之后,OpcUa Server会重新初始化,所以需要点击“添加变量”节点,重新添加变量“TestAddVariable”,再点击function节点前面的inject节点,连接服务器,再点击“订阅”节点,调试窗口显示如下
说明订阅成功,打开UaExpert,在Address Space面板找到TestAddVariable变量,在Attributes选项卡中将Value的值修改为“666”
回到Node-Red,可以在调试窗口看到其值的变化
如果您想获取文章相关的代码、工具等资料,关注公众号“NodeRed物联网”,回复“nr”即可。