s71200 modbus 通讯指令解析 下载本文

注意: “MB_COMM_LOAD”指令输入位“REQ”需使用上升沿触发。由于OB 100只在S7-1200启动时执行一次,因此,此例中将“REQ”设为“TRUE”。

图6 MB_COMM_LOAD指令

MB_COMM_LOAD指令参数意义如下表1所示:

引脚 EN REQ PORT BAUD 说明 使能端 在上升沿执行该指令 通信端口的硬件标识符 波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200 (注意:所有其它值均无效) PARITY FLOW_CTRL RTS_ON_DLY RTS_OFF_DLY RESP_TO 奇偶检验选择:0-无;1-奇校验;2-偶校验 流控制选择:0-(默认值)无流控制 RTS延时选择:0-(默认值) RTS关断延时选择:0-(默认值) 响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。 MB_DB 对 MB_MASTER 或 MB_SLAVE 指令所使用的背景数据块。 DONE ERROR 完成位:指令执行完成且未出错置1 错误位:0-未检测到错误;1-检测到错误。在参数STATUS中输出错误代码。 STATUS 端口组态错误代码表1 MB_COMM_LOAD指令参数意义 4.创建DATA_PTR数据发送、接收缓冲区

通过“程序块”→ “添加新块”,选择“数据块(DB)”创建 DB 块,选择“标准与S7- 300/400兼容” ,点击“确认”键。在DB中创建数据类型为5个字的数组,如下图7所示:

注意:DATA_PTR数据发送、接收缓冲区使用的DB访问类型必须是标准与S7- 300/400兼容。

图7 创建DATA_PTR 数据发送、接收缓冲区 5.调用MB_MASTER指令

在OB1中调用“MB_MASTER”指令,调用该指令时会自动弹出创建相应背景数据块的界面,如下图8所示:

图8 调用MB_MASTER指令

点击“确认”为该指令创建背景数据块后,并为各输入/输出引脚分配地址,如下图9所示:

注意:“MB_MASTER”指令的输入位“REQ”必须使用上升沿触发。

以下以S7-1200作为Modbus RTU主站,用F03功能码读取Modbus RTU从站2,从Modbus地址40001开始的五个字,接收的数据存放在缓冲区DB3.DBW0开始区域为例。设置如下所示:MB_ADDR=2,MODE=0,DATA_ADDR=40001,DATA_LEN=5。 地址对应关系如下表2所示:

Modbus RTU主站CPU1215C 数据缓Modbus RTU从站Modbus地址 冲区地址 DB3.DBW0 DB3.DBW2 DB3.DBW4 DB3.DBW6 DB3.DBW8 表2 Modbus地址对应关系

40001 40002 40003 40004 40005

图9 MB_MASTER指令