IOT-Tree连接西门子PLC S7 200 Smart竟然如此简单

news2024/11/23 21:45:17

最近一个项目需要把用户现场控制柜接入到云端,控制柜使用西门子PLC Smart 200 SR40型号,已经运行多年,PLC通过以太网接口对接一个触摸屏。

按照我以往的经验,觉得触摸屏以太网接口已经被占用,那么只能通过剩余的RS485接口进行对接。因此,我原本有如下计划:拿到PLC已有的程序,对现有空闲RS485端口添加Modbus Slave程序。更新之后使用4G DTU-转RS485透明传输直接接入云端的IOT-Tree Server程序——当然通道使用Modbus相关驱动。

中控室我们直接使用了IOT-Tree这个开源软件,你如果对这个软件不了解,可以github上查看下载。如果你对类似的物联网项目不怎么了解,可以参考我之前的一个“手把手”系列文章——机房自动化监控手把手分享给你。里面也有使用IOT-Tree的详细解决现场问题的过程,这个系列文章你就算没有任何物联网项目经验,基本都可以掌握。

在测试使用过程中,发现这是个蠢方法,一大堆的坑。然后,查了资料发现smart200 RS485接口支持PPI协议,只要此RS485接口没有被内部程序占用即可使用——IOT-Tree好像直接有这个驱动支持呢,很快就搞定了!

再后来,发现smart200以太网还支持S7协议——IOT-Tree好像也支持,虽然连了一个触摸屏,但还可以支持其他设备接入(估计有个接入数量限制)。早知道的话,我专门制作的RS485电缆都可以省了(这个电缆一端使用9针串口接口,内部3 8端子对应RS485的A和B)。下面我就说明一下对接过程吧,希望对你有帮助。

1 使用Modbus方案

使用Modbus方案在测试实现过程中, 遇到种种坑,不仅需要配置修改PLC程序——特别需要注意PLC V存储区的冲突调整,才能够让PLC正确的支持RS485 Modbus Slave。这个过程网络上说明一大堆,就不重复了。

关键的是,PLC提供位操作限定于Modbus的4个位功能码,只能对应I Q两个区。而V区读写只能使用Modbus功能码03,这个都是基于字(word/2byte/16bit)操作,由此产生一个很大的问题,如果plc对内部V地址进行bit操作,而就会让modbus显得很尴尬。同时,还有更多的PLC内部地址区域Modbus无法访问——这个只能通过对PLC程序进行大改动,才能使得上位系统适应PLC的运行。总之,这个方案局限太大,并且坑也太多了。

2 使用RS485接口的PPI协议对接 

 写了一些,发现我过去已经使用PPI协议对接过S7-200 PLC。并且整个过程好像完全一样。就把链接整过来了。

使用IOT-Tree Server通过PPI(RS485)连接西门子PLC S7-200

我的测试是PLC上的那个RS485口并没有被占用,那么这个接口直接支持PPI协议。你需要注意的是使用专门的电缆。下面是我测试PPI基于RS485口对接。

 

其实,使用这个PPI接口,我就可以轻松完成用户要求了。

1)PLC程序不需要任何修改,我只需要根据远端控制需要,在IOT-Tree中把相关的地址配置成对应的标签Tag即可。

2)只需要在PLC到远端中控室拉一根RS485 2芯屏蔽电缆就行。

不过,我又发现还可以基于PLC的以太网接口,IOT-Tree照样可以轻松对接,也不需要修改PLC程序,除了配置接入和驱动的差别,后续点位标签Tag配置,可以和PPI完全兼容(其实就是标签地址和西门子PLC兼容)。

3 使用以太网接口的S7协议对接 

smart200 plc以太网接口,如果没有专门修改过ip地址,那么缺省地址是192.168.2.1,端口是102.

我这个用户的PLC现场直接连接了一个触摸屏,使用笔记本网口和一根网线直接对接,然后用西门子的软件 STEP 7-Micro/WIN SMART软件就可以获取PLC的IP地址。

为了不影响触摸屏运行,我在测试中加了一个4口网络交换机,PLC和触摸屏都接入其中,然后我的笔记本也用一根网线接入这个交换机,修改本地ip地址为192.168.2.xx,使得笔记本和PLC在同一个网段。使用 命令 ping 192.168.2.1 确保能够访问plc。

接下来就是在我笔记本上的IOT-Tree全部配置过程。请在github下载打包好的release最新版本,电脑安装配置过程可以参考:

IOT-Tree快速开始

3.1 启动IOT-Tree新建测试项目

 启动IOT-Tree Server之后,使用浏览器访问 http://localhost:9090/admin/进入管理界面。在“本地项目”区域,点击“新增”图标,填写项目名称和标题:

名称=smart200test
标题=smart200测试

 在新增的项目列表中,点击这个项目进入了项目管理界面。

3.2 新增Tcp Client接入

由于通过Tcp Client方式访问PLC,点击左上角“接入”,在下拉菜单中,选择“Tcp 客户端”,在弹出的菜单中填写如下内容:

名称=plc1
标题=PLC1
主机=192.168.2.1
端口=102

 点击“确认”按钮之后,就可以在左边看到这个接入项。

