课程中心
HOME
课程中心
正文内容
siemens plc编程实例 自动化工程师:SIEMENS S7-1500PLC干货,学好Modbus-RTU必备实例
发布时间 : 2026-02-03
作者 : 小编
访问数量 : 23
扫码分享至微信

自动化工程师:SIEMENS S7-1500PLC干货,学好Modbus-RTU必备实例

此次讲解以项目为例,主要阐述关于SIEMENS S7-1500PLC 实现 Modbus-RTU 通信的配置步骤、程序编写及注意事项,详细的系统配置如下图 。

图 1 实例系统构成

该实例中, Modbus-RTU 主站为安装在 S7-1500 主机架上的 CM PtPRS422/485 HF ,Modbus-RTU 从站模块(站地址为 2)为安装在 ET 200SP 分布式 IO 上的 CM PtP ,接口类型为 RS485 ,通信波特率为 9600bit/s ,无奇偶校验。

该实例所用的软件及硬件

SIMATIC 部件

硬件组态步骤

按照系统配置图,首先组态 S7-1516 CPU 主机架,在主机架上配置点对点通信模块,并将该模块的协议设置为 “Modbus ”,如下图 2 。

图 2 S7-1500 CPU 主机架点对点通信模块组态

然后激活 CPU 的“系统和时钟存贮器功能”,如下图 3 。(本例程中使用了CPU 首次扫描位来实现 Modbus 的初始化,使用 CPU 的时钟信号来控制发送频率,该方法供参考。)

图 3 激活 CPU 的系统和时钟存储器

然后组态 ET 200SP 分布式 IO 站,并在该分布式 IO 上组态点对点通信模块,并将该模块的通信协议设置为 “Modbus ”,如下图 4。

图 4 ET200 SP 分布式 IO 站点对点模块组态,至此硬件配置已完成。

软件编写

S7-1500 实现 Modbus-RTU 功能,需要调用以下指令,见下表 3,其中 “Modbus_Comm_Load ”指令用于通信模块的组态, “Modbus_Master ” 指令和“Modbus_Slave ” 指令分别实现 Modbus 主站通信和 Modbus 从站通信“Modbus_Comm_Load ”指令和 “Modbus_Master ”/ “ Modbus_Slave ”指令是通过 “Modbus_Comm_Load ”指令的 “MB_DB ”参数来实现关联的。

表 3. Modbus-RTU 相关指令

在此,首先编写 Modbus 主站程序,添加一个新 FB ,将其命名为“ModbusMaster ”,如下图 5。

图 5 添加 Modbus-Master 功能块

在该 FB 中以多重背景方式调用 “Modbus_Comm_Load ”指令,该指令在指令目录下“通信 —〉通信处理器 —〉Modbus (RTU )”下,如下图 6。

图 6 调用 “Modbus_Comm_Load ”

在该 FB 中以多重背景方式调用 “Modbus_Master ”指令,该指令在指令目录下“通信—〉通信处理器—〉 Modbus (RTU )”下,如下图 7。

图 7 调用 “Modbus_Master ”指令

然后对 “ Modbus_Comm_Load ”指令进行参数化,由于该指令参数较多,在此只列出必须要关注的参数,如下表 4 所示,其它参数解释见手册或在线帮助。

表 4. Modbus_Comm_Load 主要参数列表

首先要为 “Modbus_Comm_Load ”指令指定端口,即该指令是针对哪个点对点模块进行参数化的。在硬件配置中,每个硬件均有一个硬件标识符,该硬件标识符在硬件属性中可以查看到,如下图 8。

图 8 在硬件属性中查看模块硬件标识符

同样,该硬件标识符也可以在 “PLC 变量 —〉显示所有变量 —〉系统变量”下可以查看到,如下图 9。

图 9 PLC 变量表中查看系统常量

所以可以通过如图 10 所示方法,通过拖拽的方式,将 Modbus 主站接口的硬件标识符拖至 “Modbus_Comm_Load ”指令的 “Port”接口参数处,如下图 10。

图 10 为“ Modbus_Comm_Load ”指定端口

接下来,定义端口的工作模式,本示例中,点对点模块的工作模式为 RS485 ,所以需要将 “Modbus_Comm_Load ”背景数据中静态变量的 “MODE ”参数赋值为 4,赋值既可以通过 “Move ”指令来完成,也可以通过直接修改该静态变量的默认值来实现,本实例使用后一种方法,参见下图 11。

图 11 定义 Modbus-RTU 主站端口工作模式为 RS485

接下来,通过对 “Modbus_Comm_Load ”指令的 “MD_DB ”参数赋值,将 “Modbus_Comm_Load ”指令与 “Modbus_Master ”指令进行关联,即将 “Modbus_Master ”指令的背景 DB 块中静态变量 “MB_DB ”赋值给 “Modbus_Comm_Load ”指令的 “MD_DB ”,可以通过拖拽的方式来实现,拖拽路径如下图 12。

