S7-1200与多台设备进行Modbus通讯的样例及说明
一、Modbus TCP通讯样例(以太网连接多台设备)
场景描述:
两台S7-1200 PLC通过以太网进行Modbus TCP通信,一台作为客户端(主动发起请求),另一台作为服务器(响应请求)。客户端将DB10.DBW0-DB10.DBW4的数据写入服务器的DB100.DBW0-DB100.DBW4中。
硬件需求:
两台CPU1214C DC/DC/DC PLC(订货号:6ES7 214-1AG40-0XB0)
一台四口交换机
一台编程电脑(已安装博途V15.1软件)
软件配置与编程步骤:
硬件组态:
在博途软件中创建新项目,并添加两台S7-1200 PLC。
为每台PLC配置以太网接口的IP地址,确保它们在同一局域网内。
客户端程序编写:
REQ:上升沿触发请求。
DISCONNECT:0表示建立连接。
MODE:1表示写操作。
MB_DATA_ADDR:服务器中的起始地址(如40001)。
MB_DATA_LEN:要写入的数据长度(如5个字)。
MB_DATA_PTR:指向客户端数据块(DB10)的指针。
CONNECT:引用包含连接参数的数据块(DB11)。
在客户端PLC中创建数据块(DB10),用于存储要发送的数据。
创建另一个数据块(DB11),用于存储Modbus TCP客户端的连接参数。
在程序块中添加MB_CLIENT指令,并配置其参数:
服务器程序编写:
在服务器PLC中创建数据块(DB100),用于存储接收到的数据。
在程序块中添加MB_SERVER指令,并配置其参数以监听客户端的连接请求。
测试与调试:
上电后,客户端PLC在检测到上升沿信号时,会通过MB_CLIENT指令将数据写入服务器PLC的指定地址。
服务器PLC通过MB_SERVER指令接收数据,并存储在DB100中。
通过编程电脑监控数据交换过程,确保通信正常。
二、Modbus RTU通讯样例(串口连接多台设备)
场景描述:
S7-1200 PLC作为Modbus RTU主站,通过RS485接口连接多台从站设备(如智能仪表、变频器等),读取从站数据或向从站写入数据。
硬件需求:
CPU1215C AC/DC/Rly PLC(订货号:6ES7 215-1BG40-0XB0)
CM 1241 (RS422/485)通信模块(订货号:6ES7 241-1CH32-0XB0)
多台支持Modbus RTU协议的从站设备
屏蔽电缆(用于通讯)
软件配置与编程步骤:
硬件组态:
在博途软件中创建新项目,并添加S7-1200 PLC和CM 1241通信模块。
配置CM 1241模块的通信参数(如波特率、奇偶校验、数据位、停止位等)。
数据发送和接收缓冲区设置:
创建数据块(DB),用于存储要发送和接收的数据。
在数据块中定义数组,用于存储从站设备的参数(如线圈状态、保持寄存器值等)。
软件编程:
MB_ADDR:从站地址。
MODE:操作模式(0为读,1为写)。
DATA_ADDR:从站数据地址(需根据设备手册进行转换)。
DATA_LEN:要读写的数据长度。
DATA_PTR:指向数据发送和接收缓冲区的指针。
调用MB_COMM_LOAD指令,对通信端口进行组态和初始化。
调用MB_MASTER指令(作为Modbus RTU主站),配置其参数以读取或写入从站数据:
对于多台从站设备,需采用轮询方式依次与每台设备进行通信。即前一个MB_MASTER指令的完成位(DONE)作为下一个MB_MASTER指令的请求位(REQ)。
测试与调试:
上电后,S7-1200 PLC按照轮询方式依次与每台从站设备进行通信。
通过编程电脑监控数据交换过程,确保通信正常且数据准确。





