Node-Red如何与OPC DA服务器通讯

一、内容简介

本篇内容主要介绍Node-Red如何分别利用插件node-red-contrib-opc-da和插件node-red-contrib-opcda-client与OPC DA服务器进行通讯,用KEPServer来模拟服务端。

  • 环境搭建

此次环境搭建需要两台机器,在同一局域网内:

服务机

功能:模拟OPC DA服务器

操作系统:Windows 7 专业版

客户机

功能:用于OPC DA客户端远程连接测试

操作系统:Windows 11 家庭中文版

安装KEPServer

首先,在需要服务机上安装KEPServer,安装出错,弹出如下对话框,

The installer was unable to find required root certificates. Please apply Windows updates. If unable to apply Windows Updates,contact support for instructions on installing root certificates.

提示需要根证书,现在我们来安装根证书,打开命令行,输入“mmc”,弹出如下界面

点击文件->添加/删除管理单元(M)...菜单,弹出如下对话框

在对话框左侧列表选择“证书”,点击中间的添加按钮,在弹出的窗口选择“计算机账户”选项,

点击“下一步”,然后选择“本地计算机”选项,

再点击“完成”按钮确定,

回到添加或删除管理单元对话框,点击“确定“按钮完成添加。

在左侧树形列表定位到“控制台根节点->证书(本地计算机)->受信任的根证书颁发机构->证书”节点,在该节点上右击鼠标,选择“所有任务->导入”菜单,弹出对话框如下,

点击“下一步”按钮,

点击“浏览”按钮,打开文件选择对话框,选择第一个证书“ Globalsign Root CA - R3”,点击“打开”按钮确定,

回到“证书导入界面”,点击“下一步”按钮

选择“将所有证书放入下列证书存储”选项,再点击“下一步”按钮,

最后点击“完成”按钮,以完成证书导入,然后以同样的方式导入第二个证书“MicRooCerAut2011_2011_03_22”。

重新安装KEPServer,

初始化成功,没有弹出之前的错误对话框

这里选择“Skip setting a password at this time”选项,其余保持默认,顺利安装完成。

启动KEPServer会自动启动OPC DA服务器,无需额外配置。

添加帐户

Node-Red插件需要通过帐户连接OPC DA服务器,所以需要创建一个新帐户,并授予相应的权限,在桌面“我的电脑”图标上右击鼠标,选择“管理”菜单,在弹出的对话框左侧列表定位到“计算机管理->系统工具->本地用户和组->用户”节点。

在该节点上右击鼠标,选择“新用户”菜单,弹出用户创建对话框

用户名输入“opcda”,密码设置为“123456”,勾选“密码永不过期”选项,点击创建按钮完成用户新建,关闭“新用户”对话框,可以看到新建的用户。

在新用户“opcda”上右击鼠标,选择“属性”菜单,在弹出的对话框中选择“隶属于”标签

点击“添加”按钮,弹出对话框如下

然后点击“高级”按钮,再点击“立即查找”按钮,显示如下

在“搜索结果”列表中选择“Distributed COM Users”选项,点击“确定”按钮。

回到“选择组”对话框,再次点击“确定”按钮,完成设置。

DCOM设置

打开控制面板,如下图

将查看方式切换为“大图标”

点击“管理工具”,在弹出的窗口中双击“组件服务”快捷方式,打开“组件服务”窗口,并定位到“控制台根结点->计算机->我的电脑“节点

在该节点上右击鼠标,选择“属性”菜单项,在弹出的对话框中选择“COM安全”标签

点击“启动和激活权限->编辑限制”按钮,打开“启动和激活权限”对话框

点击“添加”按钮,打开“选择用户或组”对话框

点击“高级”按钮,在弹出的对话框中点击“立即查找”按钮

选择“Distributed COM Users”用户组,该组就是新建用户“opcda”所加入的组,选择完成之后回到“启动和激活权限”对话框,在该用户组对应的“本地启动”、“远程启动”、“本地激活”、“远程激活”四个权限后勾选“允许”,并确定。

点击“启动和激活权限->编辑默认值”按钮,以同样的方式授予相应权限。

在“组件服务”窗口左侧树形列表定位到“控制台根结点->计算机->我的电脑->DCOM配置”节点,然后再在键盘上按一下“k”键,快速搜索到“KEPServerEX 6.5”节点,

在该节点右击鼠标,选择“属性”菜单项,

记录下“应用程序ID”值“7BCOCC8E-482C-47CA-ABDC-OFE7F9C6E729”,后面连接时要用到,设置完成后重启机器。

三、Node-Red设置

本地测试
服务机Node.js安装

本地测试环境相对比较简单,先看本地测试能不能通过,由于服务机操作系统为Windows 7,高版本的Node.js不支持,所以对Node.js的版本有要求,这里只能选择尽可能高的版本,尝试过很多版本,踩过很多坑,确定v14.15.1可以正常运行,安装完成之后用命令显示版本时会出现以下提示:

按照提示添加环境变量NODE_SKIP_PLATFORM_CHECK,并将其值设置为“1”

正确显示版本号

Node-Red安装

以管理员身份运行“cmd.exe”,输入命令将Node.js切换到淘宝镜像,这样安装会比较快:

npm config set registry https://registry.npm.taobao.org

输入命令安装Node-Red:

npm install -g --unsafe-perm node-red

稍等片刻之后安装成功