图 12 对“ Modbus_Comm_Load ”指令的 “ MD_DB ”参数赋值除以上操作外,对于 “Modbus_Comm_Load ”指令的 “REQ ”参数,本实例使用 PLC 的首个扫描位来完成。其它参数如波特率,奇偶校验等,请根据实际使用情况对这些参数进行赋值,因本实例波特率为 9600bit/s ,无奇偶校验,所以以上参数使用缺省设置即可。

接下来,对指令 “Modbus_Master ”进行参数设置,该指令主要参数如下表 5所示。

表 5. Modbus_Master 主要参数列表

由于 Modbus 指令读取或写入的数据区必须为指针寻址,所以必须是有绝对地址的区域方可访问,而 S7-1500 创建的 DB 块缺省为优化的 DB 块,变量没有绝对地址,无法直接使用。本例中我们创建 DB 块,并在该 DB 块内创建一个名为 “M_Data ”的数组,类型为 WORD ,长度为 100 ,即创建了 100 个字的存储空间。然后在该 DB 块点右键,在属性中将“优化的块访问”前的勾去掉,重新编译该 DB 块,该 DB 块就会生成,可以看到每个变量都有偏移地址了,如下图 13。

图 13 创建一个标准 DB 块

根据下表 6 所示的 Modbus 功能码,本实例需要 Modbus 主站读取 Modbus 从站保持寄存器从起始地址开始的 10 个字的内容到创建的 “Master_Data ”中,即 Modbus 功能码 03 的功能:

表 6. Modbus 功能码的选择

根据以上要求,则 “Modbus_Master ”指令应按如下赋值:

“REQ ”:本实例使用 PLC 时钟信号来完成,即下图中的 M0.5 ;

“MB_ADDR ”: 2 // 访问的从站地址;

“MODE ”: 0; // 与“DATA_ADDR ”参数一起决定 Modbus 功能码为 03

“DATA_ADDR ”:40001 // Modbus 地址

“DATA_LEN ”: 10 // 数据长度为 10 个字

“DATA_PTR ”:该参数可以通过拖拽的方式,将创建的标准 DB 内的变量 “M_Data ”拖拽到 “DATA_PTR ”处,拖拽路径如下图 14。

图 14 为“ Modbus_Master ”指令进行参数赋值

接下来,编写 Modbus_RTU 从站程序,参照主站的程序,添加一个新 FB2“Modbus-Slave ”,在该 FB 中以多重背景方式调用 “Modbus_Comm_Load ”指令,同样为该指令选择 ET 200SP 的硬件地址,其它通信参数如波特率、奇偶校验等与主站的 “Modbus_Comm_Load ”指令相同,如下图 15 。

图 15 在从站 FB 中调用 “Modbus_Comm_Load ”指令

使用定义主站端口的工作模式相同的方法,将从站点对点模块的工作模式定义为RS485 ,所以需要将 “Modbus_Comm_Load ”背景数据中静态变量的 “MODE”参数赋值为 4,如下图 16。

图 16 定义 Modbus-RTU 从站端口工作模式为 RS485

