Node-Red与S7200SMART通信

已锁定

davelyu

  • 帖子

    156
  • 精华

    3
  • 被关注

    38

论坛等级:侠士

注册时间:2010-12-23

普通 普通 如何晋级?

Node-Red与S7200SMART通信

5290

1

2020-08-26 11:11:51

Node-Red与S7200SMART通信『1』

版权声明

无需授权即可转载

同样内容在语雀同时发布

语雀链接[1]

Node-Red的安装

Node-Red的安装很简单,可以在本地电脑上安装

具体方法参考链接 本地安装方法[2]

也可以使用在线的Node-Red FRED[3]

与S7200SMART通信

需要下载Node-Red三方库 node-red-contrib-s7[4]

下载后,需要先进行通信节点的配置


此Node即配置PLC的通信参数与访问变量,双击后可以进入设置画面,首次使用需要设置通信节点,点击 添加新的通信节点 


在通信节点配置框内,S7200PLC的配置与S7-1200配置稍有不同,这里需要按照图示配置即可进行通信


标记红框处就是需要注意的配置参数,此处配置不正确,无法建立连接,通信参数配置完成后,就可以进行变量的配置,S7200SMART的变量配置主要需要注意的是V区的配置,如下图


V区需要设置成固定的数据块,即DB1,之后可以设定不同的V区地址访问V区变量,例如上图中访问V40.0,则Node-Red中的地址配置为DB1,X40.0,可以参考下面的链接获取更多的信息

V区地址配置[5]

目前还无法对定时器和计数器变量进行直接访问

读写变量

上述配置完成后,即可实现与PLC的通信访问,接下来需要使用 S7 in 和 S7 out 的Node进行变量的读写

读变量需要用到 S7 in ,如下图


双击可以打开 S7 in 的配置画面


PLC处需要选择之前建立的通信节点,Mode选项共有三种方式,主要分为读取单独的变量,读取全部变量,可以参考如下链接获取更多信息

三种Mode的区别[6]

这里我使用获取全部变量,这样所有的变量会被打包成一个对象送出,对象的Key就是变量名,Value就是变量的当前值。可以通过调用 Debug 来进行查看


可以看到所有的变量是被打包成了一个对象通过payload送出

写变量需要用到 S7 out 实现,写变量是将要写的值通过 msg.payload 写到对应的变量中,双击可以打开S7 out 设置对话框


能设置的选项很简单,就是需要写入值的变量,这里选择V40.0作为写对的对象 可以通过一个 inject 来实现变量的写入


可以配置 inject 节点的参数为布尔值,之后点击节点左侧的方形图表,可以看到V40.0的状态发生了改变


图形界面的处理

Node-Red自带图形界面,但是太丑,所以这里使用一个 uiBuilder 三方库来实现图形界面, uiBuilder 即通过各种主流的前端开发语言或者框架来实现图形界面和数据Api,所以有很大的自由度,我主要是用BootStrap来实现CSS画面布局和控件样式,使用Vue框架来实现数据的绑定,其实不需要涉及到很多的前端知识,Vue的使用也只是皮毛的功能,所以大可不必觉得这个事情有多难,其实做了后发现没有任何不可逾越的技术鸿沟。 这里直接下载了一个免费的Bootstrap的前端页面在此基础上进行修改,链接可参考

页面模板[7]

还需要安装 uiBuilder 的三方包,安装方法见链接

node-red-contrib-uibuilder[8]

安装好后,在Node-Red中可以通过 inject , uiBuilder , debug 实现一个最简单的flow,然后通过localhost:1880/uiBuilder就可以访问预先内置的页面


双击可以打开uiBuilder的设置界面


点击Edit Source Files就可以编辑Index文件和Js文件,uiBuilder内置了Vue和BootStrap的库文件,可以直接使用Vue进行数据的绑定,可以借用uiBuilder写好的页面框架内容,进行必要的修改就可以实现我们想要的功能,这里要注意如果需要使用到其他的css或者js库文件,可以放置到用户名\.node-red\uibuilder\common目录下,之后在index.html文件中进行调用。 这里我修改了Index文件的页面样式,如下图


之后通过Vue绑定从PLC读取的数据到页面上,uiBuilder在它预制的页面中已经设定好了一些数据包,包括写入到Node-Red的数据和从Node-Red读取的数据,这里没有必要完全重写,可以使用已有的数据编写必要的computed和Methods函数即可实现大部分的功能,这里我通过编写了一个computed函数将PLC中VD108变量的值显示在页面上,computed函数如下

getValue: function(){ if(this.msgRecvd.payload !== undefined){ var getValue = this.msgRecvd.payload return (getValue.VD108.toFixed(2)) }}

这里 msgRecvd 是uiBuilder预制的页面中已经建立好的data,即接收来自Node-Red的数据包,通过访问VD108就获得了变量的值


视频内容

以后的教学文章我会配合视频进行演示,视频上的五分钟顶我这里敲1000个字,所以大家可以在阅读文章的同时配合视频的演示获取更多的资讯。视频地址 Node-Red与S7200SMART通信


引用链接

[1] 语雀链接: https://www.yuque.com/books/share/590cdcfa-a731-44b7-ba0c-1a50a4af13b4?#
[2] 本地安装方法: https://nodered.org/docs/getting-started/local
[3] FRED: https://fred.sensetecnic.com/
[4] node-red-contrib-s7: https://github.com/netsmarttech/node-red-contrib-s7
[5] V区地址配置: https://github.com/plcpeople/nodeS7/issues/49
[6] 三种Mode的区别: https://github.com/netsmarttech/node-red-contrib-s7#usage
[7] 页面模板: https://startbootstrap.com/themes/sb-admin-2/
[8] node-red-contrib-uibuilder: https://flows.nodered.org/node/node-red-contrib-uibuilder


Node-Red与S7200SMART通信 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9438条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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