启动Node-Red,在工作台分别安装插件node-red-contrib-opc-da和插件node-red-contrib-opcda-client。

插件node-red-contrib-opcda-client设置

在Node-Red左侧面板中分别拖动一个inject节点、一个opcda-read节点和一个debug节点到工作区,并依次链接三个节点

双击opc-read节点,打开设置对话框

点击Server最右边的“笔型”按钮,添加OPC DA服务器,Address为“localhost”,Domain为空,但不能不填,用两个引号表示,User Name为前面新建的系统账户“opcda”,Password为账户密码“123456”,ClsId就是前面记录下的应用程序ID“7BCOCC8E-482C-47CA-ABDC-OFE7F9C6E729”,然后点击Browse按钮测试,读到了373条数据,说明连接成功。

从读到的变量列表中复制出两个数据“数据类型示例.16 位设备.K 寄存器.Double1”和“数据类型示例.16 位设备.K 寄存器.Float1”,点击添加按钮确定,回到“编辑opcda-read节点”界面,

将上面复制的两个数据添加到Items列表,点击完成按钮确定,并部署流程。

点击inject(时间戳)节点触发流,调试窗口显示如下:

能正确读到服务器的数据。

接下来看看怎么往OPC DA服务器写数据,复制当前工作台中的三个节点,将opcda-reada节点替换为opcda-write节点,并在opcda-write节点前面插入一个function节点,

双击function1节点,弹出编辑对话框,输入如下代码:

msg.payload = [
    {"itemID": "数据类型示例.16 位设备.K 寄存器.Float1", "type": "float", "value": 88},
    {"itemID": "数据类型示例.16 位设备.K 寄存器.Double1", "type": "double", "value": 888}
    ];
return msg;

代码表示向两个变量分别写入值88和888,点击完成按钮确定,双击opcda-write节点,从下拉框中选择“opcda-server”,确定编辑并部署流程。

点击该流的inject(时间戳)节点触发流,调试窗口显示返回值为“true”,表示写入正确。

再次点击opcda-read节点前面的inject(时间戳)节点读取数据,以验证写入结果,调试窗口显示如下:

写入值正确无误。

插件node-red-contrib-opc-da设置

从Node-Red左侧面板拖动一个opc-da in节点和一个debug节点到工作区,并连接两个节点

双击opc-da in节点,打开编辑对话框

点击OPC Group条目最右侧的“笔形”按钮,打开添加组对话框

再次点击OPC Group条目最右侧的“笔形”按钮,打开添加OPC DA服务器对话框,填写服务器信息,参数与上面相同,再点击Test and get items按钮进行测试,将会在 Server items显示读到的变量,点击“添加”按钮确定。

回到添加组对话框,在Name处填写组名“group1”,在Items下拉框选择要读取的变量,将其添加到下面的列表中,为了方便测试,还是选择上面相同的两个变量“数据类型示例.16 位设备.K 寄存器.Double1”和“数据类型示例.16 位设备.K 寄存器.Float1”,点击“添加”按钮以确定。

回到opc-da in节点编辑对话框,Mode选择“All items”选项,点击“完成”按钮确认,

部署流程,流会循环读取添加的变量,调试窗口显示如下:

本地测试成功,现在导出流程,点击Node-Red工作台右上角的“主菜单(三条横线)->导出”菜单项,打开导出对话框

选择“所有流程”选项,下面的标签选择“JSON”,点击“下载”按钮导出流程。

远程测试
服务机防火墙设置

在服务机打开“控制面板->系统和安全->Windows防火墙”界面,

点击左侧的“高级设置”,打开“高级安全 Windows 防火墙”对话框,并在左侧树形列表中定位到“入站规则”节点

然后点击“操作->新建规则”菜单,打开“新建入站规则向导”

默认选择“程序”,保持不变,点击“下一步”

点击“此程序路径”后面的“浏览”按钮,定位到KEPServer的安装路径,选择“server_runtime”

确定后继续点击“下一步”

保持不变,再“下一步”

同时选择“域”、“专用”和“公用”,再“下一步”

命名为“kepserver_server_runtime”,点击“完成”,结束入站规则添加。

客户机Node.js安装

客户机最初安装的Node.js版本为v20.9.0,用opcda插件测试的时候一直出现如下错误:

Error: Exception occured while forming Session Security Type3Response

找了一些资料,发现好像跟openssl的版本有关

所以将Node.js版本降到v14.15.1,版本与服务机上的一致,问题解决,其它v14的版本应该也可以,请自行测试。

Node-Red流程导入

安装好Node.js和Node-Red,启动程序,导入前面从服务机导出的流程,点击Node-Red工作台右上角的“主菜单(三条横线)->导入”菜单项,打开导入对话框

选择要导入的文件后点击“导入”按钮,导入流程。

双击opcda-read节点,在打开的“编辑opcda-read 节点”对话框点击Server条目右侧的“笔形”按钮,打开Server编辑对话框

在Address处输入服务机的IP地址,这里为“192.168.80.141”,User Name为服务的新建的帐号“opcda”,Password为新帐号的密码“123456”,其余保持不变,确定修改之后回到工作台。然后将opc-da in节点(在工作台名称为group1)的OPC DA服务器参数修改为同样的值,确定修改后部署流程。注意,如果部署之后连接不稳定,请重启一下Node-Red。

调试窗口显示通讯正常:

如果您想获取文章相关的代码、工具等资料,关注公众号“NodeRed物联网”,回复“nr”即可。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值