3.3 新增通道和PLC设备

在界面"浏览树"下面的根节点"smart200test",鼠标右键,选择“新增通道”,在弹出的对话框中,填写如下内容:

名称=plc_tcp
标题=PLC Tcp
驱动=Siemens TCP/IP Ethernet

其中,驱动点击之后选择即可。 

点击“确认”之后, 可以看到项目根节点下面出现了这个通道节点"plc_tcp"。

还是一样操作,鼠标右键此通道,选择“新增设备”。在弹出窗口中,填写如下:

名称=sr40
标题=SR40
Model=S7-200 SMART

点击确定之后,可以看到通道下面增加了这个设备,并且设备前方有个接入点,可以对接左边的接入,鼠标左键点击左边plc1节点右边的正方形不松开,移动到sr40左边圆形点,松开之后就可以建立左边tcp接入和设备sr40之间的关系: 

此时,我们可以查看sr40这个设备的属性参数,鼠标点击选中此节点,点击右边主内容“属性”选项卡,可以看到这个设备的一些参数,请注意S7通信参数TSAP必须是201(smart200就这样,具体为啥我也不清楚)

接下来,我们就可以配置设备下的标签数据点了。 

3.4 配置点位标签Tags

鼠标点击选中设备节点sr40,点击右边主内容“[标签]”选项卡。点击按钮“新增标签”,在弹出的对话框中,填写内容如下:

名称=out1
地址=Q0.1
数据类型=bool
读或写=读写

 其中,你可以先填写地址,然后点击右边“验证”按钮,数据类型会自动配置。

同样的,我们可以新增一些节点:

名称=in0
地址=I0.0
数据类型=bool
读或写=只读

名称=mw1
地址=MW1
数据类型=uint16
读或写=只读

 ...

最终测试的标签点如下:

3.5 启动项目测试

确保PLC已经通电,并且和运行IOT-Tree的设备能够正常通信。点击项目管理上方的“Start Project”图标,启动项目。如果一切正常,你会看到所有的标签出现数据,并且有效这列都打勾。说明已经正常获取数据。你可以在写入列填写一些数据,点击写入图标,查看数据写回到PLC的效果。

4 后续使用IOT-Tree相关内容

设备接入成功之后,IOT-Tree对你现场设备的对接统一成了一棵树和节点下的标签。当然,你可以通过其他接入或驱动整合更多的数据。

1 接下来你可以为现场的系统定义监控画面,完整的实现一个现场自动化监控系统。详细请参考我之前的一个“手把手”系列文章——机房自动化监控手把手分享给你。

2 你也可以鼠标右键浏览树的节点,选择“访问”,在弹出的新窗口中,可以看到以节点路径形成的RESTFul访问路径,输出的是JSON结构的当前数据。如果你有其他IT系统要读取你配置好的实时数据,直接访问相关的URL即可。

如我测试环境鼠标右键sr40节点,选择访问之后,弹出页面内容如下:

3 你可以使用IOT-Tree的消息流功能,实现更复杂的功能:如设备间的控制调度,数据推送,存储等。

点击项目管理界面左下角的消息处理流程添加按钮,输入f1,确定之后点击新增的这个f1流程。可以在右边看到消息流定制管理功能。和IBM的Node Red类似,你可以在里面使用提供的功能块,快速搭建你的业务控制逻辑,向云端通过MQTT推送数据;或使用存储功能块记录标签数据到数据库中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2197896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过一个实际的例子,介绍 Java 的自动装箱与拆箱机制

Java 中 1000 1000 返回 false,但 100 100 返回 true,这一现象背后隐藏了 Java 对于对象和基本类型的内存管理机制。为了理解这个现象,我们需要从 Java 的自动装箱与拆箱机制、对象引用和数值缓存策略等角度深入探讨。让我们一步一步通过 J…

电脑怎么卸载软件?学会这6个卸载软件技巧就够了(精选)

电脑怎么卸载软件?在日常的办公生活中,我们需要下载一些工具来辅助工作,当不需要这些工具的时候,我们就需要卸载这些软件了。很多小伙伴表示卸载软件卸载不干净,还是回残留一些文件,或者是卸载不了&#xf…

Verilog开源项目——百兆以太网交换机(九)表项管理模块设计

Verilog开源项目——百兆以太网交换机(九)表项管理模块设计 🔈声明:未经作者允许,禁止转载 😃博主主页:王_嘻嘻的CSDN主页 🔑全新原创以太网交换机项目,Blog内容将聚焦整…

新型僵尸网络针对 100 个国家发起 30 万次 DDoS 攻击

近日,网络安全研究人员发现了一个名为 Gorilla(又名 GorillaBot)的新僵尸网络恶意软件家族,它是已泄露的 Mirai 僵尸网络源代码的变种。 网络安全公司 NSFOCUS 在上个月发现了这一活动,并称该僵尸网络在今年 9 月 4 日…

【Java 循环控制实例详解【While do... while】】

Java 循环控制详解【While & do… while】 在 Java 中,循环控制是程序设计中非常重要的部分,主要包括 while 循环和 do...while 循环。本文将详细介绍这两种循环的基本语法、执行流程及相关示例。 1. while 循环控制 基本语法 循环变量初始化; wh…

