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

最近一个项目需要把用户现场控制柜接入到云端,控制柜使用西门子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.xdnf.cn/news/1557670.html

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

相关文章

视频剪辑软件推荐电脑版:这5款剪辑软件不容错过!

在视频剪辑领域,选择合适的软件至关重要。不同的软件各有千秋,有的简单易用,适合新手快速上手;有的功能强大,适合专业团队进行深度编辑。以下是一些电脑版视频剪辑软件的推荐,涵盖了从新手到专业级别的不同…

智能电子价签:助力零售效率升级的关键

在竞争日益激烈的零售市场,如何优化运营、提升效率,是每个零售商都在关注的问题。电子价签作为一项创新技术,提供了蒿效的解决方案。今天,我们就来聊聊电子价签如何帮助零售商轻松管理信息、减少人工误差,并展示它在门…

Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...

无所畏惧地面对未知,并将其视为成长的机会 大纲官网快速入门1.安装node.js -- 这里推荐用nvm管理2.脚手架创建3.electron 包安装到应用的开发依赖4.创建主进程(main.js)并启动项目1.创建页面2.配置main.js3.启动项目 -- 效果 进阶 -- 基于项目场景功能使用场景一&am…

自动猫砂盆有必要买吗?2024年热门风大的自动猫砂盆测评分享!

自动猫砂盆不知道大家尝试过没,就是可以自动给猫咪铲屎的神器东西,而且它能把那些猫屎都集中收集起来,我们这种上班忙碌的人一回家就能收获一个干干净净的猫砂盆,别提有多快乐了。就算出差都不怕,三四天不回来都只用扔…

红黑树源代码(进阶与细节解释)

目录 对于结点的修改 红黑树模板参数的控制 红黑树结点当中存储的数据 对于insert函数的细节修改 迭代器的代码 迭代器类的添加 迭代器的 迭代器的-- 正向迭代器的代码 红黑树代码全部展示: 看完前两篇的文章,相信对于红黑树有了一定的了解&…

飘香水果购物网站:基于SpringBoot的架构设计

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

【C++】模拟实现hash_table(哈希表)

🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.逐步实现项目功能模块及其逻辑详解 📌实现HashNode类模板 🎏构造HashNode类成员变量 🎏实现HashNode类构造函数…

家里养有宠物应该用哪款宠物空气净化器比较好?哪款最能吸毛?

这不是国庆节刚过吗,我的小猫终于是平安的度过了在农村生活的时光,之前还担心会不会被爸妈嫌弃,这下好了,嫌弃也过了国庆节。 但是一把猫咪带回出租房,由于几天不在房子里待,猫咪对熟悉的环境又特别激动&a…

视频怎么做成扫码展示?视频二维码在线做的方法

视频想要快速的分享给其他人,选择生成二维码是一种很方便的形式,其他人只需要扫描二维码就可以在线查看视频,与其他分享方式相比更加的简单、方便。现在日常生活中有很多场景都会有视频二维码的应用,简化了获取视频的流程&#xf…

JavaEE: 深入解析HTTP协议的奥秘(3)

文章目录 HTTP认识 "报头"(Header)认识 "状态码"(status code) HTTP JavaEE: 深入解析HTTP协议的奥秘(2) 书接上文~ 认识 “报头”(Header) Header 的整体的格式是"键值对"结构. 每个键值对占一行,键和值之间使用分号分隔. Host 表示服务器主…

【基础篇】一个键值数据库包含什么?

背景 今天,在构造这个简单的键值数据库时,我们只需要关注整体架构和核心模块。这就相当于医学上在正式解剖人体之前,会先解剖一只小白鼠。我们通过剖析这个最简单的键值数据库,来迅速抓住学习和调优 Redis 的关键。 我们把这个简…

STM32外设应用知识详解

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

RKMEDIA画面质量调节-QP调节

QP是在视频采集编码过程中的量化参数,其值与画面质量成反比,即QP值越大画面质量越小,其具体调整方法如下: typedef struct rkVENC_RC_PARAM_S {RK_U32 u32ThrdI[RC_TEXTURE_THR_SIZE]; // [0, 255]RK_U32 u32ThrdP[RC_TEXTURE_TH…

如何基于 RLHF 来优化 ChatGPT 类型的大语言模型

🚴前言 对于ChatGPT来说,RLHF是其训练的核心。所谓RLHF,即Reinforcement Learning with Human Feedback,基于人类反馈的强化学习。这项技术通过结合模型自身的生成能力和人类专家的反馈,为改进文本生成质量提供了新的…

解决Android Studio中使用lombok插件错误: 找不到符号的问题

问题 主要是想节省实体类的set、get等方法,使用lombok报错如下: 解决方案 由于Android的限制,在Android中使用lombok兼容极其麻烦,如果你只是想减少set、get等代码可以直接使用kotlin的data class 示例 data class KotlinTes…

等级保护等保资料原件合集(word源资料)

第二章 系统定级与安全域 2.1 系统定级 2.1.1 不同等级的安全保护能力 2.1.2 重要信息系统 2.1.3 定级参考 2.2 安全域定义 2.2.1 安全域定义方法 2.2.2 安全域等级描述 第三章 实施方案设计 3.1 三级等保要求 3.2 基本要求的详细技术要求 3.2.1 物理安全 3.2.2 网…

Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】

该文章专栏是向QFrameWork作者凉鞋老师学习总结得来,吃水不忘打井人,不胜感激 Unity 框架搭建学习笔记1-1,前一个1代表凉鞋的第一季教程,后一个1代表该季第一篇我的文章 unity中对象调用的三种方式 方法调用,例如&…

Qt设计登录界面

优化登录框: 将两个按钮连接到槽函数 在构造函数中定义 connect(this->btn1,&QPushButton::clicked,this,&Logon::my_slot);connect(this->btn2,&QPushButton::clicked,this,&Logon::my_cancel); 定义登录按钮连接的槽函数 void Logon::my…

基于Java语言的充电桩平台+云快充协议+充电桩管理后台+充电桩小程序

软件架构 1、提供云快充底层桩直连协议,版本为云快充1.5,对于没有对接过充电桩系统的开发者尤为合适; 2、包含:启动充电、结束充电、充电中实时数据获取、报文解析、Netty通讯框架、包解析工具、调试器模拟器软件等;…

CMake 属性之目标属性

【写在前面】 CMake 可以通过属性来存储信息。它就像是一个变量,但它被附加到一些其他的实体上,像是一个目录或者是一个目标。例如一个全局的属性可以是一个有用的非缓存的全局变量。 在 CMake 的众多属性中,目标属性 ( Target Properties ) …