本文可能有些许标题党哈哈,因为实现的功能其实很简单!

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

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

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

本文会分为四个部分:

  1. 树莓派中Node-Red节点的配置;
  2. 阿里云上MQTT服务器的建立;
  3. PLC侧的设置;
  4. 测试;

本文测试所需软件及硬件:树莓派3B+;西门子PLC S7-1500;TIA Portal V15;Putty;MQTT.fx;阿里云服务器

  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;

启用Node-Red

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

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

安装S7节点

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

安装的S7节点

到此,Node-Red的设置基本完成,接下来进行简单编程,Node-Red编程方式的优缺点此处便不加赘述,如果对Node-Red编程方式不太了解的,可以参考链接(

小牟子:第一章 Node-RED简介​zhuanlan.zhihu.com

本次会用到的节点有S7 in;S7 out;MQTT in;MQTT out;

首先是S7 in节点的设置:

S7 in节点配置1
S7 in节点配置2

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

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

S7 in节点配置3
Portal中变量的设置

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

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

S7 out节点设置1

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

首先是Out节点的设置

MQTT out设置1
MQTT out设置2
MQTT out设置3

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

MQTT in设置1

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

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

全部程序图(未连接状态下)

第一部分结束。

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

MQTT的服务器很多,甚至还可以自己编写MQTT的服务器,本文采用的是Apollo服务器,Apollo服务器在Windows系统下的具体配置可以参照以下链接:

https://blog.csdn.net/eren666/article/details/79459552​blog.csdn.net

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

配置完成后如下图所示:

云上的Apollo服务器

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

第二部分结束。

  1. PLC侧的设置;

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

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

CPU属性设置

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

数据块的设置

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

第三部分结束。

  1. 测试

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

测试流程图

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

监控表1
MQTT.fx订阅
Node-Red的Debug

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

MQTT.fx发布

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

监控表2

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

Topic列表
链接列表

第四部分结束。

最后

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

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

java plc通讯_树莓派+西门子PLC+Aliyun相关推荐

  1. c#与马扎克通讯_北京西门子plc和触摸屏通讯费用情况

    怀服务之心凌技术之顶 秉承自主创新,将互联网技术和信息技术应用于工业智能制造并提供整体解决方案.同时,注重服务和培训,与客户共同发展. 北京西门子plc和触摸屏通讯费用情况 智慧路灯组网工厂里的每一台 ...

  2. python和台达plc通讯_台达PLC通信协议ModbusASCIIDVP

    台达 PLC 通信协议 ModbusASCIIDVP 台达 PLC 通信协议 ModbusASCII(DVP) 编撰 : 李浩特 日期 :2013/11/12 版本 :Ver:3 . 2 例 1: 读 ...

  3. python和台达plc通讯_台达PLC通信协议ModbusASCII(DVP)

    - 精品文档 - - 精品 - 台达 PLC 通信协议 ModbusASCII(DVP) 编撰:李浩特 日期: 2013/11/12 版本: Ver:3.2 例 1 :读 D0 (地址为 1000H ...

  4. xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习

    一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...

  5. 三菱PLC与第三方设备TCP通讯_不用在PLC内编程,快速实现西门子与欧姆龙、三菱等品牌的PLC之间实时通讯...

    项目中需要西门子S7-1513和欧姆龙的CJ2M之间通讯,为了快速实现完成项目,先采用一个智能网关模块来完成PLC之间的通讯任务.相关软件和手册下载 PLC与数据库双向通讯 西门子PLC从欧姆龙PLC ...

  6. python和台达plc通讯_项目实战:Qt西门子PLC通讯调试和模拟工具(包含PLC上位机通讯,PLC服务器)...

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110071837 各位读者,知识无穷而人力有穷 ...

  7. c#与汇川机器人通讯_C#与西门子PLC通讯

    S7Net 如下图,ip="192.168.0.5". 如下图,rack为0,slot为1. public Plc(CpuType cpu, string ip, short ra ...

  8. 西门子plc与oracle报文,西门子PLC以太网 通讯协议 解析

    本帖最后由 qingyun 于 2016-12-2 10:36 编辑 1.西门子和三菱的几个区别(上位只关心的通讯层面): 1. 西门子PLC通讯端口固定102,但是可以连接多个PC端(客户端),三菱 ...

  9. 计算机与外部设备通讯的接口,西门子PLC模块中通讯模块CP和接口模块IM有什么区别?...

    原标题:西门子PLC模块中通讯模块CP和接口模块IM有什么区别? 西门子S7系列PLC模块体积小.速度快.标准化,具有网络通信能力,功能更强,可靠性高. PLC不需要大量的活动元件和连线电子元件.它的 ...

最新文章

  1. c语言运动会分数统计系统_初学C语言Bug大赏
  2. 一个19岁美国少年眼中的各种社交应用
  3. js Array.prototype.slice.call(arguments,0) 理解
  4. 躲开职业生涯的“甜蜜陷阱”
  5. Qt|Linux工作笔记-第二种方式读取Linux中top命令(直接读取,非重定向)
  6. NET框架下使用双缓冲技术绘图
  7. TatukGIS - GisDefs - CheckFileWriteAccess 函数
  8. 文华财经指标公式博易大师软件指标公式指南针多空资金指标,最精准买卖点提示指标wh6赢顺云随身行指标
  9. PS中标尺工具在哪里
  10. 爱奇艺技术分享:轻松诙谐,讲解视频编解码技术的过去,android项目开发实战入门明日科技
  11. 你的不自律,正在慢慢毁掉你
  12. 要不要考博?清华姚班助理教授写了个读博决策树
  13. 基金从业考试各科目难度特点?
  14. java—JSON(课堂笔记篇)
  15. AI+药物研发:人工智能赋能新药研发
  16. 文字转成语音并播放出来
  17. 华为宣布鸿蒙OS开源
  18. java友盟自定义行为_实现友盟推送消息的完全自定义处理
  19. 书生笔记-clickhouse单机安装
  20. java版我的世界有溺尸_我的世界溺尸怎么找

热门文章

  1. OAF中下载附件之后页面失效,报过时的数据异常,浏览器后退异常
  2. 51nod 1105:第K大的数
  3. poj3070矩阵快速幂
  4. 服务器端执行javascript脚本
  5. SparkSQL介绍
  6. Scala的继承和多态
  7. WritableComparable排序案例(区内排序)
  8. Partition分区及实例
  9. .NET多线程编程入门
  10. 使用基本MVC2模式创建新闻网站