然后,以多重背景的方式调用从站指令 “ Modbus_Slave ”指令,并设置Modbus 从站地址为 2,并为从站创建一个标准的 DB 块“Slave Data ”,长度根据实际情况定,本例中在 “Slave Data ”中创建了一个长度为 200 字的数组,并将该变量以拖拽的形式(也可以通过指针 P# 的方式),将该变量填在“Modbus_Slave ”的“MB_HOLD_REG ”参数处,如下图 17。

图 17 调用 “Modbus_Slave ”指令

然后对 “ Modbus_Comm_Load ”指令的 “ MD_DB ”参数赋值,将 “Modbus_Comm_Load ”指令与 “Modbus_ Slave ”指令进行关联,即将 “Modbus_Slave ”指令的背景 DB 块中静态变量 “ MB_DB ”赋值给 “Modbus_Comm_Load ”指令的 “MD_DB ”,可以通过拖拽的方式来实现,拖拽路径如下图 18。

图 18 将“ Modbus_Slave ” 指令和 “Modbus_Comm_Load ”指令关联在 OB1 中分别调用 Modbus 主站程序块和 Modbus 从站程序块,并为其分配全局 DB 块,如下图 19。

图 19 在 OB1 中分别调用主站程序和从站程序

至此,程序编写基本结束,建立 2 个变量监视表,分别用来监视 Modbus 主站数据和 Modbus 从站数据,将该例程下载到 PLC 后,可以看到通信模块对应的收发 LED 指示灯在闪烁,表示端口正在发送 / 接收数据。将 DB 块“Slave Data ”中的变量赋值,监视主站 “Master Data ”中的变量,可以看到主站已经读取到从站的数据,如下图 20。

图 20 使用变量监视表测试,主站侧已成功读取到从站数据Modbus 其它功能码使用方法类似,请参照表 6 修改相应的变量即可,此处不再一一举例。也可以根据此例程,举一反三,编写 Modbus-RTU 轮询程序。

以上,欢迎动动手分享及收藏!

PLC编程实例 西门子S7-200 SMART在污水厂的应用

滨河污水处理厂始建于上世纪80年代中期,是深圳最早的污水处理厂。污水处理工程在设计、建设及生产运行过程中,充分秉承了绿色环保的理念,体现了人与自然的和谐相处,为深圳市民奉献了一座园林景观式的大型污水处理厂,其在生物除臭、深度处理、中水回用、景观设计等方面的独具匠心,对于现代化城市污水处理、城市环境建设极具借鉴意义。本次选用西门子 S7-200 SMART PLC在污水厂干粉配制和投加系统,并配合新建污水除臭系统,解决污水处理厂周边地区环境的臭味问题改善深圳河的水质环境。

图1 污水厂干粉配制和投加系统配合污水除臭系统

图2 污水厂干粉配制和投加系统配合污水除臭系统

项目简介

1.干粉配制和投加系统用在污水厂里用于溶解固态的干粉(絮凝剂)并配制成溶液的全自动配制装置。系统采用Siemens S7-200 smart SR60 PLC作为控制器,控制整个配药系统的运行。Smart700IE触摸屏作为人机操作界面,用于显示系统运行状态,调节系统运行参数。控制柜内包含有供电单元和保险丝、电气控制和系统工作的其它控制设备。

2.干粉配制装置是由用于干粉的贮存、进料、浸湿、溶解和熟化件组装为一体的整体设备。整套设备包括封闭的3个溶液箱(a),带有内冲洗装置的水管路(b),干粉进料器(c),搅拌器(d)和控制柜(e)。

3.SMART200 配置表如下:

图4 SMART200 配置表

图5 SMART 200 运行中

工艺流程

2.1 进水系统和浸湿设备

根据程序设置,当储液箱中一旦达到了低液位,电磁阀自动打开,经过预冲洗后,给配药装置供应必要的溶液用水,调节阀控制进水流量,以保证水量浸没粉状絮凝剂,当储液箱达到最高液位时控制器切断干粉进料器的电源并投加停止进药,水流保持持续流动冲洗一段时间后,控制器切断干粉进料器的电源。

2.2 干粉进料器

电磁阀打开进水几秒后,c所示的干粉进料器通过 PLC 控制变频器驱动干粉进料器,按照预先设定的浓度,干粉进料器与水的流量成正比例输送干粉。干粉落入冲洗装置,经水溶解,浸湿的干粉和溶解水流入溶液箱。

2.3 三个溶液箱

a所示的三个溶液箱是隔成3个相对独立的箱体——保证了有充分的时间使絮凝剂的配制溶解、熟化和储液,同时防止了经过熟化的溶液与新配制的溶液发生混合。3个溶液箱里分别配有三个搅拌器,水和干粉在第一个溶液箱的配制,充分搅拌后进入到第二个熟化箱,经搅拌器充分搅拌后进入到第三个储液箱。第三个储液箱安装有液位传感器,由 PLC 监测液位传感器的信号,根据程序设置的“低液位”和“高液位”所对应的液位触点启动或停止自动配制溶液。同时PLC也控制三个搅拌器的启停,配制和熟化箱的搅拌器在配药过程中保持持续搅拌状态,储液箱的搅拌器根据液位启停,高液位用于防止溢流,并停止配药,低液位时启动配药装置。

设备调试

当设备处于设置模式中时,可以进入调试设备所有必要的配置。在此模式中,控制器屏蔽所有干扰设置的功能。

3.1 调节预冲洗和后冲洗时间

为了防止干粉在配制设备中堆积,设定进水的预冲洗时间5秒和后冲洗时间10秒,以确保任何情况下,干粉均充分地进入;

电磁阀打开后,经过数秒钟,充分地冲洗设备。几秒后,干粉给料器启动开始配药。在达到储药箱最大液位后,干粉进料器电源关断。电磁阀仍保持开通,经过后冲洗时间为止。

3.2 搅拌器

每次配置溶液过程开始,搅拌器均重新启动。一旦第3个储液箱达到了高液位,2个搅拌器仍持续搅拌。第3个搅拌器在每次配置溶液过程开始以液位的自动控制启停,并可选择适当的通—断间隔时间使药剂混合效果更好,而不会破坏经过熟化的大分子溶液。

3.3 浓度设置

设置溶液浓度一般在0.05%-10%范围内,现场设定的浓缩液浓度为0.4%时,调节合适的进水流量配制所需的浓度。

3.4 流量设置

将过滤减压阀设定为3bar输出压力(电磁阀关闭)在“Calibration”(调节进水流量)菜单中按动输入键切换到 valve 开关,设置进水流 量为5000 L/h。在相应的菜单中按动了测试键之后,电磁阀打开,显示屏显示实际的流量。按实际需要的流量去调整调节阀。可以在显示屏上看到实际的流量。再次按“Calibration”键退出设置。

3.5 校正干粉进料器

在校正干粉进料器时,松开螺丝,先拆开冲洗设备,使供水电磁阀保持关闭。干粉给料可以独立于水流工作。在设定水流量时,干粉进料器电源保持断开。在“Calibration”菜单中校正干粉进料器,菜单中选择(干粉进料器)。手持PE(聚乙烯)容器(最低盛装体积 500g)置于进料器螺旋管下面,按动测试键。干粉进料器将以最大速度工作。当手持的容器盛装的干粉量足够时,立即按动测试键停止干粉进料器。称重容器中的干粉,算出单位时间内的重量 1800g/min,写入“Calibration”中保存该 数值。校正完成干粉进料器以后,重新装好冲洗设备。

搅拌器,干粉进料器的调试

搅拌器和干粉进料器可以手动操作启动和停止,选择相应的菜单测试搅拌器、干粉进料器的启停,亦可用时间间隔的方式设置搅拌器。

PLC I/O 信号地址表

应用体会

1.SMART主要的指令延续了S7-200,使用方便;一些常用指令,比如常开常闭,可以直接在编程窗口双击然后选择使用。

2.S7-200 SMART的软件自带下列库,而S7-200需要安装。

3.保留了Micro/WIN编程软件中的数据块编辑,状态分页监控,高级指令向导等功能十分方便。

4.每个网络能插入的指令行数,列数大概只有10多行/列,我在编程过程中就试过,超出之后,直接弹出一个错误警告, 然后退出了程序,没保存;V 存储区不能掉电保存,希望后期西门子会改进;

5.SMART 200只有一个串口,如需2个口需要另外买一个信号板;以太网只能和触摸屏和SMARTPLC通讯不能和其他第三方设备进行通讯。

——END——

技成培训原创,未经授权不得转载,违者必究!

相关问答

西门子1200程序实例?

以下是一个西门子S7-1200PLC控制器的基本程序实例:```ORGANIZATION_BLOCKPLC_PRGTITLE"ExampleprogramforSiemen...

siemensplc如何与电脑连接?

200的话是有专门的232连接数据线,现在基本上都是通过网线和电脑连接。200的话是有专门的232连接数据线,现在基本上都是通过网线和电脑连接。

SiemensPLC与HoneywellTPS/TDC3000DCS通讯互联-盖德问答-...

受益匪浅啊多一些这样的好同志就好了!现在在做的项目肯定有dcs和plc相结合的情况,以往项目中两者的通信就一直是个难点。看到这篇文章,相信会对...

kepserver可以采集哪些类型的plc?

你好,Kepserver可以采集多种类型的PLC,包括但不限于:1.Allen-BradleyPLCs2.SiemensPLCs3.ModbusPLCs4.Mitsubishi...

西门子plc程序名称?

1.西门子200系列PLC编程软件为STEP7-MicroWIN。2.西门子200smart系列编程软件为STEP7-MicroWINSMART。3.西门子1200系列PLC推荐使用TI...

PLC控制PWM的方法?最好详细点?

最好具体说到某种类型的PLC这样更好说。PWM可以输出连续的、占空比可调的脉冲串,你可以控制脉冲的周期和脉宽,从而用于驱动如SSR这样的功率开关设备用于温控...

找不到s7aregsxdll怎么办?

1.可能会遇到困难2.因为s7aregsxdll可能是一个不存在的文件或者程序,或者是拼写错误,所以无法找到。这可能是因为你输入的文件名或者程序名有误,或者是该文...

汇科云可编程控制器使用方法?

汇科云可编程控制器的使用方法如下:1.准备工作:将汇科云可编程控制器连接到计算机上,打开一款PLC编程软件,例如LSPLCDeveloper、SIEMENSStep7等。2.新...

siemensS7-300与和利时MACS5系统如何通讯连接?-盖德问答-化...

没有人知道吗?知道的请帮忙说下

plc常闭开关怎么解?

PLC(可编程逻辑控制器)中的常闭开关通常指的是一个逻辑状态,表示开关在默认状态下为闭合(闭合=1,断开=0)。要解除(更改)PLC中的常闭开关状态,您需要更改...这...

 工商登记管理条例  华北高速股票 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2026  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部