故事作者:菲戈

最近创作

看看TA的故事

菲戈的IOT2040学习笔记:(五)Node-Red编程 OPC UA Client 读写PLC变量

已锁定

菲戈

  • 帖子

    5906
  • 精华

    63
  • 被关注

    608

论坛等级:至圣

注册时间:2009-01-22

黄金 黄金 如何晋级?

菲戈的IOT2040学习笔记:(五)Node-Red编程 OPC UA Client 读写PLC变量

32223

14

2018-02-24 14:28:55

star star star star star

OPC UA 简介

在自动化领域和下位机通讯的协议肯定离不开OPC, OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地 解决了硬件设备间的互通性问题, 在企业层面的通信标准化是同样需要的。OPC访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的弱点。加上传统OPC技术不够灵活、平台局限等问题的逐渐凸显, OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法 — OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范 (OPC DA)、OPC历史数据访问规范 (OPC HDA)、 OPC 报警事件访问规范 (OPC A&E) 和OPC安全协议 (OPC Security) 的不同方面, 但在其基础之上进行了功能扩展。OPC UA,是在传统OPC技术取得很大成功之后的又一个突破,让数据采集、信息模型化以及工厂底层与企业层面之间的通讯更加安全、可靠。

OPC UA的几大优势:

与平台无关,可在任何操作系统上运行

为未来的先进系统做好准备,与保留系统继续兼容

配置和维护更加方便

基于服务的技术

可见性增加

通信范围更广

通信性能提高


Iot2040安装 opc ua

Iot2000镜像文件从V2.1.2版本以后的node-red都可以联网安装OPC UC node。

第一步首先测试一下iot2040是否联网,硬件上可以通过X2P1LAN 口联上已经上网的路由器,因为X2P1LAN 默认是自动获取IP地址。所以也不需要特别的IP设置,练上后可以测试一下IOT2040是否联网,测试方式为利用PING 指令,直接PING 一个网址如:www.baidu.com


如果PING 成功然后就如上图,但是Linux下的PING命令不会自动终止,会一直PING下去。结束通过快捷键 CTRL+C。打开文件目录 cd /usr/lib/node_modules  输入 npm install node-red-contrib-opcua  开始安装 OPCUA

安装的过程还是有点时间的,请耐心等待


安装完了有如下信息



通过浏览器打开node-red查看 OPC UA是否安装成功,不行就重新上电一下。成功的话你就会看到左侧的新Nodes


找一个支持OPC UA Server PLC

对PLC进行数据采集的时候iot20000是作为OPC UA Client,然后PLC是作为OPC UA Server。在新一代的西门子产品中硬件中都集成了OPC UA Server,这也就是OPC UA的优势跨平台。 手册中的实例是和SIMATIC S7-1500 Software Controller 的 OPC UA Server做的通讯实例。原本我也准备依葫芦画瓢的,因为看S7-1500 Software Controller 应该是一个软PLC。应该可以直接安装在工控机甚至普通PC上,这样我就无需要额外硬件做测试。 为此我还特意安装TIA V15,博途做为一个工控组态软件绝对是一骑绝尘,至少在体量上肯定是。


好不容易装完博途,but发现好像白忙乎了。S7-1500 Software Controller是软PLC没错,可以安装在Windows操作系统下,可以实现所有 S7-1500 硬PLC的功能。属于西门子老一代软PLC WinAC RTX的升级版。But重点来了,S7-1500 Software Controller和WinAC RTX最大的区别就是只能安装在西门子自家特定的工控机上。一句话概括,就是需要硬件支持。这让我想起西家的总线协议PN和DP,果然在封闭的道路上越走越远。没办法,只能PASS掉S7-1500 Software Controller。然后我找了另一款有名的软PLC,beckoff的twincat安装在一台PC机上,并且安装了OPC UA配置好Server。下面就把这台PC当做一台带有OPC UA Server的PLC了。先用自己的笔记本和PLC做一个OPC UA的测试连接。这时候推荐一款西门子自家的OpcUA.Client


Siemens.OpcUA.Client.rar

把笔记本的以太网口和PLC的OPC UA的以太网口配置在同一网段。在Endpoint里面设置好PLC的IP和端口号然后连接,正常会看到PLC OPC UA node下所有可读写的一些变量。

可以看到PLC的一些变量,同时可以查看变量的NodeID。这个之后会用到。

编写node-red OPC UA 读写变量的程序

因为X1P1LAN需要用于编程,所以使用X2P1LAN和PLC连接。先用Putty 把X2P1LAN的IP和PLC配置在同一个网段。然后连上PLC,不放心可以PING一下是否通了。


用浏览器打开node-red界面,从左侧拖拽三个node控件到一个Flow里面去


Inject:用来设置要访问的变量的nodeID


OpcuaClient:用来设置OPCUA连接参数


Text:用于输出变量值到窗口


设置完成后把node直接连接起来形成一个“流”,这样一个读变量的编程就算完成了,然后下载到iot2040里面


如果看到这样的提示,那么恭喜你至少OPC UA链接成功了


在浏览器中输入http://192.168.200.1:1880/ui,就能打开监视窗口了,因为我读的变量是一个bool型,所以显示的text 为TRUE或者FALSE。我后面还监控了一个int类型的数值,显示为3.


读没问题了,再弄一个写试试。同样拖了三个控件,


Numeric:用来输入数字,但是好像不是调用数字键盘的。是一个增减控件


OpcUa-Item:作用和上面的Inject类似


OpcuaClient:;同上。

然后连线下载到iot2040,打开ui操作<,>写入和读取的数字变化一致。


经过这次折腾了OPC UA,对node-red编程又了解了一些,有点新鲜感但是还是不太习惯这种方式。最后附上官方实例手册,有1500的朋友可以测试一下。

OPC_UA_Client_node-red_V1.0.pdf

SIMATIC IOT2000 S7.pdf


菲戈的IOT2040学习笔记:(五)Node-Red编程 OPC UA Client 读写PLC变量 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3250条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。