西门子 PLC S7-200 SMART 是一款高性能的工业自动化控制器,广泛应用于各种自动化领域,如装配线、生产制造、楼宇自动化等。本文将介绍如何通过 ThingsCloud 平台来远程读写西门子 PLC S7-200 SMART 的寄存器数据,并快速为 PLC 生成配套的手机 App。
关于西门子 PLC S7-200 SMART
S7-200 SMART 是西门子针对中小型自动化设备和 OEM 客户开发的高性价比小型 PLC,在 S7-200 系列基础上全面升级,集成了更强的硬件性能和灵活的扩展能力。以下是其主要特性:
- 机型丰富:提供标准型(如 ST20/SR40)和经济型(如 CR40/CR60)CPU 模块。标准型支持扩展模块,最大可扩展至 188 I/O 点;经济型无扩展能力,适用于简单控制场景。
- 接口灵活:
- 本体集成 1 个以太网接口(支持 S7 协议、TCP/IP)和 1 个 RS485 接口(支持 Modbus-RTU、PPI 等协议);
- 通过 CM01 信号板可扩展至 3 个通信端口。
- 扩展模块:支持数字量、模拟量、热电偶/热电阻等扩展模块,以及信号板(如 SBAQ01 模拟量输出、SBDT04 数字量 I/O)。
附:西门子 PLC S7-200 SMART 官方文档地址
教程视频
如需观看高清画质视频,请点击视频移步B站观看。
准备工作
- 一台西门子 PLC S7-200 SMART 设备
- 一台支持以太网接口的 DTU 设备
接入原理示意图
PLC 通常在内网运行 Modbus TCP Server 服务,我们需要 DTU 来帮助 PLC 和 ThingsCloud 平台之间实现消息的转发,这里 DTU 对消息直接转发而不做任何处理,也称为透传。
DTU 需要具备以太网接口,连接到 PLC 或者内网交换机,同时 DTU 还需要借助以太网、4G 或者 WiFi,通过 MQTT 或 TCP 协议连接到 ThingsCloud 平台。
这里我们用于演示的 DTU 是智嵌物联的 ZQWL-GE100D,它只有一个以太网接口,支持两路连接,我们用其中一路连接到 PLC,另外一路连接到 ThingsCloud 平台,并启用了两个连接互相转发的功能,这样就可以实现 PLC 和平台之间的消息透传。
下图展示了平台通过 DTU 向 PLC 下发的 Modbus TCP 消息,PLC 收到消息后,回复消息给 DTU,DTU 再将消息转发给 ThingsCloud 平台。
将 DTU 连接到 ThingsCloud
进入 ThingsCloud 控制台,创建设备类型,如下图:
在设备接入协议中,选择 Modbus TCP 透传,如果 DTU 通过 TCP 接入 ThingsCloud,还需要勾选 支持 TCP 接入。如下图:
接着,创建一台设备,关联到刚才创建的设备类型,如下图:
进入设备详情页的连接信息页面,可以看到设备端 MQTT 接入点信息,接下来会用到。如下图:
在 DTU 的 Web 配置页面中,在 TCPA 的连接设置中,填写 ThingsCloud 平台上刚刚创建设备的 MQTT 服务器地址、端口号、用户名和密码,如下图:
可以看到,在 TCPB 的连接设置中,填写 PLC 的内网 IP 地址以及端口号,Modbus TCP Server 的默认端口号为 502。
保存设置后,重启 DTU,稍等片刻,可以看到 DTU 已经连接到 ThingsCloud 平台,设备显示已在线,如下图:
PLC 初始化 Modbus TCP Server
接下来进入 PLC 的配置软件 STEP 7-Micro/WIN,添加一个 Modbus TCP Server 指令,并配置好初始化参数,如下图:
下载程序到 PLC 设备中,运行程序,PLC 就会启动 Modbus TCP Server 服务。
此时,DTU 已经分别和 ThingsCloud 以及 PLC 连接成功。
平台读写 PLC 的保持寄存器
接下来我们在平台上读取和写入 PLC 的保持寄存器数据。
这个示例中,我们假设 PLC 中有 2 个 V 区存储器,地址为 VW100 和 VW102,对应 Modbus 保持寄存器地址的 0 和 1,分别存储“液位“和“报警阈值“两个数值。
创建数值属性定义
在设备类型的属性定义中,创建这两个属性,如下图:
为属性关联 Modbus 寄存器地址
然后在设备类型的 Modbus 配置中,为这两个属性关联 Modbus 寄存器地址,如下图:
并开启属性智能转换,配置正确的自定义数据流,这是为了接下来下发数据时可以自动转换为 Modbus 指令。
读取 PLC 寄存器
接下来就可以在平台上读取 PLC 的寄存器数据了,我们需要创建一个任务,如下图:
为了便于测试,我们在 PLC 配置软件中为这两个存储器手动写入数值,如下图:
然后在平台运行刚才创建的任务,可以看到平台已经读取到了 PLC 的寄存器数据,如下图:
写入 PLC 寄存器
写入 PLC 寄存器数值就更加简单了,我们不需要创建任务,只需要在设备概览中,对属性直接修改数值并下发即可,如下图:
可以看到在 PLC 配置软件中,这个寄存器已经被写入了平台下发的新数值,如下图:
平台读写 PLC 的离线线圈寄存器
接下来,我们来演示一下如何读取以及写入 PLC 的离线线圈寄存器。
创建开关量属性定义
在设备类型的属性定义中,创建 4 个开关量属性,分别代表 PLC 的 4 个离散线圈 Q0.0 到 Q0.3,如下图:
为属性关联 Modbus 寄存器地址
将这 4 个属性分别关联到 Modbus IO 寄存器地址 0 到 3,选择“读写”类型,如下图:
下发写入线圈状态
由于已经对属性关联了 Modbus 寄存器地址,所以我们可以直接在设备概览中,对这几个开关量属性直接修改,即可实时下发到 PLC,如下图:
还可以利用平台的多路开关量控制功能,实现多个线圈的同时控制,如下图:
读取线圈状态
通常 PLC 程序会不断更新离散线圈状态,如何将线圈状态同步到平台呢?我们可以通过查询任务来定期读取 PLC 的线圈状态。
我们创建一个读取线圈状态的任务,如下图:
运行任务后,可以在设备的调试消息日志中看到,平台通过 Modbus 01 功能码的指令,读取了 PLC 的线圈状态,并将 Modbus TCP 消息转换为了设备的属性值,如下图:
生成 App 界面
最后,我们可以利用 ThingsCloud 的 App 开发工具,生成一个 App 界面,包括以下内容:
- 显示从 PLC 读取的液位和报警阈值。
- 可修改 PLC 的报警阈值。
- 可单独控制 PLC 的线圈状态。
- 可批量控制 PLC 的线圈状态。
保存 App 界面后,在 iPhone 上打开 ThingsX App,进入这台设备,可以看到 和 App 编辑器中完全一致的界面,我们对线圈状态的控制可以实时更新到 PLC。如下图:
更多功能介绍
物联网设备接入 ThingsCloud ,请参考 设备接入指南。
关于 ThingsCloud
ThingsCloud 是新一代物联网设备统一接入平台,帮助企业在极短的时间内搭建个性化的物联网平台和应用,并适应不断变化的发展需求。目前广泛应用于制造、电力、能源、环境、农业、楼宇、家居、教育、交通、物流、自动化等领域。
ThingsCloud 可接入各类网关,传感器、执行器、控制器、通信模组、智能硬件等,实现数据采集、远程控制,数据分析、告警通知、智能联动。还可以零代码生成项目应用 SaaS 和用户应用 App,并开放 API 和实时消息,便于业务系统集成和扩展开发。
通过使用 ThingsCloud,企业可以大大缩短搭建物联网系统的时间,节省软件开发费用,降低定制开发的风险,快速落地数字化和智能化项目。我们的客户遍布各行业,包括中国石化、中国铁塔、中国燃气、吉林大学、北控水务、ACE、中国民航大学、西安交通大学、精量电子、大秦铁路、宁波水利局等。