故事作者:绫

最近创作

看看TA的故事

【周三技术工坊】树莓派+1500PLC以及阿里云的跨界组合

已锁定

总坛主

  • 帖子

    1739
  • 精华

    120
  • 被关注

    273

论坛等级:至圣

注册时间:2019-03-20

钻石 钻石 如何晋级?

【周三技术工坊】树莓派+1500PLC以及阿里云的跨界组合

10426

9

2019-07-23 09:08:23

star star star star

        Raspberry Pi(中文名为“树莓派”),是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。自问世以来,受众多计算机发烧友和创客的追捧,别看它身材娇小,但是功能却十分强大!

        那么如果树莓派和工控界最著名的产品西门子PLC碰撞在一起,又会有怎样的火花呢?

        本文将简单介绍如何基于Node-red使树莓派和西门子PLC进行S7通讯,并能够通过阿里云上的MQTT服务器对PLC的数据进行读取写入。


  • 本文会分为四个部分:

        1. 树莓派中Node-Red节点的配置;

        2. 阿里云上MQTT服务器的建立;

        3. PLC侧的设置;

        4. 测试;

  • 本文测试所需软件及硬件:

        1. 树莓派3B+;

        2. 西门子PLC S7-1500;

        3. TIA Portal V15;

        4. Putty;

        5. MQTT.fx;

        6. 阿里云服务器


  • 1. 树莓派中Node-Red节点的配置;

        自2015年开始是默认就带NODE-RED和NODE.JS,防止自带的Node-Red的版本较老,可以用putty连接树莓派后用以下指令进行更新;

                update-nodejs-and-nodered
        下一步是安装npm,这样方便对树莓派中的Node-red添加节点,步骤如下:
        安装npm前,先运行以下指令使得树莓派的系统更新到最新,然后重启树莓派
                sudo apt-get update && apt-get upgrade
        重启之后运行如下指令安装npm
                sudo apt-get install npm
        此时树莓派侧的前期准备工作基本完成,用putty连接树莓派后,运行Node-red;


        然后在浏览器中输入http://{树莓派的地址}:1880/即可进入Node-red编辑界面,如下图所示:


        因为S7是西门子PLC专有的协议,因此树莓派中的Node-Red没有自带该节点,需自己安装(如果之前没有安装npm,安装新的节点便会很麻烦),如下图所示,打开Node-Red设置里的节点管理,搜索S7,安装第二个节点;


        安装完毕之后,可以看到左边会多出S7的节点;


        到此,Node-Red的设置基本完成,接下来进行简单编程,Node-Red编程方式的优缺点此处便不加赘述,如果对Node-Red编程方式不太了解的,可以参考链接(https://zhuanlan.zhihu.com/p/27546140);          本次会用到的节点有S7 in;S7 out;MQTT in;MQTT out;

        首先是S7 in节点的设置:


        IP Address处填写PLC的IP地址,Port默认为102,Mode选为Rack/Slot,PLC默认的机架号为0,插槽号为1;

       下面是要访问的变量的填写,与TIA Portal中的设置对应;


        接下来是S7 out节点的设置;

        Out节点的设置和In节点类似,此处我们选择要修改的变量为1。

        到此,S7的节点设置完成,下面对MQTT in和MQTT out节点进行设置,如下图所示;

  

        首先是Out节点的设置


        上图中,服务端的IP填写阿里云的公网IP,端口号为61613(TCP的端口号),客户端ID可以不填,用户名和密码为部署在阿里云上的MQTT服务器的密码(默认用户名为admin,密码为password);


        主题处填写希望从MQTT服务器中订阅的主题;

        以上所有的节点均已经配置完毕,讲节点连接,并点击右上角的部署按钮,将Node-Red部署至树莓派中;

        第一部分结束。


  • 2. 阿里云上MQTT服务器的建立;

        MQTT的服务器很多,甚至还可以自己编写MQTT的服务器,本文采用的是Apollo服务器,Apollo服务器在Windows系统下的具体配置可以参照以下链接:https://blog.csdn.net/eren666/article/details/79459552

        注:本次的阿里云操作系统为Windows Server 2012,本文下载的是apache-apollo-1.7.1,Java的版本为Java 8(Apollo和Java的版本一定要匹配,否则会出现错误)

 

        配置完成后如下图所示:


        以上阿里云上的MQTT服务器便部署完成;

        第二部分结束。


  • 3. PLC侧的设置;

        PLC侧的设置便较为简单,因为S7可以做单边通讯,PLC侧不需要指令编程,只需

        ①对PLC属性进行设置,勾选“允许来自远程对象的PUT/GET通信访问”即可;


        ②在DB块中建立相应的变量,并将DB块属性中“优化的块访问”勾选去掉;


        将CPU的配置下载到S7-1511PLC中,PLC侧的配置完成;

        第三部分结束。


  • 4. 测试

        整个测试的流程如下图所示:


        首先是PLC将数据发送到树莓派,修改监视表中的变量,当变量的数值发生变化时,会将消息发送至树莓派,树莓派将消息发送至MQTT服务器中,订阅消息的MQTT.fx客户端也会收到消息;


        然后通过MQTT.fx客户端发布“raspiget”主题,从而修改PLC内部的数据;


        发布的数据为4,此时我们可以看到,PLC里的变量1已经被修改为4;

        最后,我们可以在MQTT服务器中查看具体的发布订阅数量,数据量的大小以及连接数;

        第四部分结束。

  • 最后

        本文的内容可能不够详细,有些细节的地方还值得推敲。本次的测试其实不是很复杂的功能,但这个只是一个示例,除了S7,还有更多的方式可以选择,比如TCP,Modbus TCP,以及OPC等等。当把这个树莓派换成西门子的物联网网关IOT2040时,当把连接的阿里云换成西门子的Mindsphere时,可能会迸发出更精彩的内容!

        传统的工控设备和流行的IT技术已经不再是割裂的关系,而是正在日趋融合,现在大家所追求的万物互联可能很快就可以在工控界普及开来!


                                                                                                                 -------来自 西门子技术支持工程师

【周三技术工坊】树莓派+1500PLC以及阿里云的跨界组合 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

自动化so酷

共有78条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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