在uniapp中实现长按聊天对话框可以弹出对话框然后可以删除该条对话,单击可以进入该条对话框的对话页面

效果展示 效果描述 长按【大于1s】某一条对话框会弹出一个对话框,点击确定按钮就可以将当前对话框从列表中进行删除,如果点击取消则不做额外操作。 如果只是点击了一下,时间【小于1s】的情况下会直接引入到与该用户的对话框详情页面。 代码…

ai绘画变现方式全解析,教你如何通过AI绘画赚钱

*AI绘画变现方式全解析,教你如何通过AI绘画赚钱* *为什么选择AI绘画?* 你是否曾经梦想过成为一名画家,但现实却让你无从下手? 或者你已经是一位艺术家,但苦于作品没能带来足够的收入?随着AI技术的飞速发展&#xff…

IDEA没有代码自动提示问题的解决

一、问题描述 如图,博主输入new Hash 没有提示出HashMap之类的api 原因在于:不小心打开了idea的省电模式,在这个模式下,idea是不会为我们提供自动提示的 二、问题解决 在File中找到 Power Save Mode选项,将它关闭即…

【西电电路实验】1. 仪器的使用(电子线路 III 电院)

文章目录 前言一、实验原理二、实验过程1. [高频信号源DSG3030 数据手册](https://www.rigol.com/Images/DSG3000_DataSheet_CN_tcm4-3558.pdf)2. [信号源 SDS 2320X 数据手册](https://www.siglent.com/u_file/download/24_05_29/SDS2000X%20HD_Datasheet_CN02A.pdf#:~:textSD…

MySQL多表查询:标量子查询

先看我的emp表结构 emp表 子查询基本语法 select * from t1 where column1 (select column1 from t2);例子1:查询"销售部" 的所有员工信息 这个可以先拆解为两个 a.查询"销售部"的部门ID select id from dept where name 销售部; b. 根…

2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP;H3C-SE;CCIP——…

算法:724.寻找数组的中心下标

题目 链接:leetcode链接 思路分析(前缀和) 根据题意,我们可以将数组看成三个部分 [left] [mid] [right] 我们只需要[left]区间内的元素和等于[right]区间的元素和即可,此时mid就是中心下标 那么我们可以借助前缀和思…

怎么把录音转换成文字?七大不收费的录音转文字软件推荐,亲测好用!

怎么把录音转换成文字?录音转文字软件是一种可以将音频文件转换成文本的工具,甚至可以在录制音频的同时实时生成文本。音频文件是存储信息的常用方式之一,广泛应用于在线课程、长时间的讲座、商务会议以及产品介绍等场合,音频内容…

ThreadPoolExecutor的源码解析

ThreadPoolExecutor的源码解析 线程池的核心属性 ctl:当前的ctl就是一个int类型的数值,内部是基于AtomicInteger套了一层,进行运算时,是原子性的 ctl表示的线程池的两种核心状态: 线程池的状态: ctl的高3位标识线程池的状态工作线程的状态:ctl的低29位,表示工作线程的个数 pri…

FlagVNE]——用于虚拟网络嵌入的灵活、可通用的强化学习框架

介绍 论文地址:https://arxiv.org/pdf/2404.12633 网络虚拟化(NV)是一种创新技术,在 5G 网络和云计算等领域日益受到关注。NV 可通过网络切片和共享基础设施在同一物理网络上部署多个用户提交的虚拟网络请求(VNR&…

性能测试-JMeter(1)

性能测试工具 主流性能测试工具LoadrunnerJMeter JMeter环境安装JMeter功能概要JDK常用文件目录介绍JMeter元件和组件介绍元件的基本介绍组件的基本介绍 JMeter元件作用域和执行顺序JMeter第一个案例线程组HTTP请求查看结果树 JMeter参数化(重点)用户定义…

02_InFluxDb

InFluxDb 初始化初始化流程 交互InFluxDbWebUI交互 数据模型行协议添加标签数据格式 数据类型空格索引 初始化 初始化流程 用户 密码 组织名称 Bucket—mysql里面的数据库概念 交互InFluxDb 暂用了8086端口.提供了 http api WebUI交互 略... 数据模型 这是mysql里面的表…

1500元买哪款显卡好?对比一下,差别明显

在游戏过程中,显卡负责渲染游戏画面,将其转化为可视化的图像,并快速显示在屏幕上,确保游戏运行的流畅性和画面的质量。所以对于游戏电脑来说,显卡的重要性尤为突出。虽说在最近几年,显卡市场的“消费升级”…

算法:前缀和算法模版

一维前缀和 题目 链接:一维前缀和模版题 思路分析 一:暴力O(q * N) 对于每一次询问,我们都可以用一个循环计算[l,r]区间内的元素和, 时间复杂度,O(q * N) 每一次计算一个区间都需要去循环一次,这是不是…

2024年中国研究生数学建模什么时候出成绩(附避坑指南)

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 今年的华为杯已经于2024年9月20日——2024年9月25日完成,相信大家下…