西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

2025-05-22 13:28:14

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

西门子S7-1500PLC实现Modbus-RTU通信步骤及程序

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